gpt4 book ai didi

python - python NLTK中使用StanfordNER识别NE的问题

转载 作者:行者123 更新时间:2023-11-30 23:04:37 24 4
gpt4 key购买 nike

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

"These names Praveen Kumar,, David Harrison, Paul Harrison, blah "

"California, United States"

我的输出分别如下。

[[(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'O'), (u'blah', u'O')]]

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

为什么它不识别潜在的 NE,例如“Praveen Kumar”、“Harrison”和“California”?

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

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 中尝试时工作正常?

最佳答案

由于您是通过 nltk 执行此操作,因此请使用其标记器来分割您的输入:

alltext = myfile.read()
tokenized_text = nltk.word_tokenize(alltext)

编辑:按照其他答案的建议,您可能最好使用斯坦福工具包自己的标记生成器。因此,如果您要将标记提供给斯坦福大学的工具之一,请像这样标记您的文本,以准确获得工具期望的标记化:

from nltk.tokenize.stanford import StanfordTokenizer
tokenize = StanfordTokenizer().tokenize

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

要使用此方法,您需要安装斯坦福工具,并且 nltk 必须能够找到它们。我假设您已经解决了这个问题,因为您正在使用斯坦福 NER 工具。

关于python - python NLTK中使用StanfordNER识别NE的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33603534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com