NLPはじめに前回の記事ではSparkをローカルで試せる環境を用意しました。今日も窓辺でプログラム今回は日本語のテキストファイルに含まれる単語数をカウントする処理をSpark上で行ってみたいと思います。SparkもScalaもGradleも初めてなので、もしかしたら怪しいことを言っている箇所もあるかもしれません。16.04で行っています。Linux(WSL)でSpark環境を構築してみるSparkSparkで走らせるプログラムの開発のため、WindowsのローカルでSparkを走る環境を用意したかったので作業内容をメモしておきます。16.04をインストール以下手順に出てくるコマンドはWSLで走らせたbashに入力したものとなります。インストールまずはJavaをインストールします。し、適当な場所に置きます。/etc/spark.bashrcに下記を追加して完了です。PATH=$PATH:$SPARK_HOME/binspark-shellやspark-submitが正しく使えることが確認できました。Tensor2TensorはじめにTensor2Tensorという、広く使われているモデルやデータセットが実装されているディープラーニングのライブラリがあります。Brainチームなどによって開発されているようで、中身はTensorFlowで実装されています。用意されているモデルとデータセットを使うだけなら、コーディングなしでディープラーニングを試すことができます。モデルやデータセットの追加も容易に行えるようになっていて感動したのですが日本語の記事はあまり見当たらなかったので、せっかくなので今回試した「自分で用意したデータでseq2seqを学習させる」ための使い方を紹介しようと思います。16.04のでGPUを使用した学習を行いました。機械学習はじめに前回の記事ではpytorchのサンプルコードを参考にし、Wikipediaの記事の一部に対してRNN言語モデルを学習させてみました。neologd辞書を使用していました。今日も窓辺でプログラム最近出てきた文章を単語分割する手法に、wordpiecesと呼ばれている技術があります。その実装であるSentencePieceがGoogleから公開されています。技術的な解説などは、SentencePieceの開発者の方(MeCabの開発者でもあります)が公開しているQiitaの記事で詳しく説明されているので、ぜひ読んでみてください。QiitaSentencePieceを使用すると、少し長い文字列でも出現頻度が高ければ1つの単語IDが割り当てられるようです。逆に、人間から見ると一つの単語でも、その単語の出現頻度が低い場合は単語をさらに分割した小さい単位に対して単語IDを割り当てていきます。この記事では、前回学習したRNN言語モデルの単語分割部分をMeCabからSentencePieceに置き換えるとどのような結果になるか試してみたいと思います。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。