# 二段階のファインチューニングを行った BERT による 変数定義抽出

山本蒔志 加藤祥太 加納学
京都大学大学院情報学研究科
\{shota, manabu\}@human.sys.i.kyoto-u.ac.jp

## 概要

製造プロセスのデジタルツインを実現するために は，物理モデルが必要である．しかし，物理モデル の構築には多大な労力を要するため, 我々はこの作業の自動化に取り組んでいる. 本研究ではその要素技術として化学プロセス関連論文からの変数定義の 抽出手法を提案する。提案手法は対象とする変数を 特殊トークンに置換した文を BERT に入力するこ とで文中の定義の位置を予測する．他分野のデータ セットと化学プロセス関連論文データセットを順に 用いて二段階のファインチューニングを行い，変数定義抽出モデルを構築した. 提案手法を適用するこ とで，沼本ら [1] の特徴量を用いた手法よりも高い 性能を実現し，正解率 $85.6 \%$ 達成した。

## 1 はじめに

化学や鉄鋼などの製造プロセスにおいて，物理モ デルが活用されている. 物理モデルは数式に基づい て設計され，実プラントでは計測できない状態量や プラントの将来の挙動を予測し, 生産効率の改善や 装置設計，制御系設計，運転条件の最適化などを行 うのに活用される. 多くの場合, 物理モデル構築に は，専門知識に加えて膨大な量の文献調査とモデル 構築に必要な情報の抽出・統合が必要である. しか し，複数の文献の内容を精査しその関連性を把握す るには，非常に多くの時間と労力がかかる. この負担を軽減するために，我々は複数の文献から情報を 抽出し，組み合わせ，物理モデルを自動構築する人工知能 (Automated physical model builder; AutoPMoB) の開発に取り組んでいる [2]. AutoPMoBを実現する には，文献に含まれる変数の定義を正確に抽出する 手法が必要であり，本研究はこの手法の開発に取り 組む。

本研究では定義抽出対象の変数を特殊トー
クンで置換した文を BERT（Bidirectional Encoder Representations from Transformers) [3] に入力して定義抽出を行う手法を提案する. 提案手法はシンプル であり実装が容易であるだけでなく，すべての変数 を統一的に扱うことができる．化学プロセスに関す る論文より作成したデータセットを用いて，既存手法と提案手法の性能を比較する。

## 2 関連研究

変数の定義抽出にはいくつかの先行研究が存在 し，変数の定義抽出のために複数の特徴量が提案さ れている. Lin らは変数と定義の距離，意味的な正 しさ，品詞の文法的な妥当さの 3 つを特徴量として 用い，複数の分類器をアンサンブルして定義を抽出 する手法を提案した [4]. 沼本らは Stanford Parser [5] を用いて定義の候補を抽出し，位置関係や定義らし さなどの特徵量をもとに，最も定義らしいと判断し た候補を抽出する手法を提案し，F1-Score で $41.2 \%$ を達成した [1]. しかし，いずれの手法も AutoPMoB の要素技術として性能が不十分である.

近年，BERT に代表される事前学習モデルが多く の自然言語処理タスクで最高の性能を達成してい る. Kang らは SciBERT [6] によって文から専門用語及びその定義を抽出する手法を提案した [7]. 彼ら が定義抽出対象とした専門用語には変数も含まれる が，変数の定義抽出を行う場合，一般的な専門用語 に比べ性能が低下することを報告している。

自然言語処理ワークショップ SemEval2022にて，変数と定義の対応付けタスクである Symlink が提案 された [8]. Symlink は，文中から変数と定義を抜き 出す固有表現抽出タスクと，抜き出した名詞句の 関連性を判別する関係抽出タスクの 2 つからなる. Symlink では Lee らが最も高い性能を達成した [9].彼らの手法は文の先頭に疑問文を追加した単語列を SciBERT に入力して質疑応答を行うことで変数と定
義を抽出した. 彼らは固有表現抽出では $47.61 \%$, 関係抽出では $37.19 \%$ の F1-Score を達成した。

本研究は 2 つの点で Symlink とは問題設定が異な る. 1 つ目は変数の抽出の有無である. Symlink で は文中のどこに変数があるかは未知という状況を想定し，変数の抽出もタスクに含めていた. 本研究で 対象とする変数はすべて既知とするが，Lee [9] らは 変数抽出タスクにおいて $99 \%$ 以上の recall を達成し ていたため，同じ手法でほぼ完璧に変数を抽出でき ると考えられる．2つ目は抽出対象の種類である。 Symlink では変数によって数量を指示された名詞句 や，定義の内容を補足する名詞句などの定義以外の 変数に関連する名詞句も予測の対象としていた. 本研究は定義のみを対象とする。

## 3 データセット

## 3.1 化学プロセス関連論文データセット

化学プロセスに関連する論文計 45 報の変数に 対して定義を付与したデータセット $D_{\text {Process }}$ を作成 した. ここで変数とは論文中に単独で現れる数学的記号のことであり，数式のみに現れる変数は対象外とする。 $D_{\text {Process }}$ は晶析プロセス [crystallization process; CRYST], 連続層型反応器 [continuous stirred tank reactor; CSTR], バイオディーゼル生産プロセス [biodiesel production process; BD]，チョクラルスキー プロセス [Czochralski process; CZ], 多管式熱交換器 [shell and tube heat exchanger; STHE] の 5 つのプロセ スいずれかに関するものである．各プロセスの論文数と変数の総数を表 1 に示す.

## 3.2 Symlink データセット

定義抽出は固有表現抽出に近いタスクであるが， Devlin らが固有表現抽出を行ったデータセットには 抽出の対象として約 20,000 の固有表現が含まれてい

表 $1 D_{\text {Process }}$ に含まれる論文数と変数の数

たのに対して [3]， $D_{\text {Process }}$ の抽出対象となる定義は 約 1,000 であり，ファインチューニングに必要なサ ンプル数として十分でない. そこで， $D_{\text {Process }}$ に追加 で Symlink データセット $\left(D_{\text {Symlink }}\right)$ に含まれる変数と 定義の関係を用いる [8]. $D_{\text {Symlink }}$ は情報科学, 生物学, 物理学, 数学, 経済学の 5 つの分野の合計 101 報の論文からなり， $D_{\text {Process }}$ の約 10 倍の 16,642 個の 変数を含む。

## 4 提案手法

## 4.1 BERT を用いた変数定義抽出手法

提案手法の概略図を図 1 に示す.まず定義抽出対象の変数を特殊トークン [target] で置換する. 同じ 変数が複数回登場する場合，そのすべてを [target] に置換する。次に置換した文を BERT に入力し，各 トークンが定義の開始位置である確率と終了位置で ある確率を得る。開始位置が終了位置と同じか，よ り前にあるという条件のもと，開始位置と終了位置 の確率の合計が最大となる箇所を探す。得られた開始位置から終了位置までの単語を定義として抽出 する。

論文中の変数は必ずしも定義が明記されていると は限らない。例えば，慣習により使用法が決まって いる $\pi$ などの変数は大抵の場合定義が明記されてい ない. 文脈から推測できる変数の定義も明記されな いことがある。例えば， $A_{i}$ について定義が与えられ た後に， $A_{i}$ に似た定義を有する変数 $A_{i+1}$ が登場し た場合，その定義は省略される. 定義がない変数に ついては，入力文の先頭 [CLS] トークンを抜き出す こととする. [CLS]トークンは定義にはなり得ない ため，負例の正解として代用できる.

## 4.2 二段階ファインチューニング

定義抽出を行う場合に， $D_{\text {Symlink }}$ 単独でファイン チューニングを行っても, $D_{\text {Process }}$ に含まれる定義を 正確に抽出できるモデルを構築できないと予想さ れる。変数定義は各分野ごとに多く用いられるパ ターンが存在するが， $D_{\text {Symlink }}$ と $D_{\text {Process }}$ は分野が異 りそのパターンも異なるためである。また $D_{\text {Symlink }}$ と $D_{\text {Process }}$ でアノテータが異なるため，どこまで詳細な内容を定義に含めるかが一致しない. さらに $D_{\text {Process }}$ のサンプル数はファインチューニングを行 うのに十分でない. 以上の問題点を解決するため, $D_{\text {Process }}$ と $D_{\text {Symlink }}$ の両方のデータセットを用いて二

抽出する定義

the velocity of air

図 1 提案手法の概略図

段階のファインチューニングを行うこととした. ま ず第一段階のファインチューニングにて $D_{\text {Symlink }}$ を 用い，定義抽出タスクを行うモデルを作成する. 次 に第二段階のファインチューニングにて $D_{\text {Process }}$ を 用い, $D_{\text {Process }}$ 中の定義のパターンにモデルを適応さ せる.

## 5 実験

## 5.1 前処理

$D_{\text {Process }}$ と違い $D_{\text {Symlink }}$ に含まれる文は $\mathrm{TeX}$ 形式 であり，変数の表記に $\$ \mathrm{X} \$$, $\$$ mathcal $\{\mathrm{x}\}$ \$ など マンドを含む。このようなコマンドは，BERTが事前学習で用いた Wikipedia と BookCorpus の文に登場 しないため，BERT のファインチューニングにおい てノイズとなる。そこで, pylatexenc [10]を用いて, TeX 形式の文をコマンドの含まれない Unicode 形式 に変換した。

## 5.2 実験設定

$D_{\text {Symlink }}$ を訓練用，検証用，テスト用に 8:1:1 に分割し，訓練用，検証用データのみをファインチュー ニングに用いた. ただし分割は各分野の文が等し い割合で含まれるように文単位で行った。また， $D_{\text {Process }}$ を論文単位で訓練用，検証用，テスト用に分割した. 沼本ら [1] と同じく $D_{\mathrm{STHE}}$ で 2 報, それ以外のデータセットで 3 報をテスト用とした. さらに 各プロセスにおいて 1 報を検証用とし，残りを全て 訓練用とした。

プティマイザには Adam [12]を，GPU には Google Colaboratory の Tesla T4を用いた. バッチサイズは GPU のメモリで利用可能な範囲で最大の 8 , 学習係数は Symlink タスクにおいて最高の性能を達成した モデルと同じく1e-5を選択した. ファインチュー ニングは 5 エポック行い，各エポックにて検証用 データに対するモデルの性能を確かめ，損失が最小 となったモデルを性能評価に用いた。

二段階ファインチューニングが定義抽出の性能に 与える影響を調べるため, 提案手法に追加で以下に 示す 2 つ方法で BERT のファインチューニングを 行いそれぞれの性能を確認した。
1. $D_{\text {Symlink }}$
のみでファインチューニング
2. $D_{\text {Process }}$ のみでファインチューニング

## 5.3 評価方法

データセットのアノテーションされた定義に対し て，モデルの予測した定義が完全に一致した場合を 正解とする基準（full）と予測した定義が一部でも一致すれば正解とする基準（partial）の 2 つの評価方法にてモデルの評価を行った. また 1 つの変数に複数の定義が存在する場合は，アノテーションされた 定義のうちのどれか 1 つを抜き出すことができれば 正解とした. 性能評価には $D_{\text {Process }}$ のテスト用デー タを用いた. 評価指標には正解率 (Acc.), 定義が存在する変数のうち正しく定義を抽出した変数の割合 (Rec.)，定義を抽出した変数のうち正しく定義を抽出した割合 (Pre.), Pre. と Rec. の調和平均 (F1)の 4 つを用いた. 実験は分割方法をランダムに変更しな がら 10 回行い，その平均の性能を比較した。

## 6 結果と考察

## 6.1 結果

提案手法，比較用の 2 つの方法, 沼本らの手法に よる定義抽出結果を表 2 に示す. 全ての評価指標に ついて二段階ファインチューニングを行った場合 が最高の性能となった. 特に沼本らの従来手法に比 べ，提案手法は各指標が 30 ポイント以上向上した.

## 6.2 二段階ファインチューニングの有効性

表 2 のように $D_{\text {Symlink }}$ のみでファインチューニン グを行ったモデルの full の性能が，他 2 つのモデ ルに比べて低くなった. 主に 2 つの原因が考えら れる.

1 つ目に, $D_{\text {Symlink }}$ に含まれる論文と $D_{\text {Process }}$ に含ま れる論文は分野が異なるため，変数を定義する文の パターンが異なる。例えば， $D_{\text {Process }}$ では “ $w_{c}$ is the mass flow rate of cold fluid $(\mathrm{kg} / \mathrm{sec})$.”のように，括弧の 中に単位を記入するパターンが頻繁に登場する。一方で $D_{\text {Symlink }}$ では，括弧が定義に含まれる例は 1 つ もない，単位が定義に出現する頻度が $D_{\text {Symlink }}$ では $D_{\text {Process }}$ に比べて少ないなど，他にもいくつか定義に 用いられるパターンに違いが見られるが，特に括弧 の用法の違いは顕著であった。

2 つ目に $D_{\text {Symlink }}$ と $D_{\text {Process }}$ では定義の長さが異な る. 図 2 に $D_{\text {Process }}$ と $D_{\text {Symlink }}$ の定義に含まれる単語数を示す. $D_{\text {Process }}$ の定義は $D_{\text {Symlink }}$ よりも長い傾向 にある. $D_{\text {Symlink }}$ では 1 単語または 2 単語の定義が $58 \%$ 占め, 10 単語以上の定義は $3 \%$ に過ぎない. そ れに対して， $D_{\text {Process }}$ では 1 単語または 2 単語の定義 は $10 \%$ のみであり, 10 単語以上の定義が $20 \% を$ 占 める. 実際， $D_{\text {Symlink }}$ のみでファインチューニングを 行ったモデルは正解の定義よりも短い名詞句を抽出 する傾向にあった.

図 $2 D_{\text {Process }}$ と $D_{\text {Symlink }}$ の定義に含まれる単語数の比較

## 6.3 full と partial の性能差

$D_{\text {Symlink }}$ のみでファインチューニングを行ったモ デルについて, full の F1-Score は $14.5 \%$ であった一方で，partial の F1-Score で $80.8 \%$ となった. full と partial の性能差が大きいことから，一段階目のファ インチューニングを行ったモデルは $D_{\text {Process }}$ の定義の正確な位置は予測できないものの， $D_{\text {Symlink }}$ と $D_{\text {Process }}$ の定義に共通する大まかな位置を学習でき たと考えられる. また，一段階目の大まかな学習に より， $D_{\text {Process }}$ のみでファインチューニングを行った モデルよりも高い性能を達成できたと考えられる。

## 7 おわりに

本研究では対象とする変数を特殊トークンに置換 した文を BERT に入力することで変数定義抽出を 行う手法を提案した，さらに，化学プロセス関連の データセットのサンプル数が不足するという問題を 解決するため，二段階のファインチューニングによ りモデルを構築した. 従来手法と提案手法を比較し た結果，提案手法は各指標において 30 ポイント以上従来手法を上回った.

## 謝辞

本研究は JSPS 科研費 JP21K18849 の助成を受けた ものです.

## 参考文献

[1] 沼本真幸, 加藤祥太, 加納学. 変数の記号と定義に関 する情報を活用した変数定義抽出手法. 言語処理学会年次大会発表論文集 (Web), Vol. 28th, pp. 486-491, 2022.

[2] Shota Kato and Manabu Kano. Towards an automated physical model builder: Cstr case study. In Yoshiyuki Yamashita and Manabu Kano, editors, 14th International Symposium on Process Systems Engineering, Vol. 49 of Computer Aided Chemical Engineering, pp. 1669-1674. Elsevier, 2022.

[3] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pp. 4171-4186, Minneapolis, Minnesota, June 2019. Association for Computational Linguistics.

[4] Jason Lin, Xing Wang, Zelun Wang, Donald Beyette, and Jyh-Charn Liu. Prediction of mathematical ex-pression declarations based on spatial, semantic, and syntactic analysis. In Proceedings of the ACM Symposium on Document Engineering, pp. 1-10.

[5] Peng Qi, Yuhao Zhang, Yuhui Zhang, Jason Bolton, and Christopher D. Manning. Stanza: A python natural language processing toolkit for many human languages. CoRR, Vol. abs/2003.07082, , 2020.

[6] Iz Beltagy, Kyle Lo, and Arman Cohan. SciBERT: A pretrained language model for scientific text. In Proceedings of the $\mathbf{2 0 1 9}$ Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP), pp. 3615-3620, Hong Kong, China, November 2019. Association for Computational Linguistics.

[7] Dongyeop Kang, Andrew Head, Risham Sidhu, Kyle Lo, Daniel S Weld, and Marti A Hearst. Document-level definition detection in scholarly documents: Existing models, error analyses, and future directions. arXiv preprint arXiv:2010.05129, 2020

[8] Viet Lai, Amir Pouran Ben Veyseh, Franck Dernoncourt, and Thien Nguyen. Symlink: A new dataset for scientific symbol-description linking. arXiv preprint arXiv:2204.12070., 2022.

[9] Sung-Min Lee and Seung-Hoon Na. JBNU-CCLab at SemEval-2022 task 12: Machine reading comprehension and span pair classification for linking mathematical symbols to their descriptions. In Proceedings of the 16th International Workshop on Semantic Evaluation (SemEval-2022), pp. 1679-1686, Seattle, United States,
July 2022. Association for Computational Linguistics.

[10] Philippe Faist. pylatexenc, 2021. https://github.com/ phfaist/pylatexenc, version2.10.

[11] Pengcheng He, Jianfeng Gao, and Weizhu Chen. Debertav3: Improving deberta using electra-style pre-training with gradient-disentangled embedding sharing, 2021.

[12] Diederik P Kingma and Jimmy Ba. Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014 .


# CRF に基づく形態素解析器のスコア計算の分割による モデルサイズと解析速度の調整

赤部晃一 ${ }^{1}$ 神田峻介 1 小田悠介 ${ }^{2}$
${ }^{1}$ LegalOn Technologies Research ${ }^{2}$ 東北大学 データ駆動科学・AI 教育研究センター
\{koichi.akabe, shunsuke.kanda\}@legalontech.jp
yusuke.oda.c1@tohoku.ac.jp

## 概要

CRF に基づく形態素解析器において，2-gram ス コアの持ち方を変更し，用途に応じてモデルサイズ と解析速度の調整を行うことを提案する。代表的な CRF に基づく形態素解析器では, CRF の 2-gram ス コアを事前に計算して連接表に記憶しておくことで 予測を効率的に行うが，素性の設計によってはスコ アの事前計算は連接表を肥大化させる. 本稿では， 2-gram スコアの計算の一部を予測時に行うことで，連接表の肥大化を抑制する．また，2-gram スコアの 計算を効率的に行うことで，予測時に追加的に生じ る計算時間を抑制する。

## 1 はじめに

形態素解析は, 日本語の自然言語処理における基礎技術であり，情報検索や機械学習の前処理として 利用される. 日本語における代表的な形態素解析器 としては, MeCab [1] や KyTea [2] が挙げられる. こ のうち, MeCab は Conditional Random Fields (CRFs) [3] を利用してパラメータを学習し, 入力文から形態素ラティスを生成し，単一のノードから得られる 素性と, 隣合う 2 つのノードに対応した素性を用 い，各素性のパラメータを最尤推定する。

