Исправление орфографии для нормализации данных в Java - PullRequest
8 голосов
/ 23 февраля 2010

Я ищу библиотеку Java для первоначальной проверки орфографии / нормализации данных для пользовательского текстового содержимого, представьте интересы, введенные в профиле Facebook.

Этот текст будет помечен токеном в какой-то момент (до или после исправления заклинания, что бы ни работало лучше), а некоторые из них будут использованы в качестве ключей для поиска (точное совпадение). Было бы неплохо сократить количество орфографических ошибок и тому подобное, чтобы получить больше совпадений. Было бы еще лучше, если бы исправление работало на токенах длиннее, чем одно слово, например «кофе-бокал» стал бы «пить кофе», а не «мыть кофе».

Я нашел следующие библиотеки Java для исправления орфографии:

  1. JAZZY не находится в стадии активной разработки. Кроме того, подход, основанный на расстоянии от словаря, кажется неадекватным из-за использования нестандартного языка в профилях социальных сетей и многословных токенах.
  2. APACHE LUCENE , кажется, имеет статистическую проверку орфографии , которая должна быть гораздо более подходящей. Вопрос здесь, как создать хороший словарь? (В противном случае мы не используем Lucene, поэтому индекс не существует.)

Любые предложения приветствуются!

Ответы [ 5 ]

10 голосов
/ 23 февраля 2010

То, что вы хотите реализовать, это не корректор орфографии, а нечеткий поиск. Эссе Питера Норвига является хорошей отправной точкой для построения нечеткого поиска по кандидатам, проверенным по словарю.

В качестве альтернативы взгляните на BK-Trees.

Индекс n-граммы (используемый Lucene) дает лучшие результаты для более длинных слов. Подход для подготовки кандидатов до заданного расстояния редактирования, вероятно, будет работать достаточно хорошо для слов, найденных в обычном тексте, но не будет достаточно хорош для имен, адресов и научных текстов. Это увеличит размер индекса.

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

Хороший ресурс - Введение в поиск информации - словари и толерантный поиск . Существует краткое описание контекстной коррекции правописания.

2 голосов
/ 23 февраля 2010

Что касается заполнения индекса Lucene в качестве основы для проверки орфографии, это хороший способ решения проблемы. У Lucene есть коробка SpellChecker , которую вы можете использовать.

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

0 голосов
/ 03 апреля 2010

http://code.google.com/p/google-api-spelling-java - хорошая библиотека для проверки орфографии на языке Java, но я согласен с Томасом Юнгом, что может не решить вашу проблему.

0 голосов
/ 23 февраля 2010

Вы можете поразить проект Гутенберга или Интернет-архив для множества и множества корпусов.

Кроме того, я думаю, что Викисловарь может помочь вам. Вы даже можете сделать прямую загрузку .

0 голосов
/ 23 февраля 2010
...