すること
- 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ツイートしか取得できなかった。
- 「留年」とか「単位」とか出て欲しかった