素性は解析精度等を考慮して設計されるが，設計 によってはモデルサイズが肥大化する．公開されて いる学習済みモデルを比較すると，IPAdic [4] では 連接表のサイズが $1,316 \times 1,316$ であるが，現代書 き言葉 UniDic [5] (Ver. 3.1.0) は 15,626×15,388であ り，各スコアを 16-bit で表現すると，連接表だけで $459 \mathrm{MiB}$ となる. UniDic では，素性テンプレートの 見直しによってモデルサイズを軽量化する試みが行 われているが，依然として組み込み機器や Web フロ ントエンド等の資源が限られた環境で利用するには
モデルサイズが大きく，可搬性が低い.

本稿では，まず $\mathrm{CRF}$ に基づく形態素解析について 説明し，一部のスコア計算を解析時に行うことで， モデルのパラメータに手を加えずにモデルサイズを 軽量化することを提案する。また，解析時のスコア 計算を効率的に行う方法についても示す.

## 2 CRF に基づく形態素解析

## 2.1 定式化

CRF [3] はラティス上に定義される線形識別モデ ルであり，入力単語列を $\boldsymbol{x}$ ，ラベル列（品詞，読み 等）を $\boldsymbol{y}$ とし，確率を式 (1)でモデル化する。

$
P(\boldsymbol{y} \mid \boldsymbol{x})=\frac{\exp \left(\boldsymbol{w}^{\top} \boldsymbol{\phi}(\boldsymbol{x}, \boldsymbol{y})\right)}{\sum_{\boldsymbol{y}} \exp \left(\boldsymbol{w}^{\top} \boldsymbol{\phi}(\boldsymbol{x}, \boldsymbol{y})\right)}
$

ここで,$w$ は重みべクトルであり,$\phi(x, y)$ はラティ ス上の各パスに対応した素性ベクトルである．素性 ベクトルを，各ノードに与えられる 1-gram 素性べ クトル $\left(\phi_{1}\right)$ と，各エッジに与えられる 2-gram 素性 ベクトル $\left(\phi_{2}\right)$ に分ければ，式 (2) のように表すこと が可能である.

$
\boldsymbol{\phi}(\boldsymbol{x}, \boldsymbol{y})=\sum_{i} \phi_{1}\left(\boldsymbol{x}, y_{i}\right)+\sum_{i, j} \phi_{2}\left(\boldsymbol{x}, y_{i}, y_{j}\right)
$

ここで， $y_{i}, y_{j}$ は隣り合う 2 つのノードを表す. 1-gram 素性は辞書中の各エントリ $e_{i}$ に付随した情報のみ利用しており，文脈に依存する情報を利用 しない. すなわち, $\boldsymbol{\phi}_{1}\left(\boldsymbol{x}, y_{i}\right):=\boldsymbol{\phi}_{1}\left(e_{i}\right)$.このため,各エントリ $e_{i}$ の 1-gram 素性のスコア $\boldsymbol{w}^{\top} \boldsymbol{\phi}_{1}\left(e_{i}\right)$ は エントリごとに事前に計算しておけば良い。一方， 2-gram 素性には隣り合う 2 つのエントリの情報を 用いる. すなわち, $\boldsymbol{\phi}_{2}\left(\boldsymbol{x}, y_{i}, y_{j}\right):=\boldsymbol{\phi}_{2}\left(e_{i}, e_{j}\right)$. 単純 に辞書内のすべてのエントリの組 $\left(e_{i}, e_{j}\right)$ に対して $\boldsymbol{w}^{\top} \boldsymbol{\phi}_{2}\left(e_{i}, e_{j}\right)$ を事前計算することは，モデルを肥大化させて現実的でないため，実際には各エントリを
素性情報に基づいてグループ化し, グループのイン デックスを用いて 2-gram 素性のスコアを参照する。

## 2.2 素性テンプレート

素性ベクトルの生成には複数の素性テンプレー ト関数が利用される。これは, 辞書のエントリを引数とした関数であり，主に人手で設計される．素性 テンプレート関数は 1-gram 素性と 2-gram 素性の両方に対して定義されるが，ここでは 2-gram 素性の み着目する， $K$ 個の素性テンプレートを用いると， 2-gram 素性のスコアは式 (3)で表される.

$
\boldsymbol{w}^{\top} \boldsymbol{\phi}_{2}\left(e_{i}, e_{j}\right)=\sum_{k=1}^{K} \boldsymbol{w}^{\top} \boldsymbol{t}_{k}\left(e_{i}, e_{j}\right)
$

ここで， $\boldsymbol{t}_{k}$ は $k$ 番目の 2-gram 素性テンプレート関数である. 次に, 式 (4)のように, 左右のエントリ $e_{i}, e_{j}$ から事前に素性テンプレートに対応した情報 を取り出し，その組み合わせによって素性べクトル を生成することを考える。

$
\boldsymbol{t}_{k}\left(e_{i}, e_{j}\right)=\boldsymbol{f}\left(l_{k}\left(e_{i}\right), r_{k}\left(e_{j}\right)\right)
$

ここで, $l_{k}, r_{k}$ は，それぞれ左右のエントリから $k$ 番目の素性テンプレートに対応した素性 IDを取得す る関数, $f$ は, 左右の素性 ID の組に応じて素性べ クトルを返す関数である。

次に，各エントリから全ての素性テンプレートに 対応した素性 ID を配列形式で取得する関数 $\boldsymbol{l}, \boldsymbol{r}$ を 式 (5), (6)のように定義する.

$
\begin{aligned}
\boldsymbol{l}\left(e_{i}\right) & :=\left(l_{1}\left(e_{i}\right), l_{2}\left(e_{i}\right), \ldots, l_{K}\left(e_{i}\right)\right) \\
\boldsymbol{r}\left(e_{j}\right) & :=\left(r_{1}\left(e_{j}\right), r_{2}\left(e_{j}\right), \ldots, r_{K}\left(e_{j}\right)\right)
\end{aligned}
$

さらに，左右の素性 ID の組 $(l, r)$ に対応したスコ ア $m$ を式 (7)のように事前に計算する.

$
m(l, r):=\boldsymbol{w}^{\top} \boldsymbol{f}(l, r)
$

これらを用い，各エントリの組に対応した 2-gram 素性のスコアを式 (8) で計算する.

$
\boldsymbol{w}^{\top} \boldsymbol{\phi}_{2}\left(e_{i}, e_{j}\right)=\sum_{k=1}^{K} m\left(l_{k}\left(e_{i}\right), r_{k}\left(e_{j}\right)\right)
$

## 3 2-gram スコアの部分的事前計算

## 3.1 連接表の大きさ

$\mathrm{MeCab}$ では, 全ての $\boldsymbol{l}\left(e_{i}\right), \boldsymbol{r}\left(e_{j}\right)$ の組に対してス コアを事前に計算しておき，それらを連接表に格納 する。重みの学習時に L1 正則化を行えばスパース
なモデルが学習されるため, $\boldsymbol{l}\left(e_{i}\right), \boldsymbol{r}\left(e_{j}\right)$ は辞書中 の複数のエントリで共通したものとなり，連接表の サイズをある程度抑えることが可能である．例えば 現代書き言葉 UniDic では，辞書に登録されている 語彙数は 1,879,222 語であるが，連接表のサイズは $15,626 \times 15,388$ であり，複数のエントリで共通した 素性情報が参照されていることが確認できる。それ でもなお, UniDic は素性テンプレートが詳細に設計 されていることもあり，1 節でも述べたようにモデ ルが大きく可搬性が低い.

## 3.2 部分的事前計算

この問題への解決策として，全ての 2-gram スコ アを事前に計算しておくのではなく，連接表肥大化 の原因となる素性テンプレートの集合 $S$ を予め定 め，事前計算と解析時の計算に分割する. 具体的に は式 (9) でスコアを計算する。

$
\begin{aligned}
\boldsymbol{w}^{\top} \boldsymbol{\phi}_{2}\left(e_{i}, e_{j}\right) & =\sum_{k \notin S} m\left(l_{k}\left(e_{i}\right), r_{k}\left(e_{j}\right)\right) \\
& +\sum_{k \in S} m\left(l_{k}\left(e_{i}\right), r_{k}\left(e_{j}\right)\right)
\end{aligned}
$

ここで，第 1 項は事前に計算する項，第 2 項は解析時に計算する項である.

$S$ が大きいほど解析時に必要な計算が多くなるた め，モデルサイズを効果的に軽量化できる小さい $S$ を定める必要がある. 本研究では $S$ の選び方として 以下の手法を比較する。

Various 生成される素性の種類が多い素性テンプ レートを優先的に選択する。これは，品詞など 種類数の少ない情報よりも，読みなど種類数の 多い情報を含むほうがモデルが複雑化して連接表が大きくなりやすいのではないかという仮説 に基づく.

Greedy 連接表のサイズに大きく影響を与える素性テンプレートを 1 つずつ調べ，貪欲的に選択 していく.

Greedy-2 Greedyでは，相関の強い素性テンプレー 卜など，同時に選択しなければ連接表が軽量化 しない素性テンプレートが選択されない。そこ で，2つの素性テンプレートを同時に選択した 際の連接表のサイズ変化も考慮する。

## 4 ダブル配列を用いたスコア辞書

2-gram スコアを解析時に計算すると，解析速度が 低下すると考えられる．そこで，式 (9) の計算を効

率的に行うために, 関数 $m$ の引数から值へのマッピ ングにダブル配列 [6] を用いることを提案する。

ダブル配列はトライ [7] の効率的な実装であり， 2 つの配列 BASE と CHECK，及び值配列 VALUE に よって構成される key-value マップである. 整数値 $k_{1}, k_{2}, t$ について式 (10) が満たされるとき，キー $\left(k_{1}, k_{2}\right)$ の值が VALUE $[t]$ であると見なす.

$
\operatorname{BASE}\left[k_{1}\right] \oplus k_{2}=t \wedge \operatorname{CHECK}[t]=k_{1}
$

ここで演算子 $\oplus$ は排他的論理和を表す1），ダブル配列を用いると，スコア計算は Algorithm 1 のとおり となる.

ダブル配列は，1) 配列の要素の取得，2) 排他的論理和の計算，3) 比較，という単純な処理によって構成されるため，Algorithm 1 内のループ処理は SIMD 命令 ${ }^{2}$ によって容易に並列化可能である.

## 5 実験

## 5.1 実験設定

モデル学習のためのデータセットとして，現代日本語書き言葉均衡コーパス (BCCWJ [8], Ver. 1.1) のうち，人手で短単位アノテーションされたコア データ $60 \mathrm{k}$ 文を利用した. 辞書には現代書き言葉 UniDic [5] (Ver. 3.1.0)を利用し，各パラメータを再学習した。

図 1 2-gram スコアの事前計算から除外する素性テンプ レートの数と連接表の要素数の関係

ベースラインとして CRF に基づく形態素解析器 である Vibrato ${ }^{3}$ を利用し，提案法は Vibrato を修正 する形で実装した. CRF の学習には rucrf $^{4)}$ を用い， OWL-QN 法 [9] による L1 正則化 [10] を行った.

計算を効率的に行うため，重み，及び統合後のス コアはすべて量子化した．スコアの事前計算では量子化前の值が用いられるが，解析時の計算では量子化後の值が用いられるため，手法によって算出され るスコアが僅かに異なる。しかし，その差は解析結果に大きな影響を与えるものではない.

実装にはプログラミング言語 Rust を用いた。コ ンパイラは rustc 1.65，コンパイルオプションは-C opt-level=3とした.

解析速度の測定には，BCCWJ のコアデータ以外 からランダムに抽出した $100 \mathrm{k}$ 文を利用し，100 回解析した平均值を用いた．測定の際は，分割対象の文 を先に RAM に読み込み，IO 処理にかかる時間は除外した。

実験は以下のスペックのマシンを用いてシングル スレッドで実施した。
- CPU: Intel Core i9-12900K CPU @ 3.2GHz
- Memory: 64GiB RAM (L1: 640KiB, L2: 14MiB)

## 5.2 スコアの部分的事前計算の効果

## 5.2.1 連接表のサイズの変化

解析時に統合する素性テンプレートのインデック ス集合 $S$ のサイズを変化させた際の連接表の要素数 の変化を図 1 に示す.

図を見ると，Greedy または Greedy-2 によって優先的に選択される素性テンプレートのうち，最初の

3) https://github.com/daac-tools/vibrato

4) https://github.com/daac-tools/rucrf
表 1 2-gram モデルサイズ [MiB] と解析時間 [s] の関係

5つの素性テンプレートをスコアの事前計算の対象 から除外するだけで，連接表のサイズが $10 \%$ 程度ま で軽量化することが確認された。一方で，Variousに よって優先的に選択される素性テンプレートを除外 しても，連接表の軽量化効果が殆どないことが確認 された.

この結果から, Greedy または Greedy-2 によって 貪欲的に選択される素性テンプレートを除外するこ とが，連接表の軽量化に有効であることが分かる.

Greedy-2 については，初期の軽量化効果は Greedy と比較して大きいものの，すぐに Greedy と大差が 無くなることが確認された。これは，2つの素性テ ンプレートのみが相関しているケースが少なかっ たためと考えられる。他の素性テンプレートを除外 した場合の影響を考慮する場合，計算量は考慮する 素性テンプレートの数 $n$ に対して指数関数的に増大するため,$n$ を増やすことは現実的ではない.こ のため，以降は単純に大きな軽量化効果を得られる Greedy を採用した。

## 5.2.2 モデルサイズと解析時間の比較

2-gram スコアの事前計算から除外する素性テンプ レートの数を変化させた際の，2-gram モデルサイズ と解析時間への影響を調査するため，以下の 3 つの 状況について測定した。ここにおける 2-gram モデ ルサイズとは，連接表のサイズと 2-gram スコアを 格納したダブル配列のサイズの総和である.

Matrix 全ての 2-gram スコアを事前に計算して連接表に格納する。(ベースライン)

Dual Greedyによって優先的に選択される 8 個の素性テンプレートについて連接表から除外し，解析時に計算を行う.

Raw 全ての 2-gramスコアを解析時に計算し，連接表は利用しない。 $(S=\{1,2, \ldots, K\})$

これらの結果を表 1 に示す. Dualでは，Matrix に 比べて 2-gram モデルサイズが 12\%以下になってい ることを確認できる．スコアの事前計算から除外す る素性テンプレートを増やすと，必然的にダブル配列のサイズは大きくなるが，その増加量は連接表の表 2 SIMDによる解析時間 [s] の変化

軽量化した分に比べれば十分に小さく，モデル全体の軽量化に効果的であることが分かる。一方で， Dual の解析時間は Matrix の 2.4 倍に増加しており,解析時に 2-gram スコアを計算することで解析が遅 くなることが伺える。

ここからモデルサイズと速度はトレードオフの関係であり，インデックス集合 $S$ のサイズは，許容さ れるモデルサイズと解析速度によって調整する必要 があることが分かる.

Raw は Dual と比較して傾向が顕著であり，2-gram モデルサイズは Matrix の $0.5 \%$ である一方，解析時間は Matrix の 23 倍であった.

## 5.3 スコア計算に SIMD を利用する効果

ここでは，解析時の 2-gram スコアの計算を SIMD 並列化することの効果を調査する．5.2.2 節の Dual および Raw の設定について，Algorithm 1 の処理を 8 並列化 ${ }^{5)}$ した場合の解析時間の変化を表 2 に示す.

この結果から，ダブル配列を用いたスコア計算が SIMD 命令によって実際に高速化されたことを確認 できる。ただし，全ての 2-gram スコアを事前計算 して参照する Matrix と比較すると，Dual は SIMD 命令を用いても 2 倍以上遅いことが確認できる。

## 6 まとめ

本稿では，CRF に基づく形態素解析器において， 2-gram スコアの計算を事前計算と解析時の計算に分割することで，モデルサイズを軽量化する手法を提案した. また，解析時の計算を SIMD 命令で高速化 できることを示した。提案法は，パラメータに手を 加えるなど，解析精度に影響を与えることは行わな い。このため，解析精度を維持したまま，組み込み 機器や Web フロントエンドなど，資源が限られた 環境でも利用可能なモデルを配布することが可能と なる。

今回の実験では，事前計算から除外する素性テン プレートを選択する際に，そのテンプレートの内容 までは考慮しなかったが，言語学的な知見を取り入 れることによる効果についても検討の余地がある。

5） AVX2 で 32-bit 演算を並列化できる最大の個数が 8 である.

## 参考文献

[1] Taku Kudo, Kaoru Yamamoto, and Yuji Matsumoto. Applying conditional random fields to Japanese morphological analysis. In Proceedings of the $\mathbf{2 0 0 4}$ Conference on Empirical Methods in Natural Language Processing, pp. 230-237, Barcelona, Spain, July 2004. Association for Computational Linguistics.

[2] Graham Neubig, Yosuke Nakata, and Shinsuke Mori. Pointwise prediction for robust, adaptable Japanese morphological analysis. In Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies, pp. 529533, Portland, Oregon, USA, June 2011. Association for Computational Linguistics.

[3] John D. Lafferty, Andrew McCallum, and Fernando C. N. Pereira. Conditional random fields: Probabilistic models for segmenting and labeling sequence data. In Proceedings of the Eighteenth International Conference on Machine Learning, ICML '01, p. 282-289, San Francisco, CA, USA, 2001. Morgan Kaufmann Publishers Inc.

[4] Masayuki Asahara and Yuji Matsumoto. ipadic version 2.7.0 User's Manual. https://ja.osdn. net/projects/ ipadic/docs/ipadic-2.7.0-manual-en.pdf, 2003.

[5] 岡照晃. CRF 素性テンプレートの見直しによるモ デルサイズを軽量化した解析用 UniDic — unidiccwj-2.2.0 と unidic-csj-2.2.0 一. 言語資源活用ワーク ショップ 2017 発表予稿集, 143-152.

[6] Jun'ichi Aoe. An efficient digital search algorithm by using a double-array structure. IEEE Transactions on Software Engineering, Vol. 15, No. 9, pp. 1066-1077, 1989.

[7] Edward Fredkin. Trie memory. Commun. ACM, Vol. 3, No. 9, p. 490-499, sep 1960.

[8] 前川喜久雄. 代表性を有する大規模日本語書き言葉 コーパスの構築 (〈特集〉日本語コーパス). 人工知能, Vol. 24, No. 5, pp. 616-622, 2009.

[9] Galen Andrew and Jianfeng Gao. Scalable training of 11regularized log-linear models. In Proceedings of the 24th International Conference on Machine Learning, ICML '07, p. 33-40, New York, NY, USA, 2007. Association for Computing Machinery.

