毎日テキストマイニング

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

2018/8/3【41日目】AKBの歌詞をスクレイピングで取得した

昨日からの続きです。 タイトルは取得できましたので、曲ごとの歌詞も取得していきます。 歌詞はclass="○○"の中にありますので、ここを指定してあげれば良さそうです(昨日に続いて、クラス名までかくと怒られそうなのでぼかしてます)。 実験で使うURLはこ…

2018/8/2【40日目】AKBの歌詞をまずはタイトルをスクレイピングする

著作権のこともわかりましたので、スクレイピングをしていきます。 対象のURLはこちらです。 http://artists.utamap.com/fasearchkasi.php?artistfid=1003855_1 さっそく新しいプロジェクトを作成して、どんどんやっていきましょう。 $ scrapy startproject …

2018/8/1【39日目】スクレイピングする前に著作権について考えてみた

scarapyの使い方がわかったところで、実際にWebサイトをスクレイピングしていきたと思います。 大量のテキストと言いますと、歌詞が思いつきますので、AKBの歌詞を取得していきたいと思います。 まずは歌詞を載せているサイトを見てみます。Googleで「歌詞 …

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

scrapyを使えばjson形式で、データを保存できることがわかりましたので、次に進んでいきます。 リンクを追う 人がサイトからサイトへリンクをたどっていけるように、scrapyもリンクをたどっていろいろな情報にアクセスできるようです。 昨日に続いて、チュー…

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関数で合計すればいいのではないで…