Есть ли описание алгоритма mecab (анализатор японских слов)? - PullRequest
1 голос
/ 08 мая 2019

Есть ли где-нибудь документ, описывающий алгоритм Mecab?

Или кто-то может дать простое одностраничное или одностраничное описание?

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

Мне нужна эта функция на моем бесплатном веб-сайте и в телефонных приложениях для обучения языкам (www.jtlanguage.com).Я также хочу обобщить это для других языков и использовать механизм обнаружения сопряжения, который я уже реализовал, и мне также нужно это без обременения лицензии.Поэтому я хочу создать свою собственную реализацию (C #).

У меня уже есть словарная база данных, полученная из EDICT.Что еще нужно?База данных частоты использования?

Спасибо.

1 Ответ

0 голосов
/ 09 мая 2019

Некоторые мысли, которые слишком длинны, чтобы уместиться в комментарии.

§ Какие лицензионные обременения? MeCab имеет двойную лицензию, в том числе BSD, так что он практически не обременен.

§ Существует также переписывание Java на Mecab под названием Kuromoji , лицензированное Apache, также очень удобное для коммерческой деятельности.

§ MeCab реализует технику машинного обучения, называемую условными случайными полями для морфологического анализа (разделения свободного текста на морфемы) и тегирования части речи (маркировки этих морфем) японского текста. Он может использовать различные словари в качестве обучающих данных, которые вы видели - IPADIC, UniDic и т. Д. Эти словари представляют собой сборники морфем и частей речи и являются результатом многолетних исследований в области лингвистики. Связанная статья принадлежит авторам MeCab.

§ Другие применили другие мощные алгоритмы машинного обучения к проблеме японского синтаксического анализа.

  • Kytea может использовать как опорные векторные машины, так и логистическую регрессию к одной и той же проблеме. C ++, Apache лицензирован, и документы там для чтения.
  • Rakuten MA написан на JavaScript, также свободно лицензирован (снова Apache) и поставляется с обычным и легковесным словарем для ограниченных приложений - хотя он не даст вам чтения кандзи. Вы можете найти научные статьи, описывающие алгоритм там.

§ Учитывая вышесказанное, я думаю, вы можете видеть, что простых словарей, таких как EDICT и JMDICT, недостаточно для расширенного анализа, который делают эти морфологические анализаторы. И эти алгоритмы, вероятно, слишком излишни для других, более простых для анализа языков (т. Е. Языков с пробелами).

Если вам нужна мощь этих библиотек, вам, вероятно, лучше написать микросервис, который запускает одну из этих систем (я написал REST-интерфейс для Kuromoji под названием clj-kuromoji-jmdictfurigana ) вместо пытаясь переопределить их в C #.

Хотя обратите внимание, что кажется, что привязки C # к MeCab существуют: см. Этот ответ .

В нескольких небольших проектах я просто выкладываю MeCab, затем читаю и анализирую его вывод. Мой пример TypeScript с использованием UniDic для Node.js.

§ Но, может быть, вам не нужен полный морфологический анализ и пометка части речи? Вы когда-нибудь использовали Rikaichamp , надстройку Firefox, которая использует JMDICT и другие общедоступные ресурсы небольшого веса, чтобы добавить глоссы к тексту сайта? (Также существует версия Chrome.) В ней используется гораздо более простой деинфлектор 1042 *, что, откровенно говоря, ужасно по сравнению с MeCab et al. но часто может получить работу.

§ У вас возник вопрос о структуре словарей (вы назвали их «базами данных»). Эта заметка Кимтаро (автора Jisho.org) о том, как добавить пользовательский словарь в IPADIC, может прояснить, по крайней мере, как работает IPADIC: https://gist.github.com/Kimtaro/ab137870ad4a385b2d79. Другие более современные словари (я склонен использовать UniDic) используют разные форматы, которые Вот почему вывод MeCab отличается в зависимости от того, какой словарь вы используете.

...