# SentencePiece の重複語入れ替えによる 日本語 T5 への言語モデル追加

高野 志歩 1 相馬 菜生 ${ }^{2}$ 田村 みゆ ${ }^{1}$ 梶浦 照乃 ${ }^{1}$ 倉光 君郎 ${ }^{2}$
1 日本女子大学大学院 理学研究科 2 日本女子大学 理学部
m1816053ts@ug.jwu.ac.jp kuramitsuk@fc.jwu.ac.jp

## 概要

SentencePiece は、テキストから教師なし学習に よって語彙モデルを構築し、ニューラルネット ワークに適した字句解析を提供する。現在の多 くの大規模言語モデルの事前学習で採用され、 SentencePiece は標準のひとつとなっている。本研究 では、SentencePiece の語彙モデルから形態素に基づ いて重複語を抽出し、新しい語彙と入れ替えること による語彙の追加手法を提案する。これにより、大規模言語モデルに対して、数千語単位の語彙を追加 する余地ができ、事前に学習されていない言語やド メインの語彙を含めた追加学習が可能になる。本論文では、2つの日本語 $\mathrm{T} 5$ に対し、6000 語程度の Python 言語の語彙 (予約語/識別子)を追加した事前追加学習モデルを構築し、重複語入れ替えによる下流タスクの精度向上について論じる。

## 1 はじめに

大規模言語モデルは、事前に大量なテキストを学習することにより、機械翻訳や文書要約、感情分析 など様々な下流タスクに適用できるモデルである。近年は、基盤モデルとも呼ばれ、自然言語処理タス クのみならず、様々な分野のニューラルネットワー クに広く採用されている。

大規模言語モデルを下流タスクに適応させる際に は、適応させたい下流タスクの少量のデータをモデ ルに与える。しかし、事前学習時に用いたデータの ドメインと、下流タスクのドメインが大きく異なる とき、下流タスクにおいてモデルが十分な性能を発揮できない領域適応に課題がある。そこで、特定の ドメインに特化した語彙を追加することにより、特定ドメインにおける下流タスクの精度が向上すると 期待される。

しかし、大規模言語モデルは一般的に語彙数が固定である。そのため、語彙を追加するためには工夫 が必要となる。

本研究では、大規模言語モデルの語彙を構築する とき、標準的に採用されている SentencePiece[1] に 着目する。SentencePiece は、テキストから教師なし 学習によって語彙モデルを構築し、構築された語彙 が語彙数を減らし、学習時間を短縮する効果が知ら れている。一方、SentencePiece の語彙は、文字列の 出現頻度に基づいて字句の区切りが決まるため、形態素的に重複した語彙が含まれる。我々は、このよ うな重複語を新しい語彙と入れ替えることによる語彙の追加手法を提案する。

本論文では、提案手法を検証するため、SentencePiece の語彙モデルを採用した日本語 T5 に対し、 3000 語程度の Python 言語の語彙 (予約語/識別子)を 追加した。Python 言語の語彙は、日本語 T5には含 まれないため、このような語彙追加が可能になる。 さらに、重複語の語彙入れ替えの下流タスクへの影響を調べるため、コード翻訳、コード要約という 2 種類の下流タスクの精度を比較した。

本論文では、大規模言語モデルにおける語彙の追加手法を提案し、実験結果とともに報告する。本論文の残りの構成は以下の通りである。2 節では、本研究で着目した重複語の予備調査について述べる。 3 節では、提案する語彙の追加手法についてまとめ る。4節では、実験についてまとめる。5 節では、関連研究を概観し、6 節で本論文をまとめる。

## 2 SentencePiece と重複語

SentencePiece は、ニューラル言語処理向けのトー クナイザである。本節では、SentencePiece について 概説したのち、本研究で着目した SentencePiece の作成する語彙モデルに対し、どの程度重複語が含まれ ているか確認した予備調査の結果を述べる。

## 2.1 SentencePiece とは

SentencePiece は、言語モデルの学習データである 生のテキストから最適な分割点を学習する教師なし 単語分割システムである。 $\mathrm{MeCab}^{1)}$ や janome ${ }^{2)}$ のよ うな形態素に分割するトークナイザと異なり、サブ ワードを用いて分割を行う点が特徴的である。

サブワードは、その語が出現する頻度によって単語を分割する手法である。高頻度の単語は 1 単語と して扱われ、低頻度の単語はより短い文字や文字列 に分割される。日本語や中国語のように分かち書き をしない言語では、 1 文を 1 単語として学習が行わ れる。

## 2.2 重複語とは

SentencePiece では、出現頻度によって語彙が決ま るため、言語文法の語彙とは切れ目が異なることが 生じる。例えば、「日本語は」「日本語」「は」の 3 語 が語彙モデルに存在するとき、名詞の「日本語」と 助詞の「は」から構成される「日本語は」が重複し た存在だと捉えることができる。

このように、ある語を形態素に基づいて分割した とき、形態素が既に語彙モデルの中に存在し、重複 して存在すると捉えられる場合には、ある語を重複語と考える。

## 2.3 重複語の調査

我々は予備調査として、3つの大規模言語モデル における各語彙モデルの作成した語彙を分析した。調査したモデルは、mT5[2]と、2つの日本語 T5 で ある。まず、Google 社が公開する mT5 は、マルチ タスクモデル T5 がベースであり、日本語と英語を 含む 101 言語に対応する。次に、日本語 T5 の 1 つ は、Megagon Labs 社が公開する t5-base-japanese-web 3）（以下、日本語 $\mathrm{T} 5(\mathrm{Meg})$ ）である。日本語の Web テキストで事前学習された T5 モデルであり、日本語の語彙に特化している。最後に、日本語 $\mathrm{T} 5$ の 2 つ目は、園部勲氏が公開する t5-base-japanese-adapt 4) (以下、日本語 $\mathrm{T} 5(\mathrm{Sno})$ ) である。複数パターンから見た各モデルにおける語彙数


表 13 3つのモデルにおける各パターンの語彙数

 &  \\

漢字を含む & 21,485 & 21,587 & 20,007 \\
ひらがなを含む & 6,443 & 10,549 & 9,718 \\
カタカナを含む & 2,843 & 5,223 & 5,293 \\
数字を含む & 16,473 & 829 & 465 \\
記号を含む & 10,679 & 559 & 635 \\

図 1 記号として判定する字句

の違いを表 1 に示す。漢字を含む語、ひらがなを含 む語、カタカナを含む語の 3 パターンを日本語語彙 とし結果に着目すると、101 言語に対応するマルチ リンガルなモデルである mT5 よりも、2つの日本語 T5 のほうが多い語彙を持つことがわかる。また、日本語語彙以外の重複語として数字を含む語、記号 を含む語の各語彙数を確認した。このとき記号を含 む語には、図 1 に示すような約 70 種類の記号が該当する。例として、 $\mathrm{mT5}$ に含まれる日本語語彙と、数字を含む語、記号を含む語を表 2 に示す。

さらに、各語彙モデルの日本語語彙に対し、形態素解析器 janomeを用いた品詞パターンの分析を 行った。品詞パターンとは、その語を構成する品詞 の組み合わせを指し、1つの品詞から成る語と、2 つ以上の品詞から成る語の大きく 2 種類に分けられ る。このとき、1つの品詞パターンに含まれるのは、名詞や動詞といった基盤 10 個の品詞とフィラーを 含めた 11 個の品詞である。

本研究のアイディアは、予備調査の結果から考え られる重複語を削除し、代わりに別の語彙を追加す ることである。

## 3 重複語と語彙入れ替え

我々は、SentecePiece の作成した語彙モデルに含 まれる重複語を取り除いて、別の言語の語彙を追加 する。本節は、Python 語彙（予約語/識別子）などを 実例として述べるが、Python 語彙の依存する部分は

図 22 つ以上の品詞パターンのうち、重複語であって も語彙モデルに残す品詞パターン

ないため、置き換え対象の語彙は別言語の語彙に置 き換えて適用可能である。

## 3.1 重複語の判定

2.3 節の予備調査の結果をもとに、品詞パターン による重複語の判定を行った。本研究では、全て の重複語を削除するのではなく、品詞の構成から決定した語彙モデルに残す品詞パターン以外の重複語のみを削除する。

語彙モデルに残す品詞パターンは、計 23 個であ る。1つの品詞パターンに含まれるのは、名詞や動詞といった基盤 10 個の品詞とフィラーを含めた 11 個の品詞と、図 2 に示す 12 パターンである。 23 個 の品詞パターンに該当しない語のうち、形態素的に 重複した語彙が含まれるとき、該当の語を無意味な 文字列に置き換えた。

