ozawaのブログ

本ブログは、PC関連について投稿します

word2vecを利用したツイート解析

久々の更新です
今回の内容は、自分が研究したことです

分野は言語処理でツイートの解析を行いました
目標は、文章分類で、この文章はどのような属性を持っていかを分類します

ぶっちゃけ、研究し終わってから結構時間たっていたり、そもそも理論を勘違いしていたり、割と適当に書いているので、あらかじめご了承ください

 理論

主に単語の分散表現を利用します
単語の分散表現とは、単語の意味をn次元のベクトルで表現するもので、ある規模のテキストデータがあれば下記のような意味演算が可能になります。

王-男+女=妃

f:id:d-ozawa940:20170407234856p:plain

さて、ここで本研究ではword2vecを利用しました
word2vecは、テキストデータを与えると、n次元のベクトル空間上に類似した単語を近くに配置していく特徴があります

f:id:d-ozawa940:20170407235142p:plain

この近くに配置する作業では、分布仮説という同じ文脈上では同じ意味の単語が出現することを利用して、ある単語の前後n字の単語に対して、近くになるように配置していきます

単語の分散表現をある程度のデータ量で作れば単語の意味関係を表すことができる
ここに着目して次のようなことを考えました

ベースラインとなる単語の分散表現から、ある属性の文章を加えて再配置させると、単語の意味の変化に関する何か有用な特徴が得られるのではないだろうか?

例えば、下記のようなイメージです

ベースラインとなる分散表現: U(ある程度、単語の意味関係が正確になっているもの)
10代が書いたテキストデータで、Uを再配置したもの: U10
20代 〃 : U20
30代 〃 : U30
40代 〃 : U40

とする

そして、この各々の属性のテキストデータで再配置したものをベースラインで引くことで、ベースラインからの変化量が得られる
U10 - U = X10
U20 - U = X20
U30 - U = X30
U40 - U = X40

X10~X40は、各々の属性に関して何かの特徴になっていると考えられる
このX10~X40機械学習を利用することで、何らかの特徴を学習して、文章を与えることで属性分類ができたらな、というのが研究する前に自分が思いついたことでした


と、気力が尽きたのでここまでにします
結果は、男女合わせて2000件のデータを10-fold交差検証したところ、属性平均F値が男女平均して0.92ぐらいです。
また、性別ほど綺麗なデータが取れなくて、ノイズを含む年代では4クラスで0.58なので実用性があるのかは自分では判別できませんでした

f:id:d-ozawa940:20170408000512p:plain

以下の画像は、試験的に分類したものの例でテストデータと学習データの半分に分けて分類した結果です
分類結果は、性別、年代、現住所で一時的によかったものです(交差検証をしていないので評価には使えないが….)

f:id:d-ozawa940:20170407235705p:plain f:id:d-ozawa940:20170408000639p:plain f:id:d-ozawa940:20170408000850p:plain

最後に

自分にとってこの研究の始まりはビッグデータ解析をしたい!!という思いで始めました
しかし、容易に取得できるツイートデータを分析しているうちに自然言語処理の面白さに触れられたと思います
研究した自分としては、単語の分散表現を利用した属性分類は、言葉遣いに違いが現れるような属性のテキスト分類に有効だと信じたい..(自分的には悪くない手法だと思います)

もし、時間に余裕があって、実験ソースが残っていたらアップでもしようかな

ということで、以上となります