毎日テキストマイニング

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

180日間テキストマイニング

2018/7/23【31日目】PythonでPDFからテキストを読み込むその2

ドキュメントを読んでもどうすればいいのか全然わからないので、いろいろなサイトを参考にしてみたのですが、次のサイトが様々なバージョンのコードが書かれており、とても参考になりました。 Python pdfminer.converter.TextConverter() Examples www.progr…

2018/7/23【31日目】PythonでPDFからテキストを読み込む。その1

いろいろ調べ物をしていますと、PDFに当たることがあります。PDFを何かしらの分析に使えないかなーって思っていましたがpdfminer.sixというものを使えばテキスト出力ができるらしいので、今回触ってみました。 インストール 公式サイトはこちらです。 https:…

2018/7/21【30日目】AKBにいるのなら「ちゃん」と呼ばれる存在になるより、「さん」と呼ばれる存在になった方が圧倒的にいい説

25日目に単語n-gramをせっかく作ったので、何か分析ぽいことをしたいと思います(ちょうど30日目ですし)。 n-gramの形式からは、下記のようにすれば、要素を摘出できるので、「ちゃん」と「さん」の組み合わせを見ていきたいと思います。 for i in bigram_l…

2018/7/21【29日目】ランダムフォレストよりベイズの方がよさそうだった

昨日のtweetの長さで学習データと正解データは手元にできたので、一応これだけでも動きます。 import pandas as pd import numpy as np from sklearn.ensemble import RandomForestClassifier names = pd.read_csv('name_20180721.csv', sep="\n", encoding=…

2018/7/20【28日目】ランダムフォレストにtweetの内容を渡してみたけどダメだった

昨日の段階で正解データは作成しましたので、今日は学習データを作っていきたいと思います。 取りあえず読込み。 tweets = pd.read_csv('tweet_20180720.csv', sep=r"\s+", encoding='utf-8', error_bad_lines=False) sepで指定したr"\s+”というのは正規表現…

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

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

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/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日目】変数の中身を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/29【7日目】Twitterで「楽しい」とつぶやているうちは上位にいけない説

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

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

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