毎日テキストマイニング

180日間、毎日テキストマイニングをするブログです

2018/7/11【19日目】Pythonではじめてのネガポジ判定

今日からネガポジ判定を勉強していきたいと思います。 簡単に説明しておきますと、ある単語がネガティブな言葉なのかポジティブな言葉なのかを判定し、得点化することをいうそうです。Weblioの辞書によると次のように定義されています。 ネガポジ判定とは、…

2018/7/10【18日目後半】MeCabに登録した辞書の影響を見てみる

MeCabに単語を登録したので、その影響を見ていきたいとおもいます。 まずは今日のAKBメンバーによる呟きから確認してみます。 今日の結果 今日の結果は37件でした。 呟かれたのはこんな感じです。 '嬉しい': 4, '楽しい': 3, 'すごい': 2, '多い': 2, '良い'…

2018/7/10【18日目前半】MeCabに単語を登録する

ずっと気になっていたことに、MeCabが単語を区切りすぎているのではないか? ということがありました。例えば、「AKB48」とという言葉をMeCabに渡すと、下記のようにAKBと48という単語に区切られてします。 $ echo "AKB48” | mecab AKB 名詞,一般,*,*,*,*,* 4…

2018/7/9【17日目】固有値と固有ベクトルの正体

固有値と固有ベクトル 曲がりなりにも対角化の意味がわかったところですが、また新たに固有値、固有ベクトルという意味がわからない単語が出てきました。今日はこちらを調べていきます。 公式 固有値はあるn行n列の正方行列Aに対して、列ベクトルxがある場合…

2018/7/8【16日目】対角の意味と行列が何に使われているかイメージを掴む

13日目で行なったSickit-learnのチュートリアルで出てきた行列の対角化が何をやっているのか全くわからないので、今回調べてみました。 その時のコードがこれですね。 X_train_counts = count_vect.fit_transform(twenty_train.data) そもそも行列を高校でも…

2018/7/7【15日目後半】AKBは上位のメンバーほど他のメンバーからしたら重要でもないことを呟く節

