毎日テキストマイニング

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

2018/8/30【68日目】マルコフ連鎖で謎の会話ができるようになった

3グラムの方がいいという情報があったので、ただ単にMeCabで単語に分けたものよりも3グラムを学習させてみます。 3グラムはこちらで勉強したコードから。 dailytextmining.hatenablog.com def text2threegram(text): kaisekiyou = text.read().split('¥n') s…

2018/8/27【65日目】繰り返しオウム返しする関数まで作った

色々な情報を探していますが、slackやtwitterでのチャットを使ったコードが多いですね。やはりチャットの部分は自分で作るしかないのかなと思います。 とりあえず、バイバイを入力するまで永遠とオウム返しをするbotまで完成しました。 def main(): while Tr…

2018/8/27【65日目】関数まで作ったのと要約の自動化をする

とりあえず、チャットボットを作っていきたいのですが、いろいろ調べているうちに時間がなくなってしまい、昨日のものを関数にしただけで終わってしまいました。 i_am = "I : {0}" bot = "BOT : {0}" inp = input("名前は?:") send_message(inp) def res(m…

2018/8/26【64日目】Chatborを作ってマルコフ連鎖の反応を見てみたい

このまま大量にテキストを学習させていくだけですと、あまり面白くもないので、チャットボットを作って、その反応にマルコフ連鎖でテキスト生成を行わせたいと思います。 まずは簡単なChatbotを作成してみる Chatbotを作ったことがないので、まずは簡単なも…

2018/8/26【64日目】テキストを大量に学習させてみる

昨日からの続きです。 手元に4389件のtweetデータがありますので、とりあえず、これを読み込ませてみます。 import markovify # Get raw text as string. with open("all_kaiseki.txt") as f: text = f.read() ten = text.replace('\"', '\n') kaigyou = "\n…

2018/8/25【63日目】マルコフ連鎖で文章を作ってみる

気を取り直して、今日は文章を機械的に作成していきたいと思います。 『ゼロから作るDeep Learning 2 自然言語処理編』に書いてありましたが、テキスト生成にはマルコフ連鎖というのを使うみたいです。 マルコフ連鎖とは マルコフ連鎖とは、現在の状況のみに…

wifiがつながらない。。。

今日はマルコフ連鎖によるテキスト生成を行おうとしましたが、雷の影響なのかwifiが繋がらず断念しました。残念。。。

wifiが

2018/8/24【62日目】ついに共起ネットワークの図が垣間見れた

1週間ほど迷走をしていましたが、昨日、お金を払ってKH Corderを導入いたしました。 これでついに、共起ネットワークができると思います。それではやっていきます。 KH Corderのセットアップ サポートページからzipファイルをダウンロードして、数回クリック…

2018/8/23【61日目】グラフ理論について学ぶ

うーん、どうもNetworkXの全貌が全くわからないので座学することにしました。 (なかなか脱線しますね) こういったグラフを描くためのグラフ理論というのがあるんですね。 グラフ理論 もともとグラフは物と物の関係を表す数学分野の1つ、 数学的にグラフ(G…

2018/8/23【61日目】日付変わる前用の投稿

残業で家に帰れなさそうなので、日付変わる前に継続用に投稿しておきます。

2018/8/22【60日目】NetworkXで言語を処理してみる

とりあえずの画像の出し方と、仕組み自体はわかりましたので、自然言語を使って実戦していきます。 さいきん終電帰りが多く、内容は軽めです。 実践 まずはNetworkXとMatplotlibのimportです。 あと、グラフの作成。 import networkx as nx import matplotli…

2018/8/21【59日目】NetworkXに触れてみる その2

昨日からの続きです。ぶっちゃけて言いますと、NetworkXについて全くわからず書いてています。そのまま続きをやっていきます。 nodeに数値を入れる意味がわからないいまま続けていきます。 ノードには変数も代入できるようです。 H = nx.path_graph(10) G.ad…

2018/8/20【58日目】そろそろNetworkXに触れてみる

共起ネットワークの話が出てきましたので、そろそろ可視化の勉強をしていきたいと思います。手軽に画像を作るのならKH Coderがいい、という記事を見たのですが、インストールするものが多く、面倒くさそうなので、いつも通りPythonでやっていきたいと思いま…

2018/8/19【57日目】AKBの本当の神曲をみつける

Amazonのレビューですが、1728件のレビューが取得できました。 なんかデータの不具合があまりも多くて前処理(主にコンマの処理)で泣きそうだったのですが、なんとか読み込めました。 とりあえず学習 とりあえずword2vecで学習させました。センターと入力す…

2018/8/18【56日目】Amazoレビューで口コミ分析をしてみる

『仕事に使えるクチコミ分析[テキストマイニングと統計学をマーケティングに活用する]』を拝読いたしました。 本書の中でAmazonのレビューを使って、クチコミ分析を行う、という解説が面白かったので、Pythonで実践していきたいと思います。 今回のターゲッ…

2018/8/17【55日目】夏休みだし『ゼロから作るDeep Learning 2』を読んでいく2

『ゼロから作るDeep Learning 2 自然言語処理編』の5章以降であるRNN(リカレントニューラルネットワーク)から再開です。 以下はただの勉強メモです。 勉強メモ 今までのニューラルネットワークは、フィードフォワードという流れが一方向のネットワーク。こ…

2018/8/16【54日目】夏休みだし『ゼロから作るDeep Learning 2 自然言語処理編』を読んでいく

夏休みですので、読書でもしたいと思います。今回読むのは『ゼロから作るDeep Learning 2 自然言語処理編』です。 以下、ただの読書メモです。 読書メモ 単語の意味を理解させるのが重要。コンピューターに単語を理解させるのには下記の方法がある。 シソー…

2018/8/15【53日目】AKBの呟きをword2vecで学習させてみた

あまりランダムフォレストをやっていてもしょうがないので、次に進みます。 今日はAKBの呟きをword2vecで学習させたいと思います。 import pandas as pd import numpy as np %matplotlib inline import matplotlib.pyplot as plt train = pd.read_csv('all_2…

2018/8/14【52日目】グリップリサーチをしてみる

現状の正解率もわかったところで、ランダムフォレストのパラメーターを調整していきたいと思います。今はチュートリアルの通りのRandomForestClassifier(n_estimators = 100) しか設定していませんが、これ以外にも多くのパラーメーターがあるみたいです。 3…

2018/8/13【51日目】ランダムフォレストの正解率を上げていきたいので混合行列を見てみた

昨日、やっと福岡聖菜のtweetを当てることができましたが、全部は当てることができなかったのでもう少し正解率をあげたいと思います。 ですが、そもそも自分で作ったモデルがどのくらいの正解率を持っているのかを知る必要がありそうですね。 モデルの検証 …

2018/8/12【50日目】ランダムフォレストで再び福岡聖菜のtweetを当てていく

単語の処理の仕方もかなりわかりましたので、今度こそ福岡聖菜のtweetを判定したいと思います。 前回のダメな例がこちらです。 dailytextmining.hatenablog.com 前処理 6月10日から8月10日までの全tweetを取得します。列はid, name, tweetの3列、行数は3264…

2018/8/11【49日目】word2vecを使ったk-means分類を行う

word2vecを使った分類 昨日まででword2vecを使って、単語を分散表現を作ることができました。単語をベクトル化したことでk-menas分類が使えるそうです。 k-meansの説明は「k-means わかりやすい」で検索したら、次のサイトが出てきましたのでこちらを参考に…

2018/8/10【48日目】Pythonでやっとword2vecを使えた

昨日は文章ごとのリストができましたので、先に進めて行きます。 次は各文章ごとの特徴を抜き出して行くようです。 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(analyzer = "word", tokenizer = None, prepr…

2018/8/9【47日目】関数の大切さが今さらわかった

2日前くらい前から行っているkaggleのチュートリアルの続きです。 Bag of Words Meets Bags of Popcorn | Kaggle とりあえず提示されているコードを見ていきたいと思います。 列の名前を見る DataFrameの列の名前を見れるですね。 train.columns.values 実行…

2018/8/8【46日目】Word2vecを試すにはkaggleのチュートリアルが良さそう

昨日、TensolFllowのword2vecのチュートリアルを試してみましたので、一応コードを確認していきます。 word2vecで画像を作成する際のSTEP サンプルコード内にコメントでSTEPが書いてありますので、それを集めてみました。 Step 1: Download the data. Step 2…

2018/8/7【45日目】word2vecを行うためにTensolFolwを触ってみる

分散表現を作るために、昨日ちらっと出てきましたGoogle製の機械学習フレームワークTensorFlowを触っていきたいと思います。 チュートリアルのページはこちら。 Vector Representations of Words | TensorFlow 数学の理論は後回しにして、コードのサンプルか…

2018/8/6【44日目】単語をベクトル化するってどういうこと

久しぶりにテキスト処理の話にもどります。今日から単語をベクトル化していきたいと思います。 17日目に固有ベクトルの話をしていましたが、そもそもベクトルとは「大きさだけでなく、向きももった量」のことをいうらしいです。 dailytextmining.hatenablog.…

2018/8/5【43日目】AKBとモーニング娘。の愛の違いはなんなのか?

AKB曲を取得できましたので、歌詞の分析を行なっていきます。 ついでに比較対象としてモーニング娘。の歌詞も取得しました。 曲数はこんな感じです。 print("AKB曲数" + str(len(akb)) + "曲" ) print("モーニング娘。曲数" + str(len(mng)) + "曲" ) 実行結…

2018/8/4【42日目】 Scrapyで取得したデータをMySQLに保存する

歌詞も取得できましたので、今日は後々のことを考えてMySQLに保存したいと思います。 MySQLのことは9日目にやっていますので、これを参考にします(それにしても読みにくい)。 dailytextmining.hatenablog.com まずはデータベース内にテーブルを作る 今回は…