Neural Machine Translation of Rare Words with Subword Units (2016)
July 13, 2019概要
SentencePiece(ニューラルネットワークを用いた言語処理向けのトークナイザ・脱トークナイザ)のトークナイズのアルゴリズムである。 単語をサブワード(単語の部分文字列)に分割し、サブワードを組み合わせて珍しい単語や未知語を表現することで、これらの出現頻度の低い単語の翻訳上げるというもの。
ニューラルネットワークを用いた翻訳では、あらかじめ扱う語彙の集合が限定されることが多い。 しかし、翻訳すべき文章には語彙にはない単語が含まれることがあり、これを訳すために何を情報源とするかが問題になる。 既存研究では、訳すべき単語が語彙にない場合、辞書を参照するアプローチが取られていた。 しかし、辞書の単語と文中の単語の間で常に1対1の意味上の関係が成り立つとは限らないため、精度に限界がある。 この問題に対して、論文では、音素や形態素をヒントに未知の単語を翻訳できることに着目し、サブワードの組み合わせで単語を表現し、出現頻度の低い単語の翻訳精度をあげることができた。 以上から、辞書を参照する手法と比べて単純かつ効率的であり、また、ネットワークのアーキテクチャに関係なく応用できる点に手法の貢献があると主張する。
語彙となるサブワードの集合は、翻訳元、翻訳先双方ともに、バイト対符号化、Byte Pair Encoding(BPE)(Gage, 1994)で作成する。 BPEでは、はじめに、文章を文字の列に分解する。次に最も出現回数の高い隣接文字をペアとしてマージする。 これを期待する語彙集合の要素数に到達するまで繰り返す。 BPEが採用されている理由は、ハフマン符号と比べた上で、サブワードに分割後の文章を解釈することできることや、サブワードの組み合せで未知語の翻訳や新しい単語の生成が可能になることである。
所感
未知語に対する精度をあげるために部分文字列を使う着想は、fastTextにもとになったEnriching Word Vectors with Subword Informationと似ている。こちらでは、サブワードの分散表現の和を単語の分散表現のベクトルの値とすることによって、未知語の妥当な分散表現を求めている。
論文はこちら