30文書(30日分)、 2583単語をtf-idf分析したところ重要そうな単語トップ10は下記の通りでした。 ('公演', 0.33016664144560476) ('さん', 0.30658330991377586) ('今日', 0.259416646850118) ('チーム', 0.21224998378646021) ('村山', 0.2122499837864602…

2018/7/7【15日目】辞書型に変換して並び替えを行う

昨日からの分析を続けていきます。 ちなみに昨日の段階での重要そうな単語ランキングトップ10はこちらです。 'co' 'https' 'express' 'お願い' '今日' '原宿' '最後' 'brz' 'buenísimo' 'ch' ひとまずデータ量を増やすために、SQLを叩きます。2018年6月7日か…

2018/7/6【14日目】AKBの呟やきをtf-idfで分析していく

Scikit-learnの使い方も大方わかり始めたので、AKBメンバーの呟きに適用していきたいと思います。 ファイルの読み込み tf-idfで分析をするのに、複数のドキュメントが必要なので、Pythonで複数のファイルを読み込めるようにしたいと思います。 Pythonでファ…

2018/7/3【13日目】Scikit-learnのチュートリアルを行う。

Tf-idf分析を実装していきたいとおもいます。 0から実装していく力はないので、機械学習ライブラリのScikit-learnを使用していきたいと思います。とはいえ、自分はScikit-learnに触るのは初めてなので、まずは公式のチュートリアルを行いたいと思います。か…

2018/7/4【12日目】TF-IDF分析を理解する、まずは対数から

昨日の段階で一通りデータの保存、検索の土台ができました。そこで、ずっとやりたかったTF-IDF分析を始めていきたいと思います。 TF-IDF分析とは 自然言語処理の本を見ているとよく出てきます。Webを見てみると初歩中初歩の分析だとか書かれてるくらいです。…

2018/7/3【11日目】SQL構文を覚えよう

とりあえずAKBメンバーのデータを30件ずつ保存しました。 データベースには1032件の呟きが保存されています。 テーブルの中身はこんな感じです。 id,created_data,name,tweet,count_tweets,count_follows,count_followers,count_favolites,count_lists,users…

2018/7/2【10日目の捕捉】Twitter APIのcreated_atをUNIX時間に変換してDATETIMEに保存する

昨日、Twitterが吐き出すcreated_atを文字列型であるvarcharに保存したのですが、これ、検索に全く使えないですね笑 しっかりtime型で保存できるように、UNIX時間 → 日本時間に変換したいと思います。 Pythonで時間を操作するにはtimeモジュールとdatetimeモ…

2018/7/2【10日目】変数の中身をMySQLにINSERTする(utf8mb4の設定)

昨日、データベースにデータを入れられることができたので、今日はTwiiterのデータを入れていきたいとおもいます。 複数の変数を入れるサンプルコードはOracleの公式ページにありましたので、これを参考にします。 https://dev.mysql.com/doc/connector-pyth…

2018/7/1【9日目後半】何でもいいからMySQLにデータをINSERTする

午後からの続きです。 何でもいいからINSERTしてみる 無事PythonからMySQLにConnectできたので、今度はMySQLにINSERTしていきたいと思います。 ひとまずテストも兼ねて、保存するのは日時、名前、ツィート内容だけです。 crsr = db.cursor() insert_query = …

2018/7/1【9日目(前半)】Python3とMySQL8.0をConnectするだけでも大変

PythonとMySQLを連携させるという流れでしたが、まずはローカルにデータベースがないと話にならないので、データベースをつくります。 > create datebase akb_tweet; > use akb_tweet; > create table tweet( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, c…

2018/6/30【8日目】データーベースの構造を考える

本日、一日中MySQLを触っていたのですが(ほとんどエラー対応)、せっかくなのでPythonと連携させていきたいと思います。 ひとまず作るデーターベースの設計からはじめてみます。 データーベースの設計 Twitter APIでどんな情報が得られるのか再確認してみま…

2018/6/30【番外編】MySqlの基礎を学ぶ2、Error Code: 1449 The user specified as a definerのエラーを解決させる

午前中からの続きです。 MySQLWorkbenchを起動できたら、左側のMANAGEMENTにあるServer Statusをクリックするとデータベースの状況がわかるとのことです。 とりあえず試しにデーターベースの一覧を取得してみます。 > SHOW DATABASES; 12:20:54 Get schemata…

2018/6/30【番外編】MySqlの基礎を学ぶ1、mysql.server startができない

今までTwitterから得た情報は全てテキストで扱っていたのですが、昨日の分析ごっこをするだけでも手間がかかって不便です。早めにデータベースを構築してSQLで扱えるようにしたいです。 なので、今日は1日かけてMySQLの基礎から学んで行こうと思います。あ、…

2018/6/29【7日目】Twitterで「楽しい」とつぶやているうちは上位にいけない説

昨日からの続きです。昨日はこういった図ができました。 全体では、 楽しい 嬉しい すごい という呟きが多いようです。 では、メンバーたちの呟きを個別に見ていきましょう。 個別の呟き件数 第10回AKB48世界選抜総選挙で一番順位が高い5位の岡田奈々(@okad…

2018/6/29【番外編】サッカーワールドカップの決勝トーナメントに進んだ時、みんなはどう思ったのか調べてみた

サッカーワールドカップで日本代表が2大会ぶりに決勝トーナメントに進みましたね。 やはり日本代表が活躍すると嬉しいですね。とは言え、ポーランド戦はなかなかモヤモヤする試合でした。ポーランド戦で負けても、勝点、得失点差、イエローカードの少なさで…

2018/6/28【6日目】頻出単語の数を調べてAKBの上位のメンバーがどんなことを呟いているのか調べる

単語の出現回数を数える 昨日の時点で品詞別のテキストの出力ができましたので、今回はこれらの単語の出てきた数を数えたいと思います。 単語の数を数えるのはCounterライブラリを使えばいいらしいです。とりあえず、入れてみます。 pip install collections…

2018/6/27【5日目】形態素解析で品詞の種類によって出力を分ける方法

昨日の分析結果ですと、どうしても名詞が目立ってしまいますので、面白くないですね。今日は今まで取得したテキストを使って、それぞれの品詞でどのような言葉が使われているのかを調べてみたいと思います。 MeCabのTaggerのオプションを変更する 今まで何も…

2018/6/26【4日目】Word-cloudを日本語に対応させる

昨日からの続きです。Word-cloudで日本語を表示させるには、日本語フォントを指定しないとダメなようです。 日本語対応を早速やっていきましょう。ただその前に、今日の結果を報告しておきます。 今日の結果 今日のAKBメンバーによる呟きは43件でした。 この…

2018/6/25【3日目】MeCabで形態素解析をする

昨日の時点で、Word-cloudの使い方がわかってきましたので、Word-cloudを使う条件である「半角で区切られた文字」を作成していきたいと思います。 MeCabに入門 実際のところ日本語は半角では区切れませんので、文を単語ごとに区切っていく形態素解析という解…

2018/6/24【2日目】word_cloudを使って可視化をする

word_cloud この画像、よく見ますね。テキストマイニングと聞いて、一番よくみる画像としてあげられると思います。 WordCloudというライブラリで簡単に作れる上、いつまでも画像がないのも寂しいので初めのうちに作ってしまいましょう。 Gitのページに行って…

2018/6/23【1日目】データを集める

180日間Webサービスを作り続けた記事を読んで感銘を受けたので、自分も何かやりたいな、と思っていました。 できるだけやったことがない分野で、 180日間やっていける関心が強くて、 ネタ切れにならず将来役に立つもの という条件で考えていたのですが、テキ…