[10] Robert Tibshirani. Regression shrinkage and selection via the lasso. Journal of the Royal Statistical Society: Series B (Methodological), Vol. 58, No. 1, pp. 267-288, 1996.


# 事前学習モデルに基づく日本語形態素解析器における 辞書の利用

田村稔行 河原大輔
早稲田大学理工学術院
tam.fse3982@ruri.waseda.jp dkw@waseda.jp

## 概要

事前学習モデルに基づく日本語形態素解析器で は, 従来の形態素解析器で用いられていた辞書を用 いないことが一般的である. しかし, 単語の区切りや 品詞が登録された辞書は形態素解析において重要な 知識源となる. 本論文では, 事前学習モデルに基づく 日本語形態素解析器の入力として, 辞書引きによる 単語区切り位置の情報を与える手法を提案する. 提案手法は, 複数のコーパスにおいて, 辞書を用いない 手法と比較して高い精度を示すことを確認した。

## 1 はじめに

日本語の文においては単語の間に区切りが明示さ れない. 計算機で日本語を解析する場合, まず単語の 区切りを認識する必要がある. 日本語の形態素解析 においては,品詞や活用の付与と同時に単語への分 かち書きを行う。

従来の形態素解析器である JUMAN ${ }^{1)}$, MeCab [1], Juman++ [2] などは辞書に登録されている単語の 情報に基づき, 最も尤度の高い単語列を採用する ことによって分かち書きを行う。一方で, 近年の KWJA [3] などの事前学習モデルベースの形態素解析においては, 事前学習モデルが日本語解析に関す る有用なパラメータを獲得していることから, 辞書 を分かち書きに用いていない. しかし, 単語の区切り や品詞が定義されている辞書の情報は分かち書きや 品詞付与において重要な知識源となる.

本研究では, 事前学習モデルを用いた形態素解析 において辞書の情報を利用する手法を提案する. 具体的には, モデルへ入力文に加えて辞書から得た単語の分割位置の情報を与える. 提案手法の有効性を 検証するため, 3 種類のコーパスと 2 種類の辞書にお いて分かち書きと品詞・活用付与の実験を行う.

1) https://nlp.ist.i.kyoto-u.ac.jp/?JUMAN

## 2 関連研究

辞書を使用する形態素解析の手法として,ラティ スを用いるものと点予測のものがある. ラティスは 辞書に存在する単語と, 辞書に存在しない単語 (未知語)を処理する規則に基づいて生成される. 生成され たラティスから最も尤度の高いパスを決定し,これ が単語の分割となる. ラティスの作成は辞書に基づ いて行い, 機械学習により調整された重みを用いて スコア算出し, そのスコアによりパスを決定するこ とが一般的である. JUMANでは人手で, MeCab では CRF [4] で重みを調整している. Juman++も同様に辞書に基づいたラティスを生成するが, 線形モデルと RNN の組み合わせによりスコアを算出する。

点予測は, 周囲の判定情報を用いずに各文字や単語について分かち書きや品詞推定などを個別に行う 手法である. KyTea [5] は点予測の形態素解析器であ る. 文字 n-gram や文字種 n-gram, 単語辞書に基づく 特徴量を用いて分かち書きと読み・品詞推定を行う.

事前学習を用いた形態素解析器として, 事前学習モデル RoBERTa [6] を用いた日本語統合解析器 KWJA がある. KWJA はパイプライン処理によって 形態素解析を行う。まず文字モデルにて誤り文字を 訂正し, 次の文字モデルにて分かち書きと単語正規化を行う. そして単語 (サブワード) モデルにより形態素解析を実行する. KWJA の形態素解析において は, 単語分割が決まった後に, 各単語の先頭トーク ンの隠れ状態から品詞と活用を予測し,辞書に基づ く意味情報を付与する. 辞書は分かち書きおよび品詞・活用付与には用いない. また, Tolmachev ら [7] は, 双方向 LSTM [8] と Transformer [9] のそれぞれを 用いた, 辞書を用いない形態素解析器を提案した.こ の解析器は事前学習を用いないが, 大量の自動解析 コーパスを学習に用いる. モデルは入力文中の各文字について, 分かち書き, 品詞・活用付与をマルチタ

スクで行う. 本研究ではこの出力の構造を用いる.

事前学習モデルに辞書などの知識を統合している 研究を紹介する. Sun ら [10] は, 事前学習モデルは大量の生コーパスを用いて学習を行っているものの, そのような生コーパスは言語知識や一般常識に関 する明示的な知識に欠けていると指摘している. モ デルに知識を与えるため, 多層の Transformer-XL [11] からなるモデルに知識グラフを埋め込み, 単語や知識に関するタスクによる事前学習を提案している。

他の研究例として, BERT [12] の構造を流用した モデルが存在する. 事前学習の際に Masked Language Modeling や Next Sentence Prediction と並行して語彙的な関係を分類するタスクを行うモデル [13] や知識 に関するタスクを行うモデル [14]がある. また, ファ インチューニングにおいて追加の層を用いて知識グ ラフの情報を統合するモデル [15] などが存在する.

本研究では, 既存の事前学習モデルに辞書情報を 統合することでの精度向上を目的とするため,ファ インチューニングを対象とする. また, 形態素解析と いうタスクに着目し, 辞書の情報を, 単語の区切り位置の情報としてモデルに与える。

## 3 事前学習モデルに基づく形態素解析における辞書の利用

本研究では, 文字単位のタスクである分かち書き を行うことから, 日本語コーパスで事前学習された 文字ベースのモデルを用い, 分かち書きと品詞・活用付与タスクでファインチューニングする.

モデルの入力としては, 入力文の各文字の埋め込 みに加え, 辞書から得た単語の区切り位置の情報を 与える. 具体的には, 文の各文字について, その文字 を単語の先頭, 中間, 末尾とする単語が辞書に収録さ れていればそれぞれ B, I, E のフラグを立てる． B は 単語の先頭の文字, $\mathrm{E}$ は単語の末尾の文字, $\mathrm{I}$ は 3 文字以上の単語の中間の文字を示す. 例えば, 図 1 に おいて,「じかん」という単語が辞書に存在すると する.この場合, 入力文中の「じ」に B, 「か」に $\mathrm{I}$,「ん」に Eのフラグを立てる. 入力文中の一つの文字 が、辞書中のある単語において B となることもあれ ば、他の単語において I やEとなることがある. 例 えば図中の「む」には $\mathrm{B}, \mathrm{E}$ の 2 種類のフラグが立っ ている.このため, 各文字に対して B, I, E の 3 種類の 2 値フラグを与える. 以下，これを辞書フラグと呼ぶ。 モデルは辞書フラグのそれぞれを埋め込みとして学習し, 各文字の埋め込みと足し合わせる。

図 1 提案手法. 入力文に対して事前に辞書引きをして辞書フラグを形成し, 事前学習モデルに入力する. 線形結合層が各タスクについて出力する。

モデルの出力としては, 事前学習モデルが出力す る隠れ状態を各タスク向けの線形結合層に入力し，入力文の各文字について分類を行う. 分かち書き (Seg) については BMES の体系を用いて分類する.S は 1 文字からなる単語, $\mathrm{B}$ は単語の先頭の文字, $\mathrm{E}$ は 単語の末尾の文字, $\mathrm{M}$ は 3 文字以上の単語の中間の 文字を示す. 品詞・活用付与については, 品詞 (P1),品詞細分類 (P2), 活用型 (CT), 活用形 (CF) をUMAN 体系にもとづいて分類する。

## 4 実験

辞書情報を与えた事前学習モデルベースの形態素解析器の有効性を検証するため, 複数のコーパスを 評価対象として形態素解析を行い, 精度を算出する。

## 4.1 実験設定

## 4.1.1 モデルと辞書

ファインチューニングする事前学習モデルと して, 文字単位の RoBERTa-BASE ${ }^{2}$ および RoBERTa$\left.\mathrm{LARGE}^{3}\right)$ を用いる. 学習は異なる 3 つの seed 值を設定して行い, 平均値を算出する. 実験を行う際のハイ パーパラメータを付録 Aにて示す.

2) https://huggingface.co/ku-nlp/roberta-base-japanese-char-wwm

3) https://huggingface.co/ku-nlp/roberta-large-japanese-char-wwm
辞書については, JUMAN 辞書4) と森羅5)を用い， Trie による辞書引きのライブラリである dartsclone ${ }^{6)}$ を使用して辞書引きを行い, 学習・評価デー タに辞書フラグを与える. 森羅は Wikipedia のタイト ルとその拡張固有表現 (ENE) における分類情報を持 つ辞書である. 辞書引きは, 文の最初の文字を開始位置とし, その文字から $\mathrm{n}(=2,3, \ldots)$ 文字の各範囲につ いて辞書引きした結果を集計する.この際, $\mathrm{n}$ は辞書引きの範囲が文末の文字に達する場合が最大値であ る.この作業を開始位置が文末になるまで繰り返す。 この際, 1 文字からなる単語は有効な情報ではない と判断し, 2 文字以上からなる単語の区切り位置に ついてのみから辞書フラグを形成する.

JUMAN 辞書については, 辞書引きの結果を品詞な どで区別せずに B, I, E の 3 種類の埋め込みを与え る. 森羅については, ENE [16] (Version: 7)の「1. 名前」中の 12 種類の大分類それぞれについて B, I, E の埋め込みを与える.つまり, 合計 36 種類の埋め込 みをモデルに入力する.

実験において, 辞書を与えないモデル (辞書なし と表記), JUMAN 辞書を与えるモデル (JUMAN と表記), 森羅を与えるモデル (ENE と表記), JUMAN 辞書 と森羅を与えるモデル (JUMAN+ENE と表記) の 4 つの条件を比較する. なお, JUMAN+ENE において は, JUMAN 辞書の B, I, E のフラグ 3 個と森羅のカテ ゴリごとの $\mathrm{B}, \mathrm{I}, \mathrm{E}$ フラグ 36 個を合わせた 39 個の埋 め込みをモデルに入力する。

## 4.1.2 学習・評価データセット

ファインチューニングには, 人手のデータセット と自動解析のデータセットの 2 種類を用いる. 人手 でアノテーションされたデータセットとして京都大学テキストコーパス [17] (以下 KC) と京都大学ウェ ブ文書リードコーパス [18] (以下 KWDLC)を用いる.自動解析したデータセットとして, CC-100 [19,20] の 日本語テキストから全角スペースとURLを含む文 を除いて Juman++で自動解析したものを用いる. 評価用データセットとして, KC と KWDLC, そして不満調査データセットタグ付きコーパス7) (以下 FKC) を用いる.なお, KC および KWDLC は GitHub 上の標準スプリットを用いて学習用と評価用に分割する。各データセットに収録されている文数を表 1 に示す.

4) https://github.com/ku-nlp/JumanDIC

5) http://shinra-project.info/

6) https://github.com/s-yata/darts-clone

7) https://github.com/ku-nlp/AnnotatedFKCCorpus

KC と KWDLC を学習に用いたモデル $(\mathrm{KC}+\mathrm{KW}$ と表記) と, KC と KWDLC と C-100を学習に用いたモデ ル $(\mathrm{KC}+\mathrm{KW}+\mathrm{CC} 100$ と表記) の両方で実験を行う.

## 4.1.3 評価

分かち書き及び品詞・活用付与の精度を評価する。分かち書きについては, 各単語の開始位置と終了位置の組が合致しているかにもとづいて F1を算出す る. 品詞 - 活用付与については, 品詞, 品詞細分類, 活用型, 活用形を評価し $\mathrm{F} 1$ を算出する.この際, 単語の 開始位置である文字について分かち書きと各タスク を両方正解した場合のみ正解したとして精度を算出 する.つまり, 品詞・活用付与の各精度は, 分かち書 きと各タスク両方を正解した精度 (F1)である.

また, JUMAN 辞書を用いた形態素解析器として Juman++ (Version: 2.0.0-rc3) を, 事前学習モデルを用 いた形態素解析器として KWJA (Version: 1.1.0) につ いても比較対象とする. なお, 公開版の Juman++は評価用データセットも学習に用いているため参考とし て掲載する. KWJA についても, 本実験で評価のみに 用いている FKC の一部を学習に用いている. さら に, KWJA については形態素解析の前段階で入力誤 り訂正を行うため, 入力文と出力文の文字数が異な る場合がある. 本実験の評価では, 文中で文字数が増減した箇所があると, その文の残りの部分について 評価を正しく行うことができない. そのため, KWJA の評価についてはこの問題に対する処理を行わない 場合の精度と, 入力誤り訂正により文字数が変化し た文を取り除いた場合の 2 つの精度を掲載する。

## 4.2 結果と考察

$\mathrm{KC}+\mathrm{KW}$ より $\mathrm{KC}+\mathrm{KW}+\mathrm{CC} 100$ を学習に用いた 場合に全体的に良い結果が得られたため, $\mathrm{KW}+\mathrm{KW}+\mathrm{CC} 100$ のみの結果を表 2 に示す. $\mathrm{KC}+\mathrm{KW}$ を学習に用いた結果は付録 Bに示す. Seg, P1, P2, CT, $\mathrm{CF}$ はそれぞれ分かち書き, 品詞, 品詞細分類, 活用型,活用形を指す. 以下では, 各辞書の情報を与えたモデ ルについて,他のモデルとの比較を考察する.
表 $2 \mathrm{KC}+\mathrm{KW}+\mathrm{CC} 100$ を用いた学習による分かち書きと品詞・活用付与の精度 (F1). KWJA の FKC での精度と Juman++の 精度以外について, 表中で最も高い精度を示したモデルの値を太字で示した. なお, 最高値と 2 番目に高い値の差が 0.01 以内の場合は 2 番目に高い値も太字で示した.

表 3 分かち書きの改善例. “p”は形態素の区切りを示す. モデルはいずれもLARGE.

 &  \\

JUMAN 辞書による影響 JUMAN辞書を与えたモ デルを, 辞書を用いないモデルと比較すると, すべて のデータセット・タスクにおいて提案手法の精度が 上回った. このことから, 辞書による単語の区切り位置情報が, 分かち書きのみならず品詞・活用付与の 精度向上にも貢献しているといえる. 提案手法では JUMAN 辞書を品詞の区別なく与えたが, 品詞ごとに 辞書フラグを与えることで, 品詞・活用付与の各タ スクにおいてさらに精度が向上する可能性がある.

各評価用データセットの分かち書きについて,辞書情報を与えないモデルでは間違えていたが JUMAN 辞書を与えたモデルで正解した文の例を表 3 に示す. 各例は, 区切り位置により文意が異なる表現について, 提案手法が正解した例である. 1 例目は KC, 2 例目は KWDLC, 3 例目は FKC の文である. 1 例目では「ヒゲもじゃ」, 2 例目では「わさび」, 3 例目では「むだ」が辞書引きされ改善した.

森羅の影響森羅を与えたモデルは辞書なしのモ デルと近いか若干低い精度を示し, JUMAN 辞書と森羅を与えたモデルは JUMAN 辞書を与えたモデルと 近いか若干低い精度を示した. 森羅のエントリの区切りが評価用データセットの JUMAN 体系と異なる
ため, 精度の向上に寄与しなかったと考えられる. 一方で, 森羅に収録されている長い複合名詞の始まり・終わりは分かち書きの精度向上に寄与する可能性が あるため, 辞書をフィルタリングすることで精度が 向上する可能性がある. また, 森羅による ENE の分類など, 詳細な分類や分野に特化した追加情報を形態素解析器が出力できれば下流タスクにとって有益 であると思われる。

既存の形態素解析器との比較 Juman++と比較す ると, 提案手法は $\mathrm{KC}$ の品詞分類と品詞細分類, そし て FKC の分かち書きにおいて同等か上回る精度を 示した. 一方で, KWDLC においては Juman++がすべ ての指標について提案手法の精度を上回った. ただ し, 本実験で用いた Juman++は公開版であり, 評価用 に用いたテストデータを学習している. KWJA と比較すると, KWDLC の P1, P2, FKC の Seg, P1, P2 にお いて KWJA の精度が上回り, その他では提案手法の 精度が上回った. ただし, KWJA は構文解析などの他 のタスクとマルチタスク学習を行っており, 形態素解析に最適化されていないため, 若干精度が低い. また, KWJA は本実験で評価に用いた FKC の一部を 学習に用いている。

## 5 おわりに

本研究では, 日本語の事前学習モデルに入力文に 加えて辞書の情報を与えて形態素解析を行い精度を 評価した. 結果として, 辞書情報を与えることで分か ち書きだけでなく品詞・活用付与の精度も向上する ことを確認した. 今後は, どのような辞書であれば形態素解析の精度向上につながるのかを明らかにし たい.

## 謝辞

本研究は JSPS 科研費 JP21H04901 の助成を受けて 実施した。

## 参考文献

[1] Taku Kudo, Kaoru Yamamoto, and Yuji Matsumoto. Applying conditional random fields to japanese morphological analysis. In Proceedings of the 2004 Conference on Empirical Methods in Natural Language Processing, 2004.

[2] Daisuke Kawahara Hajime Morita and Sadao Kurohashi. Morphological analysis for unsegmented languages using recurrent neural network language model. In Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, p. 2292-2297, 2015.

[3] 植田暢大, 大村和正, 肾玉貴志, 清丸寛一, 村脇有吾, 河原大輔, 黒橋禎夫. Kwja：汎用言語モデルに基づく日本語解析器. 第 253 回自然言語処理研究会, 京都, 2022.

[4] Andrew McCallum John Lafferty and Fernando Pereira. Conditional random fields: Probabilistic models for segmenting and labeling sequence data. In Proceedings of the Eighteenth International Conference on Machine Learning, Vol. 30, pp. 282289, 2001 .

[5] Graham Neubig, Yosuke Nakata, and Shinsuke Mori. Pointwise prediction for robust, adaptable Japanese morphological analysis. In Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies, pp. 529-533, Portland, Oregon, USA, June 2011. Association for Computational Linguistics.

[6] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. Roberta: A robustly optimized bert pretraining approach. arXiv, 2019. abs/1907.11692.

[7] Arseny Tolmachev, Daisuke Kawahara, and Sadao Kurohashi. Shrinking Japanese morphological analyzers with neural networks and semi-supervised learning. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pp. 2744-2755, Minneapolis, Minnesota, June 2019. Association for Computational Linguistics.

[8] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural Computation, Vol. 9, No. 8, pp. 1735-1780, 1997.

[9] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, L ukasz Kaiser, and Illia Polosukhin. Attention is all you need. In I. Guyon, U. Von Luxburg, S. Bengio, H. Wallach, R. Fergus, S. Vishwanathan, and R. Garnett, editors, Advances in Neural Information Processing Systems, Vol. 30. Curran Associates, Inc., 2017.

[10] Yu Sun, Shuohuan Wang, Shikun Feng, Siyu Ding, Chao Pang, Junyuan Shang, Jiaxiang Liu, Xuyi Chen, Yanbin Zhao, Yuxiang $\mathrm{Lu}$, et al. Ernie 3.0: Large-scale knowledge enhanced pretraining for language understanding and generation. arXiv, 2021. abs/2107.02137.

