はじめに
コンピュータが、人間が話すことばで人間とコミュニケーションとるための技術を知りたいなあということでお勉強を開始しました。以下、備忘録的メモです。
自然言語処理とは
wikipedia:自然言語処理によると自然言語処理は以下と書かれている。
自然言語処理(しぜんげんごしょり、英語: natural language processing、略称:NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野である。
引用元:https://ja.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86
どんな技術があるか
- 形態素解析
- 構文解析
- 照応分析
難しさ
コンピュータが自然言語処理を行う難しさに以下がある。
- 単語のわかち書き(日本語、中国語、タイ語など)
- 語義の曖昧性:同じ単語でも文脈によって複数の意味を持つ
- 構文の曖昧性:1つの文で複数の構文木が存在しうる
- 主語省略・代名詞
- 文字通り解釈できない
- 例)Can you pass the salt? -> I'm afraid that I can't see it.
- 上記例では答えがyes,noでない。
難しさの解消
単語のわかち書きへの対応。
形態素解析器として以下がある。
- Mecab
- Cabocha (Mecabのラッパー)
さらにCabochaで構文解析後に、pythonパッケージのpydotplusを使うと、構文可視化ができるらしい。下記参考は結構面白い。滝沢カレンさんて素敵だと思う。
参考:滝沢カレンの理解不能な文章を言語解析してみた。
最近の動向
最近の動向ていっても、5年くらい前からの話か。
2016年のwiredの特集で気になったところを以下に書く。
ことばをベクトル化し、特徴量を認識させる
グーグルの研究者 Quoc Le さんは以下のことを言っている。
「機械は数字を扱うのは得意なのですが、ことばの概念を扱うのが苦手なのです。でも、ことばをヴェクター(ベクトル)化してあげると機械は数字のように概念を扱うことができます」
引用元:http://wired.jp/special/2016/nlp/
自然言語処理の研究者
- Quoc Le, Reserch Scientist, Google (*2)
- コンピュータが”猫”を見つける
- Tomas Mikolov, Research Scientist, Facebook AI Research (*2)
- Word2vec
- 関連論文: Efficient Estimation of Word Representations in Vector Space
- Richerd Socher, CEO&Founder, MetaMind (*2)
- 「Dinamic Memory Network」(2015年)
Dinamic Memory Network
wired 読む機械 自然言語の新たな地平によると、以下のような機能を考慮したもの。
2015年、ソッチャーらはDynamic Memory Networkと呼ばれるモデルを公開した。
これはふたつの「記憶する機能」が備わっている。
ひとつはことばのヴェクター化を通してことばの意味や概念を記憶する「Semantic Memory」と呼ばれる機能だ。
もうひとつは、短期記憶を担当する「Episodic Memory」で、人間でいえば「海馬」にあたる機能だ。
引用元:http://wired.jp/special/2016/nlp/
おわりに
深層学習の勉強をしてみたいな。
深層学習による自然言語処理ていう本が面白そうなので読んでみよう。