魔法使いに向いてる

「終わらない日常」 を超える処方箋

人文科学で自然言語処理をやりたい人は知っとくといい知識まとめた

言語学で使えそうな自然言語処理について

自然言語処理」はあくまで「処理」に過ぎない。命題を立て、仮説を検証するためのツールとして認識しておきたい。

 

 

 

1「自然言語処理」とは?

 

人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、

人工知能言語学の一分野である(wiki自然言語処理」)

 

 

 

ちなみに「自然言語」とはプログラミング言語などの「人工言語」との対比で用いられる名称。Twitterの呟き(いわゆるビッグデータ)からトレンドを分析して製品開発に生かすなどなど、ビジネス現場でも関心が高い技術だ。

 

1-1「自然言語処理」で何ができるか

下の表がわかりやすい。

f:id:lyrisist-lily:20170612200045p:plain

 

言語処理学会でのポスター発表ではこれらの技術の新手法を提案したり、従来の手法を異分野に適応したり、といった感じだった。

引用:大規模データ時代に求められる自然言語処理 SlidShare

 

1-2文系分野の研究で使いやすい自然言語処理

言語学研究において自然言語処理を用いるのであれば、辞書構築あたりが有効だと思う。

辞書構築は文字通り、「辞書を構築すること」だ。

談話や文献に出てくる語彙を抽出し、そのテクストの特徴を分析する際に利用することができる。

また計量文献学(いろいろ呼称がある)で面白いと思ったのは著者推定。

機械学習で著者の文体の癖をインプットし、著者のわからない古典を誰が書いたのか検証することができる。

(もともと日本での自然言語処理は文系分野の基礎的な研究によって発展してきたので、文系で数ⅢCをとっていなかった人にもわかりやすいテキストが出ているのでありがたい)

 

2言語解析のアプローチ

上記のような分析を行う際、ノイズを除去するなどの“下処理”が必要になってくる。

こうした処理として必要なのは「単語分割」「構文解析」「意味解析」の三つに分類できる。自分が研究テーマについて、何を明らかにしたいのかによってアプローチ(右の方)を考えるといいだろう。

f:id:lyrisist-lily:20170612200122p:plain

 

 

ただ、どんなアプローチが適切なのかは論文をいろいろ読んでみないとわからない。

だからこの先は「情報検索」について論文を書く場合に必要な知識や手法について解説してみる。

3-1情報検索とは何か

まずは情報検索とは何か、について。情報検索とは、「ある文書群から知りたいことが書かれている文書を特定すること」だ。

図書館で読みたい資料を検索するのも、グーグルで明日の天気を調べるのも情報検索。

またこのようなシステムのことを情報検索システムと呼ぶ。

ユーザーの情報要求を表した検索質問(クエリ)を入力とし、そのクエリの適合文書を検索して、ユーザーに提示するシステムだ。

またここでの「文書」はテクニカルタームなので注意されたい。ここでいう文書とは情報検索システムの扱う情報の一つ一つの単位のことだ。web検索エンジンではwebサイトや個々のwebページ。画像・動画検索では検索対象となる画像や動画それぞれを文書と呼ぶ。

 

3-2情報検索のアルゴリズム

情報検索システムは以下の問題に対して具体的な方法を与える。

 

(a) それぞれの文書に書かれた内容をどのような形式で表現するか

(b) 検索要求と文書内容の照合判定をどのように行うか

 

この問題について、文書群から索引を作るのが文書インデックスだ。

図書館の目次録を想像すればいいと思う。

ある書籍を日本語学とか情報科学とかにジャンル分けして、

書名をアイウエオ、著者順で並べる。

これと似たことを何らかの文書に対して行う時、

まずはその文書が何のジャンルのものなのかを明らかにしないといけない。

 

情報処理の分野では文書は語の集合として扱われるから、まずは文書群から索引語を決定する。この索引語の決定のため、次のような処理を行う。

 

4分析の下処理としての自然言語処理

4-1-1単語分解

日本語は英語とは違い、語と語の間が空いていない。

だからまずは文書を「分かち書き」をして、辞書の見出しの形に変形する。そして最後にその文書を特徴づける「見出し語」を抽出する。

 

「ネコを飼った。」を処理するとどうなる?

分かち書き:ネコ を 飼っ た 。

見出し語化:ネコ を 飼う た 。 …辞書の見出し(多くは原形)の形に戻す

不要語の削除:ネコ 飼う      …文書における重要度の低い語を削除

表記の統一:猫 飼う

 

また同じ対象を指しているのに猫やネコといった表記ゆれがある場合、

表記を統一する必要が出てくる。

その後それぞれの文書内容を語の集合に変換し、照合時に利用しやすい形に整理して準備しておく。

 

これが情報検索システムを構築する際の大まかな枠組みだ。

 

