2015-09-05 144 views
0

給定一個單詞如「table」,我想確定它最常用的名稱,它最常用的用法是名詞,動詞還是形容詞。我想在python中做到這一點。除了wordnet以外還有其他的東西嗎?我不喜歡wordnet。或者,如果我使用wordnet,我將如何完全使用它?將單詞識別爲名詞,動詞或形容詞

+0

您需要詞性標記(http://www.nltk.org/book/ch05.html)。 – Vidul

+0

Wordnet對於一個詞的每個* sense *有一個頻率(例如'table')。但是自2003年以來這一點並沒有得到更新(據我所知)。更好的選擇是下載Google n-grams並在該數據集上進行POS標記。 –

+0

你打算如何使用POS標籤5字ngrams?這個想法是沒有開始的。但谷歌確實提供了由第一個詞的POS分類的[ngram文件](http://storage.googleapis.com/books/ngrams/books/datasetsv2.html),所以這將是一種廣泛計數的方法。如果你有磁盤空間,並真的需要通過這麼多的數據。 – alexis

回答

5
import nltk 


text = 'This is a table. We should table this offer. The table is in the center.' 
text = nltk.word_tokenize(text) 
result = nltk.pos_tag(text) 
result = [i for i in result if i[0].lower() == 'table'] 

print(result) # [('table', 'JJ'), ('table', 'VB'), ('table', 'NN')] 
+0

如果單詞不在上下文中,該怎麼辦?只是「表」這個詞,它的最常用的用法,不管它的名詞,動詞等等。 –

+2

你是什麼意思的「背景」?這是使這個定義(詞性的一部分)成爲可能的上下文。 – Vidul

+0

任何名詞都可以是verbed。 – stark

4

如果你有一個詞斷章取義,想知道它最常見的用途,你可以看看別人的頻率表(例如共發現),或者你可以做自己的罪狀:只要找到一個標籤足夠大的語料庫用於您的目的,並計算其實例。如果你想使用免費的語料庫,NLTK包括布朗語料庫(100萬字)。 NLTK還提供了處理較大的非自由語料庫(例如英國國家語料庫)的方法。

import nltk 
from nltk.corpus import brown 
table = nltk.FreqDist(t for w, t in brown.tagged_words() if w.lower() == 'table') 
print(table.most_common()) 

[('NN', 147), ('NN-TL', 50), ('VB', 1)] 
相關問題