友利奈緒らしさとは何か。
友利奈緒の皆さんこんにちは。
お元気ですか?私は元気です。
これは、友利奈緒アドベントカレンダー24日目の記事です。
www.adventar.org
今日は友利奈緒らしさについて追求していきます。
世の中友利奈緒を降臨させようとする方々は沢山いらっしゃると思います。
しかし、友利奈緒は既に降臨しているかもしれません。
そこで、友利奈緒らしさについて調査してみようと思った次第です。
(ええ、題材は自然言語処理ですがね。)
で何をするか?
発言傾向
まずは、友利奈緒の発言の傾向を見てみます。
どんな単語が多いか、純粋に見てみましょう。
全てのワードの中から発言傾向を探ります。
以下は全ての発言に対して、形態素解析を行い、Word Countを実施した結果です。
いわゆるですます調なのでしょうか。
また、名詞のみに絞るとこうなります。
一人称が「あたし」二人称が「あなた」お兄さんのネタが好きなことがわかります。
友利奈緒の発言のword2vecマップ
今回はt-SNEを使ってword2vecの出力を2次元で表現してみます。
Word Analogyがほしいので、今回はChainerのサンプルをお借りして実施します。
実施した結果は以下になります。
恋の周辺はこんな感じ、彼女にとって恋と荷物は同じなのでしょうか。
彼女が好きなアーティストであり、ZHIEND付近。因みに右上にある答案と満点が近いようです。
友利奈緒の中の友利奈緒を探す
ここからが本番です。なんと、Twitter Accountから友利奈緒を探しその中から友利奈緒を探さなくてはなりません。
もう面倒くさいのでこのあたりコサイン類似度でいいでしょうか。。
因みに今回は、取得したツイートの中からワードカウントし、それをコサイン類似度を使って、比較しております。
まずは、Twitter Accountから対象の友利奈緒を探します。
が、まずは、TwitterのDeveloper登録から開始する必要があります。
いくら友利奈緒をさがしても、データが必要なのです。
ということでここからはコーディング
日々差なので、まさかのTwitter APIのアクセス登録からせねばなりません。
まずは、デベロッパー登録を行い、アクセスキーの数々を取得する必要があります。
それらを行った結果が以下のコードになります。
#coding:utf-8 from requests_oauthlib import OAuth1Session import json import MeCab import collections import scipy.spatial.distance import numpy as np CK = '****' # Consumer Key CS = '****' # Consumer Secret AT = '****' # Access Token AS = '****' user_url = "https://api.twitter.com/1.1/users/search.json" user_param = {"q":"友利奈緒"} twitter = OAuth1Session(CK, CS, AT, AS) req = twitter.get(user_url, params = user_param) request_data = json.loads(req.text.encode("utf-8")) twitter_accounts = [data["screen_name"].encode('utf-8') for data in request_data] tweet_lists = [] tweet_lists_per_account = [] for twitter_account in twitter_accounts: params = {"screen_name": twitter_account"count":100} url = "https://api.twitter.com/1.1/statuses/user_timeline.json" twitter = OAuth1Session(CK, CS, AT, AS) req = twitter.get(url, params = params) request_data = json.loads(req.text.encode("utf-8")) tweet_data_list = [data["text"].encode('utf-8') for data in request_data] tweet_lists += tweet_data_list tweet_lists_per_account.append(tweet_data_list) f = file("tomorinao.txt","r") tomorinao_txt = [line for line in f.readlines()] tweet_lists += tomorinao_txt def create_dict(text_list): mt = MeCab.Tagger("mecabrc") d = collections.defaultdict(int) for text in text_list: res = mt.parseToNode(text) while res: #pos = res.feature.split(",")[0] length = len(d) if not res.surface in d: d[res.surface] = length res = res.next return d def convert_to_vector(d,tweet_lists): vect = np.zeros((len(d))) for tweet_list in tweet_lists: mt = MeCab.Tagger("mecabrc") res = mt.parseToNode(tweet_list) while res: vect[d[res.surface]] += 1 res = res.next return vect tweet_dictionary = create_dict(tweet_lists) tweets = [convert_to_vector(tweet_dictionary,tweets) for tweets in tweet_lists_per_account] tomorinao_vec = convert_to_vector(tweet_dictionary, tomorinao_txt) datas = [{"tweet_name":account,"similarity":1 - scipy.spatial.distance.cosine(tomorinao_vec, tweet)} for tweet,account in zip(tweets,twitter_accounts)] for data in sorted(datas,key=lambda x:x["similarity"],reversed=True): print data["tweet_name"],data["similarity"]
解析ができておりませんが、なんかそれっぽい助詞を沢山使っていれば似てると判断されそうです。
kno1020 0.908406718657 palon_m 0.891978811649 shift_crops 0.891117912717 furaji 0.881959227468 idzuna_tan 0.880765518925 Soma_UoxoU 0.878342647015 hyonhina 0.8722366894 __Tomori__Nao 0.859986967808 ret156 0.854664019432 maccha_nuce 0.854563089704 nisi3_ 0.848049044259 menphim 0.839963214344 Sen_ao_ 0.839728964507 _j5kd_ 0.836228536726 nkpoid 0.813112189718 9m 0.777776783697 mzyy94 0.765061211476 Tomori_not 0.751480048378 tomori_nari 0.713887033463 takuzirra 0.704690547238
友利奈緒を自動生成した。
うん、もう沢山の人がやりすぎてあれですが、Recurrent Neural Networkを使って
最後に友利奈緒を自動生成してみた。
ほんでだけま…減点食費?問題た!これ、一必死に仕方でしょう?
その未ちゃんのように突き出消えていませけどそれが兄にしてくるのででしょ、落ちますか挙動が留まら部で能力を送りにが
帰っているからのようは親御さんのなっにいましたただ、休学届けを見て下さいそのあたしに出来るましょの、
はい!、ちゃんとございます、行きたら出ていたぞ行きて!おっですいえいえあの今も陣が乙坂していれ帰るないと、
毎日1能力を勘違い続けてほうたのも野球、日々が誰やないだけじゃすることをしれましょうあたし達は探そなです違ういふんんの駅弁同じ見せに高いよーこれは口ですかお前、パスタ前の簡単に録画ないで、やがてしれ出来ましたか?
誰ゲットー、ありい寝るとたまにいますか?信じましょの、次の無条件ですが、かあなたてまかと証拠ですん、何者の拭く!
ここだけ最強っすねー、ゆっくりございたらそれによりーね、クソの魔!こういうのお母さんはそうよりもあるんですへ?
結論
友利奈緒は友利奈緒です。
明日は@Carpe_diemF91 さんです。
よろしくお願いします。