首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用StanfordNER在python中识别NEs

用StanfordNER在python中识别NEs
EN

Stack Overflow用户
提问于 2015-11-09 06:26:03
回答 2查看 144关注 0票数 1

当有一个潜在的NE后面跟着一个逗号时会发生这种情况,例如,如果我的字符串类似,

这些名字是Praveen Kumar,David Harrison,Paul Harrison,诸如此类

“美国加州”

我的输出分别如下。

[(U‘’These,u'O'),(u‘’names,u'O'),(u‘’Praveen ',u'O'),(u‘’Kumar,',',u'O'),(u‘’David‘,u’‘PERSON’),(u‘’Harrison‘,’u'O'),(u‘’Paul‘,u’‘PERSON’),(u‘’Harrison,‘u’u'O'),(u‘’blah‘,u'O')]

[(U‘’California,',u'O'),(u‘’United‘,u’‘LOCATION’),(u‘’States‘,U’‘LOCATION’)]

为什么它不认识像"Praveen Kumar“、"Harrison”和"California“这样的潜在国家呢?

下面是如何在代码中使用它:

代码语言:javascript
复制
from nltk.tag.stanford import NERTagger
st = NERTagger('stanford-ner/classifiers/english.all.3class.distsim.crf.ser.gz', 'stanford-ner/stanford-ner.jar')

tags = st.tag("California, United States".split())

是因为我用split()标记输入吗?当在Java中尝试时,我如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-09 10:30:50

由于您是通过nltk执行此操作的,因此可以使用它的标记器来拆分输入:

代码语言:javascript
复制
alltext = myfile.read()
tokenized_text = nltk.word_tokenize(alltext)

编辑:按照另一个答案的建议,使用斯坦福工具包自己的标记器可能会更好。因此,如果要将令牌提供给斯坦福工具之一,就可以像这样标记文本,以得到工具所期望的标记化:

代码语言:javascript
复制
from nltk.tokenize.stanford import StanfordTokenizer
tokenize = StanfordTokenizer().tokenize

alltext = myfile.read()
tokenized_text = tokenize(alltext)

要使用这种方法,您需要安装斯坦福工具,并且nltk必须能够找到它们。我想你已经处理好了,因为你使用的是斯坦福大学的工具。

票数 2
EN

Stack Overflow用户

发布于 2015-11-09 10:09:11

逗号需要是单独的标记。仅仅使用split()并不能实现这一点,因此NER没有识别像"California“这样的令牌。

如果您想获得类似于在Java中使用斯坦福CoreNLP的行为,我建议使用nltk包装器进行标记化:modules/nltk/tokenize/stanford.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33603534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档