[11] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc Le, and Ruslan Salakhutdinov. Transformer-XL: Attentive language models beyond a fixed-length context. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pp. 2978-2988, Florence, Italy, July 2019. Association for Computational Linguistics.

[12] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Associa- tion for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pp. 4171-4186, Minneapolis, Minnesota, June 2019. Association for Computational Linguistics.

[13] Anne Lauscher, Ivan Vulić, Edoardo Maria Ponti, Anna Korhonen, and Goran Glavaš. Specializing unsupervised pretraining models for word-level semantic similarity. In Proceedings of the 28th International Conference on Computational Linguistics, pp. 1371-1383, Barcelona, Spain (Online), December 2020. International Committee on Computational Linguistics.

[14] Yoav Levine, Barak Lenz, Or Dagan, Ori Ram, Dan Padnos, Or Sharir, Shai Shalev-Shwartz, Amnon Shashua, and Yoav Shoham. SenseBERT: Driving some sense into BERT. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pp. 4656-4667, Online, July 2020. Association for Computational Linguistics.

[15] Zhe Zhao Zhiruo Wang Qi Ju Haotang Deng Ping Wang Weijie Liu, Peng Zhou. K-BERT: Enabling language representation with knowledge graph. In Proceedings of AAAI 2020, 2020.

[16] Satoshi Sekine. Extended named entity ontology with attribute information. LREC, 2008

[17] Sadao Kurohashi and Makoto Nagao. Building a japanese parsed corpus. In Treebanks: Building and Using Parsed Corpora, Text, Speech and Language Technology, p. 249-260. Springer Netherlands, Dordrecht, 2003.

[18] Masatsugu Hangyo, Daisuke Kawahara, and Sadao Kurohashi. Building a diverse document leads corpus annotated with semantic relations. In Proceedings of the 26th Pacific Asia Conference on Language, Information, and Computation, pp. 535-544, 2012.

[19] Alexis Conneau, Kartikay Khandelwal, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzmán, Edouard Grave, Myle Ott, Luke Zettlemoyer, and Veselin Stoyanov. Unsupervised cross-lingual representation learning at scale. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, pp. 8440-8451, Online, July 2020. Association for Computational Linguistics.

[20] Guillaume Wenzek, Marie-Anne Lachaux, Alexis Conneau, Vishrav Chaudhary, Francisco Guzmán, Armand Joulin, and Edouard Grave. CCNet: Extracting high quality monolingual datasets from web crawl data. In Proceedings of the Twelfth Language Resources and Evaluation Conference, pp. 40034012, Marseille, France, May 2020. European Language Resources Association.

## A 学習時のハイパーパラメータ

表 4 に, 学習を行った際のハイパーパラメータを掲載する.

## Ｂ異なる学習データセットを用いた場合の精度

表 5 に, 本文中に掲載していない $\mathrm{KC}+\mathrm{KW}$ で学習を行った際の精度を掲載する。

表 $5 \mathrm{KC}+\mathrm{KW}$ を用いた分かち書きと品詞・活用付与の精度 (F1). KWJA の FKC での精度と Juman++の精度以外について，表中で最も高い精度を示したモデルの値を太字で示した。


# テキスト生成モデルによる日本語形態素解析

児玉 貴志 ${ }^{1}$ 植田 暢大 ${ }^{1}$ 大村 和正 ${ }^{1}$
清丸 寛一 ${ }^{1}$ 村脇有吾 ${ }^{1}$ 河原 大輔 ${ }^{2}$ 黒橋禎夫 ${ }^{1}$
1 京都大学 2 早稲田大学
$\{$ kodama, ueda, omura, ki yomaru, murawaki , kuro\}@nlp. ist.i.kyoto-u.ac.jp
dkw@waseda.jp

## 概要

統合的日本語解析器 KWJA 1.0 は形態素解析を汎用言語モデルに基づくトークン分類問題として定式化した. しかし単語の読み，原形等はラベル集合 が開放的であり，分類問題としては扱いづらい。本研究ではそうしたタスクをテキスト生成モデルで 解く手法を提案する. 提案手法は実装とタスク設計 を単純化しつつ，特に読みと代表表記の推定で既存 の形態素解析器を上回る精度を示した. 提案手法は $\mathrm{KWJA}^{1)}$ の形態素解析モジュールとして実装する予定である。

## 1 はじめに

BERT [1] 等の汎用言語モデルは言語の基礎的な解析においても威力を発揮している [2,3]. 汎用言語 モデルの強力な文脈処理能力を利用すると，単語分割や品詞付与等の日本語形態素解析のサブタスクは 単純なトークン分類問題として定式化できる. 単語分割であれば各文字に B，I を，品詞付与であれば 各サブワードに品詞ラベルを付与すれば良い.この 手法は辞書引きに基づいてラティスを構築する従来手法と比べて単純だが，高い精度を達成している。

しかし，形態素解析のすべてのサブタスクがトー クン分類問題として定式化しやすいわけではない.読み，原形等はラベル集合が開放的だからである。図 1 に示すように，入力サブワード（「京都」）に対応する読みのサブワード（「きょうと」）が存在しな かった場合，複数のサブワード（「きょう」，「と」） で読みを表現する必要があり，入力と出力が一対一対応の分類モデルでは対処できない. 単語の原形や 代表表記2)でもこうした問題は存在する. 統合的日

1) https://github.com/ku-nlp/kwja

2）各単語に対して与えられた ID. 同一の語の表記摇れには 同一の代表表記が与えられる。代表的な表記とその読みのぺ アで「京都/きょうと」のように表記される.

図 1 サブワードによる読み推定の誤り例

本語解析器である KWJA $1.0[3]^{3)}$ ではこうした問題 に対して，タスクごとにルールや辞書引き等で個別 に対応しており，開発の負担や新語への対応等に課題が残る。

本研究では，トークン分類問題としては扱いづら い形態素解析の一部のサブタスクを，注釈付与コー パスから直接的に学習したテキスト生成モデルで解 く手法を提案する. 具体的には，入力文から見出し 語 (分かち書きされた単語)，読み，原形，代表表記 を所定のフォーマットに基づき end-to-end で生成す る. エンコーダ・デコーダモデルを用いたテキスト 生成は，サブワードの入出力が一対多（もしくは多対一）となっている場合でも対処できる。また，夕 スクごとに固有の処理を行う必要がなく，実装を単純化できる。

実験の結果，提案手法は実装とタスク設計の単純化に成功しつつ, 分類モデルを用いた従来の解析器 より，特に読みと代表表記を高い精度で推定できる ことが分かった．ただ，入力文に含まれない文字列 が見出し語として解析結果に出てきてしまう例が少数だが確認された。そこで，見出し語を生成する際 は入力文に含まれる文字列（サブワード）のみを生成するようにモデルの出力を補正する，見出し語強制デコーディングを提案する。この手法により提案手法のさらなる改善が見られた。

さらに，かな表記入力の曖昧性解消についても検

3） 執筆時点でのバージョンは 1.2.2であり，このバージョン の KWJAを KWJA 1.0 と表記する.

図 2 KWJA の形態素解析モジュールの概要

討する。例えば「こうえん」は文脈によって「公園」 と「講演」のどちらにもなりうる。コーパス中には こういったかな表記の単語が少ないため，漢字表記 の単語を曖昧性のあるかな表記に置き換えることで 疑似データを作成し，学習・評価に使用した. 実験 の結果, 置き換えた単語について曖昧性解消の精度 が大きく向上することを確認した.

## 2 関連研究

日本語形態素解析は辞書引きに基づいてラティス を構築する手法 $[4,5]$ が主流であったが，汎用言語 モデルの登場にともない，単語（サブワード）列の 各トークンにラベルを付与するトークン分類問題と して解く手法が実用的な精度を達成している [3].

汎用言語モデルに基づく統合的日本語解析器 KWJA [3] は入力誤り訂正から談話関係解析までを 統合的に扱うが，このうち形態素解析モジュールの 概要を図 2 に示す. 単語列を入力とし，その単語に 対する品詞・活用 (品詞, 品詞細分類, 活用型, 活用形の 4 つ)，読み，原形，意味情報4)を付与する。品詞・活用の付与はトークン分類問題を解くだけで 完結する．ただし，読みは単語ではなくサブワード ごとに推定している.この訓練データを作成するた めに，コーパスに単語単位で付与されている読みを サブワード単位に分割するアラインメント処理を 動的計画法を用いて事前に行っている. 原形は活用型，活用形をもとに活用変化表を参照し，正規化見出し語5)からルールで出力している。また，意味情報は読み，原形，品詞，品詞細分類，活用型をキー として，あらかじめ作成しておいた辞書を引いて， マッチした辞書項目の意味情報を出力している. 本研究では，トークン分類問題として定式化すると煩雑な処理が必要となるこうしたサブタスクを，テキ スト生成モデルを使用した単純な手法で解く。

トークン分類問題をテキスト生成モデルで解く研

4）人手によって整備された，単語に対する付加情報. 代表表記やカテゴリ, ドメイン等を含む.

5）非標準表記を正規化する処理（「びみょーー」 $\rightarrow$ 「びみょ う」）と，連濁により語頭のカナが濁音化した単語を戻す処

 \\

図 3 モデルの入出力フォーマット. EOS は文末を表す 特殊記号.

究はこれまでにも存在する。T5 [6] は要約や翻訳の ほかに，分類問題も text-to-text で解けるように設計 されたテキスト生成モデルである。また，GPT-3 [7] は 1,750 億パラメータを持つ巨大な汎用言語モデル であり，モデルに与えるプロンプトを適切に設計す ることで分類問題も解くことができる. 本研究では T5 の多言語対応版である $\mathrm{mT5}$ [8] を使用する.

テキスト生成モデルに決まった順番やフォー マットを遵守させるのは難しい。しかし，GitHub Copilot $^{6)}$ のようなコーディング規約に則ってコード を生成できるシステムの台頭を踏まえると，言語解析への利用も現実的な水準に達しているといえる.

## 3 提案手法

本節ではまず，テキスト生成モデルで形態素解析 を行う手法とモデルの入出力フォーマットについ て説明する (3.1 節)。そして提案手法の追加要素で ある，見出し語強制デコーディング（3.2 節）と疑似データによる曖昧性解消（3.3 節）について説明 する。

## 3.1 テキスト生成モデルによる形態素解析

提案手法では，解析対象の文をテキスト生成モデ ルに入力し, 所定のフォーマットに基づき形態素解析の結果を生成して出力する. モデルの入出力 フォーマットを図 3 に示す. 入力文の先頭に「解析：」をつけてからモデルへと入力する. 出力フォー マットは Juman++ [5] ${ }^{7}$ の出力を参考に設計した.各行は見出し語を先頭に読み，原形，代表表記の順 に並んでおり，単語ごとに改行することで分かち書 きを表現している8).

6) https://github.com/features/copilot

7) https://github.com/ku-nlp/jumanpp/

8）分かち書きを生成モデルで行う必要性は大きくないが，分 かち書きを行うモジュールを別途使用する際の計算コストを 考慮し, 本研究では分かち書きも生成モデルで行う。
見出し語は分かち書きされた単語で，読みはその 見出し語の読みを平仮名で記したものである. 原形 は見出し語が活用変化していない場合の形である.代表表記は表記摇れの問題を形態素解析のレベルで 吸収するための単語 ID であり，漢字表記やかな表記といった異なる表記でも同一の語であれば同一の 代表表記が与えられる9)．意味情報と代表表記は一対一で対応しているため，代表表記を正しく推定す ることで意味情報を一意に付与できる.

トークン分類問題で定式化した場合，これらのサ ブタスクを解くのには煩雑な処理が必要である．提案手法は入出力のフォーマットを定義するだけで， あとは注釈が付与されたコーパスからデータドリブ ンで学習することができる.

## 3.2 見出し語強制デコーディング

生成モデルは尤度の高い単語を選んで生成してい く. その結果「研究」と入力したにも関わらず，見出し語として「研修」が生成される等，入力文に含 まれない文字列を見出し語として生成してしまう場合がある.

そこで見出し語（＝各行の先頭）を生成する際は，入力文に含まれる文字列（サブワード）のみを生成 するようにモデルの単語生成確率を補正する. 具体的に図 3 の例で説明すると，「自然言語処理の」ま で解析し終えたら, 入力文のうち未解析の部分文字列（=「研究をしている」）の先頭と一致するサブ ワード（「研」「研究」）を語彙の中から探す.この一致したサブワード以外のサブワードの生成確率を 0 にすることで，入力文に含まれる文字列を強制的に 見出し語として生成できる.

## 3.3 疑似データによる曖昧性解消

「子どもとこうえんに行く」という入力中の，か な表記の「こうえん」が「公園」か「講演」かは曖昧性がある。しかしこの「こうえん」の代表表記を 「公園にうえん」と特定することができれば曖昧性 を解消でき，意味情報を一意に付与できる．複数サ ブワードからなる代表表記を分類モデルで推論する のは難しいため, KWJA 1.0 では曖昧性解消は行わ ず，該当する候補を全て列挙して出力している（上記の例では「公園にうえん」と「講演にうえん」).本研究では 1 つの見出し語に対し, 代表表記を 1

9) https://usermanual.wiki/Document/manual . 643701001 pdf表 1 各コーパスの文数

表 2 疑似データの統計. 各セルの左側が置き換えられた 単語を含む文数，右側が置き換えられた単語数である。

つだけ生成することでこの曖昧性解消を行う．しか しコーパスには曖昧性のある，かな表記の単語が少 ないため，かな表記の入力（「こうえん」）から代表表記（「公園にうえん」）を上手く生成できない，そ こで漢字表記の単語をかな表記に置き換えた疑似 データを作成し10), 元データに追加して学習・評価 を行う. 本研究では漢字表記の名詞を置き換え対象 とし，ランダムに選んで置き換える ${ }^{11)}$.

## 4 実験

## 4.1 コーパスと評価指標

本研究では京都大学テキストコーパス (KC) [9] ${ }^{12)}$, 京都大学ウェブ文書リードコーパ ス (KWDLC) [10] ${ }^{13)}$ ，注釈付き不満買取センター コーパス (Fuman) ${ }^{14)}$ の 3 種類のコーパスを用いる. モデルへの入力単位は文とし, 文の分割境界はコー パスの注釈にならう．表１に各コーパスの文数を示 す15). 学習は 3 つのコーパスを全て混ぜて行い，評価は各コーパスごとに行う。評価には単語単位の F1 スコア [5]を用いる.

## 4.2 モデル

以下の 2 つのモデルを比較する.

Proposed 汎用言語モデルである mT5 [8] の XL モデル ${ }^{16)}$ を cross entropy loss を損失関数として fine-tuning する ${ }^{17)}$.

10）付録 Aに疑似データの作成例を示す.

11）本研究では置き換える対象を名詞に限定したが，活用の ある動詞等への拡張は今後の課題である.

12) https://github.com/ku-nlp/KyotoCorpus

13) https://github.com/ku-nlp/KWDLC

14) https://github.com/ku-nlp/AnnotatedFKCCorpus/

15）最大系列長は大力が 128 トークン，出力が 512 トークン

とし，これらを超える文は学習と評価から除外している。

16) https://huggingface.co/google/mt5-xl

17）付録 B に実験設定の詳細を示す.
表 3 各コーパスごとの F1 スコア. 各セルには「分かち書き/読み/原形/代表表記」の形式でスコアを記載している.

行は疑似データで置き換えた単語のみに評価対象を限定した結果である.

表 4 出力の入力文復元率 (\%). 文単位で計算し, 入力文が出力の見出し語列と同一であれば「復元」と判定.

KWJA KWJA の Large モデル版を使用する18).汎用言語モデルとして RoBERTa [11] Large ${ }^{19)}$ 20) を採用しており, 現時点で公開されている KWJA のモデ ルの中で最も高精度である.

また Proposed に以下の 2 つの要素を追加した条件 でも比較を行う.

Forced Surface Decoding (FSD) 見出し語強制デ コーディング（3.2 節）を使用.

Disambiguation using Pseudo Data (DPD) 疑似 データ（3.3 節）を元の学習データに加えて学習し たモデルを使用. 疑似データの統計を表 2 に示す. 1 文あたり約 1 個の単語が置き換えられているが, それ以外の単語は元データと同一である。

## 4.3 結果

表 3 の上 4 行に実験結果を示す. Proposed はコー パスによっては分かち書きと原形で KWJA にやや 劣っているものの, 読みと代表表記ではどのコーパ スでも一貫した精度向上が見られる. 提案手法は煩雑な処理を行うことなく, 入出力のフォーマットを 定義するだけで高い精度を達成できている。

さらに見出し語強制デコーディングを加えた Proposed + FSD では 4 項目全てで精度が底上げされ ており，分かち書きと原形も KWJA とほぼ同等レべ ルまで達している. 表 4 に出力の入力文復元率を示

19) https://huggingface.co/ku-nlp/ roberta-large-japanese-char-wwm

20) https://huggingface.co/nlp-waseda/ roberta-large-japanese
す. Proposed でも十分高い精度だが，見出し語強制 デコーディングを導入することで KC，KWDLCで は $99 \%$ を上回っており，形態素解析器として実用に 耐える復元率になっている。

一方，疑似データを加えた Proposed + FSD + DPD では全体的な精度低下が見られる。疑似データは元 データの一部の単語を置き換えることで作成してお り，その他の単語は元データと同一である. そうし た疑似データを元データに加えて学習した結果，学習される単語に偏りが生じ，全体的に精度が低下し たと考えられる。

次に疑似データで置き換えた単語のみに限定し て評価した結果を表 3 の下 2 行に示す. 疑似データ によって全体的に精度が向上しており, 特にスコ アが低かった代表表記は大きな精度向上が見られ る. Proposed + FSD では「こうえん/こえん」のよ うに，漢字で生成すべき部分を平仮名で生成してし まうケースが多かったが，Proposed + FSD + DPD は 「公園にうえん」のように正しく生成できていた. このように置き換え箇所に対しては一定の精度向上 が見られたものの，置き換えていない箇所は精度が 低下してしまっている. 今後疑似データの作成方法 や追加する量等について検討を進める予定である.

## 5 おわりに

本研究では分類モデルが扱いづらいタスクを対象 に，テキスト生成モデルを用いた日本語形態素解析 に取り組んだ。実装とタスク設計を単純化したにも 関わらず，分かち書きと原形では分類モデルと同水準の精度を出しつつ，読みと代表表記では分類モデ ルを上回る精度を示した. 今後は曖昧性解消に向け た疑似データの活用法について検討を続ける。本研究で提案した手法は KWJA 2.0 として実装・公開予定である ${ }^{21)}$.

21）付録CにKWJA 1.0 から 2.0 における主な変更点を示す.

## 謝辞

