すること
- Twitter APIでツイートを取得
- Mecabに単語を追加
- Word2Vecをつかう
Twitter APIでツイートを取得
もともとあったrubyのスクリプトを使いました。
# 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に単語を追加
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
# 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)
本題の類似度
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 |
| 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ツイートしか取得できなかった。
- 「留年」とか「単位」とか出て欲しかった