Как мне сделать Entity Extraction в Lucene - PullRequest
4 голосов
/ 30 ноября 2010

Я пытаюсь сделать Entity Extraction (больше похоже на сопоставление) в Lucene.Вот пример рабочего процесса:

Учитывая некоторый текст (из URL) И список имен людей, попробуйте извлечь имена людей из текста.

Примечание:

Имена людей не полностью нормализованы.Например, некоторые из них - мистер X, миссис Y, а некоторые - просто Джон Доу, X и Y. Другие префиксы и суффиксы, о которых стоит подумать: младший, старший, доктор, I, II ... и т. д. (не позволяйте мненачать работу с неамериканскими именами.)

Я использую Lucene MemoryIndex для создания в памяти индекса текста из каждого URL-адреса (удаление HTML-тегов) и использую StandardAnalyzer длязапросить список всех имен, по одному (100 тыс. имен, есть ли другой способ сделать это? В среднем это занимает около 8 секунд в среднем у меня есть текст).

AОсновная проблема заключается в том, что для устранения шума я использую оценку 0,01 в качестве базовой оценки, а запросы типа «Мистер Джон Доу» имеют значительно меньшую оценку по сравнению с «Джон Доу», если текст содержит «Джон Доу» и во многих случаях.дела не достигают порогового значения 0,01.

Другая проблема заключается в том, что если я нормализую все имена и начну удалять все случаи доктора мистера миссис и т. д., то я начну пропускать хорошие совпадения, такие как «доктор Джон Эдвард II»и в конечном итоге много нежелательных матчей, как"Мистер.Джон Эдвард ".

Я понимаю, что Lucene может быть и не подходящим инструментом для работы, но пока он не оказался слишком плохим. Любая помощь приветствуется.

Ответы [ 5 ]

2 голосов
/ 30 ноября 2010

NEE - это задача НЛП, которая является , а не частью люцена.Для открытого исходного кода вы можете взглянуть на lingpipe, gate и opennlp.Существуют различные альтернативы за деньги.

GATE полностью основан на правилах, и его будет сложно использовать для высокой точности.Вам понадобится статистический движок для этого;У lingpipe есть один, но вы должны предоставить данные обучения.Я не в курсе содержимого opennlp в этой области.

0 голосов
/ 21 февраля 2014

Вы можете попробовать это .. http://alias -i.com / lingpipe / demos / tutorial / ne / read-me.html

Документация ясна, вы также можете использовать веб-сервис DBPedia-Spotlight ...

http://spotlight.dbpedia.org/rest/spot/?text=

0 голосов
/ 13 мая 2013

OpenNPL полезен. http://opennlp.apache.org/

На сайте есть документация и примеры.

Для полностью непосвященных Книга Taming Text: http://www.manning.com/ingersoll/ дает хороший обзор. Вы также можете скачать исходный код из книги по ссылке выше.

0 голосов
/ 30 ноября 2010

Эти проекты могут быть полезны для вас:

http://nlp.stanford.edu/ner/index.shtml

http://cogcomp.cs.illinois.edu/page/software_view/4

0 голосов
/ 30 ноября 2010

Устранение неоднозначности человеческих имен общеизвестно сложно. Если у вас есть другая информация, такая как местонахождение или совпадение имен, это будет полезно. Но еще предстоит проделать большую работу по устранению неоднозначности автора, и ее обычно нельзя решить просто из списка имен.

Вот типичный проект http://code.google.com/p/bibapp/wiki/AuthorAuthorities. И типичная публикация http://www.springerlink.com/content/lk07h1m311t130w4/.

Вот проект по записи дедупликаций, который мы считаем полезным для устранения неоднозначности автора http://datamining.anu.edu.au/projects/linkage.html

...