3.統計学的自然言語処理 その1
【言葉を統計解析? 言葉をベクトルに?】
今回は、言葉を統計解析することについて書きたいと思います。
border="0" />
正確にいうと人工知能ではありませんが、教師なし学習を勉強する前に知っておくといいかなと思います。
下の記事で少し書きましたが、言葉を数字(ベクトル)に変換することで統計解析が出来るようになります。
例: 愛 = 0.9785847373736363636
という様に数字に変換します。
初めから、「愛」という語に数字が割り当てられている訳ではなく、テキストや辞書の文脈などによって割り当てられています。
言葉を数字(ベクトル)に変換するまでに前処理が必要になります。
前処理とは
1. テキスト中のノイズ除去
↓
2. 文書の分割(例:理学療法は腰痛を改善する⇨理学/ 療法/ は/ 腰痛/ を/ 改善/ する)
↓
3. 文字の統一 (例:スイカ ⇨ スイカ)
↓
4. 意味不明な単語などの除去 (例: https: など)
↓
5. 数字(ベクトル)に変換
この様な流れで、ベクトル変換までの前処理が行われます。
この、前処理の2番目の処理が形態素解析と言われており、MecabやJanomeというソフトなどがあります。
このソフトたちは非常に優秀です。
どれだけ優秀かをお見せします。
下の画像は「すもももももももものうち」
という文をコンピューターが解析した画像です。
Pythonというプログラミング言語を使用してインターネット上で解析たものですが、非常に精度が高いです。
この様に形態素解析は文を品詞に分けることができます。
そして、この文と品詞ごとに分けられた語をベクトルに変換していきます。
全てコンピューターで実施されるので、プログラミングをするだけです。
プログラミングの方法はPCスキルが必要なので割愛しますね。
こちらが、著作権がきれた本を形態素解析して、ベクトル変換を実施し、「会社」という語に近いベクトルであった語を出した画像です。
ここで、コサイン類似度 (Cos類似度)という言葉が出てきました。
これは「相関」の様なもので1に近いほど関連が強いということになります。
例えば、ある本の内容で「理学療法」と「運動療法」という言葉の関連をみたいとします。
このCos類似度はあくまで「ベクトル同士の類似度」をみています。
医療に置き換えるならば、骨折の患者さんが
「ほにゃらら・・・・痛い・・ほにゃらら・・・」
と言っているとしましょう。痛いという言葉に類似してる言葉はどれか?ということのみしか分かりませんよね。
これでは、ある語と、ある語の数学的な関連のみです。
これでは、前後の文脈や患者さまが発した言葉全体を考慮しきれておらず、どの様な発言が多くて、どよのうな言葉の流れであるのかを明らかにすることはできませんよね。
これを解決に導くために
「Jaccard係数」というものがあります。
Jaccard係数は,「Jaccard index」や「Jaccard similarity coefficient」と呼ばれていて、Cos類似度がベクトルの類似度なのに対して、Jaccard係数は「ある語を含む文同士の類似度」です。そして、この様な式で成り立っています。
(そろそろ、意味ふーーって思い始める頃ですよね、分かりますよ。もうちょと我慢です)
はい、これきましたー。意味不明ですやん!!
と思ったあなた「正解」です。
Jaccard係数の図解(2つ)です。
もっと簡単にしてくれ〜!!
少し分かりましたか??
ようはある語を含む文章の相関係数の様なものがJaccard係数です!!
そろそろお腹いっぱいになってきた頃だと思います。
今回は、文章や言葉も統計解析することで質的な研究ができるということが分かったのではないかな〜と思います。
次回は、形態素解析とJaccard係数を使って、関連する言葉のネットワークを作るという記事を書きたいと思います。
次回↓↓
今回も、最後までお付き合いいただきありがとうございました。
自然言語処理についての勉強法↓
E-Learning:
参考書: