LingPipe Named Entity Recognizer выводит много несоответствий

Я пытаюсь извлечь именованные объекты (люди, лица и организации), используя LingPipe и следуя этому руководству. Вот полный текст, из которого я пытаюсь извлечь имена, и вот код (обработка краткости исключена для краткости):

Chunker chunker = readChunker("/path-to-chunker"); // custom method for
                                                     reading the model
String article = "Some long news article spanning multiple lines...";

Chunking chunking = chunker.chunk(article);
Set<Chunk> chunkingSet = chunking.chunkSet();
for (Chunk chunk : chunkingSet) {
   String name = article.substring(chunk.start(), chunk.end()));
   System.out.println(name);
}

И это (часть) вывод, который я получаю:

Tony Abbott
Indonesia
Joko Widodo
Sukumaran
Andrew Chan
Bali.
pair
the Bali
Nusa Kambangan
Indonesian
Indonesian
I’
Widodo. I
” Abbott
Julie Bishop
Widodo
al-Jazeera
Sukumaran
Chan
Bishop
”

Как вы можете видеть, существует множество несовпадений / частичных совпадений, таких как Bali., pair, the Bali, I', Widodo. I, " Abbott, ", Я предполагаю, что NER библиотеки работает просто отлично, и проблема в том, что приведенный выше код каким-то образом неправильно использует классы / методы из этой библиотеки. Но я просто не могу найти, что не так с кодом?

Есть идеи?

1 ответ

Кажется, проблема в модели чанкера, которую вы читаете в первой строке. Возможно, он использует неправильный токенизатор, который является источником Bali., I', Widodo. I, " Abbott, ", pair а также the Bali может быть объяснено обычными ошибками (метки обычно имеют точность не более 80-90%). Однако источник таких ошибок также можно объяснить плохой моделью - например, ее можно обучить для другого домена.

Кстати, почему вы используете Longpipe, но не Stanford NER? Показывает лучшие результаты, как правило; например, первая доступная (т.е. случайная) статья. Кроме того, вот хорошее пошаговое руководство для Standford NER.

Другие вопросы по тегам