BLOG

AI 基礎

形態素解析に代表される自然言語処理の仕組みやツールまとめ

2019.05.28

AIが人間の問いに応答するには、まず質問の言葉の意味を理解しなければなりません。その際に必要とされるのが自然言語処理という技術ですが、「形態素解析」はその自然言語処理技術における最も基礎的な部分を担っています。

すでに歴史が長く、様々な場面で使われる形態素解析とは具体的にどのような技術なのでしょうか。また、身近な活用事例にはどのような事例があるのでしょうか。

この記事では、形態素解析の基礎的な知識や代表的なツール、日本語と英語の解析の違いなどを中心に紹介します。

形態素解析とは?形態素解析のアルゴリズムと解析ツール

基礎編:形態素解析の仕組みについて理解しよう

まず、形態素解析とはどのような技術なのか、基礎的な部分から紹介していきましょう。形態素解析とは、文章として構成されている単語を最小単位に分解し、文章を分割する作業のことを指します。

文章は複数の単語によって構成されています。たとえば、「私は大学でAIの勉強をします」という文章の場合、以下のように細分化されます。

品詞わけ

文章は名詞や動詞、助詞など、文章に隠された言葉の意味を小さな単位に分解することができ、このような言葉のことを「形態素」と呼びます。形態素はそれ以上細分化してしまうと意味を成すことのできない最小単位です。

  • 名詞・・・物体の名前や人、地名など(例:私、机、東京 など)
  • 動詞・・・状態を表す言葉。述語として使用されることが多い(例:行く、食べる、寝る など)
  • 助詞・・・関係を表したり捕捉の意味を付け加えたりするもの(例:私「が」、私「を」 など)
  • 形容詞・・・ものの属性や装飾として使われる(例:長い、重い、赤い など)
  • 副詞・・・推量、願望、疑問、仮定などを表す(例:きっと、どうか、なぜ、おそらく など)

上記で挙げた品詞は代表的なものですが、ほかにも格動詞や助動詞、接続助詞などさまざまな品詞に分類されます。言い方を換えるとすれば、形態素に分割したあとは必ずいずれかの品詞に分類されるということでもあります。

自然言語処理の手法として活用される形態素解析は、日本語の複雑な文法や単語が混在する文章のなかから、形態素解析ツールに登録されている辞書情報と照らし合わせ、文章として構成される形態素を割り出していく方法でおこなわれます。

形態素解析の活用事例としては検索エンジンや仮名漢字変換などが代表的ですが、近年ではAIによる自然言語処理への活用も注目を集めています。また、一部のニュースアプリにおいては記事の改行位置を最適化する目的として形態素解析の技術が採用されており、見やすいニュース記事の提供に一役買っています。

ここで形態素解析の基本について一旦整理します。以下の4点をぜひ押さえておきましょう。

  • 「形態素」とは文章を分解した中にある最小単位
  • 文章を形態素に分類するための処理を「形態素解析」と呼ぶ
  • 形態素解析は「形態素解析ツール」で実行する
  • 形態素解析ツールに登録されている「辞書」の情報と照らし合わせて形態素を割り出す

ツール編:代表的な形態素解析ツールの紹介

形態素解析を実行するためのツールはいくつか存在しますが、なかでも代表的なのが「MeCab」、「JUMAN」、「JANOME」です。それぞれの特徴や違いを具体的に紹介します。

MeCab

和布蕪(メカブ)と読みます。開発者の好物であったのが名前の由来。京都大学情報学研究科と日本電信電話株式会社コミュニケーション科学基礎研究所の共同研究のなかで、現Googleソフトウェアエンジニア 工藤拓氏によって開発されたオープンソース型の形態素解析ツールです。

辞書やコーパスの種類に依存せずに利用可能で、汎用的な設計となっていることが特徴です。「ChaSen」や「KAKASI」といった他の形態素解析ツールに比べて高速に動作。ChaSenと比較すると、その速さは3〜4倍程度とされています。さらに、条件付き確率場とよばれる学習モデルにより高い解析精度を誇ります。

JUMAN

京都大学の黒橋・河原研究室で開発された形態素解析ツールで、コンピュータによる日本語解析を行う研究者向けに提供されています。解析ツールそのものはホームページから無料でダウンロードが可能で、研究者以外でも利用は可能です。

「ChaSen」という形態素解析ツールのルーツとなった存在です。大きな特徴はWEBテキストから辞書情報を自動獲得できる点と、Wikipediaから抽出した辞書も利用できる点にあります。また、文字コードUTF-8にも対応し、辞書情報はあらかじめ内包されているのもJUMANの特徴といえるでしょう。

JANOME