4-1-2キーワード抽出の手法

前項では文書のキーワードを抽出する「索引付け」の方法を紹介した。

 

これ以外にもキーワードを抽出する方法はある。その代表例としてN-gram索引が有名だ。文書検索の際、形態素解析を用いると辞書を構築する必要があるが、N-gram索引を使用すると辞書は不要だ。

 

N-gram索引

「連続する1、2、3……文字」を使って索引語を抽出すること。

 

この手法は重要な語が繰り返し使用される新聞や論文のキーワードを抽出する際には便利だ。一方で小説の重要語句は必ずしも繰り返し表現されるわけではないので、あまりこの手法は向ていないと思う。

f:id:lyrisist-lily:20170612200245p:plain

 

4-2構文解析

f:id:lyrisist-lily:20170612200354p:plain

文字通り、構文を解析すること。上記の図のように、文を単語ごろに分割し、品詞を確定する。

 

日本語の構文解析ソフトで無料で使えるのは以下の二種。

 

- CaboCha/南瓜: Yet Another Japanese Dependency Structure Analyzer
- KNP 日本語構文・格・照応解析システム

 

日本語学で「日本語書き言葉コーパスを使って係り結びの歴史的変遷を調べたい」といった文法関係の動機がある場合は必要なメソッド。

 

4-3意味解析

4-3-1シソーラス解析

まずは「シソーラスとはなんぞや」というところから。

 

シソーラス

シソーラス (Thesaurus) は単語の上位 / 下位関係、部分 / 全体関係、同義関係、類義関係などによって単語を分類し、体系づけた類語辞典・辞書。(wikiシソーラス」より)

 

 

言ってみれば語の上位下位関係、部分全体関係、同義類義関係などのグルーピングができた辞書のことだ。

文書群において辞書を構築し、それらの収録語彙について改めてグルーピングを行う。

4-3-2ベクトル空間解析

語の出現頻度をべクトルで表現された文書の表現を文書ベクトルと呼び、文書ベクトルを用いて適合度を求める情報検索モデルをベクトル空間モデルと呼ぶ。

 

⇒文書における語の重要度は頻度によって表されるという前提に注意。

ある文書において、索引語の出現度が高く(その文書に何度も現れ)、かつその語の文書頻度が低い(特定の文書にしか出現しない)場合に大きな値をとる。

 

以下の手法によって文書における語の重要性を数値化することができる。

  • TF(Term Frequency:索引語頻度)

「索引語がどれぐらい重要か」(その文書でどれほどの頻度で出ているのか)を表す

 

  • IDF(Inverse Document Frequency:逆文書頻度)

「索引語が文書集合の中でどれくらい重要か」(その文書の中でどれだけの割合をその語が占めているのか)を表す

 

以下の文書群で実際に索引語を作ると?

文書1:「吾輩は猫である。名前はまだない。」

文書2:「一匹の立派な犬や、兎や、一匹の子猿や、一匹の猫などを飼った。」

文書3:「兎や、キツネのほかに、イタチの足あと、ネズミの足あと、猫の足あと、みんなちがう。」

 

TFを使って作成した文書索引語行列は以下の通り。数値はその文書における重要度を示す。

 

足あと

イタチ

一匹

犬 

キツネ

子猿

名前

ネズミ

吾輩

文書1

 

 

 

 

 

 

 

1

1

1

1

文書2

 

 

1.5

1

1

 

1

 

1

 

 

文書3

1.5

1

 

 

1

1

 

 

1

1

 

 

ではTF-IDFを使って、各文書の索引語に重みづけをした結果はどうなるだろうか?

 

足あと

イタチ

一匹

犬 

キツネ

子猿

名前

ネズミ

吾輩

文書1

 

 

 

 

 

 

 

0.48

0

 

0.48

文書2

 

 

0.7

0.48

0.18

 

0.48

 

0

 

 

文書3

0.7

0.48

 

 

0.18

0.48

 

 

0

0.48

 

 

足あと

イタチ

一匹

犬 

キツネ

子猿

名前

ネズミ

吾輩

文書1

 

 

 

 

 

 

 

0.48

0

 

0.48

文書2

 

 

0.7

0.48

0.18

 

0.48

 

0

 

 

文書3

0.7

0.48

 

 

0.18

0.48

 

 

0

0.48

 

 

 

「猫」という索引語は三つの文書に出現するため、IDFは0(索引語として無価値)にな

る。いわば、「猫」という単語では三つの文書を選別できない。しかし一つの文書にしか出現しない「犬」「イタチ」「キツネ」「ネズミ」については約0.48となる。

 

以上は文書の中での語の重要度を示す手法だ。それぞれ二つ以上の語についての関連を調べる場合には相関係数を調べたり、word-2becを用いたりする必要がある。これらについてはまたググってほしい。

 

