投稿では、何度かトークナイザーについて触れています。JINIAC(phase1)におけるtokenizerで工夫した点Phase2で工夫したかった事について書きたいと思います。Kuma】ですでに詳しく述べられています。参考にされてください。トークナイザー構築のパイプラインデータ取得についてここでは、事前学習に使用するデータを全量使用するべきかどうか議論になりました。確かに使用データを全量使用することで、事前学習で未知語が発生するリスクを減らすことができます。sentencepieceのbyte_fallbackオプションをTrueにすることで未知語対応はできること、低品質なデータセットに多く含まれる語彙をなるべく排除したかったことから、日本語と英語についてはwikipediaをベースにすることにしました。ヒンディー語については、そもそもwikipediaの情報量が不足していることから、学習データセットを全量使用して作成することにしました。提供いただいた「標準コード」に改変を加えました。{dump_path}未知語を間引く(phase1,2での工夫)日本語のwikipediaをベースに構築するときに、解決しておきたいことがありました。それは、ほとんど使用されないであろう単語が含まれる文章は、事前に省いておきたいということです。用いられている辞書を使い、そこに登録されていない語彙についてはトークナイザー構築用のデータセットから間引くことにしました。使用する辞書については、mecab-ipadic-NEologdやJuman++で使用されている辞書、Unidicを比較した結果、比較的最近まで更新が行われているUnidicを使用する事にしました。未知語であることの判定は、fugashiを用いたときに、品詞を返してこない語としました。testmode=False)形態素解析を使用する(phase1のみ)前回(トークナイザー前編)の投稿でも述べた通り、形態素解析を使用するかどうかは、メリットとデメリットが存在します。結局、phase1では、日本語らしい区切りで学習することを優先し、形態素解析を使用しました。phase2では、学習速度を優先し、形態素解析は使用しませんでした。大きな語彙サイズは、モデルに非常に大きな埋め込み行列を入力および出力レイヤーとして持たせることを強制し、メモリおよび時間の複雑さの増加を引き起こします。一般的に、トランスフォーマーモデルは、特に単一の言語で事前トレーニングされた場合、50,000を超える語彙サイズを持つことはほとんどありません。個人的な問題意識としては、BERT系のトークナイザーの語彙サイズは、これまで32,000である事が多く、64ビットCPUにおいて、メモリの効率的な利用を考えると、64の倍数である32,768を目安にすることは理解できます。メモリのページングを考慮すると、65,535への拡張は影響が少ないのではないかと考えました。そこで、語彙数32,000、48,000、60,000の3つのトークナイザーを作成し、事前学習速度の比較をしてみました。}メモリ確保に影響はなかった。以上の実験結果から、語彙数は65,000まで増やすことを想定することにしました。言語ごとの語彙数配分(phase1での工夫)パイプラインにある通り、今回は言語ごとの語彙数を決めてマージをするという手法をとりました。この方法では、ある程度自由に言語ごとの語彙数配分を決定することができます。そこで、英語・日本語・ヒンディー語の語彙数を検討することにしました。<phase1での結論>「TOEIC満点レベルの英語を理解した大学生」レベル+生活レベルのヒンディー語の語彙数を目指す日本語(43,000語)国文学の分野では、日本人の理解語彙は、大学生で43,000~45,000語という研究があるので、これを参考にしました。)英語(13,000語)多くのTOEIC対策のサイトでは、満点を取るために必要な単語数について紹介されています。その中で、最も多い単語数を提示していた、13,000語を参考にしました。ヒンディー語(7,000語)あまり情報は多くないのですが、「ヒンディー語の語彙本7000語」という書籍が販売されていることから、生活レベルのヒンディー語を7,000語と設定しました。spikeについての反省もご覧ください。)では、phase1を改良したトークナイザーを投入していました。ヒンディー語を投入しないため、ヒンディー語用に確保していた7,000語の語彙を日本語に振り向けることで、日本語50,000語+英語13,000語のトークナイザーになりました。329と良い圧縮率を示していました。日本語に強いトークナイザーとしてお披露目したかったのですが、私自身さらにスキルアップして、次の機会を目指したいと考えています。(JPNP20017)の結果得られたものです。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。