2016-04-29 1 views
1

Я использую Stanford NER с моделью 3 класса, чтобы идентифицировать PERSON, LOCATION и ORGANIZATION в файле. Он отлично работает, за исключением, когда есть имена, разделенные символом новой строки:
JANE МЭ
JOHN DOE
JANE SMITH
Стэнфордский NER Классификатор вопрос перевода

Инструменты NER считает эти три названия, как одно большое имя, а не три названия. Если я поместил запятую после каждого имени, она подберет три имени. Как я могу сказать, что инструмент использует новую строку для разделения трех имен?

ответ

1

Если имена заканчиваются как последовательные жетоны в одном и том же «предложении», это то, что произойдет. Главное, что вы можете сделать, это разделить систему на токенизацию/предложение на новые строки, тогда вы получите отдельное предложение для каждого имени, и все будет работать нормально. В общем, это будет хорошо работать, если ваш текст будет отформатирован как один абзац на строку (с мягкой оберткой, как это обычно бывает в современном тексте), но плохо, если у вас есть текст с жесткими разрывами строк (не в границах предписания/абзаца), потому что тогда система будет ошибочно рассматривать каждую строку как предложение. Команды, которые делают это как для вызывающей Стэнфордского НЭК непосредственно и через CoreNLP являются:

java edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators "tokenize,ssplit,pos,lemma,ner" -file taylorswift.txt -outputFormat conll -ssplit.newlineIsSentenceBreak always

java edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz -textFile taylorswift.txt -tokenizerOptions tokenizeNLs=true