Статистический подход с разделением слов - PullRequest
6 голосов
/ 12 марта 2012

Я хочу решить проблему разделения слов (разбирать слова по длинной строке без пробелов). Например, мы хотим извлечь слова от somelongword до [some, long, word].

Мы можем достичь этого с помощью некоторого динамического подхода со словарем, но другая проблема, с которой мы сталкиваемся, - это анализ неоднозначности. То есть orcore => or core или orc ore (Мы не учитываем значение фразы или часть речи). Поэтому я думаю об использовании некоторого статистического или ML подхода.

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

UPD: я реализовал этот метод на Clojure, используя некоторые советы из кода Питера Норвига

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

Я думаю, что слайд-шоу Питера Норвига и Себастьяна Турна - хорошая отправная точка. В нем представлены реальные работы, сделанные Google.

3 голосов
/ 13 марта 2012

Эта проблема полностью аналогична сегментации слов во многих азиатских языках, которые явно не кодируют границы слов (например, китайский, тайский).Если вы хотите узнать о подходах к проблеме, я рекомендую вам взглянуть на Google Scholar для текущих подходов к сегментации китайского слова.

Вы можете начать с рассмотрения более старых подходов: Sproat, Richard и Thomas Emerson.2003. Первый международный конкурс по сегментации китайского слова (http://www.sighan.org/bakeoff2003/paper.pdf)

. Если вы хотите получить готовое решение, я бы порекомендовал учебник LingPipe (http://alias -i.com / lingpipe / demos / tutorial / chineseTokens / read-me.html). Я использовал его на несегментированном английском тексте с хорошими результатами. Я обучил базовую модель языка символов на паре миллионов слов новостного текста, но я подозреваю, что для этой задачи вы получите разумную производительность, используя любой корпус.относительно нормального английского текста.

Они использовали систему исправления орфографии, чтобы рекомендовать 'исправления' кандидата (где исправления кандидата идентичны вводу, но с вставленными пробелами). Их корректор орфографии основан на расстоянии редактирования Левенштейнаони просто запрещают замену и транспонирование и ограничивают допустимые вставки только одним пробелом.

...