毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/8/6【44日目】単語をベクトル化するってどういうこと

久しぶりにテキスト処理の話にもどります。今日から単語をベクトル化していきたいと思います。

17日目に固有ベクトルの話をしていましたが、そもそもベクトルとは「大きさだけでなく、向きももった量」のことをいうらしいです。

dailytextmining.hatenablog.com

単語を「大きさだけでなく、向きももった量」にすると言う意味がよくわかりませんが、ひとまずやっていきたいと思います。

単語ベクトルとは

単語を数値化する事は今までもやってきましたが、単純に考えるとそれが大きさですね。単語ベクトルになると、それだけでなく向きも持っているというのは先ほどの通りですが、向きを持っていると何ができるんすかね? こちらのサイトがわかりやすかったので、引用します。

単語の周辺文脈から、単語の意味を表現するベクトルを獲得する手法として、word2vec に実装されている Skip-gram や CBOW などのモデルを用いたものがあります。これらの手法によって学習された単語ベクトルには、「意味が似た単語同士は近い値を持つ」「ベクトル同士の演算によって意味の関係が表現できる」といった、特に意味の計算において有用な性質が見られることがわかっています

日本語 Wikipedia エンティティベクトル

単語ベクトルだと意味の計算ができるらしいです。なお、単語ベクトル単語ベクトルと言っていますが、正式には分散表現というらしいです。英語で言うとdistributed representation。

意味の計算と言われてもピンと来ませんが、例を挙げますと「王 + 女 = 王女」と言うことができるらしいです。

実装

分散表現と使うにはword2vecと言うものを使用すれば良いそうです。チュートリアルを探しましたが、どうやらGoogleさんのTesolfFlowのチュートリアルしかないぽいですね(word2vec自体がGoogle製のようです)。

Vector Representations of Words  |  TensorFlow

触ったことがないTensorflowの上、チュートリアルが英語なので、(時間がかかりそうなので)今日はTensorflowをインストールして終わります。

pip install tensorflow

今日の結果

今日のAKBメンバーによる呟きは63件でした。金曜に引続き、TIF2018(東京アイドルフェス)が行われているそうですね。

f:id:rimt:20180807022350p:plain

'楽しい': 16, '暑い': 10, '嬉しい': 10, 'いい': 4, '熱い': 4, 'ない': 3, '凄い': 3, '可愛い': 2, 'すっごい': 2, 'すごい': 2, 'かっこいい': 2, '少ない': 1, '優しい': 1, '美味しい': 1, 'かわいい': 1, '大きい': 1, '良い': 1, 'よい': 1})
'楽しい': 16, '最高': 13, 'さん': 11, 'ちゃん': 11, '日': 11, '暑い': 10, '嬉しい': 10, '夏': 10, '写真': 8, '今日': 8, 'ステージ': 8, 'たくさん': 7, 'よう': 7, '笑': 6, '思い出': 6, 'こと': 6, 'フレッシュ': 6, 
'する': 32, '楽しい': 16, '最高': 13, 'くださる': 13, 'さん': 11, 'ちゃん': 11, '日': 11, '暑い': 10, '嬉しい': 10, '夏': 10, 'すぎる': 10, 'れる': 9, 'なる': 9, '写真': 8, '今日': 8, 'ステージ': 8, 'てる': 8, 'たくさん': 7, 'よう': 7, 'くれる': 7, '見る': 7, 'できる': 7,

今日勉強したこと

単語ベクトル(分散表現)の概要