Twitter を用いたプログラミング言語の有益な情報の提供 Provides a

Twitter を用いたプログラミング言語の有益な情報の提供
Provides a useful information of programming language using the Twitter
認知支援システム学講座 0312011128 晴山裕治
指導教官:David Ramamonjisoa
1.
はじめに
近年, SNS などの Consumer Generated Media(CGM)
徴(ネットスラングの有無,具体的な数値,文のはじめに@ユ
ーザ名など)を用いて分類している.本研究もツイート本文
の発達により情報発信の場が増えている. これにより
以外の特徴を用いて分類を行う.具体的には URL の有無を
CGM の情報から有益な情報を発見する需要が増加してい
1つのパラメータとして実験を進める.
ると[1]で述べている. 本研究では SNS の一種である
3.
Twitter からプログラミング言語の情報を収集する. 蓄積
Twitter について
数ある SNS から Twitter を使用する理由について 2 点
したデータを予め設定したクラスに分類し, ユーザに提供
挙げられる. 日本における主要な SNS は mixi, Twitter,
する. 提供するデータをうまく整理することができれば思
Facebook である[4]. 3 つの中で一番利用者が多いのが
わぬ発見ができ, 流行を知ることができる. また, 教育機
Twitter で, 2011 年 11 月時点で 1600 万人が利用している.
関での演習内容の決定補助に役立つと考える. 本研究では,
Twitter の利用目的が他2 つのSNS と違うのが情報収集に
Python というプログラミング言語に関する情報を収集す
使われる割合が高いということだ(30. 6%)[4]. 上記の理由
る. 理由は著者が普段, Python を使用していて, 実験の評
から Twitter を用いてプログラミング言語 Python の情報
価を行いやすいという観点からである. Python は機械学
収集を行うこととした.
習に関する情報が盛んなので, クラスの一つとして, 機械
4.
学習を設定する. 想定するユーザは 1. プログラミング初
学習データ
Twitter のデータ(ツイート)を収集する際, Tweepy[5]と
心者, 2. ライブラリを使う経験者, 3. 機械学習を学ぶ者の
いう python のライブラリを使用した. 検索ワード
3 種類とし, データの分類を機械学習のアルゴリズムを用
を”python”とし, リツイート(他人のツイートの引用)やボ
いて行う. 分類後のデータを Twitter のパラメータの一種
ット(機械による自動投稿)を削除した. 取得した件数は
であるfavoriteで降順ソートを行い, 上位20件をユーザに
7765 件, その中のツイートで URL が付与されているもの
提示する.
を学習データとみなし, 人手でラベル付けを行った. デー
タの日時は 2015/11/29 5:23 ~2015/12/08 7:02, データ数
は 2251 件となった. ラベル付けを行った結果以下のよう
なデータの概要となった.
表1:学習データのラベルと件数とツイート例
ラベル名
入門
件数
418
ツイート例
今すぐはじめる python…
Python のリスト内包表記…
応用
655
・Raspberry pi の GPU で行列…
・Slack 代替チャット Zulip…
図1:データ取得から情報提供までの流れ
2.
機械学習
149
先行研究
・Python と遺伝的アルゴリズムで
[2]の研究では, 学術論文を K-NN 法で分類を行ってい
る. Title や abstract 等の比較的短い文章でも, 分類精度が
平均 0. 825 を示している. 本研究では 140 文字という投稿
・Heroku+OpenCV で簡易顔検出
作る FX 自動売買
その他
1025
・アシックスの安全靴あった...
・Python にマスコット伽羅…
制限が課せられている Twitter を使用する. この研究を参
上記のデータの全ての単語を用いた特徴とバイグラムの
考に様々な機械学習アルゴリズムを用いて, 分類を行う.
特徴の 2 つを用意し, それぞれ TF-IDF の行列に変換した.
[3]の研究では Twitter のデータを本文だけでなく様々な特
特徴ベクトルに変換する際, URL とユーザ名を削除した本
文だけのツイートを使用した. この 2 つのデータで文書の
・TensorFlow による Deep Learning…
応用
・python - ニューラルネット…
分類を行っていく.
5.
文書分類手法
機械学習
・Python – 声優の声を分類してみた
文書分類を行うアルゴリズムを決定する際, ナイーブベ
イズ(NB), K-NN, 決定木(DT), Random Forest (RF)の 4
8.
つで 5 分割検定を行い, 分類精度を比較した. 以下の表は
分類精度を示している.
・Rstudio Clone for Python…
考察
入門に関するツイートは概ね良好な結果を得ることが
できた. 応用の部分に機械学習についての情報が多数混在
1
0.8
0.6
0.4
0.2
0
NB
K-NN
していた. 応用の定義が広すぎたのが原因だろう. 機械学
習のカテゴリに無駄な情報が多くあり, favorite 数でソー
トすると有用な情報が埋もれてしまう結果となった. ナイ
DT
ーブベイズは入門,機械学習の情報の取得には適切だが,そ
RF
の他の分類精度が低い. 決定木やランダムフォレストを
使用してその他の分類精度を高める方法が考えられる. ま
た, 不要な情報を機械学習以外の手法でフィルタリングす
る手段を考える必要がある.
図 2:特徴全ての単語時の分類精度
9.
終わりに
Twitter は 140 文字の投稿制限上,プログラミングの解説
1
0.5
0
NB
をするのは困難である.学習データを作成する際,有益な情
K-NN
報のほとんどが学習サイトの URL が存在するツイートで
DT
あることが分かった.Twitter 社はツイートの投稿文字数を
RF
1 万字まで引き上げることを検討している.Twitter 内のみ
で学習が可能になる環境が今後,到来すると予想する.実験
結果としては,python 入門者に推薦できるレベルの学習サ
イトや最適な開発環境を取得し,機械学習についても具体
図 3:特徴バイグラム時の分類精度
的な研究や流行を概ね把握することができた.また, 本研
この結果から入門, 機械学習について知りたい場合は特徴
究では Twitter API の制限上, 10日分のデータしか用意
がバイグラムのナイーブベイズを, 応用について知りたい
できなかった. 仮に Twitter のサービス開始時からツイー
場合は全ての単語を特徴にしたランダムフォレストの精
トを取得できたなら時系列順に情報を取り出し, プログラ
度が高いことが判明した. 1 章で述べた通り演習内容の補
ミング言語の変遷を認知できると考える.
助決定の観点から入門, 機械学習について分類精度が高か
参考文献
った, バイグラムのナイーブベイズを使用して実験を進め
[1]村上 力: トピックモデルを用いたユーザーコメントか
ていく.
らのキーコメント抽出
6.
[2]福田 悟志, 難波 英嗣, 竹澤 寿幸: 要素技術とその効
テストデータ
学習データ同様, Tweepy を使用して収集を行った. デー
果を用いた学術論文の自動分類, DEIM Forum 2015
タの日時は 2015/12/12 2:47 ~2015/12/21 8:00, データ数
F3-4
は 1873 件となった. このデータをバイグラムの TF-IDF
[3]Bharath Sriram, David, Fuhry, Engin Demir, Hakan
に変換して分類を行う.
Ferhatosmanoglu, Murat Demirbas: Short Text
7.
Classification in Twitter to improve information
実験結果
テストデータに対して, バイグラムの TF-IDF に変換後,
Filtering, Proceedings of the 33rd international ACM
ナイーブベイズによる分類を行い, データを 4 つに分類し
SIGIR conference on Research and development in
た. 以下がデータの件数である.
information retrieval , pp.841-842, 2010
分類後のデータについてお気に入り数, 上位 20 件の中か
[4]樋口 雄太郎, 河野 義広: 主要 SNS mixi, Twitter,
ら有用な情報を以下の表に示す.
Facebook の利用調査に基づく性質の相違点, 社会情報学
表 3:分類後のツイート
ラベル名
入門
ツイート
・python で学ぶ基礎からのプログラミング入
門…
・GUI を備えた Python 実行…
会(SSI)学会大会研究発表論文集 2012,pp. 97-100,
2012-09-14
[5] http://www.tweepy.org/ (閲覧日:2016/10/12)