毎日テキストマイニング

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

2018/7/17【25日目】Pythonでn-gramを実装していく

今日は自然言語処理のテキストに良く出てくるn-gramについて実装していきたいと思います。 n-gramとは 大学受験の時に、『英単語ピーナッツほど美味しいものはない』という単語帳がありましたが、「形容詞+名詞」や「動詞+名詞」をひたすらノートに書いてい…

2018/7/16【24日目】高速で学ぶ統計学その4

連休中に学ぶと言ったのですが、難しすぎて全然進まなかったですね。とりあえず今日正規分布までは行って終わりたいと思います。そのうちその5に続きます。 最小2乗法の計算方法 最小2乗法のイメージがわかったところで公式を確認してみます。 シータがパラ…

2018/7/15【23日目その2】高速で学ぶ統計学その3

回帰直線を求める 1つ前の投稿でxをいじりましたが、このようにxの値に対して、yはさまざまな値になりますので、yの平均に注目することがあるそうです。これをyの条件付き平均というらしいです。 式にするとこうなるそうです。 yの平均 = a + bx 簡単な1次式…

2018/7/15【23日目】高速で学ぶ統計学その2

相関関係 相関関係は昨日も確認しましたが、相関関係は2つの変数の関係性を表しているそうです。右上がりの直線に並ぶと「相関関係がある」といい、右下がりの直線に並ぶと「負の相関関係がある」というそうです。変数が並ばずにバラバラになる場合は「相関…

2018/7/14【22日目】高速で学ぶ統計学その1

データもたまってきましたので、連休中に統計学を高速で学びたいと思います。 やり方としましては、 『心理統計学の基礎』で統計の基礎を学び、 『あたらしいPythonで学ぶ統計学の教科書』で実装し、 『統計学入門』で定義を確認していきたいとおもいます。 …

2018/7/14【22日目】高速で学ぶ統計学その1

データもたまってきましたので、連休中に統計学を高速で学びたいと思います。 やり方としましては、 『心理統計学の基礎』で統計の基礎を学び、 『あたらしいPythonで学ぶ統計学の教科書』で実装し、 『統計学入門』で定義を確認していきたいとおもいます。 …

2018/7/13【21日目後半】第1回AKBネガティブ・ポジティブ総選挙

1日経ってしまいましたが、昨日からの続きです。こんな感じのコードで6月15日から7月15日までの呟きを分析します。 ポジティブ率で順位を付けてみましたので、第1回AKBネガティブ・ポジティブ総選挙とでも呼んでおきます(別に誰も投票はしてないですが)。 …

2018/7/13【21日目】辞書を修正していく

どうでもいいですが、本日新宿のブックファーストで行われた道重さゆみの握手会に行ってみました。さすがモーニング娘。で長年リーダーだったこともあり、愛嬌がとても良かったです(あと顏がかなり小さかったです)。 きっと、AKBのメンバーも順位が上に行…

2018/7/12【20日目 修正】コード修正

昨日のコードをprintしてみましたら、思っていたように動いてなかったので、修正します。 import numpy as np import pandas as pd import MeCab #辞書読み込み npjp = pd.read_csv('./akb_dic/np_jp.dic', sep=':', encoding='utf-8', names=('Tango','Yomi…

2018/7/12【20日目】各Tweetをネガポジ判定で得点化していく

昨日、各単語にスコアを割り当てることができましたので、そのスコアを合計し、tweetの内容を得点化したいと思います。 実装 辞書に単語があればスコアを返し、単語がなければ0を返すようにします。それで貯まった数値をsum関数で合計すればいいのではないで…

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