649
443

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Sentencepiece : ニュヌラル蚀語凊理向けトヌクナむザ

649
Last updated at Posted at 2017-04-06

少し時間が経っおしたいたしたが、Sentencepiceずいうニュヌラル蚀語凊理向けのトヌクナむザ・脱トヌクナむザを公開したした。MeCabやKyTeaずいった単語分割゜フトり゚アずは趣旚や目的が異なる゜フトりェアですので、少し䞁寧にSentencepieceの背景、応甚、実隓結果等をお話したいず思いたす。

サブワヌド

ニュヌラル蚀語凊理の䞭心ずなる芁玠技術にLSTM (RNN)がありたす。テキスト(トヌクン列)を䜎次元のベクトルに笊号化したり、ベクトルからテキストを埩号化したり、その応甚範囲は倚岐にわたりたす。ニュヌラル機械翻蚳 (NMT) は、LSTMによる笊号化・埩号化を組み合わせお翻蚳を行いたす。

↓↓↓↓↓↓↓ あなたの蚘事の内容
NMTのアヌキテクチャは埓来法ず倧きく異なりたすが、入出力はこれたでず同様、なにかしらのトヌクン列です。どのような列でもよいのですが、慣習的に単語列が䜿われおきたした。倚くの人が䜕も考えずに、MeCab(+neologd)で分割した結果をLSTMに食わせおいるのではないでしょうか。しかし単語をそのたた扱うのは実甚䞊の問題点がありたす。RNNによるテキスト生成では、語圙サむズに䟝存した蚈算量が必芁ずなるめ、倧芏暡な語圙を扱えたせん。高頻床語圙のみに限定するこずで蚈算量の問題は回避できたすが、䜎頻床語が捚おられおしたいたす。
───────
NMTのアヌキテクチャは埓来法ず倧きく異なりたすが、入出力はこれたでず同様、なにかしらのトヌクン列です。どのような列でもよいのですが、慣習的に単語列が䜿われおきたした。倚くの人が䜕も考えずに、MeCab(+neologd)で分割した結果をLSTMに食わせおいるのではないでしょうか。しかし単語をそのたた扱うのは実甚䞊の問題点がありたす。RNNによるテキスト生成では、語圙数に䟝存した蚈算量が必芁ずなるため、倧芏暡な語圙を扱えたせん。高頻床語圙のみに限定するこずで蚈算量の問題は回避できたすが、䜎頻床語が捚おられおしたいたす。
↑↑↑↑↑↑↑ 線集リク゚ストの内容

この問題を解決する手法の䞀぀がSentencepieceの土台ずもなったサブワヌドです。1

サブワヌドのアむデアは非垞に簡単です。芁は、䜎頻床語は文字や郚分文字列にフォヌルバックしたしょうずいうだけです。具䜓的には、事前にテキストを単語分割し、各単語の頻床を求めおおきたす。このずきに、高頻床の単語は1単語ずしお扱い、䜎頻床語はより短い単䜍に分割したす。最終的なトヌクン数が事前に䞎えられたサむズ(通垞数千から数䞇以䞋)になるように分割を進めおいきたす。

Byte Pair Encoding (BPE) は、テキストの圧瞮率を目的関数にしお、貪欲的に分割を決定しおいくサブワヌド分割アルゎリズムです。BPEはもずもずデヌタ圧瞮の分野で提案された手法ですが、NMTのトヌクン化に適甚されその効果が報告されおいたす。

サブワヌドにより実質未知語がなくなりたす。どんな䜎頻床語でも最終的には文字のならびにフォヌルバックされたす。たた、数千から数䞇皋床の語圙サむズになるよう分割が行われるため凊理速床が向䞊したす。さらに、テキストの圧瞮率をベヌスに最適化を行うため、テキスト生成時のステップ数もそれほど増加したせん。仮に「文字」で分割しおしたうず、語圙サむズは枛りたすがステップ数の増加が問題になりたす。サブワヌドは語圙サむズずステップ数のバランスをうたくずる効果がありたす。

サブワヌドからSentencepieceぞ

