近年、自然言語処理(NLP)が注目を集めていますが、そのNLPの代表的な技術のひとつでもある形態素解析をご存知ですか?じつは形態素解析は、普段使用しているGoogle検索エンジンなど、身近なところで活用されています。
本記事では、形態素解析の基礎から、主なソフト、実際の活用例まで幅広く解説します。形態素解析について詳しく知りたい方は、ぜひ最後まで読んでみてください。
目次
形態素解析とは
形態素解析(Morphological Analysis)とは、自然言語の文章を、意味を持つ最小単位である「形態素」に分解する作業です。
コンピュータによる自然言語処理(NLP)の代表的な技術のひとつで、カナ漢字変換や全文検索、機械翻訳、検索エンジン、アプリなど、さまざまな分野で活用されています。
形態素とは
形態素(morpheme)とは、意味を持つ単語の一部を指す言葉です。
「日本語」であれば「日本」と「語」に分けられます。このとき、「日本」は「日本語」の意味を理解するために必要な部分なので、さらに分けることができません。「日本」は意味の最小の単位であると言えます。
今度は、「赤色」を例に見てみます。これは「赤」と「色」に分けることができますが、「赤」と「色」はそれぞれ意味を持つ単位なので、さらに分けることはできません。
このように、意味を持つ単語の一部であるものを形態素と呼びます。
自然言語処理とは
自然言語処理(NLP)とは、人間の言葉をコンピュータに理解させる技術のことです。コンピュータは、人間の言葉をそのまま理解することはできません。
そこでNLPを使い、人間の言葉をコンピュータが理解できるように、さまざまな技術を用いて処理します。近年では、AI技術の進歩により、NLPの技術も大きく進歩しました。
たとえば、OpenAIのChatGPTやGoogleのBardは、長文の文章を的確に理解し、それに応じた文章を生成する能力を備えています。
形態素解析の活用例
形態素解析の代表的な活用例は、以下の4つです。
機械翻訳
機械翻訳では、まず辞書に登録されている単語を優先的に使用し、単語の前後の文字列を参照しながら分割を行います。
また、未知語があった場合は、その範囲を特定します。形態素解析で分割できない多品詞語は、構文解析で処理します。
構文解析では、単語の間のつながりを見ることで、多品詞語の意味を推測します。単語に分割し、品詞を付与することで、より正確な翻訳結果を得ることができます。
検索エンジン
GoogleやYahoo!などの検索エンジンでは、余分な助詞や副詞などを省くことで、より的確な検索結果を得ることができます。
たとえば、「美味しいラーメン屋さん」と検索した場合、検索エンジンは、形態素解析によって「美味しい」「ラーメン」「屋さん」の3つの形態素に分割します。
そして、これらの形態素を元に、データベース内の関連する情報を検索します。
もし、形態素解析を行わずに検索ワードをそのまま処理した場合、検索結果には、ラーメンの味や店の雰囲気に関する情報だけでなく、ラーメンの作り方の説明や、ラーメンの歴史に関する情報など、本来の検索意図とは関係のない情報も含まれてしまう可能性があります。
形態素解析は、検索エンジンの精度を向上させるために重要な技術のひとつです。
文章要約
文章要約では、文章を単語ごとに分割することで、文章の重要な部分を抽出しやすくなります。
たとえば、「日本語は、文法が複雑で、学習が難しい言語である。」という文章を形態素解析すると、「日本」「語」「は」「、」「文法」「が」「複雑」「で」「、」「学習」「が」「難しい」「言語」「で」「ある」「。」という形態素に分割されます。
この形態素を元に、文章の重要な部分を抽出すると、「日本語は文法が複雑で、学習が難しい言語である。」という要約を得ることができます。
ニュースアプリ
ニュースアプリでは、改行位置を最適化することによって、ユーザーがより早く重要な情報を把握できるように形態素解析が使用されています。
具体的には、形態素解析によって、見出しの単語の長さや、単語間の意味的な関係などを分析し、適切な改行位置を決定します。
たとえば、「東京で大規模な地震が発生震度6強」という見出しを形態素解析すると、「東京」「で」「大」「規模」「な」「地震」「が」「発生」「震度」「6」「強」という形態素に分割されます。
この形態素を元に、地震の規模や発生場所などの重要な情報を把握し、見出しを
「東京で大規模な地震が発生↩︎
震度6強」 |
のように改行します。
見出しを見やすくすることで、ニュースアプリのユーザーエクスペリエンスを向上させることができます。
日本語形態素解析ソフト
日本語の形態素解析エンジンには、いくつかの種類があります。以前はChaSen(チャセン)がよく使われていましたが、現在は開発が終了しています。
現在では、より性能の良いMeCab(メカブ)がよく使われています。
MeCab(和布蕪)
MeCab(和布蕪)は、京都大学とNTTコミュニケーション科学基礎研究所が共同開発した、オープンソースの日本語形態素解析ソフトです。
こちらからダウンロードできます。
形態素解析結果として返す情報は、次のとおりです。
|
MeCabは、処理速度が速く、情報が豊富であることが最大の特徴です。また、IPAdic、NAIST jdic、UniDicなどさまざまな辞書との連結や追加学習も可能です。
多くの言語に対応しており、MeCabから形態素解析を始める人も少なくありません。
ChaSenとMeCabの違い
ChaSenとMeCabは、どちらも日本語の形態素解析ソフトですが、未知語の処理方法に違いがあります。
ChaSenは、辞書に登録されていない単語を「未知語」として扱い、形態素解析結果に「未知語」という品詞が含まれることになります。
MeCabは、辞書に登録されていない単語を、独自のアルゴリズムを用いて、ある程度の品詞に振り分けようとします。
形態素解析結果に「未知語」という品詞が含まれる頻度が、ChaSenよりも低くなる傾向があります。なお、MeCabの未知語処理は、辞書の品詞情報と、学習データに基づいて行われます。
辞書の品詞情報や学習データの質が高ければ、より正確な未知語処理が可能になります。
英語形態素解析ソフト
英語は、世界中で広く使用されている言語であるため、英語を対象とした言語処理ツールも数多く開発されています。
ここでは、統計的手法を用いた形態素解析システムであるTreeTagger(ツリータガー)について解説します。
TreeTagger(ツリータガー)
英語の形態素解析を行うツールとして、TreeTaggerは非常に有名です。こちらからダウンロードできます。英語だけでなく、ドイツ語、フランス語、スペイン語など、さまざまな言語に対応しています。
また、Windows、Mac、Linuxなどの環境で使用することができ、Pythonへの導入も簡単で、形態素に分類された際に品詞コードも表示されます。
品詞コードの日本語訳の一覧は、以下をご確認ください。
品詞コード | コードの説明 | 例 |
CC | 等位接続詞 | and, but, or |
CD | 基数 | 1, three |
DT | 限定詞 | the |
EX | 存在文のthere | There is |
FW | 外国語 | d’œuvre |
IN | 前置詞または従位接続詞 | in, of, like, after, whether |
IN/that | 補文素 | that |
JJ | 形容詞 | green |
JJR | 形容詞の比較級 | greener |
JJS | 形容詞の最上級 | greenest |
LS | リスト項目のマーカー | (1) |
MD | 法助動詞 | could, will |
NN | 名詞の単数形または不可算名詞 | table |
NNS | 名詞の複数形 | tables |
NP | 固有名詞の単数名 | John |
NPS | 固有名詞の複数形 | Vikings |
PDT | 前限定詞 | both the boys |
POS | 所有格語尾 | friend’s |
PP | 人称代名詞 | I, he, it |
PP$ | 所有代名詞 | my, his |
RB | 副詞 | however, usually, here, not |
RBR | 副詞の比較級 | better |
RBS | 副詞の最上級 | best |
RP | 不変化詞(句動詞を構成する前置詞) | give up |
SENT | 文末の句読点記号 | ?, !, . |
SYM | 記号 | @, +, *, ^, = |
TO | to | to go, to him |
UH | 間投詞 | uhhuhhuhh |
VB | be動詞の原形 | be |
VBD | be動詞の過去形 | was, were |
VBG | be動詞の動名詞または現在分詞 | being |
VBN | be動詞の過去分詞 | been |
VBZ | be動詞の三人称単数形現在 | is |
VBP | be動詞の三人称単数形以外の現在 | am, are |
VD | do動詞の原形 | do |
VDD | do動詞の過去形 | did |
VDG | do動詞の動名詞または現在分詞 | doing |
VDN | do動詞の過去分詞 | done |
VDZ | do動詞の三人称単数形現在 | does |
VDP | do動詞の三人称単数形以外の現在 | do |
VH | have動詞の原形 | have |
VHD | have動詞の過去形 | had |
VHG | have動詞の動名詞または現在分詞 | having |
VHN | have動詞の過去分詞 | had |
VHZ | have動詞の三人称単数形現在 | has |
VHP | have動詞の三人称単数形以外の現在 | have |
VV | 動詞の原形 | take |
VVD | 動詞の過去形 | took |
VVG | 動詞の動名詞または現在分詞 | taking |
VVN | 動詞の過去分詞 | taken |
VVP | 動詞の三人称単数形現在 | take |
VVZ | 動詞の三人称単数形以外の現在 | takes |
WDT | Wh限定詞 | which |
WP | Wh代名詞 | who, what |
WP$ | 所有関係代名詞 | whose |
WRB | Wh副詞 | where, when |
: | 一般結合記号 | ;, -, — |
$ | 通貨記号 | $, £ |
まとめ
形態素解析は、自然言語を処理するための技術として、すでに実用化されて欠かせないものとなっています。近年では、AIのディープラーニングや音声認識の分野にも応用され、今後もその重要性はますます高まっていくでしょう。
すでにある程度成熟していますが、時代とともに変化する言語に対応するために、さらなる研究開発が求められています。この分野においても、AIによる自律学習がすでに始まっており、今後の展開が期待されます。
- 最新記事