11.12月1日~12月7日

<目標>

3章、可視化の手法について書く

4章、システムの概要を書く

<達成度>

80%

3章の可視化の手法を、4章のシステムの概要のフローで書くような内容を書いていたので、書き直す必要がある

5章は、可視化結果

6章に考察、7章のおわりに(今後の課題とまとめ)を書く構成にする

<次週の目標>

可視化の提案手法を書き直す

4章システムの概要を書く

できれば5章の可視化結果まで書く

<活動時間>

12月1日(木)14:00~19:00@研究室 2時間

12月2日(金)11:00~20:00@研究室 5時間30分

12月3日(土)12:30~17:00@研究室 3時間

12月5日(月)10:00~19:50@研究室(午前中はSA中) 5時間20分

12月6日(火)13:00~20:50@研究室 4時間

12月7日(水)14:30~18:00@研究室 2時間

合計:21時間50分

6.10月27日~11月2日

<目標>

文字の配置を自動にする

<達成度>

自動配置のやり方が理解できなかったので、可視化の改善できそうな部分のデータの整理(番組時間別の頻出単語と感情値算出)をしました。

<次週の目標>

  • 長方形の領域を取って重ならないように表示されるようにする
  • 関連研究をまとめる(論文)

<活動時間>

10月27日(木)15:30~16:30@研究室 1時間

10月28日(金)13:20~14:30@研究室 1時間

10月31日(月)10:00~12:00,14:00~18:00@研究室 6時間

11月1日(火)11:30~12:30,13:30~18:30@研究室 5時間

11月2日(水)15:00~18:20@研究室 3時間20分

合計:16時間20分

 

 

Twitterからテレビ番組の実況ツイートを取得する

Twitterから特定のテレビ番組の実況ツイートを取得する方法とプログラムをまとめます。

開発言語はjavaとし、Twitterからツイートを取得するためにTwitter4Jを使用しました。

<参考サイト>

Twitterからつぶやきを取得する。 -放浪するエンジニアの覚え書き

Twitter4JでTweetを取得してみる


<プログラム>

  • 取得したツイートをcsvファイルに書き込む
  • RT、@、URL、ハッシュタグの削除
  • 投稿日時、ユーザ名、本文を取得し、csvファイルには本文だけ書き込む
// 初期化
Twitter twitter = new TwitterFactory().getInstance();
Query query = new Query();

try {
    File file = new File("C:\\csv\\Tweet21.csv");
    PrintWriter pw = new PrintWriter(file, "Shift-JIS");
    //追記で書き込む
//				pw = new PrintWriter(new BufferedWriter(new FileWriter(file,true)));

    DefaultTableModel tableModel = new DefaultTableModel(new String[]{"日付", "名前", "本文"}, 0);
    // 検索ワードをセット
    //query.setQuery("#" + txtSearchText.getText());
    query.setQuery("#" +txtSearchText.getText());
    // 1度のリクエストで取得するTweetの数(100が最大)
    query.setCount(100);
    query.setSince("2016-09-01");
    query.setUntil("2016-09-10");

    // 1500件(15ページ)最大数
    for (int i = 1; i <= 15; i++) {
        // 検索実行
        QueryResult result = twitter.search(query);
        System.out.println("ヒット数 : " + result.getTweets().size());
        System.out.println("ページ数 : " + new Integer(i).toString());

        // 検索結果を見てみる
        for (Status tweet : result.getTweets()) {
            // 本文
//						String s = tweet.

            // Dateクラスとユーザ名
            String date = tweet.getCreatedAt().toString();
            String user = tweet.getUser().getName();
            String str = tweet.getText();

            // 特定の文字の削除
            str = str.replaceAll("RT", "");
//                    str = str.replaceAll("@", "");

            if (str.charAt(1) == '@') {
                int index = str.indexOf(":");
//                        str = str.substring(index + 1, str.length());
                str = str.substring(index + 1);
            }

            // httpから始まるURLの削除
            if (str.contains("http")) {
                int index = str.indexOf("http");
                str = str.substring(0, index);
//                        System.out.println(index + ", total = " + str.length());
            }
            if(str.contains("#")){
                int index =str.indexOf("#");
                str =str.substring(0,index);
            }
            if(str.contains("#")){
                int index =str.indexOf("#");
                str =str.substring(0,index);
            }



//                    pw.println(date + "," + user + ",");
            pw.println(str);


            tableModel.addRow(new String[]{date, user, str});

            // リツイート
            int ret = tweet.getRetweetCount();

            // ハッシュタグとURLの削除	
            StringTokenizer sta = new StringTokenizer(str, " ");

            //トークンの出力
/*                    while (sta.hasMoreTokens()) {
                String wk = sta.nextToken();
               // if (wk.contains("http")
                       // && wk.contains("RT") && wk.contains("@")) {
                    pw.print(", ," + wk);

               // }
            }
*/
        }

        if (result.hasNext()) {
            query = result.nextQuery();
        } else {
            break;
        }
    }
    pw.close();

    tableTweets.setModel(tableModel);

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}