\section{はじめに}
本論文では，小説，アニメあるいはゲームなどに登場する特定のキャラクタを発話者とした言語モデルの構築手法を提案する．小説，アニメあるいはゲームなどの登場人物は，仮想的にではあるが，ある特徴を有しており，その人物による自然な発話にはその特徴を有したものが必要である．高度化された対話システムにおいても，ディスプレイに表示される仮想的な発話者あるいは実際のロボットの発話では，その見た目から想起される発話者らしい発話が自然である．このような背景から発話者の特徴を反映した発話文を生成する研究がいくつか行われているが，それらの多くは規則ベースの手法である（\cite{miyazaki4},\cite{kishino}など）．規則ベースの手法は規則の構築が手作業となるためその構築コストが高く，また対象を別の発話者に変更することが困難という問題がある．近年は対話システムに個性を持たせることを目的に学習ベースのものも提案されているが，そこでは学習のためのデータをどのように準備するかが鍵となっている（\cite{zhang-etal-2018-personalizing},\cite{kasahara-etal-2022-building}など）．本論文では発話者の特徴を有した発話文を生成するために，その発話者の言語モデルを構築することを試みる．発話者の言語モデルはその発話者の発話文を大量に収集することで自動的に構築できる．ただしその発話者は，通常，仮想的な発話者であるため収集できる発話文の量は限られる．そのため本論文ではGPT-2\cite{gpt2}をベースの言語モデルに設定し，対象発話者の少量の発話文によって，そのベースの言語モデルをfine-tuningすることで目的の言語モデルを構築する．その際，対象の発話者と同一作品の別の登場人物の発話を「ドメイン」の発話文，対象発話者の発話文を「タスク」の発話文と捉え，DAPT(domainadaptivepretraining)+TAPT(taskadaptivepretraining)\cite{Suchin}の手法を利用する．更に言語モデルの性能を上げる（パープレキシティを下げる）ために本論文では，別人物の発話文を対象発話者風の発話文に変換する2種類のT5\cite{t5}モデルを構築する．この2種類のT5モデルを利用することで，2種類の対象発話者風の発話（「擬似データ(1)」と「擬似データ(2)」）を生成することができる．この生成された擬似データを，本来の対象発話者の発話文のデータに追加的に利用することで効果的なfine-tuningを行う．実験では株式会社スクウェア・エニックスのゲームであるドラゴンクエストVII内のセリフをコーパス\footnote{本コーパスは\url{https://sutton-kyouwa.com/g/}からダウンロードしたものを手作業で編集，整形したものである．本コーパスの本実験での使用に対して著作権の問題が生じないことは，AI関係の案件に精通した弁護士から確認済みである．}とし，その登場人物7名をそれぞれ対象発話者に設定した．このコーパスから取り出した対象発話者の発話文を訓練データ，検証用データ及びテストデータに分け，テストデータに対する言語モデルのパープレキシティから構築した言語モデルの評価を行った．訓練データを用いてGPT-2をfine-tuningした言語モデルの各発話者のパープレキシティの平均は27.33であったが，本論文の提案手法を用いることで21.15まで改善できた．本論文の貢献は以下である．\begin{description}\item[(1)]特定キャラクタの言語モデルを構築するために，作中の登場人物の発話をドメインのデータ，対象のキャラクタの発話をタスクのデータとしてみなして，DAPT+TAPTの手法を用いてGPT-2のfine-tuningを行う手法を提案した．\item[(2)]作中の各登場人物の発話文とそれを一般的な発話文に変換した少量のデータを手作業で作成し，一般的な発話文から対象のキャラクタ者風の発話文へ変換する\textbf{一般－対象変換モデル}を構築し，対象のキャラクタの発話文の擬似データ（擬似データ(1)）を構築する手法を提案した．\item[(3)](2)と同じデータを利用し，一般－対象変換モデルとは逆向きの\textbf{対象－一般変換モデル}を構築し，それら2つのモデルを組み合わせて対象のキャラクタの発話文の擬似データ（擬似データ(2)）を構築する手法を提案した．\item[(4)]擬似データ(1)と擬似データ(2)を用いて，対象のキャラクタの言語モデルの性能を高めた．\end{description}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S2
\section{関連研究}
\citeA{Suchin}は，言語モデルを構築する際にドメインに適応させる事前学習であるDAPT(domainadaptivepretraining)，タスクに適応させる事前学習であるTAPT(taskadaptivepretraining)，及びDAPTにより作成したモデルにTAPTを行うDAPT+TAPTの3つの手法を比較し，DAPT+TAPTが最もよい性能であることを示した．また\citeA{katsumata}は話し言葉BERTの作成にDAPT+TAPTの手法を利用し，DAPT+TAPTの2種類の追加学習を組み合わせることで，文境界推定，重要文抽出などの様々なタスクで安定して高い性能のモデルを作成した．また同時に話し言葉においてもこの手法は有効であることを示した．また，キャラクタ性についての研究も盛んに行われている．\citeA{Mairesse}によって開発されたPERSONAGE(personalitygenerator)は最初の高度なパラメータ化された会話生成器である．彼らはPERSONAGEが外向性の度合いに沿ってバリエーションのある発話を作成できることを示した．\citeA{Marilyn}は映画の対話コーパスを収集し言語構造やキャラクタの原型のアノテーションを行った．さらに彼らはジャンル，性別，ディレクタ，映画の年代のようなグループによって言語のスタイルを分類するためにキャラクタの言語モデルの実験を行った．\citeA{miyazaki1}は日本語の会話を特徴付ける言語表現を基礎的に分析し，部分的に言い換えることで会話を特徴付ける技術を開発した．また\citeA{miyazaki2}は，日本のフィクションの登場人物の言語的特徴のカテゴリーを報告した．さらに会話の特徴づけやバリエーションを豊かにする方法として，各文の機能部分を対象人物に適した確率で言い換えて，読者が対話者の特徴づけを理解できるかどうかを確認する実験を行った\cite{miyazaki3}．また，日本の架空の人物の発話を特徴付けるために，日本語の音変化表現に着目し，これらの表現を収集し，分類した研究もある\cite{miyazaki4}．さらに，\citeA{Okui}は，日本語の対話システムにおいて，ポインタ生成機構を用いて，複数の異なるキャラクタの応答を参照し，様々な応答を生成した．彼らは，少ないデータ量で応答の特徴付けを学習した．また\citeA{kishino}の研究では，SentencePieceを用いて単語分割を行い，TFIDFを用いてキャラクタの特徴と考えられる単語を抽出した．また，意味を保持したまま，テキストのスタイルを変換する「テキストスタイル変換」の研究も本研究と関係がある．キャラクタ性を変換する論文\cite{miyazaki1}をはじめとして，シェークスピアの時代の文への変換\cite{jhamtani-etal-2017-shakespearizing}や，散文調への変換\cite{prose}，さらにテキスト音声合成を目的とした，流暢性や方言の変換を行った研究\cite{yoshioka}がある．彼らの研究では，人手により意味を保持したままキャラクタ性の削除の処理を行い，そのデータを利用してT5を用いて自動的なテキストスタイル変換を利用している．T5を利用している点で本研究と類似しているが，本研究では最終的に特定のキャラクタの発話の言語モデル作成を目的としている点が異なっている．またスタイル変換の研究としては\cite{liu-etal-2021-learning}もある．彼らは変換の正解率，内容の保存の正確性，流暢さといった異なる側面を考慮した報酬関数を利用して訓練を行うことでこれを実現している．本論文の提案するキャラクタらしい文を生成する手法は，キャラクタの特性を条件とした文生成の研究とも見なせるため，条件付き文生成(conditionaltextgeneration)の研究の一つとも捉えられる．\citeA{ficler-goldberg-2017-controlling}は，再帰的ニューラルネットワークに，望ましいテキストの性質を文脈ベクトルとして与えることで，条件付き文生成を行う手法を提案している．彼らは映画のレビューのドメインにおいて，比較的細かい条件のコントロールを行うことを可能にした．\citeA{duan-etal-2020-pre}は条件表現のモジュールとテキスト生成のモジュールを切り離すモデルを提案した．こうすることで，新たな条件が加わった際の学習の手間を減らすことができる．我々は，GPT-2やT5の既存公開済みモデルを活用することで，キャラクタらしい文を生成する手法を採った．また，本論文はキャラクタの個性を反映した応答生成の研究とも関連がある．\citeA{zhang-etal-2018-personalizing}は対話システムに発話者の個性を持たせることを目的にPersona-Chatと呼ばれるキャラクター設定が記されたデータベースを構築した．これは約5文ずつ与えられた2人のクラウドワーカー同士のマルチターンの対話で構成されている．実験によりPersona-Chatデータベースから学習した対話システムは，より魅力的であることを示した．\citeA{kasahara-etal-2022-building}は与えられたキャラクター設定に沿った発話を行うモデルを，事前学習済み言語モデルをPrompt-Tuningすることで構築し，Fine-Tuningによるモデルとの比較を行っている．\citeA{li2016persona}は発話スタイルやキャラクタの背景などの個別のキャラクタ性を分散表現としてとらえることで応答生成を行う手法を提案している．彼らはLSTMによる応答生成モデルを訓練する際，発話者IDを入力し，発話者の分散表現を同時に学習することでこれを実現した．また，\citeA{roller-etal-2021-recipes}はオープンドメインのチャットボットを作る際に，どのようなモデルがよいのかを比較した．そこではネットワークアーキテクチャの種類（検索方式，生成方式，検索後に修正する方式）の優劣や学習用の損失関数，データについて調査している．\citeA{li2016persona}は話者の一貫性の問題を扱うためのpersona-basedmodelを提案している．そこではモデルの学習の際の一つの工夫として，発話文の文頭にその発話者の名前を付与する操作を行っている．本論文でもその操作を取り入れる．なおこの発話者名を入力文に追加する手法は，機械翻訳におけるTaggedback-translation\cite{caswell-etal-2019-tagged}と等価である．この手法により人手翻訳と機械翻訳による擬似データをタグで区別することで，良質なモデルを学習できることが知られている．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S3
\section{提案手法}
本章では3.1節で提案手法の全体像を説明する．提案手法の核となるのは，発話者別の言語モデルを構築するために，その発話者に対する2種類の擬似データ（擬似データ(1)と擬似データ(2)）を作成する部分である．本論文ではこれら擬似データを作成するために，一般－対象変換モデルと対象－一般変換モデルの2種類のモデルを構築している．これら変換モデルの構築方法を3.2節で述べる．また上記変換モデルを学習するために，各発話者の発話の集合から訓練データの元になる発話文を抽出する方法を3.3節で述べる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S3.1\subsection{T5によるデータ拡張を用いた特定キャラクタ風発話の言語モデルの構築}\label{T5によるデータ拡張を用いた特定キャラクタ風発話の言語モデルの構築}本研究ではDAPTとTAPTの手法を用いて特定キャラクタ風発話の言語モデルの構築を行う．DAPTとはDomain-AdaptivePretrainingの略であり，ターゲットが属するドメインのデータで訓練を行うものである．TAPTとはTask-AdaptivePretrainingの略であり，対象のタスクのデータで訓練を行うものである．DAPT+TAPTの訓練方法とは，既に一般的なコーパスで事前学習された言語モデルに対し，対象のドメインのデータで追加の事前学習を行い，さらに対象のタスクのデータで追加の事前学習を行う方法である\cite{Suchin}．本研究では，特定キャラクタ風発話を行う言語モデルを構築することを目的としているため，TAPTに用いる「対象のタスクのデータ」を，特定キャラクタの発話とする．DAPTに用いる「対象の属するドメインのデータ」には，そのキャラクタの発話のほかに，そのキャラクタの発話を抽出した作品と同一の作品（以降，同一作品と表記する）の別の登場人物の発話を利用する．本研究ではさらに，同一作品の別の登場人物の発話を対象の発話者風の発話に変換して，対象の発話者の発話の擬似データを作成する．この擬似データの作成により，対象の発話者の発話を増補したとみなすことができる．本研究では，このデータを追加の訓練データとすることで，対象の発話者の発話の言語モデルの性能を上げることを試みる．ここで対象の発話者風の発話への変換には対象発話者ごとに2つのT5モデル（「一般－対象変換モデル」と「対象－一般変換モデル」）を構築した．具体的な構築方法は3.2節で述べる．本研究における擬似データの作成手順（Step-1からStep-5）を以下に述べる，\begin{description}\item[Step-1]各発話者の発話の集合から，ある基準で100発話文を取り出し，それらを一般的な発話文に人手により変換し，発話者ごとの対訳データを作成する（図\ref{fig1-1}）．この100発話文の選び方は3.3節で述べる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F1\begin{figure}[t]\begin{center}\includegraphics{31-3ia9f1.pdf}\end{center}\caption{人手による対訳データの作成}\label{fig1-1}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\item[Step-2]Step-1で作成した対訳データを用いて，一般的な発話文から対象の発話者風の発話文へ変換するT5モデルを構築する（図\ref{fig1-12}）．このモデルを\textbf{一般－対象変換モデル}と名付ける\footnote{一般－対象変換モデルの具体的な構築方法は3.2節で述べる．}．本実験では発話者は7名いるので，7つの一般－対象変換モデルが作成される．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F2\begin{figure}[t]\begin{center}\includegraphics{31-3ia9f2.pdf}\end{center}\caption{一般－対象変換モデルの学習}\label{fig1-12}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\item[Step-3]対象発話者以外の6名の発話者各々にはStep-1で構築した一般的な発話文が存在する．それら一般的な発話文を集め，対象発話者の一般－対象変換モデルを利用して，対象発話者風の発話に変換する．この操作により作成された発話文を\textbf{擬似データ(1)}とする（図\ref{fig1-2}）．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F3\begin{figure}[t]\begin{center}\includegraphics{31-3ia9f3.pdf}\end{center}\caption{擬似データ(1)の作成}\label{fig1-2}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\item[Step-4]Step-1で作成した各発話者の対訳データを用いて，対象発話者ごとに対象発話者の発話文を一般的な発話文に変換するT5モデルを構築する（図\ref{fig1-22}）．このモデルを\textbf{対象－一般変換モデル}と名付ける\footnote{対象－一般変換モデルの具体的な構築方法は3.2節で述べる．}．本実験では発話者は7名いるので，7つの対象－一般変換モデルが作成される．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F4\begin{figure}[t]\begin{center}\includegraphics{31-3ia9f4.pdf}\end{center}\caption{対象－一般変換モデルの学習}\label{fig1-22}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F5\begin{figure}[t]\begin{center}\includegraphics{31-3ia9f5.pdf}\end{center}\caption{擬似データ(2)の作成}\label{fig1-3}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\item[Step-5]各発話者のStep-1で取り出されていない発話集合の中から，ある基準で100発話文取り出し，これをその発話者の対象－一般変換モデルを用いて一般的な発話文に変換する．そのように作成された対象発話者以外の一般的な発話文を集め，対象発話者の一般－対象変換モデルを用いて，対象の発話者風の発話に変換する．この操作により作成された発話文を\textbf{擬似データ(2)}とする（図\ref{fig1-3}）．またここで変換に利用する発話文をStep-1で取り出されていない発話文の全てではなく，100発話文にしているのは基準を満たさない発話文を変換モデルにより利用して変換しても，最終的に変換された発話文は言語モデルの性能向上に寄与しないと考えたからである．\end{description}Step-1からStep-5によって構築された擬似データ(1)と(2)を用いて，言語モデルを構築する手順について述べる（図\ref{fig69}）．図\ref{fig69}のStep-8までの処理で作られる言語モデルが本論文の提案手法1によるものであり，Step-9までの処理で作られる言語モデルが本論文の提案手法2によるものである．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F6\begin{figure}[t]\begin{center}\includegraphics{31-3ia9f6.pdf}\end{center}\caption{提案手法による言語モデルの構築手順}\label{fig69}\end{figure}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{description}\item[Step-6]同一作品の全発話者の発話文をドメインのデータとしてDAPTの手法でGPT-2のfine-tuningを行う．\item[Step-7]対象発話者の発話文をタスクのデータとしてTAPTの手法でStep-6で得られているモデル(DAPTmodel)のfine-tuningを行う．なおこの学習の際のモデルの初期値はDAPTmodelとする．\item[Step-8]対象発話者の発話文をタスクのデータに「擬似データ(1)」を追加して，Step-7で得られているモデル(DAPT+TAPTmodel)のfine-tuningを行う．なおこの学習の際のモデルの初期値はDAPT+TAPTmodelとする．これが本論文の提案手法1となる．\item[Step-9]対象発話者の発話文をタスクのデータに「擬似データ(1)」と「擬似データ(2)」を追加して，Step-8で得られているモデル(Ours1model)のfine-tuningを行う．なおこの学習の際のモデルの初期値はOurs1modelとする．これが本論文の提案手法2となる．\end{description}なお，Step-6からStep-9において初期のモデルをfine-tuningする際は，\cite{li2016persona}の手法にならい，入力となる発話文に発話者の名前を付与した．例えば発話者「アイラ」の発話文に以下がある．「さあアルスわたしたちはわたしたちの旅を続けましょう。」この発話文は以下のように``発話者名：''を文頭に付与する。「アイラ:さあアルスわたしたちはわたしたちの旅を続けましょう。」``発話者名：''は訓練データ，検証用データ，テストデータまた増補されたデータの全てに付与する．ただし検証用データやテストデータからパープレキシティを測る場合，他手法と公正に比較するために``発話者名：''の部分の出現確率はパープレキシティの計算には含めていない\footnote{含める方がパープレキシティの値は低くなるので，この処理はunfairな処理ではない．}．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S3.2\subsection{T5による発話文変換モデルの構築}訓練データを増補するため，以下の2種類のT5モデルを作成した．\\\begin{enumerate}\item\textbf{一般－対象変換モデル}：一般的な発話を対象発話者風の発話に変換する．対象発話者の発話を一般の発話に修正したものを入力，修正前の対象発話者の発話を出力として訓練した．\item\textbf{対象－一般変換モデル}：対象発話者の発話を一般的な発話に変換する．対象発話者の発話を入力，その発話を一般の発話に修正したものを出力として訓練した．\end{enumerate}一般－対象変換モデルは，まず対象の発話者の発話からTFIDFを求め，それを用いてより対象キャラクタの特徴を捉えていると考えられる発話を100発話抽出した．詳しい抽出方法は\ref{TFIDF}節で述べる．抽出した100発話を，そのキャラクタの特徴をなくした一般的な発話に手作業で修正した．この修正により得られた一般的な100発話を入力データ，対象の発話者の発話を出力データとしてT5モデルの訓練を行った．なお，100発話のうちランダムに選んだ90発話を訓練データ，残りの10発話を検証用データとして利用し，得られたT5モデルが一般－対象変換モデルである．対象発話者は7名になるので，7つの一般－対象変換モデルが構築される\footnote{ただし実験では発話者「フォズ」の発話文が100に満たないので，40発話を学習データ，10発話を検証用データとした．}．また対象－一般変換モデルは一般－対象変換モデルで利用した訓練データおよび検証用データの入出力を逆にすることで得られる．ここでの一般的な発話とは，性別，年代，人物像を想像させないような発話である．例えば，対象発話者であるキャラクタの一人称である「あたし」から「私」，発話の末尾につけられる口癖である「だわ」や「よね」から「です」に修正することで作成した．これは「私」や「です」の方が使用者として考えられる人物や使われるシチュエーションが広いと考えられるからである．ここでの修正作業はルールに基づいたものではなく，筆者の主観で行われた．また修正に際して，砕けた雰囲気からフォーマルな雰囲気になる，元の発話は語気の強いものだが，それがなくなるなど，若干のニュアンスが変わることは容認した．これは発話の持つ雰囲気が発話者の雰囲気でもあると考えたためである．「あら」や「まぁ！」のような感嘆詞はキャラクタの特徴を表していると考えたが，代わりの一般的な表現が思いつかなかったこと，無くても発話の意味が変わらないことから削除した．また，ここで作成している一般的な発話文は元の発話文の内容は変更していないために，構築される変換モデルは基本的にはスタイル変換のモデルと見なせる．ただし変換モデルにより変換された発話文は言語モデルのfine-tuningのみに利用されるので，発話内容が変化しても問題はないことを注意しておく．この2つのモデルを用いて変換した発話を言語モデルのfine-tuningに使う際には，もとの発話と長さが大きく異なる場合，変換に失敗している可能性が高いため，入力の発話の（文字列の）長さによりフィルタリングを行った．具体的には4章で説明する式\ref{giji1cont}と式\ref{giji2cont}がフィルタリングの条件となる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S3.3\subsection{T5用の訓練データの抽出方法}\label{TFIDF}まず本研究で用いるコーパスから全ての実験で用いる検証用データとテストデータを予め取り除いておく．具体的にはコーパス中の各発話者の発話集からランダムに1割を取り出し，その1/5を検証用データ，4/5をテストデータに設定した．この検証用データとテストデータを除いた発話文が実験で利用する訓練データとなる．本節ではT5のモデルの学習用の訓練データを抽出する方法を述べるが，抽出のもとになるデータは上記の訓練データであることを注意しておく\footnote{具体的な各発話者に対する訓練データ，検証用データ，テストデータの発話文数は\mbox{表\ref{giji_jikken_data}}に示している．}．T5の訓練に用いる発話データは，よりキャラクタの特徴を含んだものがよいと考え，TFIDFを利用して訓練データの中からT5の学習データを抽出した．キャラクタの特徴を含んだ発話を選ぶのに，TFIDFを利用する理由を簡単に述べる．あるキャラクタの発話内の単語に対するTFIDF値は，そのキャラクタが頻繁に使う単語というTFの観点と，他のキャラクタの発話では使われない単語であるが，そのキャラクタでは使われる単語というそのキャラクタに対する特異性を表すIDFの観点とを併せ持った値である．そのためあるキャラクタの発話内の単語のTFIDF値の平均値は，その発話に対するそのキャラクタの特徴の度合いを表していると見なせるからである．また\citeA{kishino-2022-9}はランダムに選択するよりもTFIDFを用いて選択した方が最終的な言語モデルの性能が高いことを示している．TFIDF値の具体的な計算方法を以下に述べる．まず，対象の発話をそれぞれT5で用いられているトークナイザーを用いて単語に分割した．そして単語ごとに以下の式でTFIDF値を求めた．以下の式の$tf(t,d)$が発話$d$のサブワード$t$におけるtf値である．なお$\sum_{s\ind}n(s,d)$は発話$d$における全サブワードの総出現回数を表す．\begin{equation}\mathit{tf}(t,d)=\frac{n_{(t,d)}}{\sum_{s\ind}^{}n_{(s,d)}}\end{equation}また以下の式の$idf(t)$が発話$d$のサブワード$t$におけるidf値である．なお$N$は総発話数，$df(t)$はサブワード$t$が出現した発話数を表す．\begin{equation}\mathit{idf}(t)=\log\frac{N}{\mathit{df}(t)}\end{equation}TFIDF値はtf値とidf値を掛け合わせることで求められる．ここでTFIDF値が高い単語はそのキャラクタの特徴を表していると考える．\begin{equation}\mathit{TF}\mathit{IDF}={tf}(t,d)*\mathit{idf}(t)\end{equation}続いて，これらの単語のTFIDF値を用いて発話ごとの平均TFIDF値を求める．これは発話内に出てくるTFIDF値の合計を出現単語数で割ることで得た．平均TFIDF値が高い発話ほどキャラクタの特徴を含んだ発話と考え，平均TFIDF値が高い上位100発話をモデルの訓練および検証用データに利用した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4
\section{実験（変換モデルの学習と擬似データの構築）}
本論文では発話者の特徴を有した発話文を生成するために，その発話者の言語モデルを構築している．そしてその構築のために発話者の擬似的な発話文を生成する手法を提案している．また提案手法の他にDAPT+TAPTや発話文に発話者の名前を付与する手法も組み合わせている．本章（4章）の実験では，本論文の提案手法（擬似的な発話文を生成する手法）だけを利用したときの言語モデルの性能向上について調査し，次章（5章）の実験では，本論文の提案手法の他にDAPT+TAPTと発話文に発話者の名前を付与する手法を組み合わせたときの言語モデルの性能向上について調査する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1\subsection{一般－対象変換モデルの学習と擬似データ(1)の構築}発話者は7名存在する．今，対象発話者を\(X\)とすると，前述したように\(X\)の発話集合の中から平均TFIDF値の高い100発話文を取り出し，その中から10発話文をランダムに取り出し，それを一般－対象変換モデルの学習のための検証用データとし，残り90発話文を一般－対象変換モデルの訓練データとした\footnote{ただし発話者「フォズ」の発話は68文しかないため，平均TFIDF値の上位50文を取り出し，40文を訓練データ，10文を検証用データとした．}．これらのデータを用いて，ベースとなる既存の日本語T5モデルをfine-tuningすることで\(X\)の一般－対象変換モデルを構築した．具体的にベースとなる日本語T5モデルにはsonoisa/t5-base-japanese\footnote{\url{https://huggingface.co/sonoisa/t5-base-japanese/discussions}（モデルのパラメータ数は296,926,464）．}を利用した．バッチサイズは2とした．また学習で用いた最適化関数は\verb|AdamW|であり，学習率は\verb|lr=3e-4|とした．また\verb|get_linear_schedule_with_warmup|を用いた学習率スケジューリングも行った．また検証用データを利用して\verb|patience=5|としたEarlyStoppingを行った．具体的に学習に利用したパラメータは付録Aに記載する．次に構築した\(X\)の一般－対象変換モデルを利用して\(X\)の擬似データ(1)を生成する．発話者は7名存在するので，前述したように\(X\)以外の6名の発話者から計600発話の一般的な発話文が利用できる\footnote{ただし「フォズ」の発話は50発話しか利用できないため，「フォズ」の一般－対象変換モデルに適用するデータは600発話だが，「フォズ」以外の発話者の一般－対象変換モデルに適用するデータは550発話である．}．この収集した一般的な発話文に対して，先ほど構築した\(X\)の一般－対象変換モデルを利用して，\(X\)に対する擬似データ(1)を作成する．一般－対象変換モデルを用いて，入力文から生成文を作成するにはT5モデルの\verb|generate|メソッドを利用した．\verb|generate|メソッドのパラメータは\verb|repetition_penalty|を\verb|10.0|とした以外はdefaultの設定を用いた．また一般－対象変換モデルにより生成された文の長さ\footnote{本論文での「文の長さ」とは「文の文字数」である．}が極端にもとの文の長さと異なっている場合は，生成に失敗していると考え，発話の（文字列の）長さによるフィルタリングを行った．具体的には入力文の長さ\(L\)としたとき出力文の長さ\(L'\)に以下の条件を課している．\begin{equation}\label{giji1cont}0.8*L<L'<1.3*L\end{equation}各発話者に対して得られた擬似データ(1)の発話数を\mbox{表\ref{tab-data21}}に示す．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T1\begin{table}[t]\input{09table01.tex}\caption{発話者ごとの入力発話数に対して構築できた擬似データ(1)の発話数}\label{tab-data21}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.2\subsection{対象－一般変換モデルの学習と擬似データ(2)の構築}対象－一般変換モデルに対する学習用データと検証用データは，一般－対象変換モデルの訓練データと検証用データの入出力を逆にすることで得られる．モデルの学習に用いたベースとなる日本語T5モデルや学習時のパラメータは全て一般－対象変換モデルの学習時のものと同じものを利用した．先に構築している発話者\(X\)の一般－対象変換モデルとここで構築した\(X\)の対象－一般変換モデルを組み合わせることで，擬似データ(2)を構築する．発話者\(X\)の擬似データ(2)の構築手順を述べる．まず\(X\)以外の6名の発話者\(Y_i\)の発話集合の中で，平均TFIDF値の順位101から200の100発話を\(Y_i\)の対象－一般変換モデルを利用して一般的な発話文に変換する．ただし発話者「フォズ」の発話が68発話しかないため，順位101から200に対応するデータは存在しないことと，「リーサ姫」の発話は135発話しかないため，順位101から200に対応するデータは35発話となっている．このことから「フォズ」の擬似データ(2)を作成するためのもとになる発話文は535発話，「リーサ姫」の擬似データ(2)を作成するためのもとになる発話文は500発話，そしてそれ以外の発話者の擬似データ(2)を作成するためのもとになる発話文は435発話となる．上記手順で収集した擬似データ(2)を作成するためのもとになる発話文は，各々の発話文の発話者\(Y_i\)の対象－一般変換モデルを利用することで，一般的な発話文に変換する．また\(Y_i\)の対象－一般変換モデルを利用して，一般的な発話文を作成する際にも発話の（文字列の）長さによるフィルタリングを行った．具体的には入力文の長さ\(L\)としたとき出力文の長さ\(L'\)に以下の条件を課している．\begin{equation}\label{giji2cont}25<L'<1.3*L\end{equation}これは対象－一般変換モデルで利用する元の発話文に短い発話が多く，最終的に短い発話を言語モデルのfine-tuningに利用するのは逆効果になると予想できたからである．更に擬似データ(2)を作成するために発話者\(X\)の一般－対象変換モデルを利用する際には，再度\mbox{式\ref{giji1cont}}の制約を課していることにも注意する．最後に発話者\(Y_i\)の対象－一般変換モデルから得た一般的な発話文を収集し，それを\(X\)の一般－対象変換モデルで利用することで，\(X\)の擬似データ(2)が作成できる．各発話者に対して得られた擬似データ(2)の発話数を\mbox{表\ref{tab-data22}}に示す．また表\ref{tab-data22}には発話文の長さの平均も記す．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T2\begin{table}[t]\input{09table02.tex}\caption{発話者ごとの入力発話数に対する擬似データ(2)発話数}\label{tab-data22}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%擬似データ(2)のデータ数が擬似データ(1)のデータ数と比べて少ないのは，擬似データ(1)はフィルタリングの処理を1回かけているのに対し，擬似データ(2)は2回かけているからである．また擬似データ(2)のもとになる発話文は，平均TFIDF値の順位101から200の発話文であるため短い発話も多く\mbox{式\ref{giji2cont}}の制約が強く影響していたためである．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.3\subsection{擬似データの有効性}\label{擬似データの有効性}ここでは先に構築した発話者\(X\)の擬似データ(1)及び擬似データ(2)が\(X\)の言語モデルの改善に有効に利用できることを示す．この手順を以下に示す．\begin{enumerate}\item\(X\)の訓練データを用いてベースとなる言語モデルをfine-tuningすることで\(X\)の言語モデル\(M0_{X}\)を構築する．\item\(X\)の訓練データ+擬似データ(1)を用いて\(M0_{X}\)をfine-tuningすることで言語モデル\(M1_{X}\)を構築する．\item\(X\)の訓練データ+擬似データ(1)+擬似データ(2)を用いて\(M1_{X}\)をfine-tuningすることで言語モデル\(M2_{X}\)を構築する．\end{enumerate}最終的に得られた言語モデル\(M0_{X}\)，\(M1_{X}\)，\(M2_{X}\)の（\(X\)のテストデータに対する）パープレキシティを測ることで，擬似データ(1)と擬似データ(2)の有効性を示す．上記手順の(1)におけるベースとなる言語モデルがあるが，ここではりんな社によるrinna/{\linebreak}japanese-gpt2-medium\footnote{\url{https://huggingface.co/rinna/japanese-gpt2-medium}（モデルのパラメータ数は368,896,000）}を利用した．上記手順における各発話者の訓練データ及び検証用データを\mbox{表\ref{giji_jikken_data}}に示す．また\mbox{表\ref{giji_jikken_data}}には\(X\)の言語モデルのパープレキシティを測るためのテストデータの数も示す．なおこのデータは，基本的に，各発話者の全発話の90\%を訓練データ，2\%を検証用データ，8\%をテスト用データとすることで作成している．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T3\begin{table}[t]\input{09table03.tex}\caption{キャラクタごとの訓練・検証用・テストデータの数}\label{giji_jikken_data}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%またベースとなるGPT-2及び\(M0_{X}\)をfine-tuningする際，最適化関数にはSGDを利用した．また，学習率は0.01とした．また，検証用データを利用して，patienceが3のEarlyStoppingを行った．また\(M1_{X}\)をfine-tuningする場合の設定も上記と同じである．得られたパープレキシティを\mbox{表\ref{giji_jikken_kekka}}に示す．なお\mbox{表\ref{giji_jikken_kekka}}のGPT-2と\(M0_{X}\)は，次章で示す本論文の実験結果である\mbox{表\ref{tab-ppl_per_method_char}}の(1)Originalと(2)TAPTに対応するものであり，それらの値は同じであることを注意しておく．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T4\begin{table}[b]\input{09table04.tex}\caption{擬似データを用いたモデルのパープレキシティ}\label{giji_jikken_kekka}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\mbox{表\ref{giji_jikken_kekka}}において，平均のパープレキシティには以下の関係が成り立っており，擬似データが言語モデルの改善に有効に利用できることがわかる．\[M2_{X}<M1_{X}<M0_{X}\]上記の関係について有意性を確認しておく．まず\(M1_{X}<M0_{X}\)の有意性を確認するために，発話者\(X\)に対して実験で取り出した擬似データ(1)の8割をランダムに取り出し，そのデータに\(X\)の訓練データを合わせて，\(M0_{X}\)をfine-tuningすることで言語モデル\(M1^{t}_{X}\)を構築し，\(X\)のテストデータでパープレキシティを測る．この実験を5回行い平均のパープレキシティを算出し，片側5\%のt分布の検定から\(M1_{X}\)と\(M0_{X}\)の有意差を調べた\footnote{ここでの検定の考え方を注記しておく．まず擬似データが言語モデルの改善に役立っていない（パープレキシティが変化しない）を帰無仮説とする．この場合，訓練データの8割（あるいは9割）をランダム取り出し，擬似データを使って言語モデルの改善を行った場合，実験で得られるパープレキシティの分布は正規分布となり，しかも帰無仮説を仮定すればその平均値と元の言語モデルのパープレキシティとの差は有意差の範囲内に収まると考えられる．そのためt-分布の検定から有意性を確認した．}．結果を\mbox{表\ref{giji_kentei1}}に示す．「\(M1^{t}_{X}\)」の行は発話者\(X\)に対する実験5回の平均のパープレキシティであり，「標準偏差」の行は実験5回のパープレキシティの標準偏差である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T5\begin{table}[b]\input{09table05.tex}\caption{\(M1_{X}<M0_{X}\)の有意性の検定}\label{giji_kentei1}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%フォズ，ガボ，マリベルの3名に関しては有意差はなかったが，他の発話者には有意差があり，7名の平均値に関しても有意差があり，\(M1_{X}<M0_{X}\)は有意であると考えられる．この実験に関して，\(M1^{t}_{アイラ}\)の値が\(M1_{アイラ}\)の値よりも小さく，また\(M1^{t}_{メルビン}\)の値が{\linebreak}\(M0_{メルビン}\)の値よりも大きい．これは擬似データ(1)の中にはパープレキシティを改善せずに逆に改悪するデータが含まれていることを意味している．次に\(M2_{X}<M1_{X}\)の有意性を確認するために，発話者\(X\)に対して実験で取り出した擬似データ(2)の9割\footnote{擬似データ(1)では8割であったが，擬似データ(2)はデータ数が少量であるため9割としていた．}をランダムに取り出し，そのデータに\(X\)の訓練データと擬似データ(1)を合わせて，\(M1_{X}\)をfine-tuningすることで言語モデル\(M2^{t}_{X}\)を構築し，\(X\)のテストデータでパープレキシティを測る．この実験を5回行い平均のパープレキシティを算出し，片側5\%のt分布の検定から\(M2_{X}\)と\(M1_{X}\)の有意差を調べた．結果を\mbox{表\ref{giji_kentei2}}に示す．「\(M2^{t}_{X}\)」の行は発話者\(X\)に対する実験5回の平均のパープレキシティであり，「標準偏差」の行は実験5回のパープレキシティの標準偏差である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T6\begin{table}[b]\input{09table06.tex}\caption{\(M2_{X}<M1_{X}\)の有意性の検定}\label{giji_kentei2}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%リーサ姫に関しては有意差があったが，他の発話者には有意差はなく，7名の平均値に関しても有意差はなく，\(M2_{X}<M1_{X}\)の有意性は認められなかった．この実験では\(M2^{t}_{メルビン}\)の値が\(M1_{メルビン}\)の値よりも大きいことから，メルビンの擬似データ(2)の中にはパープレキシティを改善せずに逆に改悪するデータが含まれていることがわかる．他の発話者6名に関しては\(M2^{t}_{X}\leqM1_{X}\)の関係が成立している．特にガボ，キーファ，マリベルに関しては\(M2^{t}_{X}=M1_{X}\)となっている．これはこの3名の擬似データ(2)がモデルの改善に無益であったことを示している．ただし\(M2^{t}_{X}\)を学習する際に\(M1_{X}\)のモデルを初期値としている点と擬似データ(2)のデータ数が少量である点から，パープレキシティを改悪するまでにはならなかったと考えられる．以上のことから以下の点が言える．擬似データ(2)は\(M1_{X}\)を改善する場合もあるが，多くの場合は改善しない．ただし改悪する場合もほとんどないために，全体としてみるとわずかに改善に役立っていると考えられる．なお疑似データ(2)は少量であることから，追加データが不用意に少なくなっている懸念もあるが，6.3節において疑似データ(2)を作成するためのフィルタリングを行わずに，疑似データ(2)を増やした実験を行い，フィルタリングの効果を確認している．そのためフィルタリングのために疑似データ(2)が不用意に少なくなっているとは考えていない．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5
\section{実験（発話者の言語モデルの構築）}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5.1\subsection{発話者の言語モデルの学習}ここでは各発話者に対して提案手法も含めた8通りの言語モデルを構築し，各言語モデルのパープレキシティを測ることで提案手法の有効性を示す．以下に，8通りの言語モデルとその構築方法の概要を示す．\\\begin{enumerate}\item\textbf{Original:}オリジナルのGPT-2\item\textbf{TAPT:}「対象の発話者の発話」のみでfine-tuning\item\textbf{DAPT:}「全発話者の発話」でfine-tuning\item\textbf{DAPT+TAPT:}「対象の発話者の発話」でDAPTモデルをfine-tuning\item\textbf{DAPT\_name:}発話者の名前を付与した「全発話者の発話」によりfine-tuning．既存手法に対応．\item\textbf{DAPT+TAPT\_name:}発話者の名前を付与した「対象の発話者の発話」でDAPT\_nameモデルをfine-tuning．DAPT+TAPTと既存手法のハイブリッド．\item\textbf{Ours1:}発話者の名前を付与した擬似データ(1)と「対象の発話者の発話」でDAPT+TAPT\_nameモデルをfine-tuning．提案手法1．\item\textbf{Ours2:}発話者の名前を付与した擬似データ(1)および(2)と「対象の発話者の発話」でOur1のモデルををfine-tuning．提案手法2．\\\end{enumerate}具体的に「対象の発話者の発話」は\mbox{表\ref{giji_jikken_data}}に示した各発話者の訓練データに対応し，「全発話者の発話」は\mbox{表\ref{giji_jikken_data}}に示した全発話者の訓練データに対応する．また各モデルに対する検証用データやテストデータは\mbox{表\ref{giji_jikken_data}}に示されているものである．また(2)から(8)の実験では言語モデルのfine-tuningを行うが，その際の最適化関数にはSGDを利用した．また学習率は0.01とした．また(2)から(8)の全ての実験を通して，各検証用データを利用してpatienceが3のEarlyStoppingを行っている．また注意として，(2)から(8)のモデルはこの順で構築しており，各モデルの初期値はそこまでに構築したモデルを利用している．具体的には(2)TAPTと(3)DAPTと(5)DAPT\_nameの初期値のモデルは(1)オリジナルのGPT-2，(4)DAPT+TAPTの初期値のモデルは(3)DAPTのモデル，(6)DAPT+TAPT\_nameの初期値のモデルは(3)DAPT\_nameのモデル，(7)Ours1の初期値のモデルは(6)DAPT+TAPT\_nameのモデル，(8)Ours2の初期値のモデルは(7)Ours1のモデル，となっている．なお，発話に「名前:」を付けて訓練する(5)から(8)のモデルについては，検証用データやテストデータからパープレキシティを測る場合，「名前:」の部分の確率は取り除いて測っている．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5.2\subsection{実験結果}手法およびキャラクタごとのパープレキシティを表\ref{tab-ppl_per_method_char}に示す．最も良かった手法を太字で示す．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T7\begin{table}[b]\input{09table07.tex}\caption{手法およびキャラクタごとのパープレキシティ}\label{tab-ppl_per_method_char}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表\ref{tab-ppl_per_method_char}において，すべてのキャラクタにおいて提案手法(1)あるいは提案手法(2)のいずれかが最も良い結果である．提案手法(1)と提案手法(2)を比較すると，「フォズ」と「ガボ」については提案手法(1)の方が良い結果であるが，その差は非常に小さい．また「キーファ」については評価値（パープレキシティ）は同じであった．それ以外のキャラクタ「アイラ」「マリベル」「メルビン」「リーサ姫」に関しては提案手法(2)の方が良い結果である．評価値の平均から，全体としてみると提案手法(2)は提案手法(1)よりも良い結果と言える．このことから，一般－対象変換モデルと対象－一般変換モデルの2つのT5による変換モデルを利用してデータ拡張する提案手法が有効であることが分かる．ただし4.3節で行った実験から(6)DAPT+TAPT\_nameと(7)Ours1には有意差があるが，(7)Ours1と(8)Ours2には有意差がないことを注記しておく．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6
\section{考察}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.1\subsection{パープレキシティ改善の要因}手法の性質とパープレキシティを表\ref{tab_property_ppl}に示す．表中の「対象」「全員」「データ(1)」「データ(2)」「TAPT」「名前」は，それぞれ「対象の発話者の発話の使用」「全発話者の発話の使用」「疑似データ(1)の使用」「擬似データ(2)の使用」「TAPTの使用」「発話者の名前をデータに付与」の略記である．また，表中の「PPLの差」は，ひとつ上の手法とのパープレキシティの差分を表している．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T8\begin{table}[b]\input{09table08.tex}\hangcaption{手法の性質とパープレキシティ(PPL)．表中の\Checkmarkは「使用」を意味し，空白は「未使用」を意味する．}\label{tab_property_ppl}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%表\ref{tab_property_ppl}を参照しながら，手法のどのような性質がパープレキシティに影響しているのかを考察する．まず，(1)Originalと(2)TAPTの差が最も大きな差であることから，対象発話者の発話の使用(TAPT)が，GPT-2にキャラクタらしい発話をさせるのに最も有用な性質であることが分かる．(3)DAPTモデルと(4)DAPT+TAPTの差も，対象発話者の発話の使用(TAPT)の有無だけであるが，2番目に大きな改善が，この2つの差であることも，TAPTの重要さを裏付けている．3番目に大きな改善は(2)TAPTと(3)DAPTの差であるが，この差は同一作品の対象発話者以外の発話の使用である．(4)DAPT+TAPTと(5)DAPT\_nameの差は，(a)TAPTを利用するか否かと(b)発話者の名前を入力データに付与してシステムに与えるか否かの2点である．(5)DAPT\_nameの方が良いということは，同一作品の発話者の発話を訓練データとして使用する際は，対象発話者ごとに発話者のデータをもう一度与えてパラメータ調整するTAPTよりも，発話者の名前を入力データに付与してシステムに与え，キャラクタ共通の検証用データでパラメータ調整を行う方が効果的であるということが分かる．これは，データごとに発話者の名前の情報をシステムに与えることによって，発話者7名のデータがそれぞれ別のキャラクタによる発話であるという情報をシステムに与えることができているためであると考えられる．(3)DAPTから(5)DAPT\_nameの差は3.33，(4)DAPT+TAPTから(6)DAPT+TAPT\_nameの差は1.54であった．このことからも，発話者の名前の入力の効果が見て取れる．ただし，TAPTも行った場合の方が，その差は小さくなることが分かる．次に，(5)DAPT\_nameから(6)DAPT+TAPT\_nameの差も0.53あることから，DAPT+TAPTの手法と，発話者の名前を入力データに付与する手法は，併用できることが分かる．最後に，T5による一般－対象モデルによるデータ拡張，そして，T5による同作品－一般変換モデルと一般－対象モデルを用いたデータ拡張についても，それぞれ有効であり，また，これまでのすべての手法と併用することで，最も良い結果となることが分かる．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.2\subsection{生成文の主観評価}モデルが出力する生成文を被験者4名に協力してもらい，主観的な評価を行った．まず発話者\(X\)のテストデータからランダムに発話を取り出し\footnote{発話者「フォズ」に関してはテストデータが少ないので，検証用データも含めて取り出した．}，その発話の文頭から数単語を各モデルに与えて後続する単語列を出力させることで生成文を作成する．なお文頭からの数単語は10文字程度になることを目安に取り出している．例えば\(X=アリス\)のテストデータには以下の発話がある．「わたしたちは今までこいつにさんざんふりまわされてきたってわけね。」この発話の文頭からの数単語として，「わたしたちは今まで」を取り出す．この単語列「わたしたちは今まで」を実験で得られたアリスの(1)から(8)のモデルに与えて，生成文を作成する．例えば発話者アリスのモデル(4)では以下のような生成文が得られる．「わたしたちは今までずっと旅を続けているのよ。」(5)から(8)のモデルを利用する場合，モデルに与える文字列の先頭に``発話者：''を付与することに注意する．ただし生成文を人間に評価してもらう際には，先頭に現れる``発話者：''は取り除く．上記の実験において，モデルに与える単語列は5つ準備する．そして発話者\(X\)に対する各モデル(1)から(8)を利用して発話文を生成する．つまり\(X\)に対して40文の発話文が生成される．そして発話者は7名いるので，計280個の発話文が生成される．この280個の発話文を主観評価する．各言語モデルによる生成はGPT-2モデルの\verb|generate|メソッドを利用した．またその際のパラメータの設定により生成文の長さ（token数）が10以上40以下になるようにし，生成する文の個数は1つにした．具体的なパラメータは付録Bに示す．また具体的な評価方法を以下に述べる．まず発話者\(X\)のモデル\(M\)から生成された発話文が5つ存在する．被験者には各発話文に対して，\mbox{表\ref{eval}}の4種類の評価（◎，○，△，×）のいずれかを与えてもらい，\mbox{表\ref{eval}}の対応に従って，評価を数値化する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T9\begin{table}[t]\input{09table09.tex}\caption{評価値の意味とその数値化}\label{eval}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%また評価では各キャラクタごとに行ってもらった．まず対象キャラクタの対象－一般変換モデルの学習時に用いたその対象キャラクタの100発話文を読んでもらい，そのキャラクタの話し方や言い回しを予め理解してもらった．次に対象キャラクタの各モデルから生成した文をバイアスがかからないようにランダムに並べ変えて提示し，各々に上記の4種類のいずれかの記号を付与してもらい，数値化した．この主観評価実験により各被験者から各々280個の評価結果が得られた．各被験者から得られた評価結果の一致度合いをみるためにFleissのKappa係数を計算すると0.403であった．また◎と○の違いは微妙であり，この部分の判定は被験者によって当然バラツキが出るために，◎と○は同一視して一致度合いをみると，評価結果のFleissのKappa係数は0.663となった．これらの結果から4名の被験者の評価はほぼ一致していると考えられる．次に各発話者の各言語モデルについて，被験者4名の評価値の平均を求めた．この結果を\mbox{表\ref{syukan_eval}}に示す．\mbox{表\ref{syukan_eval}}は各発話者の各モデルに対して，被験者4名の評価値の平均が記載されている．また各モデルに対して生成される発話文は140文あるが，その中で評価値が3以上の文の総数を平均の評価値の下にカッコ書きで記した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T10\begin{table}[t]\input{09table10.tex}\caption{手法およびキャラクタごとの主観評価値}\label{syukan_eval}{\vskip5pt}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%評価値が3.0以上であれば，ほぼ妥当な文が生成できていると考えられる．特に(6)，(7)，(8)の言語モデルの評価値の平均はどれも3.3以上の値を取っていることから，提案手法により構築された言語モデルがほぼ妥当な文を生成できることがわかる．またパープレキシティによりモデルを良い順に並べると，\begin{verbatim}(8)>(7)>(6)>(5)>(4)>(3)>(2)>(1)\end{verbatim}であるが，主観評価によりモデルを良い順に並べると，\begin{verbatim}(7)>(8)>(6)>(5)>(4)>(2)>(3)>(1)\end{verbatim}となり，(2)TAPTと(3)DAPT及び(7)Ours1と(8)Ours2が逆転している．これは評価値3以上の総数から評価してもこの逆転の現象が生じている．(3)DAPTは文頭の数単語から発話者が特定できなければ，文としては正しいが，その発話者らしい文を生成するとは限らない点から，(2)TAPTの評価値よりも劣ったと考えられる．また(7)Ours1と(8)Ours2のパープレキシティの差はわずかであることから，実際の生成文での主観評価が逆転したのだと考えられる．また(6)，(7)，(8)の言語モデルの中で，発話者「ガボ」の(8)の言語モデルの主観評価値だけが3を割っている．これは文頭「この町おもしろかった」を与えたときの(8)の言語モデルの生成文が「この町おもしろかったなあ。オイラも行ってみたかったなあ。」であり，この生成文の評価値が4名とも×を与えたことが大きな原因である．この生成文は2つの文からなり，それぞれの文は「ガボ」の発話と見なせるが，1文目の「この町おもしろかったなあ。」ということはその町に訪れた感想であるのに，2文目の「オイラも行ってみたかったなあ。」はその町に訪れていないことを意味しているため×が与えられた．なお文頭「この町おもしろかった」に続く(6)や(7)の言語モデルの生成文は，どちらも「この町おもしろかったなあ。」であり○や◎が与えられている．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.3\subsection{擬似データ作成時のフィルタリングの効果}本研究では擬似データ(1)と擬似データ(2)の作成時に\mbox{式\ref{giji1cont}}や\mbox{式\ref{giji2cont}}で示されるフィルタリングを行った．この効果について調査する．まずフィルタリングを行わない場合，\mbox{表\ref{tab-data21}}や\mbox{表\ref{tab-data22}}で示される入力発話がそのまま擬似データ(1)と擬似データ(2)に変換されるため，言語モデルの学習データの数としてはフィルタリングを行わない方が多く，最終の結果はフィルタリングを行わない方が良さそうである．しかし実際は一般ー対象変換モデルや対象ー一般変換モデルの性能が十分でないことや変換元の発話文の問題もあり，学習のノイズになるようなデータも生成されてしまうために，本研究では簡易なフィルタリングを設けている．まず式4で示されるフィルタリングの効果を調査する．具体的には\mbox{式\ref{giji1cont}}のフィルタリングを行わずに擬似データ(1)を作成し，\ref{擬似データの有効性}節と同じ実験を行った．結果を\mbox{表\ref{filter_jikken_kekka}}に示す．表中の\(M1_{X}\)がフィルタリングを行った本研究での結果であり，\(M1'_{X}\)がフィルタリングを行わない結果である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T11\begin{table}[b]\input{09table11.tex}\caption{フィルタリングの有無による擬似データ(1)の効果}\label{filter_jikken_kekka}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%「アイラ」に対してはフィルタリングを行わない方が良い結果を出しているが，「アイラ」以外の発話者及び7名の平均に対してはフィルタリングを行う方が良い結果であり，\mbox{式\ref{giji1cont}}のフィルタリングは有効であったと言える．また\(M1'_{X}\)モデルの学習の初期値は\(M0_{X}\)モデルである．\(M0_{X}\)モデルの平均のパープレキシティが27.33であり，\(M1'_{X}\)が27.42である．つまり\mbox{式\ref{giji1cont}}のフィルタリングを行わずに，擬似データ(1)を作成し，それを学習に使った場合は言語モデルの性能を落とすことになる．更に\mbox{式\ref{giji1cont}}の他に\mbox{式\ref{giji2cont}}のフィルタリングを行わずに擬似データ(2)を作成し，\ref{擬似データの有効性}節と同じ実験を行った．結果を\mbox{表\ref{filter_jikken_kekka2}}に示す．表中の\(M2_{X}\)がフィルタリングを行った本研究での結果であり，\(M2'_{X}\)がフィルタリングを行わない結果である．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T12\begin{table}[b]\input{09table12.tex}\caption{フィルタリングの有無による擬似データ(2)の効果}\label{filter_jikken_kekka2}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%擬似データ(1)の場合と同様，擬似データ(2)の場合も「アイラ」に対してはフィルタリングを行わない方が良い結果を出しているが，「アイラ」以外の発話者及び7名の平均に対してはフィルタリングを行う方が良い結果であり，\mbox{式\ref{giji2cont}}のフィルタリングは有効であったと言える．また\(M2'_{X}\)モデルの学習の初期値は\(M1'_{X}\)モデルである．\(M1'_{X}\)モデルの平均のパープレキシティが27.42であり，\(M2'_{X}\)が27.89である．つまり\mbox{式\ref{giji1cont}}と\mbox{式\ref{giji2cont}}のフィルタリングを行わずに擬似データ(2)を作成し，それを学習に使ったことで言語モデルの性能が落ちている．フィルタリング無しの擬似データ(1)はパープレキシティを0.09悪化させたが，フィルタリング無しの擬似データ(2)はパープレキシティを0.47悪化させている．フィルタリング無しの擬似データ(2)の方が悪化の程度が大きいのは，擬似データ(1)の場合は1回のフィルタリングを省いているだけだが，擬似データ(2)の場合は2回のフィルタリングを省いているからだと考えられる．また擬似データ(1)の発話文の長さの平均は20.9であり，擬似データ(2)の発話文の長さの平均は31.8であり，両者には大きな差がある．そのため擬似データ(2)による性能の向上は，\mbox{式\ref{giji2cont}}のフィルタリングにより単に発話の長さが26文字以上の長い発話文を訓練データに追加したことによるものであり，本論文で提案した変換モデルは言語モデルの性能向上に寄与していないのでは，という疑念もある．この点を確認するために，擬似データ(2)の構築元になる発話の中で発話の長さが26文字以上の発話を取り出し，それを変換モデルで変換せずに，そのまま訓練データに追加した場合の実験を行った．これは\ref{擬似データの有効性}節で擬似データ(2)の有効性を示した実験において，擬似データ(2)の代わりに発話の長さが26文字以上の発話データを用いた実験の形である．結果を\mbox{表\ref{25_jikken_kekka}}に示す．表中の\(M2_{X}\)が擬似データ(2)追加した本研究での結果であり，\(M2^{26}_{X}\)が26文字以上の発話データを用いた実験である．\(M2_{X}\)と\(M2^{26}_{X}\)のパープレキシティの値の下にはカッコ書きでデータ数も示した．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T13\begin{table}[t]\input{09table13.tex}\caption{発話長だけのフィルタリングの結果}\label{25_jikken_kekka}\end{table}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%実験の結果，キーファ，マリベル及びメルビンに関しては，擬似データ(2)を訓練データに追加するよりも，単に26文字以上の長い発話を訓練データに追加する方が良い結果が得られているが，他の4名に関しては擬似データ(2)の方が追加の効果が高い．また全体の平均をみても擬似データ(2)の方が追加の効果が高い．この点から本論文の提案した変換モデルは性能の向上に寄与していると考えられる．更に単に26文字以上の長い発話を訓練データに追加した場合，学習の初期値のモデルとなる\(M1_{X}\)よりも性能が落ちている．このことから単に26文字以上の発話を訓練データに追加するだけでは，必ずしも言語モデルの性能が向上するというわけではないことがわかる．また擬似データ(2)のデータ数と26文字以上の発話のデータ数には大きな差がある．これは一般－対象変換モデルが長い発話文を短い発話文に変換する傾向があったことを意味している．\mbox{式\ref{giji2cont}}のフィルタリングは，このような変換文を除くためにも機能している．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4\subsection{今後の課題}今後の課題として「同領域データの利用」，「ベースとなる言語モデルの調整」，「大規模言語モデルの利用」の3点をあげる．\bigskip\noindent\underline{\textbf{同領域データの利用}}\\\本研究で構築した一般－対象変換モデルを利用すれば，大量に存在する一般的な発話を対象キャラクタの発話に変換できる．そのため大量に作成できる擬似データ(1)を用いることで対象キャラクタの言語モデルの性能を更に高められる可能性がある．しかし\citeA{kishino-2022-9}では「日本語話し言葉コーパス」\footnote{\url{https://clrd.ninjal.ac.jp/csj/index.html}}の発話を対象キャラクタの発話に変換することを行っても良い結果が得られないことを示した．言語モデルの性能向上には利用データの発話の領域も重要な要素であると考えられる．一方，本実験はゲームソフト内の発話を利用したが，同シリーズのゲーム内の発話は同領域と見なせる．そのため同シリーズのゲーム内の発話を利用することで，更に対象キャラクタの言語モデルの性能を向上させることができると考えている．\bigskip\noindent\underline{\textbf{ベースとなる言語モデルの調整}}\\\本実験ではベースとなる言語モデルとしてrinna/japanese-gpt2-mediumを利用したが，他にも多くの強力な言語モデルが存在する．ベースとなる言語モデルを変化させることで提案手法がどの程度有効になるのかを調べることも必要だと考えている．また言語モデルの出力は，パラメータの設定で大きく変化する場合もあり，より適切なパラメータも調査したい．\bigskip\noindent\underline{\textbf{大規模言語モデルの利用}}\\\GPT-3のような大規模言語モデルではzero-shotやいくつかの事例を与えるIn-contextlearningの枠組みで所望の出力が得られることが知られている．つまり大規模言語モデルに与えるプロンプトの工夫次第で，対象キャラクタの発話を生成できる可能性は高い．大規模言語モデルの利用と本研究のような中規模の言語モデルのfine-tuningとの比較は興味深く，今後，調査していきたい．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S7
\section{おわりに}
本研究では，特定の話者の言語モデルを構築する方法を提案した．この際，対象の発話者の発話をタスクのデータとみなし，対象の発話者の登場する作品の登場人物の発話をドメインのデータとみなした，DAPT+TAPTの手法を利用した．また，発話者の名前をデータに付与することで，言語モデルのパープレキシティが改善することを確認した．その上で，T5による一般－対象モデルによるデータ拡張（擬似データ(1)の構築），そして，T5による対象－一般変換モデルと一般－対象モデルを用いたデータ拡張（擬似データ(2)の構築）を提案し，DAPT+TAPTの手法および発話者の名前をデータに付与する手法と併用することで，言語モデルが最良になることを，パープレキシティの評価実験により示した．また主観評価においても提案手法の有効性が示せた．また擬似データ(1)，(2)を構築する際に導入したフィルタリングの効果も確認できた．%%%Acknowledgement%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\acknowledgment本研究は国立国語研究所の共同研究プロジェクト「テキスト読み上げのための読みの曖昧性の分類と読み推定タスクのデータセットの構築」及びJSPS科研費23K11212，22K12145の助成を受けています．%%%Bibliography%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\bibliographystyle{jnlpbbl_1.7}\bibliography{09refs}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\appendix
\section{T5モデルの学習時のパラメータ}
ここではT5モデルの学習時のパラメータ設定に対応するコード部分を記述する．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{verbatim}no_decay=["bias","LayerNorm.weight"]optimizer_grouped_parameters=[{"params":[pforn,pinnet.named_parameters()ifnotany(ndinnforndinno_decay)],"weight_decay":0.0,},{"params":[pforn,pinnet.named_parameters()ifany(ndinnforndinno_decay)],"weight_decay":0.0,},]criterion=nn.CrossEntropyLoss()optimizer=optim.AdamW(optimizer_grouped_parameters,lr=3e-4,eps=1e-8)scheduler=get_linear_schedule_with_warmup(optimizer,num_warmup_steps=0,num_training_steps=5000)\end{verbatim}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{言語モデルのgenerateメソッドのパラメータ}
主観評価の実験において，言語モデルの\verb|generate|メソッドを用いて発話分を生成した．その際の\verb|generate|メソッドのパラメータを以下に記す．記述のないパラメータについてはdefaultのものを使っている．また\verb|tokenizer|はモデルで指定されているトークナイザである．%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{verbatim}output=model.generate(input_ids,//入力の先頭の数単語max_length=40,min_length=10,do_sample=False,top_k=500,top_p=0.1,pad_token_id=tokenizer.pad_token_id,bos_token_id=tokenizer.bos_token_id,eos_token_id=tokenizer.eos_token_id)\end{verbatim}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Biography%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\begin{biography}\bioauthor{馬ブン}{2017年静岡文化芸術大学デザイン学部メディア造形学科卒業．2019年3月静岡文化芸術大学大学院デザイン研究科デザイン専攻修了．2019年4月茨城大学理工学研究科社会インフラシステム科学専攻入学．現在に至る．}\bioauthor{岸野望叶}{2021年茨城大学工学部情報工学科卒業．2023年茨城大学理工学研究科情報工学専攻修了．}\bioauthor{古宮嘉那子}{2005年東京農工大学工学部コミュニケーション工学科卒．2009年同大学大学院博士後期課程電子情報工学専攻修了．博士（工学）．同年東京工業大学精密工学研究所研究員，2010年東京農工大学工学研究院特任助教，2014年茨城大学工学部情報工学科講師，2021年東京農工大学工学研究院准教授．現在に至る．自然言語処理の研究に従事．情報処理学会，人工知能学会，言語処理学会各会員．}\bioauthor{新納浩幸}{1985年東京工業大学理学部情報科学科卒業．1987年同大学大学院理工学研究科情報科学専攻修士課程修了．同年富士ゼロックス，翌年松下電器を経て，1993年茨城大学工学部システム工学科助手．1997年同学科講師．2001年同学科助教授．2005年学科改組により，情報工学科准教授．2015年同学科教授．現在に至る．機械学習，統計学による自然言語処理の研究に従事．情報処理学会，人工知能学会，言語処理学会各会員．}\end{biography}\biodate%%%%受付日の出力（編集部で設定します）\end{document}