はじめに
前回の記事では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に置き換えるとどのような結果になるか試してみたいと思います。