こちらのコンテンツは最新の情報ではない可能性があります。無料で学べる最新のコンテンツは Python&機械学習入門コース 脱ブラックボックスコース をぜひご利用ください。

自然言語処理の基礎

本章の構成

  • はじめに
  • 自然言語とは
    • 自然言語と人工言語
    • 自然言語処理
  • 自然言語のタスクと応用技術
  • 自然言語処理の基礎技術
  • 機械学習を用いた自然言語処理
  • 本章のまとめ
  • 参考文献

はじめに

私達は言葉を使ってコミュニケーションを取ります。私が今これを読んでいるみなさんに何かを伝達できるのも、ひとえに言語のおかげです。常日頃から、私たちは音声を使い会話し、文章を書くことによって思想を表します。
この言葉の興味深い点は、その言葉の「意味」が完全に一意ではないというところです。言葉は絶対的なものではなく、(私とこれを読んでいる皆さんのように)双方向的な関係性から成り立ちます。道端に「石」が転がっていたら、それは殆どの場合そこに存在していた「石」です。しかし物体が存在しそれを目で認識するとは違い、言葉は誰かがなにかの意図を持って、単語を取捨選択し、その瞬間固有の組み合わせが形成されます。
また、各個人が属するコミュニティによっても言葉は変わり、意味の捉われ方も変わります。大人と子供の言葉使いは異なり、汲み取れる意味の量も等しくはありません。学問の分野によって、同じ言葉でも使われ方が違うといったことは多々あります。これらの例からも、言葉は関係性から成り立つということが言えそうです。

38_01

この複雑な言葉を我々はどの観点から見るべきなのでしょうか。「言葉はツールである」と言う見解が現代の基本となりそうですが、今回の主軸はそこにありません。機械学習に携わる我々にとって、おそらく重要となる点は「言葉はデータの集合である」というところでしょう。
よく考えてみると音声は波形、文字はただの点と線の集合です。このごく微小の信号やシンボルが群をなすことにより、最終的に我々にとっての「意味」が形成されています。
このように言葉を「関係性をもったデータの集合」と考えるのであれば、私達はこれらの扱い方や関係性を自動で導き出す方法を知っているはずです。

それでは、早速「機械学習による自然言語処理」を始めていきましょう。この時代になって大きく進化した技術を、ぜひ、楽しみながら習得していいってください。

自然言語とは

自然言語と人工言語

機械学習へと移る前に、基礎的な知識を抑えておきましょう。これらの単語、歴史的背景を簡単に抑えておくと最新技術の理解が深まります。まずは「自然言語」と「人工言語」の概念です。
以下に代表的な説明をリストアップしました。(下記参考文献参照)

自然言語

  • 私達人間が日常的に読み書きしたり、話したりするのに使っている言語のこと
  • 人間によって繰り返し使われ、進化してきた言語のこと
  • 自発発生的生まれた言語のこと

人工言語

  • 人間によって人工的に作り出された言語のこと
  • ある目的で人工的に作られた言語のこと

38_02

つまり私達の想像する言語は自然言語ということになります。そして、この言語は自然に形作られているため、ルールがしっかりと決められた人工言語とは違った曖昧性が出てきます。

自然言語処理

この自然言語をどうにかして処理しようという分野が自然言語処理です。一般に「私達が普段使う言語について、コンピュータに処理させる技術・学問分野」のことを指します。
この自然言語処理の目的は様々ありますが、人が作業する代わりにコンピュータに代替してもらおうというスタンスは共通です。したがって、私達が作業効率化のためにテキストエディタや演算ソフトを使っていることと同様です。違いとしては自然言語処理は知的な処理の代替が目標であるというところでしょうか。

それでは、具体的なイメージを掴むため次項で自然言語処理のタスク、応用技術について見ていきましょう。

自然言語処理のタスクと応用技術

皆さんは翻訳サイトを使った経験はありますでしょうか。昔のサービスを使われていた方は昨今の機械翻訳の進化に目を見張るものがあったかと思います。
自然言語処理の目的・タスクについて考えた際、まっさきに挙げられるものがこの機械翻訳でしょう。翻訳を行うためには単語の知識、文法の知識などが必要ですがそれをどうにか一般化できないか。このようなモチベーションから文章を解析し、知的な活動をコンピュータに代替させる技術が発展してきました。
これに限らず、言語の処理・活用方法には多くの使い道が存在します。以下のリストが代表的なものです。

  • 機械翻訳
  • 自然言語生成
  • 自動要約生成
  • 情報抽出
  • 情報検索、検索エンジン
  • 固有表現抽出

38_03

どれも興味深い分野ではありますが、昨今一般的な注目を集めている分野は「言語生成」ではないでしょうか。有名な例だと Microsoft 社のりんながあげられます。リリースされるやいなや、その会話の自然さから一躍有名なプロジェクトとなりました。https://www.rinna.jp/
りんなと会話をしたことがない人は、ぜひ一度 LINE か Twitter で会話をしてみてください。これまでのチャットボットとは一線を画した反応に驚くはずです。LINE では画像などでもレスポンスを返してくれます。

ビジネスに視点を変えると、自動要約生成、情報抽出(固有表現抽出)が特に熱い分野でしょう。私達はなにかの情報を入手するべく書籍や文献にあたりますが、その全体の情報がほしいわけではありません。であれば自然言語処理の技術を用いて必要な情報だけをピックアップできれば、より少ない時間で効率的に仕事に当たれるはずです。
身近な事例をあげるとすればニュースの要約にこの技術が用いられています。これまでも重要な部分だけを伝えてくれるサイトやアプリがありましたが、この作業にはたくさんの人手がいりました。これを自然言語処理で自動化できれば相当量のコストが浮き、また素早い情報の伝達が可能となります。https://news.mynavi.jp/article/20200121-957921/

少ないですが、自然言語処理のタスクについてみてきました。タスクを概観することによりなんとなく自然言語処理のイメージが固まったかと思います。自然言語の「処理」はそのタスク、課題によって様々に変化します。ビジネスで推進していくのであれば、それぞれの手法にこだわること無く複合的な選択が求められるでしょう。

最後に、これらの自然言語処理タスクはそのまま自然言語処理の応用技術と呼ばれます。これらの処理がいきなり実装できるわけではなく、いくつもの細かな処理が組み合わさって実現されているためです。次節では、この自然言語処理の基礎技術について見ていきます。

自然言語処理の基礎技術

自然言語の応用タスクを達成するためには、必ずこの基礎技術が必要となります。

文章はそのまとまりで意味を持ちますが、その意味の最小単位は単語です。それならば、その単語の数を集計したり、また単語どうしの関わりを明らかにしたほうが良いでしょう。
私達の直感としても、文章を一つのデータとして処理するよりは単語単位で、そしてその関係性を考慮して処理したほうが精度の高い変換ができそうな気がします。
つまり、この文章からより良い特徴を抽出するための根幹技術が自然言語の基礎技術というわけです。自然言語タスクを直接解くことはできないため、昔から今までこの基礎技術の研究が盛んに行われています。

この基礎技術は大まかに以下のリストに分けられます。文章の捉え方には、それぞれ単語、構文、意味、文脈といったレベルが存在するためです。私達も文章を 1 単語ずつ読む・素早く読む・斜め読みするといった動作を目的ごとに使い分け情報を抽出、意味を構築します。これと似た感覚になるのではないでしょうか。

  • 形態素解析
    • 文章を単語ごとに切り分ける処理
  • 構文解析
    • 単語の係り受けなど、修飾関係を決める処理
  • 意味解析
    • 「意味が妥当であるか」など、文章の意味を決定する処理
    • 例:望遠鏡で泳ぐ彼女を見た
  • 文脈解析
    • 複数の文について関係を決定する処理
    • 例:入り口に男性が立っている。彼の名前は佐川だ。

中でも日本語の自然言語処理でもっとも重要となる技術が形態素解析です。英語などの言語と違い、日本語はスペース等による明確な区切りがありません。したがって、この文章のパーツ化の是非によりその後の処理精度が大きく変化します。

自然言語処理といった単語は「自然言語処理」でしょうか、それとも「自然言語」と「処理」でしょうか。単語分割の意味合いについて、みなさん自信で一度考えてみると面白いかもしれません。

機械学習を用いた自然言語処理

さて、ここまでで自然言語処理で行われること、その全体像が掴めたはずです。
私達は自然言語処理の「タスク」を解きたいというモチベーションがあり、そのためには単語の数や関係性を洗い出す必要がありました。
以前の手法であれば、ここからは地道な作業が始まります。「同義語や類義語をセットし、コンピュータに同じ意味と解釈させる。」「文をまたいだ指示語は直前の名詞を指す可能性が高いことをプログラミングする。」などです。これは途方も無い作業であり、また、解きたい問題ごとにプログラムも変更が必須となります。

38_04

しかし、私達は「データ間の特徴を自動で抽出する方法」を知っています。この特技から、画像と同じように、自然言語処理もまたニューラルネットワークの登場によりブレイクスルーが引き起こされました。機械学習の本質は「データにおける自動的な特徴の抽出、関係性の構築」であるため自然言語ともまた相性が良かったのですね。
加えて、ニューラルネットワークのすごいところは End-to-End 学習(入力変数と目的変数の直接的な結びつきの構築) ができるところです。つまり、以前までは基礎技術の複雑なチューニングが必要だったのですが、ニューラルネットワークではそれが必要なくなったということになります。これにより、基礎技術による部分的な最適化・専用の知識が不要となり、かつ高精度のタスク処理が可能となりました。

38_05

本章のまとめ

ここまでお疲れさまでした。文量が多く少々大変だったかと思いますが、その分自自然言語処理への理解が深まったはずです。
最後に本章の重要点をまとめておきます。

  • 自然言語処理とは私達が普段使う言語をコンピュータに処理させる技術である
  • 翻訳や情報の抽出などといった自然言語処理のタスク解決(応用技術)が私達の目的となる
  • 文章から情報を抽出するためには単語分割などの基本技技術が必要となる
  • ニューラルネットワークの登場により End-to-End かつ高精度の応用技術が実現可能となった

それでは、いよいよ機械学習による自然言語処理を始めていきましょう。私達のコミュニケーションと関わる非常に面白い分野です。自分の課題と照らし合わせつつ、楽しみながら学んでいただければ幸いです。

参考文献

  1. Microsoft りんな https://www.rinna.jp/
  2. マイナビニュース AIを活用してニュース記事を自動要約する実証実験https://news.mynavi.jp/article/20200121-957921/
  3. Wikipedia 自然言語処理
  4. 機械学習・深層学習による自然言語処理入門 中山光樹様 著 p.2~10
  5. 深層学習による自然言語処理 坪井祐太様,海野裕也様,鈴木潤様 著 p.1~7
  6. 改訂版 自然言語処理 黒橋禎夫様 著 p.9~14
shareアイコン