「蛇の目」が名前の由来です。蛇(Python)の名の通り、Pure Pythonでつくられた形態素解析ツールです。JANOMEには辞書情報があらかじめ内包されていますが、中身はMeCabのデフォルトとして内蔵されている辞書を流用。そのため、解析結果の精度としてはMeCabと同等になります。

ライブラリ編:形態素解析の目的に合う辞書を選択する

形態素解析の基本的な仕組みとして辞書情報をもとに解析が行われると紹介しましたが、もう少し詳しく解説しましょう。ここではMeCabを一例として紹介します。

MeCabの語句追加方法について

まず、MeCabにおける語句の追加方法には2つの種類があります。ひとつは「システム辞書」への追加、もうひとつは「ユーザー辞書」への追加です。

システム辞書は、解析が早いという特徴があります。しかし、システム辞書に新たな単語を登録する際にはインストールに時間がかかるというデメリットがあります。対してユーザー辞書の場合は、インストールの必要がない代わりに解析に時間がかかってしまいます。

辞書の種類

上記のような特徴から、解析時間を重視する場合はシステム辞書が、頻繁に辞書の更新が必要な場合はユーザー辞書を利用するのがおすすめです。また、辞書のインストール権限がない場合はユーザー辞書を利用するほか手段がありません。

固有名詞にも強い辞書の登場

MeCabでは公式サイトで「IPA辞書」の利用を推奨しています。IPA辞書とはもともとChaSenという形態素解析ツールに内包されていた辞書で、これがMeCabにも流用されています。従来のIPA辞書は基本的な日本語の文法や単語は網羅していますが、固有名詞や新しい言葉に弱いという弱点がありました。しかし、「mecab-ipadic-NEologd」という固有名詞や新語に強いシステム辞書が登場し、IPA辞書の弱点が克服されています。

mecab-ipadic-NEologdは毎週月曜日と目標日に情報が収集されており、ほぼ最新の情報が更新される仕組みです。情報収集先のサイトはニュース記事やSNS、「はてなキーワード」などの一般サイト。管理者やユーザー自らが更新する手間もなく、システム辞書に自動で更新・登録されるため、非常に実用的です。

ユーザー辞書はどんな時に使う?

もしも何らかの理由でmecab-ipadic-NEologdのインストールができない場合、mecab-ipadic-NEologd以外で固有名詞に強い辞書を利用するためにはどのような方法があるのでしょうか。タレントの名前、流行語、商品名など、時代とともに登場する新たな単語を解析するためにはユーザー辞書として設定する必要があります。

たとえば「プレミアムフライデー」という単語はここ数年のうちに登場したものですが、従来の形態素解析に登録された辞書で解析すると「プレミアム」と「フライデー」が別々の単語として認識されてしまい、本来の意図とは違う解析結果が出てしまいます。

このように、MeCabを利用するうえでは解析したい言葉にあわせて最適な辞書を選択したり追加したりすることが重要です。

英語編:日本語と英文における形態素解析の違いと代表的なツール

MeCabのような形態素解析ツールは日本語の解析に特化したツールです。じつは、形態素解析は言語の種類によっても利用すべき解析ツールが異なり、それぞれの言語に特化したツールを選択する必要があります。

そもそも日本語と英語の最大の違いは、文章のなかにスペースが存在するか否かが大きなポイントです。英語の場合はひとつひとつの単語が半角スペースで区切られており、形態素を分割することが容易です。しかし、日本語の場合はスペースが入ることがなく句読点によって文章を区切ります。

  • 日本語・・・私は今夜、友人と一緒にレストランに行きます。
  • 英語・・・ I will go to the restaurant with my friend tonight.

上記の例文のように、日本語に特化した形態素解析ツールが誕生した背景には、日本語と英語の文法における根本的な違いがあったといえます。また、スペースで区切るという文法は英語以外にもフランス語、ドイツ語などに共通している点です。

欧米の言語が共通の形態素解析ツールを利用できるのに対し、日本語の形態素解析ツールが独立しているのは、単語同士をスペースで区切る文化であるか否かが大きく影響しているといえるでしょう。それでは、実際に英語の形態素解析に特化した代表的な解析ツールをいくつか挙げてみます。

TREE TAGGER

英語以外にもフランス語やスペイン語、ドイツ語などにも対応した形態素解析ツールです。Windows、Mac、Linuxなど複数のOSに対応。英語の形態素解析といえばTREE TAGGERとよばれるほどメジャーな解析ツールです。Pythonへの導入も簡単で、公式ページに記載された情報の通りに実行すれば迷わずインストールできるでしょう。また、形態素に分類された際に品詞コードも表示される機能を実装しています。

NLTK

NLTKとは「Natural Language Tool Kit」を略したもので、Pythonでライブラリとして使用する形態素解析ツールです。構文解析や品詞のタグ付け、情報抽出を容易に実行することができます。

