2015-04-06 84 views
3

我不能想出一個陌生人的問題,猜你會幫助我的。比較同義詞NLTK

for p in wn.synsets('change'):<br> 
    print(p) 

獲取:

Synset('change.n.01') 
Synset('change.n.02') 
Synset('change.n.03') 
Synset('change.n.04') 
Synset('change.n.05') 
Synset('change.n.06') 
Synset('change.n.07') 
Synset('change.n.08') 
Synset('change.n.09') 
Synset('variety.n.06') 
Synset('change.v.01') 
Synset('change.v.02') 
Synset('change.v.03') 
Synset('switch.v.03') 
Synset('change.v.05') 
Synset('change.v.06') 
Synset('exchange.v.01') 
Synset('transfer.v.06') 
Synset('deepen.v.04') 
Synset('change.v.10') 

比如我有一個字符串:

a = 'transfer' 

我想能夠識別各種單詞'改變' 的同義詞並且知道fe '轉移'是其中之一。我該如何問我的程序: 「Is'transfer'是'change'的同義詞之一嗎?」

回答

1

您需要首先得到lemmas然後遍歷您的引理,並得到那麼名稱以in操作檢查成員:

>>> a in [j.name() for i in wn.synsets('change') for j in i.lemmas()] 
True 

>>> [j.name() for i in wn.synsets('change') for j in i.lemmas()] 
[u'change', u'alteration', u'modification', u'change', u'change', u'change', u'change', u'change', u'change', u'change', u'change', u'variety', u'change', u'change', u'alter', u'modify', u'change', u'change', u'alter', u'vary', u'switch', u'shift', u'change', u'change', u'change', u'exchange', u'commute', u'convert', u'exchange', u'change', u'interchange', u'transfer', u'change', u'deepen', u'change', u'change'] 
0

這些都是詞的不同意義。您可以使用synset('xxx').lemma_names獲得每種意義的同義詞。然後你可以比較這個詞是否存在於它們中。

0

wn.synsets給出了含義列表,每個含義都有一個單詞列表。

for sense in wn.synsets('change'): 
    if "transfer" in sense.lemma_names: 
     print "'transfer' is synonym to 'change'" 
     break 
2

首先,WordNet的索引的概念(又名同義詞集),併爲每個概念鏈接可能的詞,下面的代碼示出了概念鏈接到單詞「變化」:

>>> from nltk.corpus import wordnet as wn 
>>> wn.synsets('change') 
[Synset('change.n.01'), Synset('change.n.02'), Synset('change.n.03'), Synset('change.n.04'), Synset('change.n.05'), Synset('change.n.06'), Synset('change.n.07'), Synset('change.n.08'), Synset('change.n.09'), Synset('variety.n.06'), Synset('change.v.01'), Synset('change.v.02'), Synset('change.v.03'), Synset('switch.v.03'), Synset('change.v.05'), Synset('change.v.06'), Synset('exchange.v.01'), Synset('transfer.v.06'), Synset('deepen.v.04'), Synset('change.v.10')] 

甲同義詞集具有幾個屬性,它具有:

  • ID號
  • 兼職的語音標籤
  • 定義
  • 引理名稱,即,可用於實例化的概念的N- nymy關係
  • 鏈接到其他同義詞集可能的單詞(例如上位詞,下義詞,meronym)

下面介紹如何在NLTK接口上面的屬性:

>>> wn.synsets('change')[0] 
Synset('change.n.01') 
>>> wn.synsets('change')[0].offset() 
7296428 
>>> wn.synsets('change')[0].pos() 
u'n' 
>>> wn.synsets('change')[0].definition() 
u'an event that occurs when something passes from one state or phase to another' 
>>> wn.synsets('change')[0].lemma_names() 
[u'change', u'alteration', u'modification'] 
>>> wn.synsets('change')[0].hypernyms() 
[Synset('happening.n.01')] 

但同義詞集並不一定有同義詞關係。如果我們將同義詞定義爲具有相似含義的詞,則它是具有同義關係的詞(即詞條)。另外,單詞的上下文定義一個單詞是否是另一個單詞的同義詞。一個單詞的含義是有限的,它是包含意義並通過人類單詞實例化意義的「概念」。至少,這是語義的典型理論,見http://goo.gl/ZHzlNF

第2章所以,當你要問是「轉移」,「變革」的代名詞,你必須先:

  • 定義/選擇你在這裏提到的概念,並提供使用「傳輸」的上下文,google Word Sense Disambiguation
  • 定義你指的是哪個變更的概念。

然後可以比較意義。

參見: