今日も窓辺でプログラム

外資系企業勤めのエンジニアが勉強した内容をまとめておくブログ

SentencePieceを使用してRNN言語モデルを学習させてみる

はじめに

前回の記事ではpytorchのサンプルコードを参考にし、Wikipediaの記事の一部に対してRNN言語モデルを学習させてみました。
RNN言語モデルのpytorch実装をWikipediaの記事で学習させてみる - 今日も窓辺でプログラム

その際にWikipediaの記事を単語に分割するための技術として、MeCab + neologd辞書を使用していました。
Wikipediaの日本語記事を全行を、分かち書きしてforループで回す - 今日も窓辺でプログラム

最近出てきた文章を単語分割する手法に、wordpiecesと呼ばれている技術があります。その実装であるSentencePieceがGoogleから公開されています。
技術的な解説などは、SentencePieceの開発者の方(MeCabの開発者でもあります)が公開しているQiitaの記事で詳しく説明されているので、ぜひ読んでみてください。
Sentencepiece : ニューラル言語処理向けトークナイザ - Qiita

SentencePieceを使用すると、少し長い文字列でも出現頻度が高ければ1つの単語IDが割り当てられるようです。逆に、人間から見ると一つの単語でも、その単語の出現頻度が低い場合は単語をさらに分割した小さい単位に対して単語IDを割り当てていきます。

この記事では、前回学習したRNN言語モデルの単語分割部分をMeCabからSentencePieceに置き換えるとどのような結果になるか試してみたいと思います。

続きを読む

RNN言語モデルのpytorch実装をWikipediaの記事で学習させてみる

はじめに

pytorchのGitHubに上がっているサンプルを見ていたら、RNNを使って言語モデルを実装しているものがありました。
examples/word_language_model at master · pytorch/examples · GitHub

本当はいろんなネットワークを1から実装するのがよいのでしょうが、そのような経験もあまりないのでまずはサンプルを写経して走らせてみようと思いました。
最近Wikipediaのデータを単語分割したコーパスを用意したので、そのコーパスに対して上記実装を走らせてみます。

続きを読む

ビットコインの約定履歴を取得してローソク足チャートを描いてみる

はじめに

ここ最近、ビットコインを筆頭とした仮想通貨が世間を騒がせているようです。私は完全に乗り遅れてしまいました。仮想通貨の取引所はAPI等も多く公開しているようなので、遅れながらも何もやらないよりはと思い、公開APIを読んでビットコイン取引のローソク足チャートを作成してみました。

将来的には何らかのアルゴリズムで取引を自動で行うプログラムを書きたいですが、まずは簡単なところから行ってみます。

続きを読む

PyTorchでMNISTをやってみる

はじめに

PytorchでMNISTをやってみたいと思います。
chainerに似てるという話をよく見かけますが、私はchainerを触ったことがないので、公式のCIFAR10のチュートリアルをマネする形でMNISTに挑戦してみました。

Training a classifier — PyTorch Tutorials 0.3.0.post4 documentation

続きを読む