Распознавание именованных объектов с помощью Java - PullRequest
5 голосов
/ 06 апреля 2011

Я хотел бы использовать распознавание именованных объектов (NER), чтобы найти подходящие теги для текстов в базе данных. Вместо использования таких инструментов, как NLTK или Lingpipe, я хочу создать свой собственный инструмент.

Итак, мои вопросы:

  • Какой алгоритм использовать?

  • Насколько сложно построить этот инструмент?

Ответы [ 5 ]

5 голосов
/ 07 апреля 2011

Я сделал это некоторое время назад, когда изучал цепи Маркова.

В любом случае, ответы таковы:

Какой алгоритм мне использовать?

Например, Stanford NLP использует условное случайное поле (CRF).Если вы не пытаетесь сделать это эффективно, вы как чувак из Jackass 3d, который был pissing in the wind.Нет простого способа разобрать человеческий язык, так как его конструкция сложна и имеет множество исключений.

Насколько сложно создать этот инструмент?

Ну, если вы знаете, что делаете, то это совсем не сложно.Процесс ввода правил и логики может быть раздражающим и занимать много времени, а исправление ошибок может быть нетривиальным.Но через 20 лет вы можете сделать что-то почти полезное (для себя).

3 голосов
/ 07 апреля 2011
  1. Существует множество алгоритмов извлечения информации, если назвать несколько: регулярные выражения, статические методы, машинное обучение, словари и т. Д. Полный обзор методов можно найти в этом опросе .
  2. Да, сложно создать инструмент, который будет находить теги с высокой точностью, потому что он требует большого тестирования и настройки.

- Самый простой для реализации - алгоритм поиска тегов состоит из двух шагов:

  • Извлечение кандидатов на теги
  • Найдите наиболее значимые теги - самые дисти.

На первом шаге вы можете выбрать один из двух подходов:

  • Использование имен сущностей для использования в качестве кандидатов тегов (здесь вам необходимо использовать платформу извлечения информации)
  • Используйте существительные или группы существительных в качестве кандидатов на теги (здесь вам нужно использовать метку части речи)

На втором шаге вы должны использовать tf-idf для взвешивания тегов по всему корпусу документа и отбрасывать все теги, у которых вес tf-idf ниже заданного мусорного хранилища

Если вам нужен более мощный алгоритм, поищите фреймворки для определения тем или исследовательские работы по этой теме . Проверьте также LSA , после википедии:

Скрытый семантический анализ (LSA) - это метод обработки естественного языка, в частности векторной семантики, для анализа отношений между набором документов и содержащимися в них терминами путем создания набора концепций, связанных с документами и терминами.

2 голосов
/ 07 апреля 2011

NLTK - проект с открытым исходным кодом. Возможно, вы захотите немного изучить его - посмотреть, как это делается, возможно, принять участие в сообществе, а не пытаться полностью решить проблему самостоятельно с нуля ...

0 голосов
/ 03 июня 2011

Это может быть не вполне удовлетворительным ответом на ваш вопрос, однако: вы, возможно, захотите оценить существующих поставщиков услуг для этой задачи и либо включить их продукт, либо интегрировать его через веб-службы.

Мой опыт таков, что длянекоторые четко определенные и очень специфичные для домена задачи (например, распознавание названий лекарственных препаратов на веб-страницах Википедии), вы можете вручную создавать решения NER. LingPipe , OpenNLP и т. Д. Являются хорошими инструментами для этого.

Но для общих задач (например: поиск имен людей на любой веб-странице в Интернете),вам нужен большой опыт, инструменты и рабочая сила, чтобы получить удовлетворительные результаты.Поэтому может быть более эффективно использовать внешнего поставщика. OpenCalais - это бесплатный сервис, например;существует много коммерческих.

0 голосов
/ 07 апреля 2011

Ищите копию этого документа:

Пометка имен с помощью кластеров слов и дискриминационное обучение

Скотт Миллер, Джетран Гиннесс, Алекс Заманян

...