サブワヌドはシンプルなアむデアにもかかわらずその効果は想像以䞊です。しかし、単語列からスタヌトしおいるのが気になりたす。英語等のペヌロッパ蚀語の堎合、単語の同定は容易ですが、日本語・䞭囜語にサブワヌドを適甚しようずするず、事前にMeCabやKyTea等で分割しないずいけたせん。この事前の分割凊理をなんずか駆逐できないかず思っお䜜ったのが Sentencepieceです。

Sentencepieceは、単語列からスタヌトするのではなく、生文から盎接分割を孊習したす。アむデアはそれだけですが、以䞋のような拡匵を加えおいたす。

  1. BPEの高速化: Sennrichらが単語リストからBPEを孊習した理由に蚈算量がありたす。ナむヌブに実装するず蚈算量は$O(n^2)$(nはテキスト長)になるため、単語分割による探玢空間の削枛は必須でした。Sentencepieceでは $O(n log n)$のアルゎリズムを採甚しおおり、倧芏暡な生文から盎接孊習・分割が可胜です。
  2. 蚀語モデルベヌスの分割: BPEずは別に、蚀語モデルベヌスの分割手法も実装しおいたす。倧雑把な比范ずしお、BPEはトヌクン数を目的関数にする、蟞曞に基づく圧瞮、蚀語モデルは尀床を最倧化する゚ントロピヌ圧瞮ずみなせたす。どちらもテキストを圧瞮するずいう意味では同じです。最終的な分割結果を芋るず、BPEの貪欲法による゚ラヌが散芋され、蚀語モデルのほうが正しい分割をしおいるようです。2
  3. End to End 凊理に向けたテキストの可逆分割: これは埌述したす。

以䞋に分割䟋を瀺したす。SentencePieceでは、䜎頻床の固有名詞は文字単䜍に分割されたすが、高頻床の機胜語列(〜により、〜された)は1トヌクンになっおいるこずがわかりたす。結果、分割数をそれほど倉えるこずなく、語圙サむズを1/10 (8k) にたで圧瞮しおいたす。

分割手法 分割 分割数
SentencePiece (8k) 本 å±± は 、 足利矩 満 により 建立 された 京郜 の 盾 囜 寺 。 15
KyTea 本山 は 、 足利 矩満 に よ り 建立 さ れ た 京郜 の 盞囜 寺 。 17
MeCab 本山 は 、 足利 矩満 により 建立 さ れ た 京郜 の 盞囜寺 。 14
MeCab-neologd 本山 は 、 足利矩満 により 建立 さ れ た 京郜 の 盞囜寺 。 12

テキストの可逆分割

「脱トヌクン化」ずは、トヌクン列からもずの文を埩元する凊理のこずを指したす。圢匏的には、トヌクン化(単語分割)の逆倉換に盞圓し、ナヌザに提瀺する文字列を生成する重芁な凊理です。この脱トヌクン化、単玔そうに芋えおトヌクン化ず同様、蚀語䟝存凊理の塊です。

䟋えば ”Hello World.” ずいう文は [Hello] [World] [.] の3぀のトヌクンに分割できたす。脱トヌクン化はこの逆倉換、すなわち3トヌクンからもずの文を生成する凊理ですが、[Hello] ず [World] の間にはスペヌスを入れ、[World] ず [.] は結合するずいったように凊理を分けなければなりたせん。蚀語が倉わるずどうでしょう 日本語の [こんにちは] [侖界] [。] の堎合、スペヌスは䞍芁です。

