2009-11-06 49 views

回答

9

您可以使用nltk.ne_chunk()方法從命名實體塊中取出框。這需要POS列表標記的元組:

nltk.ne_chunk([('Barack', 'NNP'), ('Obama', 'NNP'), ('lives', 'NNS'), ('in', 'IN'), ('Washington', 'NNP')])

結果:

Tree('S', [Tree('PERSON', [('Barack', 'NNP')]), Tree('ORGANIZATION', [('Obama', 'NNP')]), ('lives', 'NNS'), ('in', 'IN'), Tree('GPE', [('Washington', 'NNP')])])

它標識奧巴馬作爲一個人,但奧巴馬作爲一個組織。所以,不完美。

+1

如果我不是很在意named_entities,但總體來說是塊。例如,「黃狗」是一個塊,「正在運行」是一個塊。 – TIMEX

+0

是的,對我而言,沒有默認值(儘管我不知道nltk的一切,可以肯定)。您可以使用RegexpChunkParser,但您必須自己制定規則。這裏有一個例子:http://gnosis.cx/publish/programming/charming_python_b18.txt – ealdent

8

我找不到默認的chunker /淺解析器。儘管本書描述瞭如何構建和訓練具有示例特徵的人。提供額外的功能以獲得良好的性能不應該太困難。

請參閱第7章關於Training Classifier-based Chunkers的部分。