4関連するトピック

言語学からのアプローチする場合は以上のような解析方法がいいだろう。それ以外の問題についてはフレーム問題(すべての百科事典的知識を記述することができない)に直面するので、現状では適応が難しいというのが著者の判断。

 以下のフレーム問題につての例は寓話的で面白いので、全部wikiから抜粋する。

 

「哲学者ダニエル・デネットが論文で示した例を挙げて説明する。

 

状況として、洞窟の中にロボットを動かすバッテリーがあり、その上に時限爆弾が仕掛けられている。このままでは爆弾が爆発し、ロボットは動かなくなってしまうので、洞窟の中からバッテリーを取り出してこなくてはならない。ロボットは、「洞窟からバッテリーを取り出してくること」を指示された。

 

人工知能ロボット1号機R1は、うまくプログラムされていたため、洞窟に入って無事にバッテリーを取り出すことができた。しかし、1号機はバッテリーの上に爆弾が載っていることには気づいていたが、バッテリーを運ぶと爆弾も一緒に運び出してしまうことに気づかなかったため、洞窟から出た後に爆弾が爆発してしまった。これは、1号機が、バッテリーを取り出すという目的については理解していたが、それによって副次的に発生する事項(バッテリーを取り出すと爆弾も同時に運んでしまうこと)について理解していなかったのが原因である。

 

そこで、目的を遂行するにあたって副次的に発生する事項も考慮する人工知能ロボット2号機R1-D1 を開発した。しかし、このロボットは、洞窟に入ってバッテリーの前に来たところで動作しなくなり、そのまま時限爆弾が作動してロボットは吹っ飛んでしまった。2号機は、バッテリーの前で「このバッテリーを動かすと上にのった爆弾は爆発しないかどうか」「バッテリーを動かす前に爆弾を移動させないといけないか」「爆弾を動かそうとすると、天井が落ちてきたりしないか」「爆弾に近づくと壁の色が変わったりしないか」などなど、副次的に発生しうるあらゆる事項を考え始めてしまい、無限に思考し続けてしまったのである。これは、副次的に発生しうる事項というのが無限にあり、それら全てを考慮するには無限の計算時間を必要とするからである。ただ、副次的に発生する事項といっても、「壁の色がかわったりしないか」などというのは、通常、考慮する必要がない。

 

そこで、目的を遂行するにあたって無関係な事項は考慮しないように改良した人工知能ロボット3号機R2-D1を開発した。しかし、このロボットは、洞窟に入る前に動作しなくなった。3号機は、洞窟に入る前に、目的と無関係な事項を全て洗い出そうとして、無限に思考し続けてしまったのである。これは、目的と無関係な事項というのも無限にあるため、それら全てを考慮するには無限の計算時間を必要とするからである。事程左様に、人間のように判断することができるロボットR2-D2(佐藤注:スターウォーズの銀色のロボット)を作るのは難しい。」

引用元:wiki「フレーム問題」

 

 

 

大量のデータからその特徴をインプットして、新しい情報に出くわした際の判断に生かす機械学習の分野(IBMのワトソンがチェスのデータをインプットして、プロに勝利した話は聞いたことがあるだろう)でも、フレーム問題は大きな問題だ。

阪大の基礎工学研究科の石黒研究室では機械学習を用いてコミュニケーションができ、社会の中で受け入れられるアンドロイドを作成しようとしているようだ。

そのアンドロイドのアイドル、「U」はニコニコ生放送でコメントとそれに対する返答を学習し、新しいコメントに対して自分で返答できるようにしようとしているらしい。

4000パターンの返答を学習した「U」はニコニコ生放送に出演している。しかしそれまで返答パターンを学習していなかったコメント「ぐぬぬ」をピックアップしてしまい、生放送中「ぐぬぬ」をずっとループしてしまっている。言語の持つ無限の創造性をアンドロイドに学習させるのは相当大変そうだ。

 

5参考文献

奥野陽 グラム・ニュービッグ・萩原正人(2016)『自然言語処理の基本と技術』小町守編(翔泳社

 

佐藤理史(1998)「2情報検索」『自然言語処理』(岩波講座 言語の科学9)(岩波書店

 

Maho Takara「自然言語処理って何だろう?」

http://qiita.com/MahoTakara/items/b3d719ed1a3665730826#%E6%84%8F%E5%91%B3%E8%A7%A3%E6%9E%90%E6%84%8F%E5%91%B3%E7%90%86%E8%A7%A3

 

岡田有花『ロボットのアイドルは人間を超えるか? 「ニコ生」で育つ「アンドロイドルU」誕生 「ぐぬぬ」もその場で学習』

http://www.itmedia.co.jp/news/articles/1702/15/news115.html