本研究で用いた汎用言語モデルの一部は，学際大規模情報基盤共同利用・共同研究拠点 2022 年度公募型共同研究課題「大規模な日本語モデル構築・共有のためのプラットフォームの形成」 (jh221004) に おいて構築した。

## 参考文献

[1] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pp. 4171-4186, Minneapolis, Minnesota, June 2019. Association for Computational Linguistics.

[2] 松田寛. GiNZA - Universal Dependencies による実用的日本語解析. 自然言語処理, Vol. 27, No. 3, pp. 695-701, 2020.

[3] 植田暢大, 大村和正, 児玉貴志, 清丸寛一, 村脇有吾,河原大輔, 黒橋禎夫. KWJA：汎用言語モデルに基づ <日本語解析器. 第 253 回自然言語処理研究会, 京都, 2022.

[4] Sadao Kurohashi, Toshihisa Nakamura, Yuji Matsumoto, and Makoto Nagao. Improvements of Japanese Morphological Analyzer JUMAN. In Proceedings of the International Workshop on Sharable Natural Language Resources, pp. 22-38, 1994.

[5] Arseny Tolmachev, Daisuke Kawahara, and Sadao Kurohashi. Juman++: A Morphological Analysis Toolkit for Scriptio Continua. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pp. 54-59, Brussels, Belgium, November 2018. Association for Computational Linguistics.

[6] Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J. Liu. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Journal of Machine Learning Research, Vol. 21, No. 140, pp. 1-67, 2020.

[7] Tom Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared D Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel Ziegler, Jeffrey Wu, Clemens Winter, Chris Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, and Dario Amodei. Language Models are Few-Shot Learners. In H. Larochelle, M. Ranzato, R. Hadsell, M.F. Balcan, and H. Lin, editors, Advances in Neural Information Processing Systems, Vol. 33, pp. 1877-1901. Curran Associates,
Inc., 2020 .

[8] 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, pp. 483-498, Online, June 2021. Association for Computational Linguistics.

[9] Sadao Kurohashi and Makoto Nagao. Building a Japanese Parsed Corpus while Improving the Parsing System. In Proceedings of the NLPRS, pp. 719-724, 1998.

[10] 萩行正嗣, 河原大輔, 黒橋禎夫. 多様な文書の書き始 めに対する意味関係タグ付きコーパスの構築とその 分析. 自然言語処理, Vol. 21, No. 2, pp. 213-247, 2014.

[11] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. RoBERTa: A Robustly Optimized BERT Pretraining Approach. arXiv:1907.11692, 2019

[12] Ilya Loshchilov and Frank Hutter. Decoupled Weight Decay Regularization. In International Conference on Learning Representations, 2019.

[13] Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pierric Cistac, Tim Rault, Remi Louf, Morgan Funtowicz, Joe Davison, Sam Shleifer, Patrick von Platen, Clara Ma, Yacine Jernite, Julien Plu, Canwen Xu, Teven Le Scao, Sylvain Gugger, Mariama Drame, Quentin Lhoest, and Alexander Rush. Transformers: State-of-the-art natural language processing. In Proceedings of the $\mathbf{2 0 2 0}$ Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pp. 38-45, Online, October 2020. Association for Computational Linguistics.

[14] Pengcheng He, Xiaodong Liu, Jianfeng Gao, and Weizhu Chen. DeBERTa: Decoding-enhanced BERT with Disentangled Attention. In International Conference on Learning Representations, 2021.

見出し語 $\square$ 読み $\square$ 原形 $\square$ 代表表記

図 4 疑似データの作成例

## A 疑似データの例

図 4 に疑似データの作成例を示す. 元データの漢字表記の「公園」を，疑似データの入力と出力では それぞれかな表記の「こうえん」に置き換えている。

## B 実験設定の詳細

バッチサイズは 64 に設定し，最大で 30 エポッ ク学習した. 各エポックの終了時に, 開発データ に対する各コーパスごとの損失を計算し，その平均值が最も低いモデルを採用した。また，3エポッ ク連続で損失の改善が見られなければ学習を打ち 切った. オプティマイザには AdamW [12] を使用 し, 学習率は $5 e-4$ とした. またウォームアップの ステップ数を 250 に設定した，逆平方根学習率スケ ジューリングを採用した. 実装には Hugging Face ${ }^{22)}$ が提供する transformers [13] 及び Microsoft が提供す る DeepSpeed ${ }^{23)}$ を使用した。学習には NVIDIA A100 80GB 4 枚を使用し約 13 時間かかった. 推論時には ビーム幅 3 のビームサーチを行った.

## C KWJA 2.0 に向けて

本論文で提案した手法は統合的日本語解析器 KWJA 2.0 の形態素解析モジュールとして実装する 予定である. KWJA 1.0 から 2.0 におけるその他の変更点は以下のとおりである.

学習ベースの文分割 KWJA 1.0 では文分割を規則に基づく文分割器で行っていた. KWJA 2.0 では これを学習ベースの文分割器で置き換える。これに

22) https://huggingface.co/

23) https://github.com/microsoft/DeepSpeed
より，ウェブ上のテキスト等，くだけた表現に対し て頑健な文分割を実現する。

読みアノテーションの修正 JUMAN 系の解析器 $[4,5]$ では読みの同定は重視されておらず，コー パスのアノテーションにおいても，自動付与され た読みの修正は基本的に行わないとされていた。 KWJA が文脈に応じた読み推定を行えるようになっ たことを受けて，読みアノテーションの修正を進め ている.

## 汎用言語モデルにおける DeBERTa の採用 DeBERTa [14] は RoBERTa [11] に対して相対位置埋 め込みを含む種々の改善を施したモデルである. KWJA 2.0 では，汎用言語モデルとして RoBERTa の 代わりに日本語テキストで事前学習した DeBERTa を採用する。これにより，タスク全体の精度向上が 見込まれる。


# 最長一致パターンに基づく高速・高精度な日本語形態素解析

吉永 直樹
東京大学生産技術研究所
ynaga@iis.u-tokyo.ac.jp

## 概要

膨大な量のテキストを解析したり，言語処理応用 で大量にユーザのクエリを処理する場合，処理効率 の悪いモデルは高精度でも利用し難い. 本稿では高効率な手法の精度を改善すべく, 最長一致パターン に基づく高精度な形態素解析手法を提案する. 提案手法では，既存の辞書項目を元に，学習データから 抽出したパターンを用いて形態素解析を行う．実験 では，複数の品詞タグ付きコーパスと辞書を用いて 提案手法の評価を行い，最小コスト法や点推定に基 づく形態素解析手法の既存実装と同程度の精度, $1 / 2$ から $1 / 20$ 程度の消費メモリで，1,000,000 文/秒を超 える速度の形態素解析が可能なことを確認した. 本手法の実装（C++で約 1000 行）は以下で公開する. http://www.tkl.iis.u-tokyo.ac.jp/ ynaga/jagger

## 1 はじめに

Twitter や Zoom, Slack などのコミュニケーション プラットフォームの普及に従い，電子化された言語 データの量は爆発的に増加し続けており, 深層学習 によって高精度化された機械翻訳などの実サービス は数千万を超えるユーザを獲得するようになった。 このように，実世界テキストの量や実時間処理する ユーザクエリがこれまでになく増加する状況下で は，現実的な計算資源で運用できる効率の良い言語処理技術の重要度が高まっている。

しかしながら，深層学習の導入以降，精度に偏重 して研究が行われた結果，「効率の良い」手法 [1] は 他分野のように処理速度や消費メモリの限界を更新 するものではなく, 低速で消費メモリの大きい深層学習モデルの効率を, 深層学習の枠内で相対的かつ 限定的に改善するものが大半である. 結果, 最高精度のモデルと古典的ではあるが効率の良いモデルと の間の速度差は埋め難く, 深層学習を用いた高精度 の言語処理サービスは，膨大な GPU 資源を有する 一部の企業のみが展開するに留まっている.本研究では，遅いモデルの効率を改善するのでは なく，効率の良いモデルの精度を改善する，真に 「効率の良い」言語処理を実現すべく，機械学習を 経由しない単純で高精度な日本語形態素解析手法を 提案する. 日本語における形態素解析は，一般に，単語分割, 品詞解析, 見出し語化の混合タスクとし てモデル化されるが，我々の提案手法は，古典的な 最長一致法に基づく単語分割手法を拡張したもの で, 次の分割位置と切り出した単語の品詞・見出し 語を決定するパターンに基づき形態素解析を行う.解析に用いるパターンは形態素解析辞書の項目を シードとして，学習データから頻度に基づいて抽出 する。抽出したパターンはダブル配列 $[2,3]$ に格納 し，時空間効率の良い処理を実現する。

実験では，多様なドメインの標準コーパス $[4,5]$ と形態素解析辞書を組み合わせて提案手法の評価を 行った. その結果, 提案手法が，探索 (最小コスト 法) や分類 (点推定) に基づく実装 (MeCab, Vaporetto) と同程度の精度で，MeCab の約 15 倍，Vaporetto の 約 10 倍 (M2 MacBook Air で 1,000,000 文秒以上) の 速度で形態素解析を行えることを確認した。

## 2 パターンに基づく形態素解析

本節では，単語分割，品詞タグ付け，見出し語化 を同時に行う決定的な形態素解析手法を提案する.速度に妥協のない実装を得るため, 本研究では古典的な最長一致法 [6] を拡張した最長一致パターンに 基づく形態素解析アルゴリズムを提案する.

最長一致法は辞書 (単語の集合) に基づく決定的 な単語分割手法であり, 入力文字列の先頭から辞書中の単語と一致する最長の文字列を, 繰り返し単語 として認識することで単語分割を行う. 最長一致法 は，日本語や中国語の単語分割において，修正規則 と組み合わせることで高精度化できること $[7,8]$ が 知られているが，機械学習を用いた最小コスト法や 点推定などの標準的な単語分割手法 $[9,10]$ と比べる と分割精度には一定の差 [11] が存在する.

## 2.1 基本的なアルゴリズム

本節では, 単語分割, 品詞タグ付け, 見出し語化 ${ }^{1)}$ を同時に行う決定的な形態素解析アルゴリズム を提案する. Algorithm 1 は，与えられた文字列に対 し，トライに格納されたパターン $\mathscr{P}$ 繰り返し適用 して, 後続する単語 $w=\boldsymbol{c}_{i}^{i+\text { shift }}$ を切り出すと同時に 品詞 (と見出し語) を決定するアルゴリズムである.単語分割に対する最長一致法と同様に, 本手法でも 最長一致するパターンが選択・適用されるが，分割位置がパターン長と必ずしも一致しない点に注意さ れたい， 3 節で確認するように，この単純なアルゴ リズムは有効なパターン集合が用意できれば，最小 コスト法や点推定などの探索・分類ベースの手法に 匹敵する精度で動作する。

本手法は，系列ラベリングや組合わせ特徴に基づ く分類器における事前計算 $[9,12,13,14]$ に着想を得 ている。これらの効率的な実装では，事前計算した 特徴量の重みを，表層など単純な特徴の系列をキー として取得することで推論を行う．機械学習で用い る特徴量が単純なキー (パターン) に畳み込めるので あれば，直接，分類結果 (単語分割の有無, 品詞, 見出し語) に写像可能なパターン (特徴列) が存在し うるというのが本手法の基本的なアイデアである.

## 2.2 辞書に基づく特徵列パターンの抽出

最小コスト法 [9] や点推定 [10] を実装した形態素解析器の素性テンプレートを参考に, 本稿では提案手法のためのパターンテンプレートとして，分割位置以降の表層文字列 $\boldsymbol{c}_{p}$ と直前の単語の品詞 $t_{j-1}$ の 連結，すなわち $\boldsymbol{c}_{p} ; t_{j-1}($; は文字の連結) を採用した。

Algorithm 2 は, 形態素解析の学習データから特徵列パターンをマイニングするアルゴリズムである.単語分割, 品詞タグ及び見出し語が付与された学習

データ Dと単語がとりうる品詞タグ・見出し語を 定義した形態素解析辞書 $\mathscr{V}$ を力として, 本手法 は逐次的に特徴列パターンを学習データから抽出 する。

具体的にはまず，学習データ中の全ての単語分割位置に対し，その位置から次の分割位置以降までを 含む文字列 $\boldsymbol{c}_{i}^{i+k}$ を表層パターンとして抽出し, 直前 の単語の品詞タグ $t_{j-1}$ と組み合わせてパターン候補 を得る (4-8 行目). これらのパターン候補に対して，分割位置 (shift) ・品詞タグ $($ ・見出し語, 以後省略) $t$ の頻度を数えて，最多の分割位置・品詞タグをその パターンが適用されたときの分割位置・品詞タグと して採用する (12-13 行目). 冗長なパターンを枝刈 りするために，接頭文字列が同じで分割位置・品詞 タグが同じパターンについては，最も短いパターン のみを採用する (14-16 行目)。提案手法は最長一致法と比べて，後続文脈や前文脈品詞について追加の 走査が必要となるが，大きなオーバーヘッドとなら ないことを確認している.2)

## 3 実験

本節では提案手法を多様なドメインの形態素情報付きコーパス $[4,5]$ を用いて評価し，探索や分類に 基づく効率的な形態素解析手法 $[9,10]$ と速度，消費 メモリ，精度の観点で比較する。

2）Aho-Corasickライクな手法で表層について戻り読みのない 処理を行うことも可能だが，逆に処理速度が低下した。
表 1 評価データの統計.

## 3.1 設定

データセット 実験では新聞記事に注釈を付与し た京都大学テキストコーパス33) (куОто) [4] とウェブ ページの冒頭三文に注釈を付与した京都大学ウェブ 文書リードコーパス ${ }^{4}$ (KWDLC) [5]を用いた。開発・評価データとしては， github リポジトリに含まれる 分割を用い，残りを学習データに用いた (表 1).

比較モデル 本稿では，以下の実装を比較する。学習ベースのモデルではハイパーパラメタ $c^{5)}$開発データを用いて調整し，活用を含む品詞タグ (level 1-4)の $\mathrm{F}_{1}$ が最大となるモデルを評価に用いた.

Jagger は提案手法の C++実装であり，入力テキスト の先頭から後続する表層文字列と前文脈品詞に対し て特徴列パターンを繰り返し適用し, 決定的に単語分割, 品詞タグ付け, 見出し語化を行う. これらの パターンは学習データと辞書から抽出される。

$\mathbf{M e C a b}^{6}$ (は最小コスト法の $\mathrm{C}++$ 実装7)であり, 条件付き確率場 [15] により, 学習データからパラメタを 推定する [9]. 最小コスト法では，辞書に基づき可能 な分割と品詞の組み合わせをラティスで表現して，最尤となる分割・品詞を動的計画法で求める.

Vaporetto は点推定 [10]の Rust 実装9) である. 点推定 では，各文字間を分割候補とする二値分類により単語分割を行った後, 各単語に対して多クラス分類に より品詞タグ付けを行う. 公平な比較のために，単語特徴量には他の手法と同じ形態素解析辞書を用い る. Vaporettoでは単語の品詞候補ごとに分類器を学習しており，学習データに出現しない単語10)には，辞書中で最初に現れる品詞タグが付与される [16].

3) https://github.com/ku-nlp/KyotoCorpus

4) https://github.com/ku-nlp/KWDLC
5) $c=\{0.1,0.2,0.5,1.0,2.0,5.0,10.0\}$ を試した.

6) https://taku910.github.io/mecab/

7） $\mathrm{MeCab}$ の高速な再実装である Vibrato $\left.^{8}\right)$ は，今回用いた実験設定で品詞タグ付けまで行うと， MeCabより遅くメモリ 消費も大きかったため，比較しなかった.

8) https://github.com/daac-tools/vibrato

9) https://github.com/daac-tools/Vaporetto

10）学習データにも辞書にも出現しない単語には品詞タグが 付与されないため, 文献 [9]を参考にサ変名詞を割り当てた. なお，この処理にかかる時間は処理速度には含めない.表 2 形態素解析辞書の統計

なお, Rust と C++が生成するコードの実行速度は，多くのベンチマークで同程度 ${ }^{11)}$ である.

提案手法は，大域的な最適化を行う最小コスト法 よりは，局所的な最適化を行う点推定に近い手法で あるが，二つの点で異なる. まず，提案手法は全て の文字間に対して分割の有無を判定するのでなく, パターンに基づき，次の分割位置を決定する (分類問題としては次の分割位置を予測する多クラス分類 に相当)。また，提案手法では，単語分割，品詞タグ 付け (，見出し語化)を同時かつ決定的に行う.

形態素解析辞書 各手法が用いる辞書としては,形態素解析器 JUMAN ${ }^{12)}$ の辞書を MeCab 用に変換 したものを用いる。具体的には mecab-jumandic-5.120070304 と mecab-jumandic-7.0-20130310を，辞書の 質とカバレッジの影響を分析するために比較する。 このうち, jumandic-7.0ではウェブから自動獲得し た語彙 [17] が含まれており, 収録語数が 475,716 語 (jumandic-5.1) から 702,358 語 (jumandic-7.0) に増加 している. 品詞タグは 4 階層 (2 段階の品詞分類, 活用型, 活用形) からなる形態・統語論的なカテゴリ が付与されている (表 2).

評価方法 解析精度に関する評価尺度としては,既存研究 [9] に倣い，単語分割と品詞タグに関する 精度, 再現率, $\mathrm{F}_{1}$ 値を用いる. 処理効率の評価と しては，評価データを 1000 回コピーしたデータの 解析時間 (秒), 解析速度 (文秒), 最大消費メモリ (MiB)を/usr/bin/time - l コマンドにより 3 回計測 して，中央値となる処理時間 (速度) と，そのときの 最大消費メモリを報告する. 実験は $3.5 \mathrm{Ghz} \mathrm{CPU}$ と 主記憶 $24 \mathrm{~GB}$ を備えた M2 MacBook Air 上で行った. なお，付録 $\mathrm{C}, \mathrm{D}$ に単語分割のみの評価，及び深層学習に基づく形態素解析器との比較を載せた.

## 3.2 結果

表 3, 4 に кYото, кWDLC コーパスでの単語分割・品詞タグ付けの評価結果を示す. 我々の提案手法の 参照実装である Jaggerが，最小コスト法を実装した MeCab や点推定を実装した Vaporetto と遜色のない

11) https://github.com/kostya/benchmarks/

12) https://nlp.ist.i.kyoto-u.ac.jp/?JUMAN
表 3 куото コーパスの解析結果, $\mathrm{F}_{1}$ (precision/recall).

表 4 KWDLC コーパスの解析結果, $\mathrm{F}_{1}$ (precision/recall).

