使用python NLTK的斯坦福NER失败了包含多个“!!”的字符串?

时间:2015-11-17 10:52:44

标签: python nltk stanford-nlp named-entity-recognition

假设这是我的filecontent

  

当他们超过45岁!这肯定会帮助迈克尔乔丹。

以下是我标记内容的代码。

st = NERTagger('stanford-ner/classifiers/english.all.3class.distsim.crf.ser.gz', 'stanford-ner/stanford-ner.jar')
tokenized_sents = [word_tokenize(sent) for sent in sent_tokenize(filecontent)]  
taggedsents = st.tag_sents(tokenized_sents)

我希望tokenized_sentstaggedsents包含相同数量的句子。

但这是他们所包含的内容:

for ts in tokenized_sents:
    print "tok   ", ts

for ts in taggedsents:
    print "tagged    ",ts

>> tok    ['When', 'they', 'are', 'over', '45', 'years', 'old', '!', '!']
>> tok    ['It', 'would', 'definitely', 'help', '.']
>> tagged     [(u'When', u'O'), (u'they', u'O'), (u'are', u'O'), (u'over', u'O'), (u'45', u'O'), (u'years', u'O'), (u'old', u'O'), (u'!', u'O')]
>> tagged     [(u'!', u'O')]
>> tagged     [(u'It', u'O'), (u'would', u'O'), (u'definitely', u'O'), (u'help', u'O'), (u'Michael', u'PERSON'), (u'Jordan', u'PERSON'), (u'.', u'O')]

这是因为doulbe“!”在假设的第一句话结束时。在使用st.tag_sents()

之前,是否必须删除双“!”

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您从另一个问题中使用我的解决方案而不是使用nltk,您将获得正确将此文本拆分为两个句子的JSON。

链接到上一个问题:how to speed up NE recognition with stanford NER with python nltk