2010-06-08 55 views
0

我試過wordnet lemmatizer,但我發現像'學習'或'等待'一些常見的詞不適當地處理。問題與wordnet lemmatizer

我錯過了什麼?

+0

見http://stackoverflow.com/questions/771918/how-do-i-do-詞幹或詞性化 – stacker 2010-06-08 17:09:56

回答

2

正如你可以在網上看到的那樣,studyingwaiting也是名詞(以及動詞的動名詞),所以他們可以像他們自己一樣詞性化並不奇怪。

如果這樣做不能令人滿意,您需要找到更積極的lemmatizer(一個故意忽略完全正確但「不太可能」的單詞解釋),或者如果您可以首先執行基於整個句子,使用一個lemmatizer,可以告訴是否例如studying的給定實例是動詞而不是名詞。

+0

嗯,是更明智的使用更積極的一個,就像你提到的那樣,就像搬運工幹部,或者首先做一個pos標記。我很擔心這個表現,因爲我需要處理很多文本塊。 – goh 2010-06-09 01:29:28

+0

@goh,POS標記速度不是很快,但它會更準確 - 我猜想你可能不想看到「awn」乾的「awn」。但是,您是否總是會在形式完整的句子中使用這些詞語,或者您是否有時需要孤立地處理它們?如果是後者,那麼積極的詞幹是剩下的...... :-(。 – 2010-06-09 03:28:01

+0

實際上是在做博客分類,我需要從他們的博客內容推斷他們是否來自我的學校,我有幾個博客,我可以開始爬行,其餘的將被分類,我正在做html剝離,然後是詞彙標記,然後是pos標記,過濾除名詞之外的所有詞彙,並對它們進行lemmatify。分類器的功能將是我猜測的名詞。這是一個很好的方法嗎? – goh 2010-06-09 06:40:04

1

默認情況下,NLTK中的WordNetLemmatizer假定單詞是NOUN。看到http://nltk.org/_modules/nltk/stem/wordnet.html

要正確lemmatize動詞,你已經指定pos(詞性)

>>> from nltk.stem.wordnet import WordNetLemmatizer 
>>> wnl = WordNetLemmatizer() 
>>> wnl.lemmatize('studying','v') 
'study' 
>>> wnl.lemmatize('studying','n') 
'studying' 
>>> wnl.lemmatize('studying') 
'studying' 
>>> wnl.lemmatize('waiting','n') 
'waiting' 
>>> wnl.lemmatize('waiting','v') 
'wait'