毎日テキストマイニング

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

2018/09/13【82日目】自然言語処理100本ノック、その1

次にやることが思いつかないので、ひとまず自然言語処理100本ノックをやって行きたいと思います。 www.cl.ecei.tohoku.ac.jp まずは000番目からです。 000 文字列を逆に表示する問題です。はいはい.reverse()を使えばいいんでしょ?と思いましたらは.reverse…

2018/09/13【82日目】chatbotで使ったコードを見直していく(後半)

後半の最初はピックルの読み込みから。 dataset = load_clean_sentences('both.pkl') dataset1 = dataset.reshape(-1,1) train = load_clean_sentences('train.pkl') test = load_clean_sentences('test.pkl') それから定義したモデルの読み込み。 model = d…

2018/09/12【81日目】chatbotで使ったコードを見直していく(前編)

ちょっと前から作り続けているchatbotをこのまま続けるにしろ、この辺で終わるにしろ、取り敢えずコードを見直していきたいと思います(自分で書いた訳ではないので)。 コードを見直していく まず、真っ先に見る必要があるのはここのデータの保存というです…

2018/09/11【80日目】会話のデータを増やしてみる

昨日の段階でなんとなくやりたいことが見えてきましたが、同じことしか話していなかったので、学習データが足りないのかと思って、会話データを300パターン用意してみました。 ちょっとやっていきましょう。 YOU: おつかれ ANSWER: 今日から7月です YOU: も…

2018/09/10【79日目】LSTMでbotをいじってみる

会話データをひとまず100個作りましたので、実装していきたいと思います。 コードはGithub上のものを参考にしています(というよりそのまま) github.com 01_preprocessing.pyの場所 from pickle import load from pickle import dump from numpy.random imp…

2018/09/09【78日目】会話データについて調べてみた

今回は簡単に会話データに関して調べました。 会話データを探す 英語の会話データはたくさんあるみたいですけどね。日本語だとなかなかないみたいですね。 機械学習に使えるチャットボットデータセット・ベスト15 gengo.ai この間リリースされたばかりのGoog…

2018/09/09【78日目】会話データを(手動で)作っていく

昨日の段階で、ある程度kerasの仕組みはわかってきましたので、そろそろ本格的に手を動かしていきたいと思います。 その前に、いちおうtweetのデータ5265件を使ってテキスト生成はしてみました。3世代目でこんな感じです。temperature: 0.5がギリギリ良さげ…

2018/09/08【77日目】ソフトマックスの温度を調整してみる

ディープラーニング関連の話が続いて申し訳ないですが、今日もその続きです。 テキストを生成する際に、次に来る確率が一番高い単語を選ぶのが貪欲的サンプリング(greedy sampling)という。 ただし、毎回確率が高い単語だけを選んでいても、変わり映えがし…

2018/09/07【76日目】RNNのリカレント層を見ていく

なんだかんだ、ここ1ヶ月くらい追っているRNNの実装のところをみていきます。 すごい単純にいうとRNNは下記のことをやっているだけらしいです。 state_t = 0 #時間Tのすべて0の状態 for input_t in input_sequence: output_t = f(input_t, state_t) satate_t…

2018/09/06【75日目】Kerasでワンホットコーディングを行う

まだしばらく勉強メモが続きますが、今日はkerasでのワンホットエンコーディングの実装のところです。 以下、勉強メモ。 テキストは最も広く使用されているシーケンスデータ。単語レベルで処理するのが普通。テキストのベクトル化は複数の方法がある。 テキ…

2018/09/05【73日目】畳み込みニューラルネットワークの勉強していく

この頃完全にニューラルネットワークについて調べている感じですが、今日もその続きです。 以下、勉強メモです。 畳み込みニューラルネットワーク(CNN)はconventと呼ばれている。 基本的なインスタンス化 model = models.Sequential() model.add(layers.Co…

2018/09/03【72日目】Pythonとkerasによるディープラーニングを学んでいく

ディープラーニングの勉強メモ 機械学習は明示的にプログラムされているのではなく、訓練されている。 機械学習モデルの本質は入力データに適した有益な表現を見つけだすこと。 機械学習のアルゴリズムは、あらかじめ定義された演算の集まり(仮説空間)に入…

2018/09/03【72日目】結局LSTMがよくわからないので、日本語の本を読んでいく

昨日のコードを40世代まで実行していましたら、下記のようになりました。 Epoch 40. Loss: 2.09404529274 こんにち を し た 今日 は 握手会 ありがとう ござい まし た ? 今日 は 1 日 で は、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、…

2018/09/02【71日目】よくわからないけどLSTMをみていく

それほどよく分かってもいませんが、続けていきます。 言語モデルを作っていく上で通常のRNNではできなかった長期依存をできるようにした、Long short-term memory (LSTM) と言うモデルがあるらしいです。 今日はこれをみていこうと思います。 引続き、MXnet…

2018/09/01【70日目】昨日のRNNのコードを読み込んでいく

昨日のコピペしていったコードを見ていきたいと思います。 前処理 まずは必要なライブラリのimportとテキストの読み込みから。 from __future__ import print_function import mxnet as mx from mxnet import nd, autograd import numpy as np mx.random.see…

2018/8/31【69日目】MXNetでRNNを実装して言葉を学習させていく

昨日の意味がわからない会話の中を繰り広げる中で、下記のことができていないのではないかと思いました。 会話データがないと意味がない 結局RNNを実装していない こっちの言っていることに反応しない できる限り1個ずつ解決していきたいと思います。 RNNの…

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でやっていきたいと思いま…