Skip to main content
 首页 » 编程设计

python之Python Nltk 中的斯坦福实体识别器(无大小写)

2025年05月04日13kerrycode

我正在尝试弄清楚如何使用 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 

如果您有经验,我们将不胜感激!

附言我可以让非大小写版本正常工作,但我发现在分析搜索查询时,用户几乎不会将单词大写,如果单词没有大写,非大小写版本似乎会完全错过单词。

请您参考如下方法:

StanfordNERTagger 的第二个参数是 stanford 标记器 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’) 

更新。 NERTagger 已重命名为 StanfordNERTagger