Help us understand the problem. What is going on with this article?

COTOHA API の英語力に勝てるか??

COTOHA API での英語の解析

COTOHA APIを使えば日本語の解析ができる。
だが、COTOHA API なら、日本語の解析だけでなく、英語の解析もできる。

例えば、COTOHA API で "something just like this" を解析してみると、"サムシング ジャスト ライク ディス" というカタカナ読みが得られるのだ。

未登録語の解析

しかし、COTOHA API では、辞書にない単語はアルファベット1文字の読みを連結した読みになってしまうようだ。

{"form": "london", "kana": "エルオーエヌディーオーエヌ"}
{"form": "english", "kana": "イーエヌジーエルアイエスエッチ"}
{"form": "sunday", "kana": "エスユーエヌディーエーワイ"}

※必要な要素のみ

英単語をカタカナ読みに変換

英単語をカタカナに変換するのは、まさに「翻訳」だ。

英単語をアルファベット文字の系列とみなし、カタカナ読みをカタカナ文字の系列とみなせば、アルファベットの系列をカタカナの系列に変換する encoder-decoder の問題とみなせる。

そして、学習データさえあれば、deep learning で学習して、英単語をカタカナに翻訳することができる。
※すでに誰かがやっているはずだと思うが。。。

学習データの作成

『詳解 ディープラーニング 第2版』をで紹介されている英文の学習データを COTOHA API で解析する。
そして、英単語がアルファベット読みになっていないものを抽出して、英語⇒カタカナの学習データとする。

実際の学習データの作成手順は以下のとおりだ。

[1] アルファベットからカタカナ読みに変換する変換表を作成する。
具体的には、"a" => "エー"、"b" => "ビー"、 ...、"z" => "ゼット" という変換表を作成する。

[2] 英単語を [1] の変換表を使って、アルファベット読みを生成する。
例えば、"pen" から "ピーイーエヌ" を生成する。

[3] COTOHA API の解析結果の kana とアルファベット読みを比較して、アルファベット読みと一致していないものを出力する。
例えば、"pen" の kana は "ペン" となるため、学習データとするが、"ok" の kana は "オーケー" というアルファベット読みと一致するため、学習データとはしない。

学習してみる

『詳解 ディープラーニング 第2版』を参考にして、入力:英単語 ⇒ 出力:カタカナ読み を ニューラルネットワーク(Bidirectional LSTM)で学習してみた。

学習データに含まれる英単語については、うまく学習できているようだ。

入力: city
出力: シティ

入力: answer
出力: アンサー

入力: question
出力: クエスチョン

入力: beautiful
出力: ビューティフル

入力: station
出力: ステーション

学習していない英単語で試してみる

学習していない英単語で、ニューラルネットワークの学習成果を見てみた。

入力: natural
出力: ナチュラル
自然な感じだ。

入力: language
出力: ラングエッジ
忠実なカタカナ読みだと、こんな感じになるのだろう。

入力: scientist
出力: サイエンティスト
意外にも、うまくいっている。

入力: sunday
出力: サンディ
いい感じだ。

さらに試してみる

前回の投稿で、"COTOHA" を COTOHA API で解析した結果では、"COTOHA" は辞書に登録されていないためか、読みは "シーオーティーオーエッチエー" だった。

今回、COTOHA API の解析結果を学習することで、"COTOHA" を正しく読めるようになったのだろうか?

まずは、こちらから。
入力: qiita
出力: クイット
"quit" は学習データにはないのだが。。。

さぁ、どうだろう。
入力: cotoha
出力: コール
あぁ、だめだ。。。

おわりに

最新技術の deep learning を使って、COTOHA API の解析結果を学習して、英単語をカタカナ読みに翻訳してみた。

ある程度うまくいったものの、"COTOHA" を正しく翻訳することはできなかった。

"COTOHA" に追いつくのは、まだまだ先のようだ。

dakikd
自然言語処理技術を使ってレコメンド、検索などの web サービスの開発を行っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away