Некоторые мысли, которые слишком длинные, чтобы уместиться в комментарии.
§ Какие лицензионные ограничения? 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.) Он использует гораздо более простой деинфлектор что откровенно ужасно по сравнению с MeCab et al. но часто может выполнить свою работу.
§ У вас возник вопрос о структуре словарей (вы назвали их «базами данных»). Это примечание от Кимтаро (автора Jisho.org) о том, как добавить собственный словарь в IPADIC, может прояснить, по крайней мере, как работает IPADIC: https://gist.github.com/Kimtaro/ab137870ad4a385b2d79. Другие, более современные словари (я обычно использую UniDic) используют разные форматы, поэтому вывод MeCab отличается в зависимости от того, какой словарь вы используете.
person
Ahmed Fasih
schedule
09.05.2019