2015-11-17 3 views
1

Пусть это мой filecontent:Стэнфордский NER с python NLTK терпит неудачу с строками, содержащими несколько «!!» s?

Когда они старше 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_sents и taggedsents содержат одинаковое количество предложений.

Но вот что они содержат: "!"

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 в конце предполагаемого первого предложения. Должен ли я удалять двойные «!» S до использования st.tag_sents()

Как это разрешить?

+0

Там нет 'имени entities' в ваших данных. См. Https://en.wikipedia.org/wiki/Named-entity_recognition. Попробуйте предложение, подобное «Майкл Джордан» отправился в Apple Inc., чтобы купить iPad и iPad для своего даугера Лейла Джордан » – alvas

+0

Феномен предложения - это странная вещь, поэтому, если вы меняете' ['!', '!'] 'На' [' !! '] ', он должен работать. Вы работаете с шумными данными. Инструменты Стэнфорда построены на чистых данных, поэтому он может не масштабироваться до какого-либо домена/жанра – alvas

+0

, это не проблема с отсутствием NE (добавили строку ne, но все равно то же самое). – KillBill

ответ