2018-09-01から1ヶ月間の記事一覧
26問目です。 25問目の結果からマークダウンの強調を表す''' を消す問題です。 取り敢えず、replaceをしてみます。 import json import json import re from pprint import pprint def extract_base_info(text): m = re.search("{{基礎情報[^|]+\|(?P<info_body>.+?)\n}</info_body>…
25問目からです。 よくよく調べて見たら、?P< a >というのはグループ名の指定だったんですね。 (?P...) 正規表現の丸括弧に似ていますが、グループによってマッチした部分文字列はシンボリックグループ名 name によってアクセス可能になります。グループ名は…
この頃仕事が終電になることが多く、全然時間が取れませんが、せめて1時間だけでも。 24の続きからです。 正規表現の中に?Pというのがあって、これを指定すれば良さそうです。 〜〜までというのは、このよう([^=]\=)に書くみたいなので、|までを指定してあげ…
この時間まで仕事が終わらず、日をまたいでしまったのですが、1問だけ解きたいと思います。 22問目の続きです。 次のようにタプルに追加しようと思ったのですが、タプルって追加できないんですね。 import re result = () section_reg = re.compile(r'(==+)(…
さて JSON形式でテキストを取得できましたので問題に戻ります。 021 次のようなカテゴリー名を取得する問題です。 {{デフォルトソート:いきりす}} [[Category:イギリス|*]] [[Category:英連邦王国|*]] [[Category:G8加盟国]] [[Category:欧州連合加盟国]] [[…
一昨日くらいからJSONにどっぷりはまっていますので、今回調べてみました。 JSON(ジェイソン:JavaScriptオブジェクト記法)は人間が読めるようにデータを整形した形でこんな感じのものだそうです。 {“name”:”hogehoge”, “day”:”2019-09-23”, “money””100^Y…
JSONファイルの扱いが全くわからない。 21問目。 moji20[(moji20['text'].str.contains('Category'))] 206行中、202行出てきた。本当にこれでいいのか謎です。正規表現と言うよりif文に近い気がする。 22問目 ここから今の読み込み方だと全く歯が立たないの…
16 若干16番目が全然わからなかったのですが、ググってみたら結構コピペで出回っていますね。math.ceilで割る数を作るのがやたらと多かったのですが、もっといい方法があるだろうと思ってらNumPyにありました。こんな感じです。 import numpy as np n = int(…
やっと2章へ行きます。 10番からです。 with open("hightemp.txt") as f: text = f.readlines() print(len(text)) Pythonはこうですね。Unixはどうなんでしょう。今回はちょっとパスで。そういえば、pythonでpassって処理があるんですね。今日知りました。 1…
やっと2章へ行きます。 10番からです。 with open("hightemp.txt") as f: text = f.readlines() print(len(text)) Pythonはこうですね。Unixはどうなんでしょう。今回はちょっとパスで。そういえば、pythonでpassって処理があるんですね。今日知りました。 1…
006の続きからです。 和集合、積集合が何だかわからなかったレベルなのですが、以下のようですね。 2つの集合に対して、「少なくとも片方に入っているもの」を集めた集合を和集合と言う。「両方ともに入っているもの」を集めた集合を積集合と言う。 それで、…
次にやることが思いつかないので、ひとまず自然言語処理100本ノックをやって行きたいと思います。 www.cl.ecei.tohoku.ac.jp まずは000番目からです。 000 文字列を逆に表示する問題です。はいはい.reverse()を使えばいいんでしょ?と思いましたらは.reverse…
後半の最初はピックルの読み込みから。 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…
ちょっと前から作り続けているchatbotをこのまま続けるにしろ、この辺で終わるにしろ、取り敢えずコードを見直していきたいと思います(自分で書いた訳ではないので)。 コードを見直していく まず、真っ先に見る必要があるのはここのデータの保存というです…
昨日の段階でなんとなくやりたいことが見えてきましたが、同じことしか話していなかったので、学習データが足りないのかと思って、会話データを300パターン用意してみました。 ちょっとやっていきましょう。 YOU: おつかれ ANSWER: 今日から7月です YOU: も…
会話データをひとまず100個作りましたので、実装していきたいと思います。 コードはGithub上のものを参考にしています(というよりそのまま) github.com 01_preprocessing.pyの場所 from pickle import load from pickle import dump from numpy.random imp…
今回は簡単に会話データに関して調べました。 会話データを探す 英語の会話データはたくさんあるみたいですけどね。日本語だとなかなかないみたいですね。 機械学習に使えるチャットボットデータセット・ベスト15 gengo.ai この間リリースされたばかりのGoog…
昨日の段階で、ある程度kerasの仕組みはわかってきましたので、そろそろ本格的に手を動かしていきたいと思います。 その前に、いちおうtweetのデータ5265件を使ってテキスト生成はしてみました。3世代目でこんな感じです。temperature: 0.5がギリギリ良さげ…
ディープラーニング関連の話が続いて申し訳ないですが、今日もその続きです。 テキストを生成する際に、次に来る確率が一番高い単語を選ぶのが貪欲的サンプリング(greedy sampling)という。 ただし、毎回確率が高い単語だけを選んでいても、変わり映えがし…
なんだかんだ、ここ1ヶ月くらい追っているRNNの実装のところをみていきます。 すごい単純にいうとRNNは下記のことをやっているだけらしいです。 state_t = 0 #時間Tのすべて0の状態 for input_t in input_sequence: output_t = f(input_t, state_t) satate_t…
まだしばらく勉強メモが続きますが、今日はkerasでのワンホットエンコーディングの実装のところです。 以下、勉強メモ。 テキストは最も広く使用されているシーケンスデータ。単語レベルで処理するのが普通。テキストのベクトル化は複数の方法がある。 テキ…
この頃完全にニューラルネットワークについて調べている感じですが、今日もその続きです。 以下、勉強メモです。 畳み込みニューラルネットワーク(CNN)はconventと呼ばれている。 基本的なインスタンス化 model = models.Sequential() model.add(layers.Co…
ディープラーニングの勉強メモ 機械学習は明示的にプログラムされているのではなく、訓練されている。 機械学習モデルの本質は入力データに適した有益な表現を見つけだすこと。 機械学習のアルゴリズムは、あらかじめ定義された演算の集まり(仮説空間)に入…
昨日のコードを40世代まで実行していましたら、下記のようになりました。 Epoch 40. Loss: 2.09404529274 こんにち を し た 今日 は 握手会 ありがとう ござい まし た ? 今日 は 1 日 で は、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、…
それほどよく分かってもいませんが、続けていきます。 言語モデルを作っていく上で通常のRNNではできなかった長期依存をできるようにした、Long short-term memory (LSTM) と言うモデルがあるらしいです。 今日はこれをみていこうと思います。 引続き、MXnet…
昨日のコピペしていったコードを見ていきたいと思います。 前処理 まずは必要なライブラリのimportとテキストの読み込みから。 from __future__ import print_function import mxnet as mx from mxnet import nd, autograd import numpy as np mx.random.see…
昨日の意味がわからない会話の中を繰り広げる中で、下記のことができていないのではないかと思いました。 会話データがないと意味がない 結局RNNを実装していない こっちの言っていることに反応しない できる限り1個ずつ解決していきたいと思います。 RNNの…
3グラムの方がいいという情報があったので、ただ単にMeCabで単語に分けたものよりも3グラムを学習させてみます。 3グラムはこちらで勉強したコードから。 dailytextmining.hatenablog.com def text2threegram(text): kaisekiyou = text.read().split('¥n') s…
色々な情報を探していますが、slackやtwitterでのチャットを使ったコードが多いですね。やはりチャットの部分は自分で作るしかないのかなと思います。 とりあえず、バイバイを入力するまで永遠とオウム返しをするbotまで完成しました。 def main(): while Tr…