Как приучить модель извлечения Stanford NLP NER пропустить повторяющиеся слова? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь извлечь NER из текста, используя .NET Framework и StanFord NER Model . У меня есть текст вроде

Здравствуйте, я Джон Доу. Индекс массы тела равен 27. А площадь поверхности тела составляет 2,3 м.

Для этого я создал файл tsv для обучения модели. Что указано ниже:

Hello   O
,   O
I   O
am  O
John    PERSON
Doe.    PERSON
Body    BMI
Mass    BMI
index   BMI
is  O
27. O
And O
Body    O
Surface O
Area    O
is  O
2.3m.   O

Файл поддержки такой же, как в

trainFileList = train/standford_train.tsv
serializeTo = dummy-ner-model-eng.ser.gz
map = word=0,answer=1

useClassFeature=true
useWord=true
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useSequences=true
usePrevSequences=true
maxLeft=1
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
useDisjunctive=true

, и с использованием нижеприведенной команды Java

java -mx1g -cp stanford-ner.jar;lib/* edu.stanford.nlp.ie.crf.CRFClassifier -annotators 'tokenize,ssplit,pos,lemma,ner,regexner' -prop train/prop.txt

Итак, проблема, с которой я сталкиваюсь,Тело с пометкой ИМТ приходит два раза из-за повторения в Индекс массы тела и Площадь поверхности тела .

Есть ли способ, которым я могу опустить этот второй тег тела

1 Ответ

0 голосов
/ 08 ноября 2019

Вам нужно будет предоставить больше обучающих данных, в которых есть примеры с Body, не помеченным как BMI. Если вы ищете только определенные шаблоны, вы можете получить лучшие результаты, используя подход, основанный на правилах. В Stanford CoreNLP есть инструменты для построения NER на основе правил.

Подробнее: https://stanfordnlp.github.io/CoreNLP/tokensregex.html

...