精度を示すと共に，MeCab の約 15 倍，Vaporetto の 約 10 倍高速，かつ MeCab の約 1/2, Vaporetto の約 1/20 程度の消費メモリで解析が行えている. Jagger が用いる特徴列パターンは枝刈り (Algorithm 2 の 14 行目) によって最小限に抑えられており, 機械学習 を経由せず，浮動小数点数で表現されるパラメタも 含まないことから，高効率となったと考えられる (他手法の学習に相当するパターンの抽出時間は 6 秒未満であった). MeCab の解析精度は辞書の性質 に依存し，jumandic-7.0を用いた場合，KWDLC で優れ た精度を示す一方で куото では単語分割精度が低下 している. Vaporetto は，学習データの多い куотоで は MeCab や Jagger より高精度だが，学習データの 少ない KWDLC では Jagger と同程度の精度に留まる。

表 5 に，学習データとは異なるドメインの評価 データを用いて各手法を評価したときの解析精度 を示す. 辞書に基づいて単語分割候補を列挙する最小コスト法 (MeCab) に対し，辞書を間接的に用いる 点推定 (Vaporetto) の解析精度が低く, 学習ドメイン に依存する点推定のリスクを示している. 提案手法 の実装である Jagger は MeCabよりは性能が低下し ているものの, Vaporetto ほどには性能が落ちておら ず，辞書と学習データの両方をバランスよく活用し た手法となっている. 提案手法は，辞書，あるいは パターンを追加する形で学習という余分なプロセス を経ずに処理を即座に変更することもできる。

## 4 まとめ

本稿では最速の言語処理技術を高精度化すべく，最長一致パターンに基づく高精度な形態素解析器を 提案した. 我々の手法は, 辞書中の単語をシードと して学習データから単語分割位置と品詞タグ (及び 見出し語)を決定するパターンを抽出し，最長一致 パターンを順次切り出す形で効率よく高精度の解析 を行う．複数の品詞タグ付きコーパスを用いた実験 により, 提案手法が最小コスト法や点推定の効率的 な既存実装に匹敵する解析精度を達成し, 同時に, ノート PCで $1,000,000$ 文秒という基礎解析として 望ましい解析速度を実現することを確認した。

今後は，深層学習により得られる埋め込み表現を 離散化してパターンに組み込むなどして，本論文の アプローチを他の言語処理タスクに応用したい.

## 謝辞

本研究は JSPS 科研費 JP21H03494 の助成を受けた ものです. Vaporettoの未知語処理に関する実装をご 教示くださった LegalOn Technologies の赤部晃一氏，本稿の草稿にコメントをくださった Rakuten Institute of Technology Americas の新里圭司氏に感謝いたし ます.

## 参考文献

[1] Marcos Treviso, Tianchu Ji, Ji-Ung Lee, Betty van Aken, Qingqing Cao, Manuel R. Ciosici, Michael Hassid, Kenneth Heafield, Sara Hooker, Pedro H. Martins, André F. T. Martins, Peter Milder, Colin Raffel, Edwin Simpson, Noam Slonim, Niranjan Balasubramanian, Leon Derczynski, and Roy Schwartz. Efficient methods for natural language processing: A survey, 2022.

[2] Jun'ichi Aoe. An efficient digital search algorithm by using a double-array structure. IEEE Transactions on Software Engineering, Vol. 15, No. 9, pp. 1066-1077, 1989.

[3] Naoki Yoshinaga and Masaru Kitsuregawa. A self-adaptive classifier for efficient text-stream processing. In Proceedings of COLING 2014, the 25th International Conference on Computational Linguistics: Technical Papers, pp. 1091-1102, Dublin, Ireland, August 2014.

[4] Sadao Kurohashi and Makoto Nagao. Building a Japanese parsed corpus. In Treebanks: Building and Using Parsed Corpora, pp. 249-260. Kluwer Academic Publishers, 2003.

[5] Masatsugu Hangyo, Daisuke Kawahara, and Sadao Kurohashi. Building a diverse document leads corpus annotated with semantic relations. In Proceedings of the 26th Pacific Asia Conference on Language, Information, and Computation, pp. 535-544, Bali, Indonesia, November 2012.

[6] Masaaki Nagata. A stochastic Japanese morphological analyzer using a forward-DP backward-A* $n$-best search algorithm. In COLING 1994 Volume 1: The 15th International Conference on Computational Linguistics, Kyoto, Japan, August 1994.

[7] David D. Palmer. A trainable rule-based algorithm for word segmentation. In 35th Annual Meeting of the Association for Computational Linguistics and 8th Conference of the European Chapter of the Association for Computational Linguistics, pp. 321-328, Madrid, Spain, July 1997.

[8] Julia Hockenmaier and Chris Brew. Error-driven learning of Chinese word segmentation. In Proceedings of the 12th Pacific Asia Conference on Language, Information and Computation, pp. 218-229, Singapore, February 1998.

[9] Taku Kudo, Kaoru Yamamoto, and Yuji Matsumoto. Applying conditional random fields to Japanese morphological analysis. In Proceedings of the $\mathbf{2 0 0 4}$ Conference on Empirical Methods in Natural Language Processing, pp. 230-237, Barcelona, Spain, July 2004.
[10] Graham Neubig, Yosuke Nakata, and Shinsuke Mori. Pointwise prediction for robust, adaptable Japanese morphological analysis. In Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies, pp. 529533, Portland, Oregon, USA, June 2011.

[11] Manabu Sassano. Deterministic word segmentation using maximum matching with fully lexicalized rules. In Proceedings of the 14th Conference of the European Chapter of the Association for Computational Linguistics, volume 2: Short Papers, pp. 79-83, Gothenburg, Sweden, April 2014.

[12] Nobuhiro Kaji, Yasuhiro Fujiwara, Naoki Yoshinaga, and Masaru Kitsuregawa. Efficient staggered decoding for sequence labeling. In Proceedings of the 48th Annual Meeting of the Association for Computational Linguistics, pp. 485-494, Uppsala, Sweden, July 2010.

[13] Naoki Yoshinaga and Masaru Kitsuregawa. Kernel slicing: Scalable online training with conjunctive features. In Proceedings of the 23rd International Conference on Computational Linguistics (Coling 2010), pp. 12451253, Beijing, China, August 2010.

[14] 赤部晃一森信介. Vaporetto: 点予測法に基づく高速 な日本語トークナイザ. 言語処理学会 第 28 回年次大会 発表論文集, pp. 256-261, 2022.

[15] Percy Liang, Hal Daumé, and Dan Klein. Structure compilation: Trading structure for features. In Proceedings of the 25th International Conference on Machine Learning, ICML '08, p. 592-599, New York, NY, USA, 2008.

[16] 森信介, 中田陽介, Neubig Graham, 河原達也. 点予測 による形態素解析. 自然言語処理, Vol. 18, No. 4, pp. 367-381, 2011.

[17] Yugo Murawaki and Sadao Kurohashi. Online acquisition of Japanese unknown morphemes using morphological constraints. In Proceedings of the $\mathbf{2 0 0 8}$ Conference on Empirical Methods in Natural Language Processing, pp. 429-437, Honolulu, Hawaii, October 2008.

[18] 工藤拓. 形態素解析の理論と実装. 近代科学社, 2018.

[19] Huidan Liu, Minghua Nuo, Longlong Ma, Jian Wu, and Yeping He. Compression methods by code mapping and code dividing for Chinese dictionary stored in a doublearray trie. In Proceedings of 5th International Joint Conference on Natural Language Processing, pp. 1189-1197, Chiang Mai, Thailand, November 2011.

[20] Arseny Tolmachev, Daisuke Kawahara, and Sadao Kurohashi. Juman++: A morphological analysis toolkit for scriptio continua. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pp. 54-59, Brussels, Belgium, November 2018.

[21] Hajime Morita, Daisuke Kawahara, and Sadao Kurohashi. Morphological analysis for unsegmented languages using recurrent neural network language model. In Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, pp. 2292-2297, Lisbon, Portugal, September 2015.
表 6 JUMAN++との比較, $\mathrm{F}_{1}$ (precision/recall).

## A 未知語処理

最小コスト法と同様に, 提案手法でも辞書・学習 データに含まれない未知語の扱いは，問題となる。現在の実装では, 既存手法 [9] と同様に, 文字種に 基づいて，数字，アルファベット，カタカナを連結 する単純な未知語処理を実装している。具体的に は，連続する数字，アルファベットはそれぞれ単純 に連結し，連続するカタカナ語については，単語の 合計長が一定サイズ以下のときに連結する。いずれ の場合も，前文脈品詞，および連結する末尾の語に 対するパターンに基づき品詞を割り当てる.

## B 実装上の工夫

Jagger の C++実装には，MeCab で用いられている ゼロコピーや mmap [18], J.DepP ${ }^{13)}$ でも用いられて いるキャッシュ効率化のための頻度順 ID[19] に加え て, Vaporetto や Vibrato で用いられている文字単位 で遷移するダブル配列を利用している。文字単位の ダブル配列には，バイト単位で遷移する動的ダブル 配列 cedar ${ }^{14)}$ に軽微な修正を加えたものを用いた。

## C 単語分割のみの処理効率の比較

品詞タグ付けに対するアプローチ（未知語処理,見出し語化への対応）の違いから, MeCab / Jagger と Vaporetto を形態素解析器として厳密な意味で公平に比較することは困難である。 そこで，各実装で jumandic-7.0を用いて，単語分割のみを行い，処理速度・消費メモリを比較した。なお，MeCab, Jagger については表 3,4 と同じモデルを用いた. Vaporetto については，省メモリ化のため単語分割のみの学習 データから, 単語リストとして辞書を与えて, 単語分割のみを行うモデルを再学習した ${ }^{15)}$.

表 7 単語分割の処理効率 (辞書: jumandic-7.0).

表 7 に， 3.1 節の評価方法に倣って計測した単語分割の処理効率を示す. 表で UTF-8 split は，UTF-8 で符号化された評価データを文字ごとに分割して 出力する処理である. Vaporetto の処理効率が改善し ているが，(モデルの読み込みのオーバーヘッド (約 1.7 秒) 点を考慮しても) 提案手法による処理の方が 高速かつ省メモリである.

## D ニューラル形態素解析との比較

現時点で最高精度の日本語形態素解析器である JUMAN++-V2 [2016) との比較を行った. モデルは,表 1 と同じ学習データから公式スクリプト ${ }^{17)}$ 及び，学習コーパスに対し最適化されたハイパーパラメタ を用いて学習した。なお，JUMAN++は，Wikipedia から抽出した辞書と大規模コーパスから訓練された RNN 言語モデルを追加で用いており, 精度の観点 では Jagger に不利で，速度の観点では JUMAN++に 不利な比較となっている点に注意されたい。

表 6 に jumandic-7.0 を辞書に用いた Jagger と比較 した結果を示す. Jagger と JUMAN++の解析精度の 差は, 品詞タグ付けでは大きいが単語分割では $1 \%$ 以内に収まっている。JUMAN++-V2 は JUMAN++ [21] に対して 250 倍の高速化を達成したと報告されてい るが，Jagger はその JUMAN++-V2 よりさらに 180 倍以上高速で，1/7 以下の消費メモリであった.

16) https://github.com/ku-nlp/jumanpp

17) https://github.com/ku-nlp/jumanpp-jumandic


# 最小コスト法に基づく形態素解析における CPU キャッシュの効率化

神田峻介 1 赤部晃一 1 後藤啓介 1 小田悠介 ${ }^{2}$
${ }^{1}$ LegalOn Technologies Research ${ }^{2}$ 東北大学 データ駆動科学・AI 教育研究センター
\{shunsuke.kanda, koichi.akabe, keisuke.goto\}@legalontech.jp
yusuke.oda.c1@tohoku.ac.jp

## 概要

最小コスト法に基づく形態素解析において、木の 探索やコスト行列の参照により発生するランダムア クセスは、CPU キャッシュ効率低下の原因となる。本稿では、参照の局所性を改善するデータ構造を提案し、解析速度の改善を図る。実験の結果、提案法 を適用しなかった場合と比べ、提案法は $40 \%$ 程度の 時間短縮を達成した。また、提案法を組み込んだ形態素解析器 Vibrato $^{1)}$ を新たに開発し、既存のソフト ウェアよりも高速に動作することを実証した。

## 1 はじめに

形態素解析は、自然言語を大力とし、形態素の列 を返す処理である。日本語の情報検索やテキストマ イニングなどの自然言語処理において、形態素解析 は重要な前処理である。形態素解析を実現する代表的な手法の 1 つに最小コスト法 [1] があり、MeCab [2] や Sudachi [3] などの形態素解析器で利用されて いる。

最小コスト法の時間的ボトルネックの一つに、辞書の肥大化に伴う CPU キャッシュ効率の低下が挙 げられる。単語列挙のための木構造の探索や、コス 卜計算のための行列参照では、メモリ上のランダム アクセスが頻繁に発生する。巨大な辞書では、この ランダムアクセスがキャッシュミスを引き起こし、速度低下の原因となる。

本稿では、参照の局所性の良いデータ構造を設計し、キャッシュ効率を改善することで最小コス トの高速化を達成する。IPADIC [4] や Neologd [5]、 UniDic [6, 7] を使った実験により、その有効性を実証する。実験の結果、提案法を適用しなかった場合 と比べて、提案法は $40 \%$ 程度の高速化を達成した。

図 1 入力文「元気になった」についての形態素ラティ ス。太線はコストの和が最小となる経路を表す。

また、提案法を実装した形態素解析器 Vibrato を 新たに開発した。実験により、Vibrato は MeCab の 2 倍以上の速度性能であることを実証する。

## 2 最小コスト法

## 2.1 アルゴリズム

最小コスト法は、以下の手順により入力文から形態素列2)を得るアルゴリズムである。

1. 入力文に現れる形態素をノードとしたグラフ構造（形態素ラティス）を構築

2. コストが最小となる経路を探索し、対応する形態素列を出力

図 1 に入力文「元気になった」から構築された形態素ラティスを示す。BOS と EOS は、文の先頭と 末尾を表すダミーのノードである。形態素に対応す るノードと形態素の並びの対応するエッジにはコス トが割り当てられる。ノードのコストは、その形態素自体の出現しやすさを表す。エッジのコストは、 その形態素の並びの出現しやすさを表す。以降で は、形態素辞書やコスト値は所与として各手順を説明する。

形態素ラティスの構築 入力文が与えられたと き、形態素ラティスは以下のように構築される。

2）本稿では、辞書のエントリを形態素と呼ぶ。

1. 入力文に現れる形態素を列挙（辞書引き）

2. 形態素をノードとして、文の位置について隣り 合うノード同士をエッジで連結

辞書引きはトライ [8] という木構造を使って効率的に計算できる。詳しくは 3 節で解説する。

経路の探索形態素ラティスの BOS から EOS ま でを繋ぐ、コストの和が最小となる経路を探索す る。そして、その経路に対応する形態素列を解とし て出力する。例えば、図 1 では太線の経路が該当す る。そのような経路は、ビタビアルゴリズム [9]を 用いてエッジ数に線形の時間で計算できる。

## 2.2 高速化の方針

本研究では、最小コスト法のボトルネックは以下 の 2 点であると指摘し、これらを解消することで解析速度の改善を試みる。

$\cdot$辞書引きでのトライの探索
- 経路探索中のコストの参照

これらに共通する点は、メモリ上の頻繁なランダ ムアクセスである。巨大な辞書では、このランダム アクセスがキャッシュミスを引き起こし、速度低下 の原因となる。そこで、それぞれに参照の局所性が 良いデータ構造を設計する。詳しくは、 3 節と 4 節 で解説する。

## 3 辞書引きのキャッシュ効率化

## 3.1 事前知識

多くの形態素解析器では、トライ [8]を使った共通接頭辞検索により辞書引きを実現する。トライと は文字列の接頭辞を併合して構築される木構造で あり、図 2 に見られるようにエッジにラベルを付随 したオートマトンの一種である。共通接頭辞検索と は、あるクエリ文字列の接頭辞として現れる登録文字列を列挙する操作であり、文字を使って根から ノードを遷移することで実現される。形態素をトラ イに登録し、入力文の全ての開始位置から共通接頭辞検索を実行することで辞書引きは実現される。

トライを表現するデータ構造としてはダブル配列 [10] が広く用いられている。ダブル配列とは、ノー ドからノードへの探索を定数時間で実現する高速な データ構造である。入力文の長さを $N$ 、登録形態素 の最大長 $K$ としたとき、ダブル配列を使った場合の 辞書引きの実行時間は $O(N K)$ である。

図 2 形態素「元気」「活気」を登録したトライ。文字列 のエンコードが Unicode である場合の、上図は Bytewise で表現した例、下図は Charwise で表現した例を示す。

## 3.2 背景と問題点

ダブル配列の代表的な実装として、Darts ${ }^{3}$ や Darts-clone ${ }^{4}$ があり、MeCab や Sudachi などで用いら れている。これらの共通点として、文字列をその データ表現のバイト列として扱う点が挙げられる。 この方法を Bytewise と表記する。図 2 の上部に例 を示す。

Bytewise の利点は、文字列のエンコードに関わら ずバイト列として処理できることと、エッジラベル の種類数の上限が 256 に定まることである。これら は実装の汎用性や容易さに関係する。

Bytewise の欠点は、日本語などのマルチバイト文字を扱う場合にバイト列が長くなることである。図 2 の例では、Unicode で符号化された長さ 2 の形態素「元気」が、長さ 6 の UTF-8 バイト列として表現されている。これは「元気」を検索するときに 6 回のランダムアクセスが必要となることを意味し、 キャッシュミス増加の原因となる。

## 3.3 改善案

文字列を Unicode のコードポイント値の系列とし て処理する。この改善案を Charwise と表記する。図 2 の下部に例を示す。

日本語の多くの文字は UTF-8 で 3 バイトを使って 表現される。そのような文字について、Charwise で は Bytewise に比べランダムアクセスの回数を 3 分の 1 に削減できる。ダブル配列では定数時間でノード の探索ができるので、計算量にも影響は無い。

Charwise の実装上の注意点は、エッジラベルの種類数が大きくなる点である。コードポイント值は U+0000 から U+10FFFF までの 110 万種類を扱う。そ のようなダブル配列は、素朴に実装すると構築速度 やメモリ効率が低化する [11]。そこで、コード值を

3) http://chasen.org/ taku/software/darts/

4) https://github.com/s-yata/darts-clone
頻度順に割り当て直すことで、多くのコード値が小 さい値になるように修正する。自然言語において文字の出現頻度には偏りがあるため、この修正で問題 が解消されることが経験的に知られている [11]。

## 4 コスト参照のキャッシュ効率化

## 4.1 事前知識

形態素ラティスのエッジに付随したコストを連接 コストとよぶ。連接コストは左側と右側ノードの素性情報のぺアによって決定される。具体的には、形態素には左文脈 ID と右文脈 ID が割り当てられ、そ れら IDのペアによって連接コストは決定される。

