2014-01-23 66 views
0

我想在輸入查詢中使用特定單詞的所有含義。如何使用python NLTK獲取單詞的所有含義?

例如:

假設我輸入的查詢是: 「狗在樹狂叫」

在這裏,我想這個詞樹的所有含義樹皮採用以下格式:

樹#n#01,樹#n#02 ...等等。 樹皮#n#01,樹皮#n#02 ...等等

我使用POS標記來相應地提取名詞,動詞,形容詞和副詞synset。 如果樹皮被用作動詞(用於我們的輸入查詢),那麼只有相關的含義應該顯示爲樹皮#v#01,樹皮#v#02 ...

請幫我解決這個問題,使用Python 。我正在使用Python NLTK模塊進行自然語言處理。

+0

你會發布你的嘗試嗎? – That1Guy

+0

我正在使用我想要的形式「xyz#n#01」(僅舉例)的相關性部分。因爲我想根據感官數量來標記特定的單詞作爲多義詞,所以我問了上面的問題,我正在嘗試NLTK書中的很多東西。 – user3189037

回答

2

要知道哪個字有相同/相似的POS標籤,你可以使用慣用的

>>> from nltk.tag import pos_tag 
>>> sent = "dog is barking at tree" 
>>> [i for i in pos_tag(sent.split()) if i[1] == "NN"] 
[('dog', 'NN'), ('tree', 'NN')] 

然後得到的可能同義詞集爲一個字,簡單地做:

>>> from nltk.corpus import wordnet as wn 
>>> wn.synsets('dog') 
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')] 

最有可能您正在尋找的解決方案是:

>>> from nltk.corpus import wordnet as wn 
>>> from nltk.tag import pos_tag 
>>> sent = "dog is barking at tree" 
>>> for i in [i[0] for i in pos_tag(sent.split()) if i[1].lower()[0] == 'n']: 
...  print wn.synsets(i); print 
... 
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')] 

[Synset('tree.n.01'), Synset('tree.n.02'), Synset('tree.n.03'), Synset('corner.v.02'), Synset('tree.v.02'), Synset('tree.v.03'), Synset('tree.v.04')] 
相關問題