形態素解析
形態素解析(けいたいそかいせき、Morphological Analysis)とは、文法的な情報の注記の無い自然言語のテキストデータ(文)から、対象言語の文法や、辞書と呼ばれる単語の品詞等の情報にもとづき、形態素(Morpheme, おおまかにいえば、言語で意味を持つ最小単位)の列に分割し、それぞれの形態素の品詞等を判別する作業である。
自然言語処理の分野における主要なテーマのひとつであり、機械翻訳やかな漢字変換など応用も多い(もちろん、かな漢字変換の場合は入力が通常の文と異なり全てひらがなであり、その先に続く文章もその時点では存在しないなどの理由で、内容は機械翻訳の場合とは異なったものになる)。
もっぱら言語学的な観点を主として言語学で研究されている文法にもとづく解析もあれば、コンピュータ上の自然言語処理としてコンピュータでの扱いやすさに主眼を置いた解析もある。以下は後者のためのツールを用いた例で、「お待ちしております」という文を形態素解析した例である (「茶筌」を使用した)。
文字列 | 読み | 原形 | 品詞の種類 | 活用の種類 | 活用形 |
---|---|---|---|---|---|
お待ち | オマチ | お待ち | 名詞-サ変接続 | ||
し | シ | する | 動詞-自立 | サ変・スル | 連用形 |
て | テ | て | 助詞-接続助詞 | ||
おり | オリ | おる | 動詞-非自立 | 五段・ラ行 | 連用形 |
ます | マス | ます | 助動詞 | 特殊・マス | 基本形 |
。 | 。 | 。 | 記号-句点 |
自然言語以外の場合では、プログラミング言語などの場合は字句解析が相当する。
英語の形態素解析の手法
編集英語の文は日本語とは異なり、予め単語と単語の区切りがほとんどの箇所で明確に示される。このため、単語分割の処理は日本語の場合ほど複雑である必要はなく、簡単なルールに基づく場合が多い。
例えば「It's a gift for Mr. Smith.」という文を解析することを考える。単語分割をすると以下のようになる。
it / 's / a / gift / for / mr. / smith / .
- 文全体を小文字化し、単語の位置(文頭かそれ以外か等)により単語が区別されてしまうことを防ぐ
- it's や don't 等の省略形を分割する(it's → it / 's 、 don't → do / n't)
- 文末のピリオドを前の単語と切り離す(この際、Mr. などに使われる文末とは関係ないピリオドは切り離さない)
it's の分割として it / 's にするか it / is にするかはしばしば議論の対象となるが、所有格末尾の 's が誤って is になることを防ぐために、 's にすることが多い。
品詞付与はルールに基づくものから統計に基づくものまで利用される(下記の例は Stanford POS Tagger による)。
文字列 | 品詞の種類 | 原形 |
---|---|---|
it | PRP(人称代名詞) | it |
's | VBZ(動詞/三単現) | be |
a | DT(冠詞) | a |
gift | NN(名詞/単数) | gift |
for | IN(前置詞) | for |
mr. | NNP(固有名詞/単数) | mr. |
smith | NNP(固有名詞/単数) | smith |
. | . | . |
日本語の代表的な形態素解析の手法
編集英語の場合と異なり、文節を得るのが目的となることが多い。大まかに言えば文から切り出した単語が属する品詞を辞書(自然言語処理用の)を用いて調べていき、結果得られた並びから正しく文節が構成される並びであるものを正解であるとするといったような方法を取る。
日本語文法では、たとえば動詞のあとに格助詞がくることはできない(「ドアを開けるを」などは不可)といったように、ほとんどの付属語について「このようなものの後には付く」「このようなものの後には付かない」という規則性があり、また動詞の活用はその後に来る品詞を制限することがある(たとえば連体形の後は名詞)。このような性質を利用することによって単語の境界の判別を行う。具体的にこの性質を利用する方法には以下の2つがある:
規則による形態素解析
編集長尾真らの1970年代後半の研究[1][2]では、次のようなアルゴリズムによる形態素解析処理を構築した。
- 事前に用意しておいた辞書や規則をテーブル形式で読み込む。
- 入力文を読み込む。
- 慣用句テーブルとのマッチングを行う。最長一致法を使う。マッチングした部分は固定され、以降の解析では変更されない。
- 句読点と字種の変わり目(基本的にひらがなから漢字に変わる箇所)で、文節を切り出す。これは文法上の文節ではない。
- 切り出された文節の中で、慣用句にマッチングしていない箇所について、ひらがな書き自立語テーブルなどとのマッチングを行う。このとき、接続条件を考慮せず、全ての可能性を洗い出す。
- 以上で出てきた慣用句や単語を接続条件に基づいて連鎖させていく。複数の連鎖がありうる場合、全てを出力する。
- 結果をファイルに書き出す。
- 未処理の文節があれば、5 に戻る。
前提として、漢字で書かれた部分は基本的に切り分けず、そこが自立語(あるいは自立語の語幹)になると想定している。従って、漢字で書かれた自立語の辞書(テーブル)は持たない。このとき使われるテーブルには、次のものがある。
- 慣用句テーブル
- ひらがな部分の単語切り分け用テーブル
- 付属語テーブル
- ひらがな自立語テーブル
- 活用語尾テーブル -
- ひらがな語幹テーブル
- 特殊動詞テーブル
- 副詞テーブル
- 情報テーブル - 上記テーブル内の各項目に対応した辞書的情報
- 接続テーブル - 形態素間の相互接続関係を記述したテーブル。接続カテゴリ(品詞)毎に、その前に出現可能な形態素のカテゴリや活用形が記されている。
この中で、接続テーブルが規則に相当する。形態素解析における品詞の接続関係は必ずしも通常の文法通りではなく、解析の効率や、形態素の切り分けがなるべく100%となる(切り分け不能とならない)よう考慮して設計される。このような規則を「文節構造モデル」と呼び、首藤公昭らの研究がある[3][4]。
確率的言語モデルによる形態素解析
編集昨今の日本語や英語などの形態素解析では統計的な手法が利用される。主な手法に「ラティス上の経路予測」と「点予測」が存在する。
ラティス上の経路予測では、事前に生成可能な単語列 (ラティス) を辞書を使って網羅的に列挙し、各単語間の連結部において両単語が連結して出現する確率に相当するスコアを付与する。文全体でこのスコアの合計がもっとも高くなるような品詞列を答えとする。スコアの計算は隠れマルコフモデル (HMM, Hidden Markov Model) や条件付き確率場 (CRF, Conditional Random Field) などによりモデル化する。
次に点予測 (Pointwise prediction) による手法がある。点予測ではすべての文字の境界に対し、分割可能かどうかをサポートベクターマシン (SVM, Support Vector Machine) 等の分類器により判定する。分割可能な場合はその点が単語区切りとなる。分割判定には、分割点の周りの文字やその種類、部分文字列が単語辞書に含まれるかどうかといった情報が与えられる。品詞推定においても、ある判定箇所について、その単語と周りの単語から SVM などにより判定する。
点予測は、辞書を使って単語ラティスを生成する必要がないというメリットがある。このため、入力文中の単語が辞書に無い場合 (未知語を含む場合) でも、周りの文字列を使って単語らしい部分を識別可能な場合があり、辞書が貧弱でも比較的高い精度で解析できる。さらに、ラティスの生成には原理的に文の長さをnとしてO(n2)の時間を要するが、点予測では各文字間について判定するだけのためO(n)の時間で済む。
いずれの手法でも、ある特定の言語の全世界における全文章データを元にモデルを作成することは事実上不可能であるし、さらに、そもそも文章化されたデータからモデルを学習したとしても、それが元となる文章の解析には最適であるものの、それ以外の(たとえばモデルから見ればまったく手付かずで未知の、今から解析しようとする)文章には適しているかどうかは保証が無い事などから次の節で述べるような問題も発生する。
日本語の形態素解析における諸問題
編集日本語を形態素解析する際においては、以下の4つが大きな問題となる:
単語の境界判別の問題
編集単語の境界を判別することはかな漢字変換の基礎となる技術である。しかし、単語の境界判別を正しく行うためには与えられた文以外の様々な知識、情報が必要となる場合があり、そのため解決が困難である。
たとえば「うらにわにはにわとりがいる」という文には、以下の様に(意味的には解釈に失敗しようとも)文法的に正しい異なる読み方が存在する(本当はもっとある):
- 裏庭 / には / 鶏 / が / いる
- 裏庭 / には / 二 / 羽 / トリ / が / いる
- 裏 / に / ワニ / は / 鶏 / が / いる
- 裏庭 / に / 埴輪 / 取り / が / いる
上記最後の文の意味解釈は、"埴輪取り"と呼ばれる人あるいは物が存在したという特殊な状況下では意味的にも解釈に成功するだろうが、一般にそんな例は全くといっていいほど無い。しかしそれは"埴輪取り"なるものが実際には存在しないという経験的な知識による人間らしい判断であって、コンピューターなどの計算機を用いた解析では、文法や単語の辞書的データを超えるようなそういった知識も導入したとすると必要な知識が膨大に用意される必要があり、現実的ではない。この文の様に、完璧な正解を得るにはその文がおかれている文脈や書き手の意図等の背景をくみとらねばならないため非常に難しい。
文中の品詞が常に一意に確定できるわけではない。
たとえば名詞と形容動詞の間には「別」「イロイロ」など、形容動詞と形容詞の間にも「アタタカ」「ヤワラカ」という連続領域があるという指摘がある。[5] より具体的には「それとこれは話が別だよ」という文章の場合、「別だ」という形容動詞に「よ」という終助詞がついたもの、「別」という名詞に「だよ」という終助詞がついたものという2通りに解釈することができる。しかもこの場合にどちらで分けても、文章の意味は変わらない上に、形態素の区切りの位置も一定ということが保証されない。
このような品詞分類の曖昧さは他の言語にも存在するが、冠詞や複数形、文法的性がない、主語を必須としないなど、手掛かりとなる規則が少ない。
未知語の問題
編集形態素解析は普通、その言語の単語を収めた辞書を用いておこなわれる。解析対象の文中の辞書に含まれない単語を未知語と呼ぶ。日本語では漢字の列やカタカナの列はたとえ未知語であってもある程度単語として認識することができる。しかしそれが使えない場合、代表的な方法は「知っている単語が現れるまで読み飛ばす」というものだが、これは後の解析を狂わせてしまい、結果として頑健な解析(より多くの文を解析可能であること)ができなくなってしまう恐れがある。
ルーズな文法の問題
編集話し言葉や電子メールなどで使われる言葉は、(たとえば小中学校で習うような)ある特定のモデル化された文法による日本語からはかけ離れたものが多い。たとえば「そんなことは知らないでしょう」が「んなこた知らんしょ」に変化しうる。また電子メールなどでは形態素解析に用いられる辞書には載っていない略語やフェイスマークが使われていることも多い(しかもそれらは一般に常用されるがために日々増えている)。
また、こういった文は校正が不十分なため、書き手の誤りが入っている場合が多くある。しかも、こういった誤りが繰り返されれば正用とみなされる場合すらある。このような文に対応した解析手法を頑健な解析と呼ぶ。このような文に対応するためには、正しい文が入力されるという前提の設計に基づく現在の形態素解析の手法を、誤りが含まれる様な文にも対処可能なように根本から見直す必要があるが、言語資源の不足のためあまり研究はされていない。
日本語以外の言語の形態素解析
編集英語を含む多くの言語では、単語はふつう空白によってわかち書きされる。このため文を形態素に区切るのは日本語に比べると比較的簡単である (合成語の品詞や、形態素の品詞を見分ける問題は依然として残る)。ドイツ語では複数の単語から合成された名詞が空白による区切りのない一つの単語として表現されるため、わかち書きを行う必要がある。中国語でも単語間の空白がないため、日本語と同様にわかち書きを行う必要がある。また英語や日本語では活用する品詞の種類が少数に限られるため、単語の活用形も含んだものをすべて辞書に収めることができるが、ロシア語、フィンランド語などでは活用はほぼすべての品詞が起こすため、これらの言語では辞書に活用形を全て収めるのは非現実的である。
入手可能な英語の形態素解析エンジン
編集フリーで入手可能なもの
編集- Stanford POS Tagger、nlp.stanford.edu/software/tagger.shtml
入手可能な日本語の形態素解析エンジン
編集フリーで入手可能なもの
編集フリーなライセンスで、自由に入手出来る。
- ChaSen(茶筌)、chasen.naist.jp (ラティス上の経路予測、HMM)
- JUMAN、nlp.kuee.kyoto-u.ac.jp
- KAKASI(kanji kana simple inverter)、kakasi.namazu.org
- KyTea(キューティー)、http://www.phontron.com/kytea/ (点予測、線形分類)
- MeCab(和布蕪)、taku910.github.io/mecab (ラティス上の経路予測、CRF)
- NMeCab(MeCabの.NETへの移植)、github.com
- Sen(MeCabのJavaへの移植)、ultimania.org、sen.dev.java.net
- Igo (MeCab互換、Java形態素解析器)、igo.sourceforge.jp
- Janome (Python)、https://pypi.python.org/pypi/Janome
- Kagome (Go)、github.com/ikawaha/kagome (ラティス上の経路予測、辞書の切り替えで韓国語の形態素解析も可能[6])
商用システム
編集- Rosette形態素解析システム、Basis Technology
- Amazon、MSN、楽天などで利用されており、世界で最も利用者の多い形態素解析エンジンであると言える。
- 形態素解析エンジン言語郎、Zoo Corporation
- 日本語形態素解析MARIMO ムーター株式会社
- 大規模な辞書を持たず、1000語程度の学習モデルのみで未知語、新語、流行語、略語、話し言葉に対応する。
- 日本語形態素解析Webサービス(Yahoo!デベロッパーネットワーク)、developer.yahoo.co.jp
- 形態素解析API(gooラボ)、gooラボ by NTTレゾナント
- IBM Watson Explorer (旧 IBM Watson Content Analytics) [7]
形態素解析辞書(解析エンジンと合わせて利用)
編集フリーで入手可能なもの
編集- ipadic :ChaSen用辞書。
- NAIST-jdic :ChaSen,MeCab用の辞書。
- UniDic :MeCab用の辞書。
脚注・出典
編集- ^ 長尾真(1979年)「計算機による日本語文章の解析に関する研究」、昭和53年度文部省科学研究費特定研究(1)研究報告書
- ^ 長尾真・辻井潤一(1978年)「国語辞書の記憶と日本語の自動分割」、情報処理 Vol.19 No.6
- ^ 首藤公昭・楢原登志子・吉田将(1979年)「日本語の機械処理のための文節構造モデル」、電子通信学会誌 Vol.62-D No.12
- ^ 首藤公昭(1980年)「文節構造モデルによる日本語の機械処理に関する研究」福岡大学研究所報 No.45
- ^ Teramura, Hideo (2011). Nihongo no shintakusu to imi. dai 1 kan (dai 18 satsu [18. Druck] ed.). Tōkyō: Kuroshio Shuppan. ISBN 978-4-87424-002-1
- ^ “How to build kegome v2 on web?” (英語). github.com. 2021年12月22日閲覧。
- ^ “IBM Knowledge Center”. www.ibm.com. 2019年6月20日閲覧。
参考文献
編集- 長尾真 編 『講座 現代の言語7 言語の機械処理』 三省堂、1984年、ISBN 4-385-30667-2。
関連項目
編集外部リンク
編集- 形態素解析(中川裕志、言語情報科学 第1回、2005年度開講、UTokyo OCW)
- 形態素解析と分かち書き処理 (PDF, 465 KiB) 保田明夫
- 大規模な日本語複単語表現辞書:JMWEL —次世代の日本語処理に向けて(首藤公昭、日本語処理研究工房 ことばの森)