## 3.2 数字や記号の重複除去

SentencePiece の作成する語彙モデルには、2.3 節 の表 1 に示した通り、数字や記号を含む語彙が多く 含まれている。

我々は、日本語語彙の重複語とは別に数値や記号 の重複も取り除いた。例えば、数字は全て 1 文字を 字句の単位として、2021のような字句は、2021と いうように4つの字句からみなすようにした。記号も 1文字も字句の単位とした。

なお、数字の扱いに関しては、議論の余地がある が、最新の大規模言語モデル PaLM [3] の語彙構成 に準じている。

## 3.3 Python 語彙の追加

最後に、語彙モデルへの語彙追加について簡単に 述べる。

追加する語彙は、原理的には、ドメイン特化辞書 などの任意の語彙を追加することができる。ただ し、SentencePiece の語彙モデルは、出現頻度を持っ ているので、出現頻度に関する情報を持っているこ
とが望ましい。

我々は、Python 言語の語彙（予約語識別子）の 追加を行う際は、Pythonソースコードに対し、 SentencePiece を使って語彙モデルを構築し、そこか ら追加する語彙を選定した。追加の先語彙モデルと 新しい語彙の間では出現頻度の調整は行わず、それ ぞれの語彙が独立して出現すると仮定して、それぞ れの出現頻度順序だけが保証されるように追加を 行った。

## 4 実験

## 4.1 概要

我々は、重複語入れ替え手法の影響と効果を確か めるため、次の手順で実験を行う。

まず、異なる種類の SentencePiece の語彙モデルか ら構築された事前学習済み言語モデルを用意して ベースラインとする。用意した言語モデルは、以下 の通りである。

・Sno: 園部勲氏が公開する日本語 T5 モデル
- Meg: Megagon Lab 社が公開する日本語 T5 モ デル

・mT5: Google 社が公開する多言語 T5 モデル [2](small)

これらのモデルから前節で述べた手法で重複語 のみを削除したモデルを作る。続いて、重複語を削除して、その代わりにドメイン語彙を追加したモデ ルを作る。本実験では、前節で述べた通り、Python 語彙をドメイン語彙として追加した。最後に、下流 タスクのドメインに合わせた追加学習 [4] を行った モデルも用意した。追加学習で学習させたデータ は、CodeSearchNet などの公開データセットから収集した Python コード (1GB) である。学習時のハイ パーパラメータは、学習時のハイパーパラメータ は、ピーク学習率 3e-4、エポック数を 5 回とした。

以上、我々の用意したモデルは次の 4 モデルと なる。

・ベースライン
- 重複語削除

・ドメイン語彙追加

・ドメイン追加学習
表 3 各タスクごとの実験結果

## 4.2 下流タスクへの影響

我々は、下流タスクとして、Python コードのコー ド生成、コード修正、エラー診断を用意した。

・コード生成: プログラム意図を表す自然言語文 を入力として受け取り、対応するコードを生成 するタスク [5] である。

・コード修正: バグのあるコードを入力とし て、出力に正常なコードを生成するタスク [6] である。入出力はともにコードである。

・エラー診断: 英文のエラーメッセージとソース コードから日本語のエラー解決策 [7] を提示す るタスクである。

これらのタスクを用意したモデルにおいて、学習 させた結果を表 3 に示す。

## 5 関連研究

近年、Transformerをベースとした事前学習済みモ デルが数多く提案され，転移学習やファインチュー ニングによって下流タスクに応用したときに優れた 精度の向上を見せている。事前学習済みモデルは、大規模データセットを用いて事前学習され、下流タ スクを定めず汎用的なモデルとして構築されること が多い。しかし、下流タスクのドメインが事前学習 に用いたデータのドメインと大きく異なる場合、下流タスクでモデルが十分な性能を発揮できない領域適応の問題がある。

事前学習に用いるデータセットをドメインデータ に絞った、専門領域に特化した言語モデルが提案さ れ、汎用モデルと比較した時により高い精度でドメ
インタスクが解けることが確認された [8]。

