Word2VecでTwitterでの理科大のイメージを調べてみた。

## すること
- Twitter APIでツイートを取得
- Mecabに単語を追加
- Word2Vecをつかう


## Twitter APIでツイートを取得
もともとあったrubyのスクリプトを使いました。

```rb
# gem install twitter
require "twitter"

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = ""
  config.consumer_secret     = ""
  config.access_token        = ""
  config.access_token_secret = ""
end

@result = client.search("理科大").take(10000)

File.open("tus.csv", 'w') do |file|
  @result.each do |tweet|
    file.write(tweet.text.gsub(/(\s)/,""))
    file.write("\n")
  end
end
```
csvファイルができます。
トークンの取得とかはたくさん記事があるので割愛します。


## Mecabに単語を追加

```bash

cd /usr/local/lib/mecab/dic
mkdir userdic
cd userdic
touch tus.csv
echo '理科大,,,1,名詞,一般,*,*,*,*,リカダイ,リカダイ,リカダイ' >> tus.csv

# コンパイル
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index \
-d /usr/local/lib/mecab/dic/ipadic \
-u tus.dic \
-f utf-8 \
-t utf-8 tus.csv

#　Enter押すとコンパイルされる

reading tus.csv ... 1
emitting double-array: 100% |###########################################| 

done!

# pathを通す

vi /usr/local/etc/mecabrc
# 生成されたdicがあるところを指定
userdic = /usr/local/lib/mecab/dic/userdic/tus.dic
```


## word2vec

```py
# coding: UTF-8
import pandas as pd
import numpy as np
import MeCab

tweets = pd.read_csv('/Users/Hiroto/git/scripts/tus.csv').tweet

# 分かち書きしたファイルを作成
wakati = ""
for tweet in tweets:
    mt = MeCab.Tagger("-Owakati")
    wakati = wakati + mt.parse(tweet)

f = open('tus_wakati.txt', 'w')
f.write(wakati)
f.close()

# word2vec
from gensim.models import word2vec
data = word2vec.Text8Corpus('tus_wakati.txt')
model = word2vec.Word2Vec(data, size=100)
```

本題の類似度

```py
out=model.most_similar(positive=[u'理科大'],topn= 100)
for x in out:
    print(x[0],x[1])
```

|単語|類似度|
|:--:|:--:|
|ね| 0.9801737666130066|
|う| 0.9679325222969055|
|世の中| 0.9637500643730164|
|不平等| 0.9604602456092834|
|よー| 0.9603763818740845|
|そ| 0.9602923393249512|
|です| 0.9574853181838989|
|そういう| 0.9568058252334595|
|笑| 0.9534944295883179|
|闇| 0.9462004899978638|
|！| 0.9435620307922363|
|？| 0.9433774948120117|
|生| 0.942541241645813|
|から| 0.9420970678329468|
|いい| 0.9348764419555664|
|よ| 0.9348678588867188|
|。| 0.9291704893112183|
|感じ| 0.929074764251709|
|め| 0.9288586378097534|
|一緒| 0.9273968935012817|
|Twitter| 0.9265207052230835|
|だ| 0.9249017238616943|
|密会| 0.9227114915847778|
|てる| 0.9216452836990356|
|行き| 0.9207674264907837|
|神| 0.9192628264427185|
|頑張っ| 0.918117880821228|
|あー| 0.9180813431739807|
|いや| 0.9164369106292725|
|わけ| 0.9164099097251892|
|わか| 0.9158462882041931|
|わかっ| 0.915264368057251|
|)| 0.913904070854187|
|は| 0.9111155867576599|
|おいしい| 0.9105844497680664|
|な| 0.9098367691040039|
|人| 0.909660816192627|
|クソ| 0.9095121622085571|
|で| 0.907973051071167|
|なら| 0.906628429889679|
|意味| 0.9065468311309814|
|上智| 0.905195415019989|
|か| 0.9034873247146606|
|やつ| 0.9014643430709839|
|いけ| 0.8999437689781189|
|って| 0.8993074893951416|
|飲み| 0.8984052538871765|
|march| 0.8983776569366455|
|言わ| 0.8976813554763794|
|た| 0.8964160680770874|
|よく| 0.896243691444397|
|食べ| 0.8960259556770325|
|みたい| 0.8957585096359253|
|子| 0.8946411609649658|
|よろしく| 0.8943185806274414|
|たい| 0.8941484689712524|
|見事| 0.893967866897583|
|シマウマ| 0.8935203552246094|
|すぎ| 0.8934850692749023|
|お前| 0.8934849500656128|
|イルミネーション| 0.8927890062332153|
|行く| 0.8927274942398071|
|イチ| 0.8926646709442139|
|いる| 0.8919773697853088|
|算数| 0.8915943503379822|
|(| 0.8915064930915833|
|なぜ| 0.8907312154769897|
|文系| 0.8906354904174805|
|ん| 0.8897289037704468|
|ー| 0.8896894454956055|
|ええ| 0.8896220922470093|
|部| 0.8895649313926697|
|K| 0.8881763219833374|
|思い| 0.8881138563156128|
|わから| 0.8880779147148132|
|校| 0.8879990577697754|
|のに| 0.8878818154335022|
|事件| 0.8878498077392578|
|お願い| 0.8875197172164917|
|知っ| 0.8871732354164124|
|いわ| 0.8870071172714233|
|性格| 0.8869134187698364|
|なあ| 0.8867558240890503|
|早慶| 0.8866025805473328|
|是非| 0.8860080242156982|
|だろ| 0.8857483267784119|
|が| 0.8853344321250916|
|止め| 0.8850265145301819|
|歳| 0.8849031925201416|
|k| 0.884624719619751|
|どれ| 0.8840593695640564|
|や| 0.8840340971946716|
|住ん| 0.883965253829956|
|割| 0.8836942911148071|
|ぜひ| 0.8836302757263184|
|泣い| 0.8831743597984314|
|yumalaonvae| 0.883036196231842|
|o| 0.8830046653747559|
|ノート| 0.8829131126403809|
|なんで| 0.8827589154243469|

**不平等**、**闇**あたりが理科大っぽい
「密会」と「シマウマ」ってなんなんですかね、、、、、


## まとめ

- ツイートのゴミを除去していないからうまくできていない(かもしれない)
- 取得ツイート数が少ない(今回は1696ツイート)
- rubyのコードで1万にしても1696ツイートしか取得できなかった。
- 「留年」とか「単位」とか出て欲しかった