本稿では、左文脈 ID の集合を $X=\{0,1, \ldots,|X|-$ 1\}、右文脈 ID の集合を $Y=\{0,1, \ldots,|Y|-1\}$ と定義 する。連接コストは $|X| \times|Y|$ の連接表 $M$ に保存さ れ、文脈 $\operatorname{ID~ペア~}(x, y) \in X \times Y$ の連接コスト値は表 $M$ の $(x, y)$ 成分 $M[x, y]$ に格納される。 $M$ は単純な 二次元配列で実装され、 $M[x, y]$ には値 $x, y$ を使っ て定数時間でアクセスできる。

## 4.2 背景と問題点

現代書き言葉 UniDic [7] では素性を詳細に設計し ており、結果として連接表が肥大化している。例え ば、IPADIC v2.7.0 では $|X|=|Y|=1,316$ で連接表の サイズは高々 $3.3 \mathrm{MiB}$ である。5)それに対し、UniDic v3.1.0 では $|X|=15,388,|Y|=15,626$ で連接表のサ イズは $459 \mathrm{MiB}$ にもなる。事前実験（付録 A）では、解析時間は連接表のサイズに比例して増加する傾向 が見られており、参照の局所性の悪化が解析速度の 低下の原因になると考察される。

## 4.3 改善案

訓練コーパスを用いて文脈 ID の使用頻度を収集 し、よく使用される順に若い文脈 IDを割り当て直 す。この方法により、頻繁に使用される連接コスト 値がメモリ上で近接する。使用頻度に大きな偏りが ある場合、参照の局所性が改善する。図 3 に例を 示す。本稿では、標準の文脈 ID を使用する場合を Default、頻度順にマッピングする場合を Mapped と 表記する。

頻繁に使われる連接コスト

図 3 文脈 IDを頻度順に割り当て直した例。ある左文脈 ID $x_{i}$ に対応する行と、 $x_{i}$ について右文脈 ID $y_{1}, y_{2}, y_{3}$ の順 でコスト値を参照した様子を図示している。 $x_{i}^{\prime}, y_{j}^{\prime}$ は頻度順に割り当て直された文脈 IDを表す。 $y_{1}, y_{2}, y_{3}$ が頻繁に 使用される文脈 IDであった場合、 $y_{1}^{\prime}, y_{2}^{\prime}, y_{3}^{\prime}$ は小さい値と なる。つまり、その連接コスト值は行の先頭付近に密集 し、参照の局所性は改善する。

表 1 辞書の統計

## 5 実験

## 5.1 実験設定

形態素解析用の辞書は以下の 4 種類を評価した。
- ipadic-mecab (v2.7.0) [4]
- ipadic-neologd (2020-09-10) [5]
- unidic-mecab (v2.1.2) [6]
- unidic-cwj (v3.1.0) [7]

文章コーパスには BCCWJ v1.1 $[12,13]$ を使用し た。マッピングの訓練にはコアデータ $60 \mathrm{k}$ 文を使用 した。形態素解析の速度評価には、サブコーパスか らランダムに抽出した $100 \mathrm{k}$ 文を使用した。

手法の実装にはプログラミング言語 Rust を用 いた。コンパイルに使用した rustc はv1.63.0であ り、最適化フラグは opt-level=3 である。計算機環境は、Intel Core i9-12900K @ 3.2-5.2GHz CPU (Cacheline: 64B, L1d: 640KiB, L2: 14MiB, L3: 30MiB), 64GiB RAM であり、OS は Ubuntu 22.04 である。実験は全 てシングルスレッドで実施した。ダブル配列につ いて、Bytewise の実装には Yada v0.5.06)を用いた。

6) https://github.com/takuyaa/yada
表 2 各手法を適用した場合の解析時間 [ms]。括弧内の 数値は Bytewise+Default からの変化率を表す。

 &  &  \\

mecab-neologd & 538 & $479(-11.1 \%)$ & $467(-13.3 \%)$ \\
unidic-mecab & 616 & $567(-8.0 \%)$ & $499(-19.0 \%)$ \\
unidic-cwj & 1,012 & $949(-6.3 \%)$ & $587(-42.1 \%)$ \\

表 3 L1 キャッシュへのデータ読み込みにおけるキャッ シュミス回数 $\left[10^{6}\right]$ 。括弧内の数値は Bytewise+Default か らの変化率を表す。

 &  &  \\

ipadic-neologd & 86.0 & $79.9(-7.1 \%)$ & $56.3(-34.6 \%)$ \\
unidic-mecab & 136.1 & $130.3(-4.3 \%)$ & $71.4(-47.5 \%)$ \\
unidic-cwj & 231.8 & $226.3(-2.4 \%)$ & $104.6(-54.9 \%)$ \\

Charwise の実装には Crawdad v0.3.07)を用いた。

## 5.2 提案法の分析

提案法の Charwise と Mapped を用いた場合の解析速度を評価する。評価データ $100 \mathrm{k}$ 文の解析に要し た時間を表 2 に示す。結果は 10 回試行した平均で あり、結果中に示す「変化率」は、变化先-変化元 で算出した值である。

文脈 ID が Default の場合での Bytewise と Charwise の解析時間を比較する。全ての辞書で Charwise が 高速であり、IPADIC では $10 \%$ 以上の改善が確認さ れた。一方で、巨大な連接表を持つ unidic-cwjでは、相対的にコスト参照のボトルネックの方が大きく、 6.3\%の改善に留まった。

続いて、文脈 ID の割り当てを Mapped に変更した 場合と比較する。全ての辞書で Mapped が高速であ り、特に連接表が最も大きい unidic-cwj では $42.1 \%$ の大きな改善が確認された。

表 3 に、評価データ $100 \mathrm{k}$ 文の解析時に発生した、 L1 データキャッシュへの読み込み時のキャッシュ ミス回数を示す。計測には perf コマンドを使用し、結果は 100 回試行した平均である。

全ての場合において、提案法によりキャッシュ ミスの回数が削減している。Charwise 適用時には ipadic-neologd で、Mapped 適用時には unidic-cwj で 改善率が最も大きく、提案法が巨大な辞書について 効果的であることが確認できる。

これらの結果から、最小コスト法に基づく形態素解析器において、辞書引きとコスト参照のキャッ

表 4 形態素解析器の比較実験の結果。

シュ効率は解析速度に大きな影響を与えることが 確認された。特に連接表が巨大な場合、コスト参照 にかかる時間の割合が大きく、コスト参照のキャッ シュ効率改善が解析の高速化に有効であった。

## 5.3 形態素解析器の比較

提案法の実装である Vibrato の速度性能を、既存 の形態素解析器と比較し評価する。比較したソフト ウェアは以下の 4 種類である。
- Vibrato v0.1.2
- MeCab v0.996 ${ }^{8}$
- Lindera v0.16.19)
- sudachi.rs v0.6.4-a $1^{10)}$

Vibrato と MeCab は ipadic-mecab と unidic-cwjを用 いて評価した。Lindera はライブラリでサポートさ れている ipadic-mecab と unidic-mecabを用いて評価 した。 sudachi.rs は形態素解析器 Sudachi [3] の Rust 移植であり、辞書には SudachiDict-core ${ }^{11)}$ を用いて評価した。計測には tokenizer-speed-bench ${ }^{12)}$ を用いた。

表 4 に結果を示す。IPADIC とUniDic の両方の ケースについて、Vibrato が最速であることが確認 できた。二番目に高速な $\mathrm{MeCab}$ と Vibrato を比較し て、IPADIC で 2.1 倍、UniDic で 2.3 倍高速である。

## 6 おわりに

本稿では、形態素解析の高速化を目的とし、最小 コスト法のキャッシュ効率化技法を提案した。実験 により提案法の有効性を実証した。また、提案法を 実装した形態素解析器 Vibrato を開発し、その速度性能を実証した。今後は機能面と性能面について、 Vibrato のさらなる改良を予定している。

## 参考文献

[1] 久光徹, 新田義彦. 接続コスト最小法による日本語形態素解析. 全国大会講演論文集, 人工知能及び認知科学, pp. 1-2, 1991.

[2] Taku Kudo, Kaoru Yamamoto, and Yuji Matsumoto. Applying conditional random fields to japanese morphological analysis. In Proceedings of the $\mathbf{2 0 0 4}$ conference on empirical methods in natural language processing, pp. 230-237, 2004.

[3] Kazuma Takaoka, Sorami Hisamoto, Noriko Kawahara, Miho Sakamoto, Yoshitaka Uchida, and Yuji Matsumoto. Sudachi: a japanese tokenizer for business. In Proceedings of the 11th International Conference on Language Resources and Evaluation, 2018.

[4] Masayuki Asahara and Yuji Matsumoto. ipadic version 2.7.0 User's Manual. https://ja.osdn. net/projects/ ipadic/docs/ipadic-2.7.0-manual-en. pdf, 2003.

[5] 佐藤敏紀, 橋本泰一, 奥村学. 単語分かち書き辞書 mecab-ipadic-neologd の実装と情報検索における効果的な使用方法の検討. 言語処理学会第 23 回年次大会 (NLP2017), pp. NLP2017-B6-1. 言語処理学会, 2017.

[6] 伝康晴, 小木曽智信, 小椋秀樹, 山田篤, 峯松信明, 内元清貴, 小磯花絵. コーパス日本語学のための言語資源 : 形態素解析用電子化辞書の開発とその応用. 日本語科学, Vol. 22, pp. 101-123, 2007.

[7] 岡照晃. CRF 素性テンプレートの見直しによるモ デルサイズを軽量化した解析用 UniDic — unidiccwj-2.2.0 と unidic-csj-2.2.0 一. 言語資源活用ワーク ショップ 2017 発表予稿集, 143-152.

[8] 青江順一. キー検索技法-IV: トライとその応用. 情報処理, Vol. 34, No. 2, 1993.

[9] Andrew Viterbi. Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. IEEE transactions on Information Theory, Vol. 13, No. 2, pp. 260-269, 1967.

[10] Jun'ichi Aoe. An efficient digital search algorithm by using a double-array structure. IEEE Transactions on Software Engineering, Vol. 15, No. 9, pp. 1066-1077, 1989.

[11] Huidan Liu, Minghua Nuo, Longlong Ma, Jian Wu, and Yeping He. Compression methods by code mapping and code dividing for chinese dictionary stored in a doublearray trie. In Proceedings of 5th International Joint Conference on Natural Language Processing, pp. 1189-1197, 2011.

[12] 前川喜久雄. 代表性を有する大規模日本語書き言葉 コーパスの構築 (<特集>日本語コーパス). 人工知能, Vol. 24, No. 5, pp. 616-622, 2009.

[13] 国立国語研究所コーパス開発センター. 『現代日本語書き言葉均衡コーパス』利用の手引第 1.1 版. https://clrd.ninjal.ac.jp/bccwj/doc.html, 2015.

図 4 右文脈 ID の使用頻度上位 100 件の割合。値は累積 を表し、上位 $k$ 番目の値は 1 番目から $k$ 番目までの割合 の合計である。ipadic-neologd の結果は ipadic-mecab と僅差だったため省略している。

表 5 ダブル配列の実装を変化させた場合の解析時間 $[\mathrm{ms}]$ 。括弧内の数値は Default からの変化率を表す。

## A コスト参照についての事前実験

文脈 ID の使用頻度の調査. 文脈 ID の使用頻度の偏り について調査する。各辞書について、訓練用テキストを 解析したときの文脈 ID の使用頻度を算出した。右文脈 ID の使用頻度上位 100 件について、その割合を図 4 に示 す。 ${ }^{13)}$ 文脈 ID の使用頻度に大きな偏りが確認された。例 えば、右文脈 ID が $15 \mathrm{k}$ 種類も定義されている unidic-cwj

ボトルネックの調査. 巨大な連接表がボトルネックなの かを検証するために、連接表へのアクセスを完全に排除 し、連接コスト値を全て0 として解析した場合（Ideal）の 結果とも比較する。表 5 に実験結果を示す。unidic-cwjで 解析時間が $57 \%$ 短縮した。定数時間の配列参照を取り除 いただけの簡単な修正であることから、巨大な連接表へ の参照がいかにボトルネックであるかが推察できる。

## B 訓練データに関する調査

文脈 ID の使用頻度について、均衡コーパスを用いて算出した場合と、ドメインに特化したコーパスを用いて算出した場合を比較し、訓練コーパスにより Mapped の性能 が変化するのかを調査する。

実験設定. BCCWJ サブコーパスは、新聞 (PN) や Yahoo!知恵袋（OC）などの 13 カテゴリから構成される [13]。各 カテゴリから $10 \mathrm{k}$ 文ずつをサンプルし、13 種類の評価用 データを構築する。そして、各カテゴリについて、以下の 2 つの方法でマッピングを訓練し、解析時間を比較する。

・均衡データ：BCCWJ コアデータからサンプルし得ら れた 10k 文で訓練

・カテゴリ別 : 各カテゴリの評価用テキスト $10 \mathrm{k}$ 文に ついて 5 分割交差検証

辞書には unidic-cwj を使用する。計算機環境など、その 他の実験設定は 5 節と同じである。

13）左文脈 ID の結果も大差は確認されなかった。

図 5 カテゴリ別の評価データについての解析時間。

表 6 各コーパスについて、頻繁に使用された右文脈 ID の上位 10 件。PN は新聞、LB は書籍、OC は Yahoo!知恵袋。ID unidic-cwj で定義されている標準のものを表示。

解析時間に関する結果. 13 カテゴリについて、評価デー タ $10 \mathrm{~K}$ 文の解析に要した時間を図 5 に示す。訓練データ をドメインに特化しても、解析時間は大きく変化しない ことが確認された。

高頻度な文脈 ID に関する分析. コアデータといくつか のカテゴリで頻繁に使用された右文脈 ID の上位 10 件を 表 6 に示す。上位 7 件まではどのコーパスでも同一で、カ テゴリによって使用される文脈 ID に大差は無い。

これらの右文脈 ID に対応した素性列を図 7 に示す。頻出 ID は品詞などの一部の情報によって識別可能な形態素 に割り当てられている。そして、そのような形態素はド メインを問わずコーパスの大部分を占めている。

これらの結果は、「幅広いドメインのテキストを解析 するために、均衡データから訓練したマッピングを一つ 持っておけば十分である」ということを示唆している。 つまり辞書を配布する場合、 1 種類のマッピング適用済 みの辞書を配布すればよい。

表 7 unidic-cwj で頻繁に使用された素性列の例。


# 自己注意機構における注意の集中が相対位置に依存する仕組み

山本悠士 松崎拓也
東京理科大学 理学部第一部 応用数学科
1419096@ed.tus.ac.jp
matuzaki@rs.tus.ac.jp

## 概要

自己注意機構において各トークンは自身の周辺の トークンに注意を集中させる傾向がある。これによ り，各トークンの出力ベクトルは周辺のトークンか らの影響を受け，ニューラル言語モデルは文脈に依存した単語埋め込みを出力できると考えられる。

本研究では，自己注意機構において各トークンが 周辺のトークンに注意を集中させるメカニズムを分析する。結果として，自己注意機構は中間層の隠れ 状態から位置埋め込みの成分をトークンの位置に関 して周期的な波形として抽出し，その波形の位相が ずれる方向に注意を集中させていることを示す.

## 1 はじめに

自然言語処理のタスクを高精度で実行するために は，文脈を捉えることが不可欠である。例えば，回帰型ニューラルネットは時系列順に単語埋め込みを 入力することで，畳み込みニューラルネットは周辺 の単語埋め込みを集約することで文脈を捉えてい る。一方，Transformer [1] には単語の位置に依存し た処理がモデル内部に存在せず，代わりに単語埋め 込みに位置埋め込みを加えたものを入力する。

アテンション重み(式 (4))を観察することは，自己注意機構の推論過程を解釈する手がかりとなる [2] [3].このような分析により，自己注意機構にお いて各トークンは自身の周辺に注意を向ける傾向が 確認されている [4]. この現象は，自己注意機構が 位置に依存しない構造をしているにも関わらず，位置に基づいた推論をしていることを示している.

本研究では，学習に基づく位置埋め込みを用いた 自己注意機構に次の性質があることを示す.
- 自己注意機構は，学習された位置埋め込みに存在する周期性を隠れ状態から抽出できる。

・時系列として見たクエリとキーの間には位相に ズレが存在し，注意はこのズレの方向に向く.以上から，注意が相対位置に依存して集中する現象 は，自己注意機構が位置埋め込み由来の周期的な成分を利用することで引き起こされていると言える.

以下，本論文では，2 節で Transformer とその派生 モデルの構成について，3節で注意が相対位置に依存するメカニズムについて述べる。具体的には，ま ず，注意が相対位置に依存する事実と位置埋め込み の周期性を確認する。次に，自己注意機構内のクエ リとキーの共通点と相違点を分析し，それらと注意 の方向の関係を示す. 最後に，4 節で結論を述べる.

## 2 Transformer のアーキテクチャ

## 2.1 位置埋め込み

本節では Transformer，BERT [5] および RoBERTa [6] の位置埋め込みについて説明する。 入力文の トークン数を $T$, 埋め込みを $d$ 次元べクトルとする と，位置埋め込みは $T \times d$ 行列として定義される。位置埋め込みの各列はトークン位置方向の時系列と みなせることに留意されたい。

Transformer の位置埋め込みは，トークンの位置を pos とするとき，各成分が式 (1-2) で定義される.

$
\begin{aligned}
P E_{(p o s, 2 i)} & =\sin \left(\text { pos } / 10000^{2 i / d}\right) \\
P E_{(p o s, 2 i+1)} & =\cos \left(\text { pos } / 10000^{2 i / d}\right)
\end{aligned}
$

Vaswani らは，式 (1-2) に回転行列を掛けると位置 posをずらすことができ，この性質が相対位置に基 づく注意を学習するように促すと推測した [1].

$
\left[\begin{array}{cc}
\cos \theta & \sin \theta \\
-\sin \theta & \cos \theta
\end{array}\right]\left[\begin{array}{c}
\sin x_{i} \\
\cos x_{i}
\end{array}\right]=\left[\begin{array}{c}
\sin \left(x_{i}+\theta\right) \\
\cos \left(x_{i}+\theta\right)
\end{array}\right]
$

一方，BERT の位置埋め込みは $T \times d$ 行列のパラ メータとして定義され，平均 0 ，標準偏差 0.02 の正規分布に従う乱数で初期化した状態から学習され る. RoBERTa は，BERT とアーキテクチャは同一だ が，事前学習の手法が改善されている。特に，BERT は事前学習の $90 \%$ を 128 トークンという短い文章

で学習しているのに対して，RoBERTa は常に最大長 である 512 トークンの文章で学習しているため, 長文に対応することができる。 そこで，本研究では各位置での学習回数の偏りがない RoBERTaを用いた.

## 2.2 マルチヘッド自己注意機構

RoBERTa の各層にあるマルチヘッド自己注意機構は，各層のヘッド数を $n$ とするとき，第 $l$ 層の隠れ状態 $X_{l} \in \mathbb{R}^{T \times d}$ とパラメータ行列 $W_{l h}^{Q}, W_{l h}^{K}, W_{l h}^{V} \in \mathbb{R}^{d \times(d / n)}(h=1, \ldots, n), W_{l}^{O} \in \mathbb{R}^{d \times d}$ により次のように定義される. 以降，第 $l$ 層の $h$ 番目のヘッドを head $(l, h)$ と略記する.

