post Image
図で理解する初めての自然言語処理概論

はじめに

自分が働いているスペースマーケットという会社では毎週社内勉強会を開催し、持ち回りで興味のある分野のナレッジシェアを行なっています。先日その勉強会でNLPに関する発表を行いました。
NLPチームというチームがありそこでの発表したというわけではなく、Webエンジニア、アプリエンジニア、デザイナーなどに向けた発表であったため、ざっくりとNLPの概要を理解してもらう目的でスライドを作成しました。(自分は業務ではNLPに携わっていないのですが学生時代に少しだけNLPの研究に関わっていました。)
今回はその勉強会で発表した内容をNLPの全体像を理解したい初学者向けに記事にしました。

世の中は自然言語を利用した技術であふれている

スクリーンショット 2018-01-07 15.51.15.png

  • 自然言語(テキストデータなど)から情報を抽出し、アウトプットとして提供
  • 自然言語処理(Natural Language Programming)という技術が根幹にある

自然言語処理(NLP)とはなんなのか

スクリーンショット 2018-01-07 15.12.43.png

  • 具体的にはどういった分野なのかよくわからない
  • 今回は自然言語処理の概要を紹介

NLPの全体像

スクリーンショット 2018-01-07 15.14.16.png

  • 解析の対象によって単語解析、文解析、文脈解析の3つに分けることができる

単語解析について

形態素解析

  • 形態素解析器を利用し、文を文節ごとに分ける
  • 研究分野としては、形態素を正しく分解したり高速に解析できたりするように辞書の構築や解析器の開発などがあげられる
  • 解析器: MeCab, ChaSen, JUMAN++, Kyteaなど

スクリーンショット 2018-01-07 15.16.12.png
MeCabでの解析の例

類似度測定

  • 文中の単語の共起(同じ文でそれぞれの単語が出現すること)
を元に単語をベクトル化(文脈ベクトル)する
  • 単語の類似度を測定することができ、クラスタリングなどに応用
される

文脈ベクトルによる類似度測定

スクリーンショット 2018-01-07 15.17.41.png

  • 共起回数を手掛かりとして文脈ベクトルを作成
  • 実際の解析では単純な共起回数ではなく、ベクトルの正規化を行う

スクリーンショット 2018-01-07 15.17.51.png

  • 意味の似ている単語同士は文脈ベクトルも類似している
  • 文脈ベクトルの類似度を測定(コサイン類似度など)することでクラスタリングなどに応用できる

共起を手掛かりにした解析の問題点

複雑な文になると意図していない共起もカウントされる

  • 例.「エンジンをかけたらエアコンが故障した」
  • 故障したのはエアコンであり、エンジンではない。
(しかし、単語の故障とエンジンは共起している)
  • 単語解析だけでは不十分なケースがある。その際、文解析(後述)の利用が有効になってくる

文解析について

係り受け解析

  • 単語の修飾、被修飾を解析すること。(構文解析)
  • 解析器: CaboCha, KNP, J.DepP(ジェーデップ)など
    スクリーンショット 2018-01-07 15.23.37.png

CaboChaによる解析結果の例

スクリーンショット 2018-01-09 13.53.00.png

図にするとこのようなイメージ↑

係り受け解析を利用することで「エンジンをかけたらエアコンが故障した」という文章は以下のように解釈することができ、「故障したのはエアコン」「エンジンは故障になるきっかけ」といった、単語解析だけではわからなかった情報を正しく獲得できるようになる。
スクリーンショット 2018-01-07 15.25.28.png

  • 係り受け解析を利用することで因果関係などの知識獲得を行うことができる

文脈解析の例

ベクトル化された文章を機械学習に利用する

  • 文章の情報を集約してベクトル化することで機械学習のタスクなどに応用をすることが可能になる

スクリーンショット 2018-01-07 15.29.20.png

  • 機械学習を利用した文章分類問題(ラベリング)などに応用

最後に

今回の内容はNLPの概要を大まかに知ってもらうという目的で作成をしました。ですので、網羅しきれていない部分や多少語弊のある部分もあるかと思います。
とはいえ、「さすがにこの部分の説明はおかしい」とか「このように説明した方がわかりやすい」とか目に余る部分がありましたら、是非フィードバックをいただければと思います。


『 Python 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。