Статистический подход к разделению слов

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

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

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

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


person mishadoff    schedule 12.03.2012    source источник


Ответы (2)


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

person ts.    schedule 12.03.2012
comment
Спасибо, хорошее начало. Я нашел много полезных фрагментов кода на сайте Питера Норвига. - person mishadoff; 20.03.2012

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

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

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

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

person AaronD    schedule 13.03.2012