Python Nltk中的斯坦福实体识别器(无壳)

时间:2015-06-10 01:45:00

标签: python nlp nltk

我试图弄清楚如何使用NLTK的实体识别器的无壳版本。我下载了http://nlp.stanford.edu/software/stanford-ner-2015-04-20.zip并将其放在python的site-packages文件夹中。然后我下载了http://nlp.stanford.edu/software/stanford-corenlp-caseless-2015-04-20-models.jar并将其放在文件夹中。然后我在NLTK中运行了这段代码

from nltk.tag.stanford import NERTagger
english_nertagger = NERTagger(‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/classifiers/english.conll.4class.distsim.crf.ser.gz’, ‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/stanford-corenlp-caseless-2015-04-20-models.jar’)

但是当我跑这个时:

english_nertagger.tag(‘Rami Eid is studying at stony brook university in NY’.split())

我收到错误:

Error: Could not find or load main class edu.stanford.nlp.ie.crf.CRFClassifier

如果您有经验,任何帮助都表示赞赏!

P.S。我可以让非caseless版本工作正常,但我发现在分析搜索查询时,用户几乎不会大写单词,而非caseless版本似乎完全错过了单词,如果它们没有大写。

1 个答案:

答案 0 :(得分:9)

StanfordNERTagger的第二个参数是stanford tagger jar文件的路径,而不是模型的路径。因此,将其更改为stanford-ner.jar(并将其放在那里)。

您似乎应该选择english.conll.4class.caseless.distsim.crf.ser.gz(来自stanford-corenlp-caseless-2015-04-20-models.jar)而不是english.conll.4class.distsim.crf.ser.gz

请尝试以下方法:

 english_nertagger = StanfordNERTagger(‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/classifiers/english.conll.4class.caseless.distsim.crf.ser.gz’, ‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/stanford-ner.jar’)

UPD。 NERTagger已重命名为StanfordNERTagger