七级分类器在StanfordNLP python中没有给出期望的结果

时间:2017-01-06 19:42:14

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

我正在尝试使用斯坦福大学的名为Entity Recognizer。我想使用7类分类器,因为我甚至想要检测句子中的时间(或日期)和其他东西。输入句子时:

"He was born on October 15, 1931 at Dhanushkothi in the temple town Rameshwaram in Tamil Nadu."

在斯坦福NLP网站(http://nlp.stanford.edu:8080/ner/process)的在线演示中,正确分类,如图所示(斯坦福网站上面的演示):

The demo in the stanford site for the above line

但是,当我尝试使用NLTL和StanfordTagger在我的系统上运行代码时,我得到了错误的结果。我得到的输出为:

[(u'He', u'O'), (u'was', u'O'), (u'born', u'O'), (u'on', u'O'), (u'1931-10-15', u'O'), 
(u'at', u'O'), (u'Dhanushkothi', u'O'), (u'in', u'O'), (u'the', u'O'), 
(u'temple', u'O'), (u'town', u'O'), (u'Rameshwaram', u'O'), (u'in', u'O'), 
(u'Tamil', u'ORGANIZATION'), (u'Nadu', u'ORGANIZATION'), (u'.', u'O')]

这里错误地将日期标识为“其他”,甚至将泰米尔纳德语定义为组织而非位置。我使用的代码如下:

from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.tag import StanfordNERTagger

st = StanfordNERTagger('english.muc.7class.distsim.crf.ser.gz','stanford-ner.jar')

i= "He was born on October 15, 1931 at Dhanushkothi in the temple town Rameshwaram in Tamil Nadu."

words = nltk.word_tokenize(i)
namedEnt = st.tag(words)

print namedEnt 

任何人都可以告诉我正在做的错误(如果有的话)或任何其他方式来确定句子中的位置和时间吗?我是NLP的初学者,对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我尝试运行您的代码,并发现了word_tokenize的一些问题。

试试这段代码:

[(u'He', u'O'), (u'was', u'O'), (u'born', u'O'), (u'on', u'O'), (u'October', u'DATE'), (u'15', u'DATE'), (u',', u'DATE'), (u'1931', u'DATE'), (u'at', u'O'), (u'Dhanushkothi', u'O'), (u'in', u'O'), (u'the', u'O'), (u'temple', u'O'), (u'town', u'O'), (u'Rameshwaram', u'O'), (u'in', u'O'), (u'Tamil', u'ORGANIZATION'), (u'Nadu', u'ORGANIZATION'), (u'.', u'O')]

这是我的输出:

$('#selectBox').on('change', function() 
{
    value= this.value;
    if(value==0)
      {
        //code
      }
    else if(value==1)
      {
         //code
      }
     ...
     else
      {
         //code
      }
  });