Программно извлекать намерение из правил регулярных выражений Stanford NLP на основе приоритета - PullRequest
0 голосов
/ 08 октября 2018

В настоящее время я тестирую аннотатор именованных сущностей Stanford NLP с правилами regexner.Я основал свой код на этом примере.https://javadeveloperzone.com/nlp/nlp-standford-regexner-example/

Согласно документации Stanford NLP

Четвертый столбец может использоваться для придания правилам приоритета.Если несколько правил совпадают, результат не определен, если вы не назначите правилам приоритет.Вот (глупое) расширение последнего файла, где у нас есть правила с приоритетами.Приоритеты находятся в четвертом столбце, поэтому обратите внимание, что между меткой объекта и приоритетом есть две вкладки.Правила без явно заданного приоритета имеют приоритет 1.0.

Допустим, у меня есть правила сущности RegexNER с приоритетом:

Брэд Питт АКТЕР ЛИЦА 1.0

БРЭД ПИТТ ЧЕЛОВЕК ДИРЕКТОРА 2.0

У меня есть это в моем коде.

public String getTokenNerTags(CoreDocument document) {
        return document.tokens()
                       .stream()
                       .map(token -> token.word()+":"+token.ner())
                       .collect(Collectors.joining(" "));
}

Например, я хотел бы ввести этот текст:

поиск фильмов Брэда Питта

Мой вопрос: как программно вывести объект с наивысшим приоритетом?

Например: ВЫХОД:

поиск{DIRECTOR} Брэд Питт {DIRECTOR} фильмы

...