Coder Social home page Coder Social logo

teg's Introduction

モンゴル語形態素解析器・生成器 (Mongolian morphological analysis & generation)

この文書では、キリル文字モンゴル語形態素解析器・生成器の設計を議論します。

形態素解析器・生成器とは

この文書では、形態素解析 (morphological analysis) とは、分割 (segmentation)、見出し語化 (lemmatization)、および品詞タグ付け (POS tagging) の同時処理を言います。生成 (generation) はその逆の処理です。また、分かち書きされた単位を語 (word) と呼びます。

例えば語 ингэснээр は以下のように解析されるでしょう:

ингэснээр ->
  ингэ        ингэ    verb    *
  сн  -сан    verbal-suffix   verbal-noun
  ээр -аар    nominal-suffix  case

最初の列は表層形 (surface form)、次の列は見出し語 (lemma)、残りの列は品詞 (part of speech) を表します。生成では、反対に、見出し語と品詞の列から語を作ります:

ингэ:verb:*  -сан:verbal-suffix:verbal-noun  -аар:nominal-suffix:case ->
  ингэснээр

このような処理を行うには、

  1. 品詞体系
  2. 形態素辞書
  3. 文法規則
  4. (広い意味での) 正書法上の規則

を計算機に教える必要があります。文法規則とは、例えば、動詞 (verb) には動詞接尾辞 (verbal suffix) が連接できるが、名詞接尾辞 (nominal suffix) は連接できないといったものです。(広い意味での) 正書法上の規則とは、-аар が母音調和 (vowel harmony) により ээр と綴られたり、-сэн に -ээр が後続すると、母音が落ちて сн と綴られるといったものです。

応用 (applications)

形態素解析の応用先は広いですが、ここではモンゴル語に特化した応用を挙げます。

  • モンゴル語-日本語、日本語-モンゴル語の機械翻訳
  • モンゴル文字への変換

機械翻訳

機械翻訳は、統計的機械翻訳 (statistical machine translation) の研究が進んだことで、翻訳規則を直接人手で書くことなく実現できるようになっています。モンゴル語と日本語は、日本語と英語などと違い、大きな語順の並び替え (distortion) なしに翻訳できます。既存のフレーズベースの機械翻訳 (phrase-based machine translation) で問題なく実現できるでしょう。オープンソースの SMT システム Moses を使えば、誰にでも機械翻訳機が作れます。

統計的機械翻訳に必要なデータは、次の 2 種類です。

  1. 対訳文 (モンゴル語と日本語の対応する文のペア)
  2. 対象言語 (target language) の大規模なテキスト (モンゴル語-日本語翻訳の場合は日本語)

実用的な機械翻訳機を作るには、対訳文が100万文程度は必要だと思います。個人で作るのは不可能です。対象言語のテキストは Web をクロール (crawling) することで入手できます。

モンゴル語と日本語の機械翻訳を効率的に行うには、語を単位とするのではなく、形態素解析によって、見出し語を取り出す必要があります。例えば、

  • туслахыг хүсвэл = 協力したければ
  • мэдэхийг хүсвэл = 知りたければ

と翻訳できることから、「V-хыг хүсвэл = ~したければ」という翻訳規則を作りたいところです。しかし語を単位として処理すると、こうした規則は得られません。形態素解析を行い、見出し語と品詞の列を取り出せば、以下のような翻訳規則を作れます:

-х:verbal-suffix:verbal-noun  -ыг:nominal-suffix:case  хүс:verb:*  -вал:verbal-suffix:converb   |||   <動詞:基本連用形>  たい:接尾辞:形容詞性述語接尾辞  <接尾辞:基本条件形>

このような翻訳規則は翻訳システムが対訳文から自動的に抽出するので、自分で書く必要はありません。

見出し語を単位として SMT システムを動かすには、元言語 (source language) の文をまず見出し語列に変換します。ここで形態素解析が必要です。SMT は元言語の見出し語列を対象言語の見出し語列に翻訳します。最後に、対象言語の見出し語列から文を作ります。ここで生成器が必要です。

モンゴル文字への変換

キリル文字からモンゴル文字への変換は機械翻訳より簡単です。見出し語単位の変換規則と、モンゴル文字の生成器が必要です。例えば、ингэхийг をモンゴル文字に変換するには、

  • ингэ ||| ᠢᠩᠭᠢ (inggi)
  • -х ||| -ᠬᠤ / -ᠬᠦ (-qu / -kü)
  • -ыг |||  ᠢ /  ᠶᠢ (NNBSP i / NNBSP yi)

という変換規則と、接尾辞の適切な形を選ぶ生成規則が必要です。それらを使うと、

  • ᠢᠩᠭᠢᠬᠦ ᠶᠢ

というモンゴル文字の綴りが得られます。

形態素解析の簡易的な実装

筆者 (村脇) は2007年頃モンゴル語形態素解析器を作っていましたが、これは簡易的なものでした。どのような点が簡易的だったかというと、生成器だけを作っていました。この生成器を使って、

  • тусал -> туслах, туслав, тусалсан, тусалснаа, ...

というように、あらかじめ良く出現する語を生成して、辞書に格納していました。そして、テキスト中の語と辞書との単純マッチングのみを行っていました。

この方法には様々な欠点があります:

- 辞書が巨大化します。
- あまり出現しない語が漏れており、解析に失敗します。

したがって、本格的な実装に切り替えるべきです。

形態素解析の本格的な実装

本格的な形態素解析では、あらかじめ語を展開しておくのではなく、入力された語を動的に分割します。そのためには、あらかじめ、形態素を表層形に展開しておく必要があります。

  • тусал -> тусал, тусл
  • -сан -> сан, сэн, сон, сөн, сн

また、どのような表層形が連接するかという正書法上の規則を記述する必要があります。実際のモンゴル語のテキストには、正書法に従わないものが多いので、緩い規則を記述した方が良さそうです。

文法規則も必要です。-аа には動詞接尾辞と再帰接尾辞の2種類がありますが、動詞に直接後続するのは前者だけです。

文法規則や正書法上の規則では解消できない曖昧性は少ないと思います。もしそのような例が目立つ場合は、日本語の形態素解析のような、コストによる曖昧性解消を検討します。

主な課題

  • 品詞体系の設計。特に、モンゴル語では名詞、形容詞、副詞の境界が曖昧だが、どのような設計が良いか。
  • 正書法上の規則の整理。-ын, -ыг, -т/-д の書き分け、隠れた н の扱いなどが煩雑。
  • 辞書の整備。現在は1万形態素ぐらい。名詞と動詞はかなり追加したが、形容詞と副詞が足りない。

teg's People

Contributors

murawaki avatar

Stargazers

amarza avatar

Watchers

James Cloos avatar  avatar amarza avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.