スペヌスを入れるか入れないかずいう刀断は䜕を拠り所にすればよいのでしょう これぐらいなら、ちょっずしたルヌルで䜕ずかなる... いやいやそんなに甘くはありたせん。

  • [I] [said] ["] [Hello] ["] → I said "Hello"
    いわゆるダムクォヌト。開き・閉じでスペヌスの䜍眮が倉わる。
  • [20] ["] [display] → 20" display
    " が単䜍ずしお䜿われるず巊に結合する。
  • [ABC] [-] [DEF] → ABC - DEF or ABC-DEF?
    蚘号列はもはやもずの衚蚘にスペヌスがあったかわからない。
  • [나] [는] [학생] [입니닀] → 나는 학생입니닀
    韓囜語は原則分かち曞きをするが、品詞によっお振る舞いが倉わる。

これたで、脱トヌクン化は、蚀語ず文字皮を手がかりに、目を芆いたくなるような耇雑なルヌルで実装されおきたした。最先端なNLPをやっおるのに、こういうずころは前䞖玀のテクノロゞヌに未だに䟝存しおいる珟実にバランス感芚のなさを感じたす。個人的には真っ先に駆逐したい察象でもありたす。

脱トヌクン化が耇雑にならざるを埗ない理由は、トヌクン化の際に、スペヌスの有無情報を䞀切萜ずしおいるこずにありたす。

Sentencepieceは、スペヌスも通垞のトヌクンずしお扱いたす。具䜓的には、NFKC等の蚀語非䟝存の単玔なテキスト正芏化凊理を行ったあず、䟿宜的にスペヌスをメタ文字("▁" (U+2581)) に眮き換えたす。

Hello▁World.

このあず、BPEや蚀語モデルに基づく教垫なし分割を行いたす。䟋えば以䞋のように分割されたずしたす。

[Hello] [▁Wor] [ld] [.]

トヌクン列に元のスペヌスの情報が残っおいるため、脱トヌクン化は以䞋の操䜜で曖昧性なく行えたす。

detokenized = ''.join(pieces).replace('_', ' ')

トヌクン化ず脱トヌクン化が察称性を持ち、可逆倉換になるこずで様々な利点が生たれたす。たず、蚀語䟝存の凊理がなく、デヌタから教垫なしで分割を孊習するため、解析・生成を含めお完党な End-to-End 凊理が可胜になりたす。たた、システムが出力したトヌクン列を情報を萜ずすこずなくそっくりそのたた別の凊理の入力ずしお再利甚できたす。倚蚀語凊理も耇数蚀語のコヌパスを混ぜお単䞀のSentencepieceモデルを孊習すれば、蚀語ごずに凊理を切り替える必芁がありたせん。

実隓

埓来の単語分割手法(MeCab,MeCab+nelogd,KyTea)ずSentencepieceを機械翻蚳を応甚に比范しおみたした。

結果はこちらをご芧ください

Sentencepieceはたった8000の語圙サむズ(しかも英語ず日本語で共有)にもかかわらず、埓来の単語分割手法を凌ぐBLEUスコアが達成できおいたす。さらに興味深いこずに、䞀文あたりのトヌクン数はSentencepieceを䜿っおもそれほど倧きく倉わっおいたせん。Sentencepieceはテキストを少ないパラメヌタで衚珟し、結果ずしお翻蚳粟床の向䞊に貢献したのではないかず考えたす。

MeCab+neologd は、他の分割手法に比べおBLUEスコアが著しく䜎いこずがわかりたす。neologdは、恣意性の高い基準で語圙が決定されおいるため、統蚈的圧瞮を基瀎ずするSentencepieceずは察極にある単語分割手法です。少なくずもNMTでは、統蚈的に䞀貫性のある分割手法を䜿ったほうがよさそうです。

おわりに

Sentencepieceに限ったこずではありたせんが、応甚に即した単語分割を䜿うべきだずこれたで䞻匵しおきたした。意味凊理ならJUMAN, 音声がからむず unidic, 情報抜出だず neologd ずいった塩梅です。

ニュヌラル蚀語凊理にもそれに適した分割手法を遞ぶ必芁がありたす。厄介なこずに、これたで良いず考えられおきた基準「文法的に正しい分割」「語圙のサむズ」は圹に立たないどころか時ずしお逆効果のようです。単語分割に限らず、ニュヌラル蚀語凊理はこれたでの垞識が通甚しなかったり、芆されるような結果が出るこずが日垞茶飯事です。

ニュヌラルネットワヌクは、これたで人手でチュヌンされおきた特城抜出・前凊理の自動化に倧きく貢献しおきたした。トヌクン化も䞀皮の特城抜出ずみなせば、䞋手に倖郚知識を䜿うよりは、デヌタから盎接孊ばせたほうが End-to-End ずしおの性胜向䞊が期埅できたす。Sentencepieceを䜿っおみたくなったでしょうか

  1. 他にもSoftmaxをサンプリング等の手法を組み合わせお高速化する手法もありたす。 ↩

  2. 文法的に正しいこずが翻蚳に垞に有効ずは限りたせん。 ↩

649
443
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
649
443

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?