Gururangan ら [9] は、事前学習済みモデルを特定 ドメインに適応させるために、下流タスクドメイン のデータで追加学習することで高い精度でドメイン タスクを解くDAPT 手法を提案している。ここで、事前学習済みモデルが保持する語彙の中に、専門用語などドメインの語彙が含まれないため、語彙を 拡張する必要がある。Yao ら [10] は、語彙を拡張し ながらドメイン特化モデルを構築する手法として Adapt-and-Distill 手法を提案している。

## 6 むすびに

本研究は、大規模言語モデルの語彙に含まれる重複語を新しい語彙と入れ替えることによる語彙の 追加を提案する。提案手法を検証するため、複数の モデルに対して (1) 不要語除去 (2) 不要語を Python 語彙に入れ替え (3)Python 語彙に入れ替え+追加学習 と、3つの条件を変えて比較による評価をおこなっ た。モデルに Python 語彙を追加することで、入出力 で Pythonを用いるコードタスクで精度が上がるの ではないかと考えていたが、実験結果として語彙の 追加による精度向上は見られなかった。

## 謝辞

本研究を進めるにあたり，有意義なコメントをい ただきました秋信有花氏 (NTT) と小原百々雅氏 (日本女子大学) と佐藤美唯氏 (日本女子大学) と高橋舞衣氏 (日本女子大学)に感謝いたします.

## 参考文献

[1] Taku Kudo and John Richardson. SentencePiece: A simple and language independent subword tokenizer and detokenizer for neural text processing. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pages 66-71, Brussels, Belgium, November 2018. Association for Computational Linguistics.

[2] Linting Xue, Noah Constant, Adam Roberts, Mihir Kale, Rami Al-Rfou, Aditya Siddhant, Aditya Barua, and Colin Raffel. mT5: A massively multilingual pre-trained textto-text transformer. In Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, pages 483-498, Online, June 2021. Association for Computational Linguistics.

[3] Aakanksha Chowdhery et. al. Palm: Scaling language modeling with pathways. CoRR, abs/2204.02311, 2022.

[4] 梶浦照乃, 小原百々雅, 秋信有花, and 倉光君郎. 多言語 5 への追加事前学習による python 言語モデルの構築. In The 6th cross-disciplinary Workshop on Computing Systems, Infrastructures, and Programming (xSIG2022), 2022.

[5] Momoka Obara, Yuka Akinobu, Teruno Kajiura, Shiho Takano, and Kimio Kuramitsu. A preliminary report on novice programming with natural language translation. In IFIP WCCE 2022: World Conference on Computers in Education, 2022.

[6] 相馬 菜生, 梶浦照乃, 高橋 舞衣, and 倉光 君郎. 大規模言語モデルへの事前追加学習による誤り訂正モデ ルのコードへの適用. In 第 21 回日本データベース 学会年次大会 (DEIM2023), 2023.

[7] 高橋 舞衣, 小原 百々雅, 相馬 菜生, and 倉光 君郎. 大規模言語モデルを応用した初学者に親切なエラー メッセージの実現. In 第 21 回日本データベース学会年次大会（DEIM2023), 2023.

[8] Jinhyuk Lee, Wonjin Yoon, Sungdong Kim, Donghyeon Kim, Sunkyu Kim, Chan Ho So, and Jaewoo Kang. Biobert: a pre-trained biomedical language representation model for biomedical text mining. Bioinformatics, 36(4):1234-1240, 2020.

[9] Suchin Gururangan, Ana Marasović, Swabha Swayamdipta, Kyle Lo, Iz Beltagy, Doug Downey, and Noah A. Smith. Don't stop pretraining: Adapt language models to domains and tasks. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pages 8342-8360, Online, July 2020. Association for Computational Linguistics.

[10] Yunzhi Yao, Shaohan Huang, Wenhui Wang, Li Dong, and
Furu Wei. Adapt-and-distill: Developing small, fast and effective pretrained language models for domains. arXiv preprint arXiv:2106.13474, 2021.
 高野 志歩 1 相馬 菜生 ${ }^{2}$ 田村 みゆ ${ }^{1}$ 梶浦 照乃 ${ }^{1}$ 倉光 君郎 ${ }^{2}$ 1 日本女子大学大学院 理学研究科 2 日本女子大学 理学部 m1816053ts@ug.jwu.ac.jp kuramitsuk@fc.jwu.ac.jp  