StanfordTokenizer 将在 3.2.5 版本中被弃用

数据挖掘 Python nltk 命名实体识别 斯坦福-nlp
2022-02-14 15:45:24

我正在使用 NLTK 包装器测试 StanfordNERTagger 并出现此警告:

DeprecationWarning: The StanfordTokenizer will be deprecated in version 
3.2.5. Please use nltk.tag.corenlp.CoreNLPPOSTagger or 
nltk.tag.corenlp.CoreNLPNERTagger instead.
super(StanfordNERTagger, self).__init__(*args, **kwargs)

我的代码如下所示:

from nltk import word_tokenize, pos_tag, ne_chunk
from nltk.tag import StanfordNERTagger

sentence = "Today George went to school and met his friend Peter."

# stanford's NER tagger 3 entity classification
st = StanfordNERTagger('/home/hercules/Desktop/PhD/Tools/stanford-ner-
     2017-06-09/classifiers/english.all.3class.distsim.crf.ser.gz',
     '/home/hercules/Desktop/PhD/Tools/stanford-ner-2017-06-09/stanford-
     ner.jar',
     encoding='utf-8')

tokenized_text = word_tokenize(sentence)
classified_text = st.tag(tokenized_text)

print("Stanford NER tagger:")
print(classified_text)

我尝试使用 CoreNLPNERTagger,但找不到任何示例或文档。我只找到了这个链接: 它在 CoreNLPNERTagger(CoreNLPTagger) 类的评论中给出了一个类似例子的例子(我通过搜索关键字“CoreNLPNERTagge”找到了它)

我试图效仿这个例子,但没有用。我想我应该首先启动(如果这是正确的术语)coreNLP 服务器,但如果是这种情况,我不知道该怎么做。

如果有人有任何想法或建议,我将不胜感激。

2个回答

@imoutidi,我也遇到了同样的弃用警告。

经过一番挖掘,看起来可以使用以下内容导入新/替换包:

from nltk.tag.stanford import CoreNLPNERTagger

但是,当尝试运行 tag() 方法时,我最终会收到意外的 HTTP 连接被拒绝错误。我还没弄清楚这是环境配置问题(缺少 .jar 路径)还是 NLTK 代码库的问题。我尝试暂时关闭本地防火墙,但没有帮助,所以我猜这是另外两种可能性之一。

我希望python import 语句至少有一些帮助。

在此处输入图像描述

继续 tokyodusk 的回答。你应该从这里下载 stanford Core NLP

然后执行以下操作:

  • 打开终端
  • 导航到您提取包的位置
  • 输入以下命令:
    java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9000 -timeout 15000 -annotators 'tokenize,ssplit,pos,ner'

然后按照 tokyodusk 的建议做。