LoginSignup
16
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-12-01

すること

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
7