Исторически я использовал OpenNLP для обработки естественного языка. Я решил попробовать Stanford NLP в своем последнем проекте и столкнулся с проблемами с NER. В частности, когда обрабатывается определенный токен (TOKENP
в моем примере), я бы хотел классифицировать его как тип TOKENP
.
Я прочитал документацию несколько раз, прочитал ответ на этот связанный пост SO , и я не могу его надежно назначить TOKENP
.
Вот файл правил (labels.txt
):
TOKENP TOKENP PERSON 5
Вот входной файл (tmp.txt
):
Michael Scott Dunder Mifflin TOKENP
Вот команда, которую я использую:
java -mx4g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators 'tokenize,ssplit,pos,lemma,ner' -ner.fine.regexner.mapping labels.txt -outputFormat text -file tmp.txt
А вот и вывод:
Tokens:
[Text=Michael CharacterOffsetBegin=0 CharacterOffsetEnd=7 PartOfSpeech=NNP Lemma=Michael NamedEntityTag=PERSON]
[Text=Scott CharacterOffsetBegin=8 CharacterOffsetEnd=13 PartOfSpeech=NNP Lemma=Scott NamedEntityTag=PERSON]
[Text=Dunder CharacterOffsetBegin=14 CharacterOffsetEnd=20 PartOfSpeech=NNP Lemma=Dunder NamedEntityTag=PERSON]
[Text=Mifflin CharacterOffsetBegin=21 CharacterOffsetEnd=28 PartOfSpeech=NNP Lemma=Mifflin NamedEntityTag=PERSON]
[Text=TOKENP CharacterOffsetBegin=29 CharacterOffsetEnd=35 PartOfSpeech=NNP Lemma=TOKENP NamedEntityTag=PERSON]
Extracted the following NER entity mentions:
Michael Scott Dunder Mifflin TOKENP PERSON
Я ожидаю, что TOKENP
в качестве последнего токена на входе получит класс TOKENP
на основе правил.