ちなみに、上記で挙げた2つのツールも例外ではありませんが、形態素解析ツールで使用できる言語として圧倒的に多いのがPythonです。Pythonとは従来のものに比べてコードがシンプルに設計されている汎用プログラミング言語であり、AIをはじめとした幅広い分野において注目されています。

形態素解析はどこで活用されている?

文字分類

もっと便利な世の中に!自然言語処理や音声認識と、形態素解析の関係性

ここまで形態素解析の技術的な基本知識や解析ツールの種類を中心に解説してきましたが、もう少し身近な視点から形態素解析の活用事例について紹介しましょう。

形態素解析はAIのなかでも自然言語処理技術と深い関わりがあり、最も基礎的な処理部分を担っている技術です。具体的には、以下の4つの基本的な自然言語処理のステップにおいて、一番初めのステップを担っています。

  • 形態素解析・・・言葉を最小単位に分割する
  • 構文解析・・・文法の規則にしたがって文の構造を解析する
  • 意味解析・・・主語や述語を理解する
  • 文脈解析・・・文章全体を理解し、ものごとの意味をとらえる

形態素解析を行うことで、文章の品詞や基本的な構造などの基本的な分析は可能ですが、形態素解析だけでは高度な文章の分析は困難です。そのため、一般的には自然言語処理の1つのステップとして活用されるケースが多いです。
しかし、近年は形態素解析の機能を含むディープラーニングのライブラリなども充実しており、形態素解析のツールを使わなくても自然言語処理ができるようになっているのが現状です。ディープラーニングの出現後は、形態素解析などの自然言語処理における前処理をスキップし、生の文章をそのままディープラーニングのモデルで処理することが可能になりました。

Deep Learningについて知る

では、自然言語処理は実際にどのような場面で活用されているのでしょうか。自然言語処理の活用事例をご紹介します。

  • 日本語入力の文字変換機能
  • ロボットの音声認識
  • スマートフォンの音声アシスタント
  • スマートスピーカー
  • 翻訳システム
  • SNSのトレンド分析

ロボットの対話機能や音声アシスタント、スマートスピーカーなどの事例では、自然言語処理に加えて音声認識技術が活用されています。音声認識技術は人間の声などの「音」をテキスト化する技術です。自然言語処理を行うにはテキスト化されたデータが必要ですが、音声認識技術と組み合わせて活用することによって処理が可能なデータの幅が広がり、より多くのソリューションを生み出すことができます。

SNSトレンドは、身近な形態素解析

分かりやすい事例に、SNSのトレンド分析が挙げられます。特定のワードがトレンドとして毎日ランキングで表示されていますが、これは形態素解析によって分類されたキーワードの中から抽出しています。

単純にユーザーの投稿内容から傾向分析によって文字列を抽出してしまうと、「を」や「が」といった無意味なワードが含まれてしまいます。そこで形態素解析によって抽出された内容をさらに精査し、固有名詞や特定のワードなどに絞り込むことでトレンドとなっているワードを把握することができます。

音声・のマイニング精度向上による形態素解析の今後について

音声や画像データとの連携においても形態素解析は重要な役割を果たします。先ほども紹介したように、人間とコンピュータが対話をするためには、音声認識技術を通じてコンピュータが音声を聞き取ってテキスト化し、文章をを分割したうえで処理や判断を行う必要があります。このとき、文章の分割に必要なのが今回紹介してきた形態素解析の技術です。
音声アシスタントやスマートスピーカーの他に、実際に実用化に向けて動き出している例をいくつか紹介しましょう。

  • コールセンター・・・通話記録を自動的にテキストデータに起こし、出力された文章から問い合わせ内容や満足度の解析に応用
  • 聴覚障がい者向け電話・・・通話の内容を即座に文字変換し、ディスプレイに表示。メールやチャットよりもタイムリーなコミュニケーションを可能にする
  • 自動字幕生成システム・・・テレビや動画サービス内で発言している内容を即座に字幕に変換。聴覚障がいをもった方も動画を楽しめる


形態素解析を活用したNLPエンジンプラットフォーム
「Kaidoku」についてはこちらから

まとめ

ディスプレイに並ぶ数字

さいごに、今回紹介してきた形態素解析の主な内容をまとめて紹介します。

  • 形態素解析とは文章を最小の単位に分解して解析すること
  • 形態素解析は自然言語処理の最も基礎的なステップを担っている
  • 形態素解析は音声認識技術など組み合わせて活用することにより、ソリューションの幅が広がる

Cogent Labsでは、形態素解析を活用した自然言語処理分野の研究開発にも力をいれております。今後も、人とAIが寄り添いながら発展していく社会を目指し、AIの研究開発と実用的なソリューションの開発・提供を進めていきます。