2017-01-09 3 views
0

Я пытаюсь извлечь проценты, используя Stanford NER. Но он не извлекает процент правильно.Стэнфорд НЭР неправильно извлекает проценты

inp_str = 'total revenue received was one hundred and twenty five percent 125% for last financial year' 
split_inp_str = inp_str.split() 
st = StanfordNERTagger('english.muc.7class.distsim.crf.ser.gz') 
print(st.tag(split_inp_str)) 

Это дает следующий вывод

[('total', 'O'), ('revenue', 'O'), ('received', 'O'), ('was', 'O'), ('one', 'O'), ('hundred', 'O'), ('and', 'O'), ('twenty', 'O'), ('five', 'PERCENT'), ('percent', 'PERCENT'), ('125%', 'O'), ('for', 'O'), ('last', 'O'), ('financial', 'O'), ('year', 'O')] 

Почему не экстрагента 125% или сто двадцать пять процентов?

+0

Я получаю PERCENT за «сто двадцать пять процентов 125%», когда я использую Stanford CoreNLP 3.7.0. Я запускаю код Java. Если вы используете NLTK, я не совсем уверен, что выполняется. – StanfordNLPHelp

ответ

-1

Вам нужно сделать токенизацию предложения, а не split(). Попробуйте следующий код.

from nltk import word_tokenize 

inp_str = 'total revenue received was one hundred and twenty five percent 125% for last financial year' 
split_inp_str = word_tokenize(inp_str) 
st = StanfordNERTagger('english.muc.7class.distsim.crf.ser.gz') 
print(st.tag(split_inp_str)) 
Смежные вопросы