簡體   English   中英

給定兩個詞,找出它們是否在同一個同義詞集中

[英]Given two words, find whether they are in the same synset

對nltk來說還很新。 我正在嘗試找出當前正在解決的問題的解決方案:

  • 給定兩個單詞w1和w2,有沒有一種方法可以找出它們是否在Wordnet數據庫中屬於相同的sysnet?
  • 還可以找到包含給定單詞的sysnet列表嗎?

謝謝。

還可以找到包含給定單詞的sysnet列表嗎?

是的

>>> from nltk.corpus import wordnet as wn
>>> auto, car = 'auto', 'car'
>>> wn.synsets(auto)
[Synset('car.n.01')]
>>> wn.synsets(car)
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')]

如果我們從wn.synsets(car)每個同義詞wn.synsets(car)查看引理,則會發現“ car”作為引理之一存在:

>>> for ss in wn.synsets(car):
...     assert 'car' in ss.lemma_names()
... 
>>> for ss in wn.synsets(car):
...     print 'car' in ss.lemma_names(), ss.lemma_names()
... 
True [u'car', u'auto', u'automobile', u'machine', u'motorcar']
True [u'car', u'railcar', u'railway_car', u'railroad_car']
True [u'car', u'gondola']
True [u'car', u'elevator_car']
True [u'cable_car', u'car']

注意:引理不是完全表面的單詞,另請參見Stemmers vs Lemmatizers ,您可能會發現此有用的https://github.com/alvations/pywsd/blob/master/pywsd/utils.py#L66 (免責聲明:無恥插頭)

給定兩個單詞w1和w2,有沒有一種方法可以找出它們是否在Wordnet數據庫中屬於相同的sysnet?

是的

>>> from nltk.corpus import wordnet as wn
>>> auto, car = 'auto', 'car'
>>> wn.synsets(auto)
[Synset('car.n.01')]
>>> wn.synsets(car)
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')]
>>> auto_ss = set(wn.synsets(auto))
>>> car_ss = set(wn.synsets(car))
>>> car_ss.intersection(auto_ss)
set([Synset('car.n.01')])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM