毎日テキストマイニング

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

2018-07-01から1ヶ月間の記事一覧

2018/7/30【37日目】scrapyを使いこなして、自動でテキストを集めよう

土日の間、止まっていましたスクレイピングの話を続けていきます。 Beautifulsoupを使って本文の取得には成功しましたが、どうも手間が多く便利そうじゃないですね。 調べてみましたが、Scrapyというスクレイピング用フレームワークがあるそうなので、こっち…

2018/7/29【36日目】retweetされるtweetは現在進行形が多いのかもしれない。

昨日、retweetされた率とfavoriteされた率を出しましたので、今日はその続きです。 scipyを使えば、DataFrameにランキングをつけることができるようなのでやってみます。 from scipy import stats rank = ninkido.assign(order=stats.mstats.rankdata(ninkid…

2018/7/28【35日目】AKBでよくretweetされているのは誰か?

前にretweetをするのは心理的にハードルが高いのか?という疑問がありましたが、そもそも日本人はfavoriteを多く使う傾向にあるそうです。 いろいろな研究があるんですね。 (1) 日本語利用者は、フォロワー、フレンドの数は英語利用者よりも少ない。 (2) 日…

2018/7/27【34日目】「教えて!goo」のオシエルの中身を聞いてきた

金曜日にデベロッパーサミット(通称、デブサミ)が行われていましたので行ってきました。 event.shoeisha.jp 全体的に機械学習の話が多かったのですが、『「教えて!goo」3000万件のQAデータから、世界初の長文生成AIが生まれるまで~AIによる恋愛相談の裏側…

2018/7/26【33日目】ブログをクローリングさせるその3

昨日の段階でリンクできるURLを取得できましたが、ブログのエントリーじゃないurlを取得していますので、エントリーだけを取得したいと思います。 リスト形式の中からある文字を取得するには、if 〇〇 in リストとすれば良いので、こんな感じで取得できると…

2018/7/25【32日目】Pythonでブログをクローリングさせる:その2

その1からの続きです。どうもこの頃日にちをまたいでしまいますね(仕事が忙しい、、、)。 その1で躓いたh3タグの中を取得するには、そのまま変数をprintすれば良いだけでした。こんな感じです。 for link in soup.find_all('h3'): print(link) 実行結果 <h3 class="skin-widgetTitle" data-uranus-component="widgetTitle" lang="en">Pr</h3>…

2018/7/25【32日目】Pythonでブログをクローリングさせる

昨日はWebスクレイピングをしてみましたが、プログラムで次から次へとサイトを見ていくのをクローリングというらしいです。 今日は昨日は引き続いて、クローリングをしてみたいと思います。 クローリングの実装 昨日に引き続いてAKB48 岩立沙穂のアメブロで…

2018/7/24【32日目】ブログからテキストを抜き出す

12時前に家に帰れなかったので、日にちを跨いでいるのですが24日分をアップします。 このブログでは1日目からずっとTwitterからテキストデータを保存していましたが、AKBのメンバーはブログもやっているようなので、ブログからもテキストを保存できるように…

継続用の投稿

まだ家に帰れてないので、投稿だけしておきます。汗

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/19【27日目】ランダムフォレストを調べて、分析用の正解データを作ってみる

やりたいことをまとめますと、1日の呟きの中で福岡聖菜の呟きかどうかを判定したのです。イメージとしましては福岡聖菜だったら1、福岡聖菜でなければ0、どっちかわからないようでしたら0.5を返すようにしたいと思います。 おそらくこれは分類というやつです…

2018/7/18【26日目】n-gramの使い道を調べてみた

昨日の段階では、n-gramを使って何かしらの分析をしようと思いましたが、そもそもn-gramが何の役に立つのかわからないので、いくつか論文を当たりたいと思います。 Google Scholarで検索してみましたら、いくつか出てきましたので、下記の論文を読んでみまし…

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がある場合…