オレ プログラム ウゴカス オレ ゲンシジンゴ ハナセル
僕らは @Harusugi さんと COTOHA API のおかげで、僕らの言葉を原始人語に翻訳することができるようになった。
現代人語から原始人語への翻訳は COTOHA APIを使えば、簡単に実現できる。
[1] 入力文を COTOHA API で解析する
[2] 解析結果から助詞を除去する
[3] 各 token の読み(カタカナ)を出力する
これだけで、僕らは原始人語を話すことができるようになる。
例えば、「私はたわしを買った」は「ワタシ タワシ カッタ」となる。 ※適宜、半角SPCを入れています
これなら原始人にも理解できるだろう。
これで、僕らは原始人とコミュニケーションできる、と思った。
しかし、コミュニケーションは双方向だ。
僕らが一方的に原始人語で話しかけるだけではなく、僕らが原始人の言葉を理解できなくてはならない。
僕らは原始人のカタカナのみの言葉を理解できるのだろうか?
そこで、原始人語を現代人語に翻訳する方法を考えてみる。
オレ ゲンダイジンゴ ハナシタイ
原始人語を COTOHA API で解析できるだろうか?
原始人語の「ワタシタワシカッタ」(現代人語:私はたわしを買った)を COTOHA API で解析してみると、「ワタシタワシカッタ:名詞」と解析されてしまう。
連続するカタカナ文字列は一語の名詞と解析されるようだ。
これでは言語処理ができない。
そこで、原始人語から現代人語への翻訳は 原始人語(カタカナ文字の系列)⇒現代人語(token の系列)とみなして、deep learning のニューラル機械翻訳でも使われている seq2seq で原始人語を現代人語に翻訳することにする。
実際には『詳解 ディープラーニング 第2版』を参考にして、英日データの5万文の日本語データから原始人語⇒現代人語のデータを生成し、LSTM で学習してみた。
ちなみに、↑の本では学習と翻訳がひとつのプログラムになっているが、学習後に save_weights() で学習結果を保存し、予測時には保存したデータを読み込むようにしてみた。、
オレ ガクシュウシタ
学習後に、学習データの原始人語を LSTM で翻訳してみた。
入力(原始人語):ワタシテニスブインデス。
出力(現代人語):私はテニス部員です。
入力(原始人語):パソコンツカイカタシッテイマスカ。
出力(現代人語):パソコンの使い方を知っていますか。
入力(原始人語):ワタシキミシンライシテイル。
出力(現代人語):私は君を信頼している。
入力(原始人語):ボクテレビミルノアキタヨ。
出力(現代人語):僕はテレビを見るのに飽きたよ。
入力(原始人語):ハハワタシバースデーケーキツクッテクレルダロウ。
出力(現代人語):母は私にバースデーケーキを作ってくれるのだろう。
原始人はけっこう文化的な生活を送っているのか、テニス、パソコン、テレビもちゃんと翻訳できている。
学習データに含まれないテストデータでも、それなりの結果が得られるようになった。
入力(原始人語):カレラワタシヒトリソコイカシタ。
出力(現代人語):彼らは私を一人でそこに行かせた。
入力(原始人語):コノモンダイカンタンデハナイ。
出力(現代人語):この問題は簡単ではない。
入力(原始人語):エイゴハナセタライイノダガ。
出力(現代人語):英語を話せたらいいのですが。
オレ ゲンダイ イケルカ
現代人語から原始人語への翻訳は、うまくいかない場合もある。
入力(原始人語):フナタビトテモタノシイ。
出力(現代人語):船旅はとても楽しい状態。
入力(原始人語):ワタシカゾクイッショキャンプイッタ。
出力(現代人語):私の家族は昨日1へ行った。
原始人語を完全に翻訳できるところまではできなかった。
原始人の皆様には多少の不便が残るけれど、ぜひ現代に来てほしい。