$
\begin{aligned}
A_{l h} & =\operatorname{softmax}\left(\frac{X_{l} W_{l h}^{Q}\left(X_{l} W_{l h}^{K}\right)^{T}}{\sqrt{d / n}}\right) \\
V_{l h} & =A_{l h} X_{l} W_{l h}^{V} \\
\text { MultiHead }_{l} & =\operatorname{concat}\left(V_{l 1}, \ldots, V_{l n}\right) W_{l}^{O}
\end{aligned}
$

以下，すべての層，ヘッドで共通する議論では添字 の $l, h$ を省略する。行列 $X W^{Q}, X W^{K}, A$ は，それぞ れクエリ，キー，アテンション重みと呼ばれ，Aの $(i, j)$ 成分が大きい場合, 文中の $i$ 番目のトークンが $j$ 番目のトークンに注意を向けると解釈される.

## 3 位置に基づく注意のメカニズム

本節では，まず，各へッドは注意の方向と強さに 基づいて分類できることを k-means 法を用いて確認 する (3.1 項)。次に，位置埋め込みは学習によって 周期性を獲得しており (3.2 項), 自己注意機構内の クエリとキーにも同じ周波数の成分が含まれること を示す (3.3 項)．最後に，クエリとキーを比較する と，振幅スペクトルは類似しているが位相にズレが あることについて分析し (3.4 項)，このズレの方向 が注意の向きを決定づけることを示す（3.5 項）.

分析には，事前学習済みモデルである roberta-base を用いた. ${ }^{1)}$ モデルの構造は 12 層で各層にヘッドは $n=12$ 個あり， $T=512, d=768$ である. また，図を 作成する際は文献 [1] の 1 章までの本文を用いた。

## 3.1 自己注意機構の位置依存性の概要

アテンション重み $A_{l h}$ を可視化すると，例えば， $A_{8,9}, A_{2,3}$ では各トークンは隣のトークンに強く注意を向け, $A_{1,1}, A_{7,5}$ では左右の周辺トークンへ注意を緩やかに偏らせていることが分かる（図2）。

図 1 ヘッドごとに, 100 個 の $a_{l h}$ に振られたラベルの割合を円グラフで図示した.

図 215 トークン目までの アテンション重み. 赤点線 は対角線を示す。

ヘッドの注意の傾向を調べるため，各アテンショ ン重み $A_{l h}$ について，対角成分の $t$ 個右の成分の和

$
\operatorname{tr}_{t}(A)= \begin{cases}\sum_{i=1}^{512-t} a_{i, i+t} & (t \geq 0) \\ \sum_{i=1}^{512+t} a_{i-t, i} & (t<0)\end{cases}
$

を $t=-10, \ldots, 10$ について並べたべクトル $a_{l h}=$ $\left[\operatorname{tr}_{-10}\left(A_{l h}\right), \ldots, \operatorname{tr}_{10}\left(A_{l h}\right)\right]$ を計算した. ベクトル $a_{l h}$ は， $A_{l h}$ における相対位置による注意の偏りの平均的な傾向を表す. 入力として wikitext-2 [7] から 512 トークンの文章を 100 件作成し, $100 \times 12 \times 12$ 個の ベクトル $a_{l h}$ に k-means 法を適用した. クラスタ数 を 6 とすると，ベクトル $a_{l h}$ は注意の強さと向きに 基づいて分類され，ほとんどのへッドで注意の向き は入力文に依存しないことが確認できた（図 1).

## 3.2 位置埋め込みの振幅スペクトル

RoBERTa の位置埋め込み $P E \in \mathbb{R}^{512 \times 768}$ にも Transformer と同様にトークン位置方向に周期性があ るのかを調べるために，PE の各列べクトルに対し て離散フーリエ変換を適用した:

$
\begin{aligned}
& \operatorname{spec}_{i}=\mathrm{FT}\left(P E_{1, i}, P E_{2, i}, \ldots, P E_{512, i}\right) \\
& (i=1,2, \ldots, 768)
\end{aligned}
$

得られた $P E$ の各列のスペクトルの振幅を周波数 ごとに平均したものを図 3 に示す. 振幅スペクト ルがいくつかの周波数でピークをとることから， RoBERTa の位置埋め込みは Transformer のように明示的に正弦波を用いて定義されていないにもかかわ らず，学習により周期性を獲得していると言える. また，位置埋め込みを加える前の単語埋め込み列の 振幅スペクトルにはピークが存在しないため，周期性は位置埋め込み特有の性質である。

図 3 RoBERTa の位置埋め込みの振幅 スペクトル. 青線は $\operatorname{spec}_{i}$ の平均で網掛 け部分は四分位範囲. オレンジの線は， ある入力に対する，位置埋め込みを加 える前の単語埋め込みのスペクトル。

図 4 クエリ $Q_{1,1}$ とキー $K_{1,1}$ の 5,6 列目の先頭 64 行目までの値.

図 512 個のヘッドの $X, Q, K$ の振幅 スペクトルを，各周波数について最大値をとって層ごとに図示した.

## 3.3 クエリとキーの振幅スペクトル

特異値分解を用いてクエリとキーを再定義するこ とで，自己注意機構が位置埋め込みに類似した周期的な成分を隠れ状態から抽出できることを示す.

ヘッドのパラメータ $W^{Q}, W^{K}$ は $W^{A}=W^{Q}\left(W^{K}\right)^{T}$ とおけば， $X W^{Q}\left(X W^{K}\right)^{T}=X W^{A} X^{T}$ とまとめられる ため，積 $W^{A}$ のみが意味を持つ。 つまり， $W^{Q}, W^{K}$ ないし，これらと $X$ の積であるクエリとキーの役割は相対的なものである. 実際，クエリとキーの 関係を分析する際はパラメータを以下のように再定義すると結果が解釈しやすいことが分かった. すなわち $W_{l h}^{A}=U_{l h}^{Q} S\left(U_{l h}^{K}\right)^{T}$ (S は対角行列) と特異値分解して得られる左右特異べクトルを並べた行列 $U_{l h}^{Q}, U_{l h}^{K}$ を用いて, $\operatorname{head}(l, h)$ のクエリとキーをそれ ぞれ $Q_{l h}=X_{l} U_{l h}^{Q}, K_{l h}=X_{l} U_{l h}^{K}$ と再定義する. ここ で, $X W^{A} X^{T}=X U^{Q} S\left(U^{K}\right)^{T} X^{T}=Q S K^{T}$ である.こ の $Q, K$ の各列の成分を可視化すると, 注意が相対位置に依存するへッドでは約 4～12 個の列でトーク ン位置に関して周期性が見られた（図 4，付録B）。

各層について, 隠れ状態 $X_{l}$, クエリ $Q_{l h}$, および キー $K_{l h}$ の振幅スペクトルを 12 ヘッド・ 64 次元に 渡って計算して，各周波数における振幅の最大值を 求めた（図 5). すると，位置埋め込みで見られた周波数 50 付近で振幅スペクトルが大きくなる現象が，隠れ状態では見られないがクエリとキーでは見られ た. つまり, 自己注意機構は位置埋め込み由来の周期的な成分を隠れ状態から抽出できると考えられ る.しかし，層を通過するにつれて周波数 50 付近 の振幅スペクトルは減衰することから，位置埋め込 みの影響は次第に弱まり，推論が位置に依存しにく くなると考えられる.この現象は, 下層では構文的特徵を, 上層では意味的特徴を学習するという先行研究に対応していると予想される [8].

## 3.4 位相のズレと周波数の関係

図 4 を見ると，クエリとキーの位相がずれている ことが分かる. Vaswani らの推測通り，この現象は 回転行列によりクエリとキーがトークン位置方向に 相対的にずらされた結果であることを示す.

まず， $U^{K}$ をある行列 $R$ を用いて $U^{K}=U^{Q} R$ と分解する．つまり，隠れ状態 $X$ に $U$ を掛けてクエリ $Q=X U^{Q}$ を作成した後に，さらに $R$ で変換したも のがキー $K=X U^{K}=Q R$ であると解釈し， $R$ をと にクエリとキーの関係性を調査する。

特異ベクトルの直交性より，R の成分は左右の特異ベクトルの内積であり， $R$ も直交行列となる.

$
R=\left(U^{Q}\right)^{-1} U^{Q} R=\left(U^{Q}\right)^{-1} U^{K}=\left(U^{Q}\right)^{T} U^{K}
$

上式で求めた $R$ を対角化して固有值 $\lambda_{i}$ を得る.

$
\begin{array}{r}
\Lambda=P^{-1} R P=P^{-1}\left(U^{Q}\right)^{-1} U^{K} P=\left(U^{Q} P\right)^{-1}\left(U^{K} P\right) \\
\text { ただし, } \Lambda=\operatorname{diag}\left(\lambda_{1}, \cdots, \lambda_{768}\right)
\end{array}
$

直交行列の固有值は $\lambda_{i}=\cos \theta_{i} \pm j \sin \theta_{i}$ ( $j$ : 虚数単位 $)$ という形で表せるので，固有值の偏角を求めるこ とで $R$ が 768 次元空間をどのように回転させる行列なのかが分かる. 式 (3) より, 回転行列を掛ける ことは正弦波の位相をずらす変換であるため，偏角 $\theta_{i}$ は，固有值 $\lambda_{i}$ に対応する固有べクトル $\boldsymbol{p}_{i}$ に よってクエリおよびキーから抽出された 2 つ波形 $Q \boldsymbol{p}_{i}, K \boldsymbol{p}_{i} \in \mathbb{C}^{512}$ の間の位相のズレである.

偏角 $\theta_{i}$ の単位はラジアンなので，トークン数 を単位とする位相のズレ $\Delta$ を知るためには，各波形の周波数 $f$ を用いて $\Delta(f, \theta)=512 \theta_{i} / 2 \pi f$ を 計算する必要がある. そこで， $Q p_{i}$ の振幅スペク トルを $F T\left(Q \boldsymbol{p}_{i}\right) \in \mathbb{R}^{512}$ としたときの，2 変数関数 $g\left(f, \theta_{i}\right)=F T\left(Q \boldsymbol{p}_{i}\right)_{f}$ を（ $K \boldsymbol{p}_{i}$ についても同様に）可視化することで周波数と位相の関係を分析した.

図 62 変数関数 $g(f, \theta)$ の 2 次元ヒストグラム.

すると， $g(f, \theta)$ のピークは，左に弱く注意が偏る $\operatorname{head}(1,1)$ では $1 \leq \Delta \leq 3$ の領域内に，右隣に強く注意が集中する $\operatorname{head}(2,3)$ では $\Delta=-1$ の直線上に分布 することが分かった（図 6).

以上より，クエリとキーの違いを生じさせる行列 $R$ は 768 次元空間内の複数の軸方向に関して異なる 回転角を学習するが，周波数成分に分解してみると トークン単位では一定の個数だけ位相がずれるよう に学習され，ずれるトークン数と向きはアテンショ ン重みにおいて注意が向く位置に対応することが分 かった (図 2). 自己注意機構のパラメータに回転行列を導入した RoPE [9] を用いると学習の収束が早ま るのは，本項で述べた性質をより早く獲得するから であると考えられる。

## 3.5 位相のズレとアテンション重みの関係

2 信号間の時間遅れの計測等に用いられる相互相関と相互共分散を用いて，トークン数単位でクエリ とキーの位相のズレを定量化し，クエリとキーの位相のズレの方向に注意が平均的に偏ることを示す.

位相のズレを定量化するために，クエリとキーの 各列の相互相関 xcorr と相互共分散 xcov を計算し た. ただし，クエリとキーに存在する周期性のみに 焦点を当てるため，相互相関に中心化を適用した (式 12).また， $Q$ と $K$ の $j$ 列目を $\boldsymbol{q}_{j}$ および $\boldsymbol{k}_{j}, Q$ と $K$ の $(i, j)$ 成分を $q_{i, j}$ および $k_{i, j}$ とする.

$
\begin{aligned}
& \operatorname{xcov}_{j}(t)= \begin{cases}\sum_{i=1}^{512-t} q_{i, j} k_{i+t, j} & (t \geq 0) \\
\sum_{i=1}^{512+t} q_{i-t, j} k_{i, j} & (t<0)\end{cases} \\
& \operatorname{xcorr}_{j}(t)=\frac{\operatorname{xcov}_{j}(t)-\mathbb{E}_{t}\left[\operatorname{xcov}_{j}(t)\right]}{\left.\|\boldsymbol{q}_{j}\right.\|\left.\|\boldsymbol{k}_{j}\right.\|}
\end{aligned}
$

相互共分散を各列 $j$ に対応する特異值 $s_{j}$ で重み 付けた和は, $Q S K^{T}$ の対角成分の $t$ 個右の成分の和

図 7 上: $\operatorname{xcorr}_{j}(t)(j=1, \ldots 20)$. 下: $\sum_{j}^{64} s_{j} \operatorname{xcov}_{j}(t)$

$\operatorname{tr}_{t}\left(Q S K^{T}\right)$ と等しいことから，注意は位相のズレの 方向に平均的に集中する.

$
\begin{aligned}
\operatorname{tr}_{t}\left(Q S K^{T}\right) & =\sum_{i=1}^{512-t}\left(Q S K^{T}\right)_{i, i+t} \quad(\because \text { 式 }(7)) \\
& =\sum_{i=1}^{512-t} \sum_{j=1}^{64} s_{j} q_{i, j} k_{i+t, j} \\
& =\sum_{j=1}^{64} s_{j} \operatorname{xcov}_{j}(t)
\end{aligned}
$

注意の集中が相対位置に基づくへッドでは， $\boldsymbol{q}_{j}, \boldsymbol{k}_{j}$ の相互相関は複数の列 $j$ で周期的になり，相互共分散の重み付き和は，アテンション重みと同様に $\operatorname{head}(1,1)$ では $t=-2$ 付近で緩やかなピークをとり, $\operatorname{head}(8,9)$ では $t=-1$ で鋭いピークをとる（図 2,7 ）.

図 7 (左) において，相互共分散の重み付き和を 求める際， $t=-2$ では極大值が重なるためピークは 増幅されるが， $t= \pm 30$ 付近では極大値と極小値が 重なるためピークは減衰する. その結果，相互共分散の重み付き和は $t=-2$ で最大となったと考えられ る. 一方， $t=-1$ でのみピークをとる孤立波のよう な成分も存在し，正弦波状の相互共分散の和が形成 する緩やかなピークを強調するような効果が確認さ れた（図 7 右)。この成分を，位置埋め込み由来の周期的な成分へとさらに分解できるかは不明である.

以上より，注意が自身の近傍のトークンに集中す る現象は，クエリとキーをトークン位置に関する波形と見たときの位相のズレによって引き起こされて いると考えられる。

## 4 おわりに

自己注意機構において注意の向きが相対位置に依存する現象は，クエリとキーに存在する位置埋め込 み由来の周期的な成分の位相が相対的にずらされた ためであることを示した。これより，絶対位置埋め 込みで相対位置に基づいた推論ができるという経験的な事実のメカニズムの一部が明らかになった.

## 参考文献

[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, L ukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in Neural Information Processing Systems, Vol. 30. Curran Associates, Inc., 2017. https: //proceedings.neurips.cc/paper/2017/hash/ 3 f5ee243547dee91fbd053c1c4a845aa-Abstract. html.

[2] Jesse Vig. A multiscale visualization of attention in the transformer model. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics: System Demonstrations, pp. 37-42. Association for Computational Linguistics, July 2019. https: //www.aclweb.org/anthology/P19-3007.

[3] Benjamin Hoover, Hendrik Strobelt, and Sebastian Gehrmann. exBERT: A Visual Analysis Tool to Explore Learned Representations in Transformer Models. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics: System Demonstrations, pp. 187-196, Online, July 2020. Association for Computational Linguistics. https://aclanthology . org/2020.acl-demos. 22.

[4] Kevin Clark, Urvashi Khandelwal, Omer Levy, and Christopher D. Manning. What does BERT look at? an analysis of BERT's attention. In Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP, pp. 276-286. Association for Computational Linguistics, August 2019. https://aclanthology .org/W19-4828.

[5] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), pp. 4171-4186. Association for Computational Linguistics, June 2019. https: //aclanthology.org/N19-1423.

[6] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. Roberta: A robustly optimized bert pretraining approach, 2019. https: //arxiv.org/abs/1907.11692.

[7] Stephen Merity, Caiming Xiong, James Bradbury, and Richard Socher. Pointer sentinel mixture models. In International Conference on Learning Representations, 2017. https://openreview.net/forum?id=Byj72udxe.

[8] Ian Tenney, Dipanjan Das, and Ellie Pavlick. BERT rediscovers the classical NLP pipeline. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pp. 4593-4601, Florence, Italy, July 2019. Association for Computational Linguistics. https://aclanthology.org/P19-1452.

[9] Jianlin Su, Yu Lu, Shengfeng Pan, Ahmed Murtadha, Bo Wen, and Yunfeng Liu. Roformer: Enhanced transformer with rotary position embedding, 2021. https: //arxiv.org/abs/2104.09864.

[10] Yu-An Wang and Yun-Nung Chen. What do position embeddings learn? an empirical study of pre-trained language model positional encoding. In Proceedings of the $\mathbf{2 0 2 0}$ Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 6840-6849, Online, November 2020. Association for Computational Linguistics. https://aclanthology.org/2020.emnlp-main. 555.

## A 様々なモデルの位置埋め込み

Hugging Face に公開されている事前学習済みモデ ルから絶対位置埋め込みをもつモデルをいくつか選 び，図 3 (roberta-base) と同様に位置埋め込みの振幅 スペクトルを図示した.

図 8 位置埋め込みの振幅スペクトル. 日本語 BERT は cl-tohoku/bert-base-japanese-whole-word-masking である.

エンコーダモデルである BERT と RoBERTa では 振幅スペクトルにピークが見られ，RoBERTaの方が ピークにおける振幅が大きい。一方，デコーダモデ ルである GPT-2 は低周波成分しか存在しない。これ は，事前学習時の目的関数が強く影響しているため であると考えられる [10].

## B 位置埋め込みの主成分について

相対位置に依存して注意が集中するへッドにおい て，クエリとキーには約 4 12 個の次元で位置埋め 込みに由来すると考えられる周期的な成分がそれぞ れ存在した。位置埋め込みに対して主成分分析を行 い, 主成分の累積寄与率を求めると, 累積寄与率は 4 次元までで $50.51 \%, 12$ 次元までで $92.23 \%$ だった. これより, 768 次元空間において 4 12 次元は少な く感じるが，位置埋め込み空間を十分再現している と考えられる（図9).

図 9 roberta-base の位置埋め込みの累積主成分寄与率.