\documentclass[japanese]{jnlp_3.8}
\usepackage{jnlpbbl_2.2}
\usepackage[dvipdfmx]{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{url}
\usepackage{array}
\allowdisplaybreaks


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% author's definition

%%%%%\usepackage{url}
\usepackage{lscape}
\usepackage{multirow}
%%%%%\renewcommand\UrlFont{\rmfamily}
%%%%%\usepackage[hang,small,bf]{caption}
%%%%%\usepackage[subrefformat=parens]{subcaption}
%%%%%\captionsetup{compatibility=false}
\usepackage{ascmac}
%%%%%\newcommand{\ctext}[1]{\raise0.2ex\hbox{\textcircled{\scriptsize{#1}}}}
\usepackage{longtable}
%%%%%\allowdisplaybreaks

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\Volume{31}
\Number{3}
\Month{September}
\Year{2024}
%%%%\Issuetitle{「　　　　」特集号}

\received{2023}{12}{1}
\revised{2024}{2}{29}
\accepted{2024}{4}{5}

\setcounter{page}{894}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\jsubject{一般論文}

\jtitle{口調エンコーダを用いた小説発話の話者推定}
\jauthor{石川　和樹\affiref{NU}\affiref{WED} \and 小川　浩平\affiref{NU} \and 佐藤　理史\affiref{NU}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\jabstract{%
日本語のライトノベルでは，登場人物毎に異なる口調（話し方のスタイル）を用い，その口調によってセリフの話者を暗示させる技法がしばし
ば用いられる．「セリフの書き分け」と呼ばれるこの小説技法は，
多くの口調が存在するという日本語の話し言葉の特徴を利用している．こ
の技法が使われる小説では，地の文を主要な手がかりとする
話者推定法だけでは，正しい話者を推定することが難しい．
本研究では，口調を利用した話者推定を実現するために，以下のことを行った．(1) 小説のセリフを，その口調の特徴を埋め込んだベクトル（口調ベクトル）に変換する口調エンコーダを提案した．(2) 口調エンコーダを利用
して，セリフの話者を自動同定する手法（口調に基づく話者同定）を提案した．(3) この手法の前段に話者候補生成モジュールをつなげた話者推定システムを実装した．
このシステムを用いて5つの作品に対して話者推定実験を行い，4つの作品に対してベースラインを上回る結果を得た．
\renewcommand{\thefootnote}{}
\footnote[0]{本論文は，情報処理学会第253回自然言語処理研究会（石川 他 2022）と言語処理学会第29回年次大会（石川 他 2023）を発展させたものである．}
\renewcommand{\thefootnote}{\arabic{footnote}}
}
\jkeywords{口調，小説，話者推定}

\etitle{Speaker Identification using Speech-Style Encoder}
\eauthor{Kazuki Ishikawa\affiref{NU}\affiref{WED} \and Kohei Ogawa\affiref{NU} \and Satoshi Sato\affiref{NU}}
\eabstract{%
Many different speech styles are used in spoken Japanese. Authors of Japanese young-adult novels use this characteristic to indicate that an utterance is spoken by which character. For a reader of such
novels, the speech style of an utterance is a clue for identifying the speaker
when there is no speaker information in the ground sentences around the
utterance. To realize automatic speaker identification using speech
style, we proposed three things: (1) We proposed a
speech-style encoder that converts utterances into vectors
(speech-style vectors), in which the features of the speech style are
embedded. (2) We proposed a method for automatically identifying
the speaker of utterances (speech-style-based speaker identification)
using this encoder. (3) We implemented a speaker identification
system that combines the above method with a speaker candidate
generation module. Using this system, we conducted speaker
identification experiments on five novels. For four novels among
five, the proposed method outperformed the two baseline methods.
}
\ekeywords{Speech Style, Novel, Speaker Identification}


\headauthor{石川，小川，佐藤}
\headtitle{口調エンコーダを用いた小説発話の話者推定}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\affilabel{NU}{名古屋大学大学院工学研究科情報・通信工学専攻}{Department of Information and Communication Engineering, Graduate School of Engineering, Nagoya University}
\affilabel{WED}{現所属：WED株式会社}{Current affiliation: WED, Inc.}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\maketitle


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S1
\section{はじめに}
人間は，小説を読む際，そこに出てくるセリフが誰のセリフなのかを理解しな
がら読み進めることができる．これは，テキスト中に，話者を特定する手がか
りが十分に与えられているからである．代表的な手がかりとして，次のものが
ある．

\begin{enumerate}
    \item セリフの前後の地の文において，『Aは言った』のような形式で，
    話者が明記される
    \item 連続するセリフでは，話者が交替する（話者交替）
    \item セリフの口調や発話内容から，話者が特定できる
\end{enumerate}

これらの手がかりのうち，どの手がかりが多く与えられるかは，個々の小説に
よって異なる．たとえば，英語の小説\textit{Pride and Prejudice}では，前後の
地の文で話者が明記されるセリフが，全体の約25\%
を占めると報告されており\cite{He}，コンピュータによる話者の自動推定の
研究でも，話者の明記や話者交替を主な手がかりとして利用する方法が主流で
ある\cite{He,Muzny}．一方，日本語のライトノベル\cite{Ohmori2004,Ishii2022}
では，話者が明記されるセリフは比較的少ない．
さらに，話者候補が明記されていても話者を特定できない場合もある．
次の例におけるセリフ$U_3$と$U_4$が，その一例である
\footnote{$N_i$は地の文を，$U_j$はセリフを表す．}．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{screen}
    $N_1$:　そう即答したステフに。\\
    $N_2$:　しかし兄妹は、対照的にうつむく。\\
    $U_3$:「……いい、な……」\\
    $U_4$:「……ああ、そう言い切れるのは、ホントに羨ましいよ」\\
    $N_5$:　だが------兄は静かな声で、しかし問答無用に。\\
    $N_6$:　ステファニー・ドーラの、その希望を切り捨てる。\\
    $U_7$:「だがその願いは叶わない」\\
    \rightline{『ノーゲーム・ノーライフ』\cite{ノーゲーム・ノーライフ} pp.~143--144より}
\end{screen}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

この例のセリフ$U_3$と$U_4$は，兄妹のいずれかのセリフであることが文$N_2$
から推測できる．しかし，どちらが兄で，どちらが妹のセリフであるかは，周辺の地の文だ
けからでは判定できない．この2つのセリフの話者を推定する主要な手がかりは，セ
リフの口調にある．読者は，この場面に至るまでに，兄妹がそれぞれどのよう
な口調を使うかを無意識に学習しており，それに基づいてセリフの話者を同定する．
ライトノベルではこのようなセリフが多いため，ライトノベル
を対象とした話者の自動推定では，セリフの口調に基づいて話者を推定することが
必要になると考えられる．
なお，本研究では，口調を，セリフの表記に現れるスタイル的特徴を包括する概念と定義する．
すなわち，口調とは文末表現などの特定の要素を指し示すものではなく，文末表現や一人称，
語彙，セリフの長さなど多様な特徴の複合体と捉える．

与えられたセリフの話者を推定する方法としてすぐに思い付くのが，話者をク
ラスとして，セリフを話者クラスに分類する分類器を実現する方法である．し
かし，登場人物は個々の小説で異なるため，このような分類器の学習には，対
象小説の登場人物のセリフを集め，それに話者ラベルを付与した学習データが
必要となる．話者の明記などの手がかりを用いて話者が確定するセリフを自動
収集することは可能であるが，分類器の学習に十分な量の学習データを集める
のは難しい．

そこで本研究では，多くの小説に横断的に見られる口調に着目し，セリフと話
者を直接結びつけるのではなく，口調を介してセリフと話者を結びつける方法を採用する．
具体的には，対象小説以外の小説のセリフデータを利用して，セリ
フを口調の特徴を埋め込んだベクトルに変換する\textbf{口調エンコーダ}を実現する．
そして，口調エンコーダによってもたらされるベクトル（口調ベクトル）を用いて，少量のラベル付きセリフ
データから話者を推定する方法を実現する．
本研究の目的は，このような，口調を手がかりに利用した話者推定システムを実現し，
日本語のライトノベルの話者推定に対する口調の有効性を確かめることである．

話者の自動推定とは，セリフに対する話者ラベルの自動付与を意味する．つま
り，話者の自動推定が実現できれば，各セリフに話者ラベルを付与した小説
テキストデータの作成が容易となる．このようなテキストは，発話の理解や小説の理解
を目指す研究のための基礎資料となる．同時に，特定のキャラクターを模した対
話システム\cite{なりきりAI,なりきりAI2,なりきり対話}の実現のために必要
な，対象のキャラクターのセリフの収集を容易にする．

本論文の貢献は次の通りである．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{enumerate}
    \item セリフの口調をベクトル化する方法として，文エンコーダと分類器
    を組み合わせた口調エンコーダの基本構成を提案した．さらに，口調エンコーダの実
    装として80種類の構成を検討し，どのような構成が優れてい
    るかを実験的に明らかにした．
    
    \item 口調ベクトルを利用した話者推定法として，\textbf{口調に基づく話者同定}を提案した．
    この手法では，セリフ実例から話者の口調を表すベクトル（代表口調ベクトル）を算出し，話者を同定したいセリフの口調ベクトルと各話者
    候補の代表口調ベクトルの距離に基づき，話者を同定する．この手法が必要と
    するセリフ実例の数は，各話者に対して10件程度であり，大量のセリフ実例を
    必要としない点に特徴がある．さらに，口調に基づく話者同定では，あらかじめ話者候補を絞り込ん
    でおくことが効果的であることを確かめた．
    
    \item 日本語のライトノベルを対象とした話者推定システムとして，口調に基づく話者同
    定の前段に，話者候補生成モジュールを配置したシステムを提案した．このシステ
    ムでは，前段のモジュールで話者が確定したセリフを代表口調ベ
    クトルの算出に使用するため，あらかじめセリフ実例を準備する必要がない．

    \item
        上記の話者推定システムを5つの作品に実際に適用し，口調エンコーダで生成した口調ベクトルが，話者推定に活用できることを
        実験的に明らかにした．
\end{enumerate}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S2
\section{関連研究}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S2.1
\subsection{口調に関する研究}
本論文における「口調」と関連する用語として，金水が定義した「役割語」\cite{役割語}や，メイナードが定義した「キャラ語」\cite{キャラ語}がある．
前者の役割語は，話者の特定の人物像を想起させる特定の言葉遣いを指し，主にセリフの語尾に現れる特定の語彙に着目している．
本論文の「口調」は，役割語よりも広い範囲の現象をカバーする．
後者のキャラ語は，「あるキャラクターに限って一貫して使われるカラフルな話のスタイル」と定義されており，
「キャラ語にはコミュニケーションのありとあらゆるレベルの操作が含まれる」と説明されている．
本論文の「口調」は，概念としては，このキャラ語にほぼ対応する．

自然言語処理の分野では，口調に関する研究として，日本語のキャラクターのセリフを分析し，どのよう
な言語特徴がキャラクターを特徴付けるかを分析した研究
\cite{miyazaki-towards}がある．この研究は，セリフにおけるキャラクター
らしさが単一の言語特徴によってもたらされるのではなく，語彙や機能語，文末表現，
構文の複雑さなど複数の言語特徴から構成されることを示した．また，
\citeA{otohenka}は，キャラクターを特徴付ける1つの要素として音変化
（「ひどい」から「ひでえ」への変化等）を分析し，音変化のパターンを137種
類に分類した．これらの研究は，セリフのキャラクターらしさは複数の要素か
ら構成され，音変化のような1つの言語特徴のみに着目しても，かなり複雑な
体系となっていることを示している．そのため単純なルールでセリフから口調
を弁別することは困難であると予想される．

口調のベクトル化に関連した研究として，\citeA{発話文表現文型辞書}がある．
この研究は，発話意図ごとにその発話意図を表現する言語形式（表現文型）を整
理し，話し方の特徴を表す6軸20要素のベクトルをそれぞれの表現文型に付与
した．しかし，このベクトルは人手で付与されたベクトルであり，客観性に乏
しい．ニューラルネットを用いて口調ベクトルの獲得を試みた研究には，本研
究の前身 \cite{口調ベクトル} 以外に，\citeA{style_vec} や\citeA{銭本2023} がある．
前者の\citeA{style_vec} では，CBOW \cite{word2vec}をベースにした学習により，単語のスタイル表現をベクトル化した．
そして実験の結果，「俺」のベクトルが「おまえ」のベクトルに近くなるなど，単語の意味ではなく単語のスタイルで埋め込み表現を作成できたことを示した．
この研究は単語をベクトル化した研究だが，本研究はセリフ全体のベクトル化を試みるものである．
後者の\citeA{銭本2023}は，本研究と同様，セリフ全体をベクトルに変換する手法を提案している．
この研究では，2つのセリフの話者が同一であるデータ（正例）と異なるデータ（負例）から
なる学習データに対して対照学習を適用し，口調の特徴を表すベクトル
を獲得した．しかし，学習データの作成には，比較的単純なヒューリスティッ
クを用いており，学習データに含まれる正例のうち，実際に口調が似ているセ
リフの割合はおよそ半数だったと報告している．また，得られたベクトルが具
体的にどれだけ口調を弁別する能力を有しているかは，明らかにされていない．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S2.2
\subsection{話者推定に関する研究}
英語の小説では，セリフの直前直後に``replied Kitty''などの形で，発話動
詞の主語として話者が明示的に示されることが多いため\cite{He}，地の
文が話者推定の重要な手がかりとなる．英語小説を対象とした話者推定の研究
の代表的なものに，地の文および発話内から取得できる複数の明示的な手がか
りを特徴量としたSVMを使った手法\cite{He}や，セリフやその前後の文が特定
のパターンにマッチするかに基づいて推定を行う手法\cite{Muzny}がある．さ
らに，\citeA{sea}は，セリフとその周囲の文を入力とするニューラルネット
を用いることで，明示的な手がかりだけでなく文脈を考慮した話者推定を実現
した．

日本語小説を対象とした話者推定の研究には，青空文庫を対象とした研究
\cite{du}や，BCCWJ発話者アノテーションデータ\cite{BCCWJ}を対象とした研
究\cite{zenimoto_BCCWJ}が存在する．しかし，これらの手法は表層的な手が
かりのみを利用しており，十分な推定精度は得られていない．ニューラルネッ
トを用いてセリフの話者を推定することを試みた研究\cite{fundamental}もあ
るが，あらかじめ定めた話者集合に対して学習した分類器を話者推定に用いて
おり，未知の話者のセリフには対応していない．
話者推定に口調を利用する研究は，本研究の前身\cite{口調ベクトル,話者推定}以外にも，
\citeA{zenimoto_gender}が存在するが，これはセリフから話者の性別分類を行ったものであり，同性間での推定や3人以上候補がいる状況での話者推定は行えない．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S3
\section{本研究のアプローチ}\label{本研究のアプローチ}

話者推定問題は，与えられたセリフの話者を推定する問題である．候補となる
話者の集合があらかじめ与えられる場合は，セリフに話者ラベルを付与する多
クラス分類問題となる．本研究でも，推定すべき話者の集合は，あらかじめ与
えられるものとする．

話者推定問題を分類問題として解くのであれば，セリフと話者の組からなる訓
練例を大量に用意し，機械学習によって話者分類器を構成するという方法が，すぐ
に思いつく．しかしながら，この方法は現実的ではない．なぜなら，それぞれ
の小説において，登場人物の集合は異なるからである．もし，話者を推定した
い小説に対してそのような訓練例が大量に準備できるのであれば，話者推定問題はほとんど解けてしまっていることになる．

もちろん，まったく実例がない設定では，登場人物のセリフの特徴を知る術が
ない．そのため，最小限の実例は不可欠である．実際の小説では，地の文にセ
リフの話者が明記される場合があり，これを利用すれば，少量の実例を取
得することは可能である．
しかしながら，このような方法で自動収集可能な実例は，各登場人物に対して
高々数十件程度であり，このような少量の実例だけから話者のセリフの特徴を
十分に把握することは難しい．そのため，なんらかの工夫が必要である．


本研究では，多くの小説に横断的に見られる口調に着目し，推定対象以外の小
説のセリフを利用して，任意のセリフを，その口調の特徴を埋め込んだベク
トルに変換する機構（\textbf{口調エンコーダ}）を実現する．口調エンコーダが実現でき
れば，以下の方法で話者推定が可能となる．
\begin{quote}
    

\textbf{口調に基づく話者同定法}
\begin{enumerate}
    \item 代表口調ベクトルの算出\\
    それぞれの人物に対して少数のセリフ実例を用意し，それぞれのセリフ実例を口調ベクトルに
    変換する．これらの口調ベクトルの平均を，その人物の口調を表すベクトル（代表口調ベクトル）とみなす．
    \item 話者の推定\\
    話者を推定したいセリフを口調ベクトルに変換し，それぞれの人物の代表口調ベクトルとの距離
    \footnote{どのような距離を用いてもよいが，本研究ではユークリッド距離を用いた．
    コサイン類似度を用いることも検討したが，ユークリッド距離を用いた方が人物間の差がはっきりと出たため，本研究ではユークリッド距離を採用した．}
    を計算し，距離が最小であった人物を，そのセリフの話者であると推定する．
\end{enumerate}
\end{quote}

この方法では，次の2つのことを仮定している．
\begin{enumerate}
    \item 同一作品中の主要登場人物は，それぞれ異なる口調で話す
    \item 各人物は，作品を通して一貫した口調で話す
\end{enumerate}

日本語のライトノベルでは，登場人物毎に異なる口調（話し方のスタイル）を用い，
その口調によってセリフの話者を暗示させる「セリフの書き分け」という技法がしばしば用いられる．
このような小説では，前者の仮定 (1) はおおよそ成立する．
一方，後者の仮定 (2) は，登場人物が状況や対話相手に応じて口調を使い分ける場合には，
成立しない．上記の方法にはこのような限界があるが，まずは，上記のような単
純な方法で，話者推定に口調が利用できるかどうかを確かめる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4
\section{口調エンコーダの実現}\label{口調のベクトル化}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1
\subsection{口調エンコーダの構成と実装}\label{口調エンコーダの構成}

セリフを口調ベクトルに変換する方法として，図\ref{図：モデル構成}に示す
基本構成を採用する．この図に示すように，口調エンコーダを，(1) 文の埋め込み
（ベクトル）を作成する文エンコーダと，(2) その出力（CLSトークンに対応する埋め込み）を入力とする3層の分類器から構成する．後者の分類器の役割は，文
の埋め込みを，より口調の特徴が陽に現れるようなベクトルに変換することで
ある．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F1
\begin{figure}
\begin{center}
\includegraphics{31-3ia3f1.pdf}
\end{center}
    \caption{口調エンコーダの基本構成}
    \label{図：モデル構成}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


この口調エンコーダの実装には，多くの選択肢がある．それらのうち，本研究
では表\ref{表：口調エンコーダ}に示す5つのポイントに対し，合計で80 ($=2\times 2\times 2\times 2\times 5$) 種類
の組み合わせを考え，どのような構成が優れているのかを実験的に明らかにする．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T1
\begin{table}[tbp]
\input{03table01.tex}
    \caption{口調エンコーダの実装における選択肢}
    \label{表：口調エンコーダ}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1.1
\subsubsection{文エンコーダとして何を用いるか}

文エンコーダとして，BERT と LUKE の2つの選択肢を検討する．

BERT \cite{bert}は，代表的な文エンコーダである．本研究では事前学習済みモデルとして，東北大学乾研究室が作成した bert-base-japanese-whole-word-masking\footnote{\url{https://huggingface.co/tohoku-nlp/bert-base-japanese-whole-word-masking}}を使用する．BERTから得られる文埋め込みの次元数$d_i$は768次元である．

LUKE \cite{luke}はエンティティの学習に特化した文エンコーダで，日本語の事前学習済みモデルが多くのタスクで高い性能を示すことが報告されている．本研究では，株式会社 Studio Ousia が作成した luke-japanese-large-lite\footnote{\url{https://huggingface.co/studio-ousia/luke-japanese-large-lite}}を事前学習済みモデルとして使用する．
LUKE から得られる文埋め込みの次元数$d_i$は，1024次元である．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1.2
\subsubsection{文エンコーダの追加学習を行うか}
\label{エンコーダの追加学習を行うか}

文エンコーダとして用いる BERTとLUKE は，どちらも日本語 Wikipedia で事前学習されている．しかし，口調エンコーダの入力は小説のセリフであり，通常の書き言葉のテキストとは文体が大きく異なるテキストである．そこで，小説のセリフの実例を用いて，文エンコーダの追加学習を行うことを検討する．学習データにはBCCWJ小説会話文 \cite{BCCWJ} の146,096セリフを用い，単語マスキングによる穴埋めタスクで追加学習を行う．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1.3
\subsubsection{どんな分類器を採用するか}

分類器の役割は，文の埋め込みを，より口調の特徴が陽に現れるようなベクト
ルに変換することである．このような変換を実現する分類器として，
口調タイプ分類器と話者分類器の2つの選択肢を検討する．

\textbf{口調タイプ分類器}は，分類クラスとして口調タイプを用いる分類器である．ここで，
口調タイプとは，たとえば「男性で乱暴な口調」，「女性で敬語」など，あらか
じめ定めた口調のプロトタイプを意味する．この分類器は，口調の特徴を直接
的に学習することを意図している．その実現には，口調タイプの集合を設計し，
セリフとその口調タイプが組になった学習データが必要となる．

一方，\textbf{話者分類器}は，分類クラスとして話者を用いる分類器である．口調が，
セリフから話者を推定するための重要な手がかりになるのであれば，話者分類
器でも口調の特徴を間接的に学習できると考えられる．この分類器の実現には，
セリフとその話者が組となった学習データを準備すればよく，口調タイプの設計が不要である．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1.4
\subsubsection{どの層を口調ベクトルとして採用するか}

口調ベクトルとして採用する層として，分類器の中間層，および，出力層の2つの選択肢を検討する．
中間層のベクトルには，口調タイプ（あるいは話者）を分類するための有用な特徴が埋め込まれていることが期待できる．
出力層のベクトルを用いる場合は，口調を，あらかじめ設定した口調タイプ（あるいは話者）の混合として捉えることに相当する．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.1.5
\subsubsection{中間層の次元数をいくつに設定するか}

中間層の次元数は，分類器の種類によらず自由に設定できる．
ここでは，中間層の次元数として[16, 32, 64, 128, 256]の5種類の選択肢を検討する．

中間層を口調ベクトルとして採用する場合，口調ベクトルの次元数は，この中間層の次元数と同じになる．
一方，出力層を口調ベクトルとして採用する場合は，出力層の次元数
（あらかじめ設定した口調タイプ数あるいは話者数）で固定になる．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.2
\subsection{データ作成}
\label{データ作成}

口調エンコーダの学習用データの作成には，次の7作品の小説
を利用した．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{itemize}
    \item[a.] 有川浩『図書館戦争』，『図書館危機』\cite{図書館戦争,図書館危機}
    \item[b.] 武田綾乃『響け! ユーフォニアム』1・3巻\cite{響けユーフォニアム1,響けユーフォニアム3}
    \item[c.] 佐島勤『魔法科高校の劣等生』1巻\cite{魔法科高校の劣等生}
    \item[d.] 川原礫『ソードアート・オンライン』1巻\cite{ソードアートオンライン}
    \item[e.] 三浦しをん『舟を編む』\cite{舟を編む}
    \item[f.] 三浦しをん『風が強く吹いている』\cite{風が強く吹いている}
    \item[g.] 西尾維新『化物語』上・下巻\cite{化物語上,化物語下}
\end{itemize}

これらの小説から，次の手順で口調タイプ分類器および話者分類器の学習用データを作成した．
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{enumerate}
    \item 上記の小説の書籍媒体をOCRで読み込み，セリフのみを抽出したのち，誤字脱字を修正してデータ化した．
    \item 各セリフに人手で話者の付与を行った．
    ただし，この過程で話者が判定不能なセリフ（少量）は「話者不明」とした．
    なお，これらのセリフデータは，小説会話文の発話意図分析\cite{発話DB}のための基礎データとして作成されたものである．
    \item これらの小説の主要な登場人物50人を定め，それぞれの人物ごとにセリフを収集した．
    ただし，セリフが短すぎる場合，話者の口調が反映されていないことも多いため，
    10文字未満のセリフは除外した．
    総セリフ数は16,705セリフ，総文字数は480,999文字である．
    このように作成した話者付きのセリフデータを，話者分類器の学習用データとした．
    \item 50人の登場人物を第一著者が10種類の口調タイプに分類した．
    各セリフを登場人物を介して口調タイプと結びつけ，これを口調タイプ分類器の学習用データとした．
\end{enumerate}

表\ref{表：口調タイプ}に，学習に使用した登場人物50人と口調タイプの対応を示す．
この表のa--gは，上記の作品に付与した記号に対応する．
また，付録\ref{各口調タイプのセリフ例}の表\ref{表：各口調タイプのセリフ例}に，各口調タイプのセリフ例を示す．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T2
\begin{landscape}
\begin{table}[t]
\input{03table02.tex}
\caption{学習用データにおける話者と口調タイプの対応}
\label{表：口調タイプ}
    \end{table}
\end{landscape}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


なお，ここでの口調タイプは，口調タイプ分類器の学習を可能にするために，本研究を実施する時点で利用可能だったセリフデータを10グループに分類しただけであり，ライトノベルの口調がこれら10種類のタイプに分類できるということを主張するものではない．それぞれの登場人物の口調は，いずれかの口調タイプに属するというよりは，口調に関連する各種の特徴が混合されたものと考えるのが妥当であり，口調をベクトルとしてモデル化する意図はそこにある．

さらに付け加えると，今回作成した学習データは，理想的な学習データには程遠い．第一に，本来は，それぞれのセリフに口調タイプを付与するべきであるが，コスト的に実施不可能であったため，登場人物に口調タイプを割り当てた．そのため，それぞれの口調タイプのデータには，異なる口調のセリフも含まれている．第二に，利用可能なセリフデータを使用したため，口調タイプのバランスが取れていない．具体的には，「男性-優しい」というタイプは存在するが，それに対応する「女性-優しい」というタイプは存在しない．第三に，約1.6万件というセリフ数は，分類器の学習データとしては比較的小規模である．以上のように，今回作成した学習データには，大きな改善余地がある．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.3
\subsection{実験}
\label{口調エンコーダ：実験}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.3.1
\subsubsection{口調エンコーダの学習}

\ref{口調エンコーダの構成}節で述べた80種類の構成を実装し，口調タイプ分類（10クラス分類），もしくは話者分類（50クラス分類）を行うように学習した．
なお，表\ref{表：学習条件}に示す設定で，分類器の重みと
文エンコーダの重みを同時に学習した．
学習には，\ref{データ作成}節で述べたデータを使うが，このうち90\%を口調エンコーダのパラメータ更新に用い（学習データ），残りの10\%を検証データとする．
また，1エポックごとに検証データで損失を計算し，これが下がらなくなるまで学習を続けた
\footnote{学習に要したエポック数は，2から7（平均3.6）であった．
ただし，LUKEと話者分類器を組み合わせた構成を除く．
これらの構成は学習が不安定であり，損失が下がらなかった．}．
学習は，それぞれの組み合わせに対して，シード値を変えて5回行った．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T3
\begin{table}[b]
\input{03table03.tex}
    \caption{口調エンコーダの学習条件}
    \label{表：学習条件}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.3.2
\subsubsection{評価方法}
\label{評価方法}

本研究における口調のベクトル化の目的は，話者推定に口調を利用することである．
そのため，性能評価には，話者同定タスクを用いる．
話者同定の方法には\ref{本研究のアプローチ}章で述べた\textbf{口調に基づく話者同定法}を用いるが，
代表口調ベクトルの算出において用いるセリフ実例は，推定対象のセリフ数と同程度用意した
\footnote{各話者の口調を十分に捉えられないことを避けるため，このような設定にした．
\ref{セリフ実例数と推定精度}節で話者同定に必要なセリフ実例数を調査したが，その結果，ここで使ったセリフ実例数は十分な値だったことが示された．
}．
具体的には，以下の設定で話者同定を行う．

\begin{itemize}
    \item 使用する小説\\
    同一シリーズの作品である，『氷菓』\cite{氷菓}および『愚者のエンドロール』\cite{愚者のエンドロール}を使用する．
    『氷菓』のセリフを代表ベクトル算出のための実例の収集に用い，『愚者のエンドロール』のセリフを話者同定の対象セリフとする\footnote{書籍媒体をOCRで読み込み，誤字脱字の修正を行ったのち，セリフに対する話者のアノテーションを人手で行うことでデータを作成した．}．
    \item 話者候補\\
    シリーズに共通する主要人物4名を，セリフの話者候補とする．
    \item 使用するセリフ\\
    主要人物のセリフで，かつ，10文字以上のセリフを，セリフ実例，および，話者同定対象セリフとして使用する．
\end{itemize}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T4
\begin{table}[b]
\input{03table04.tex}
    \caption{主要人物の情報}
    \label{表：古典部}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

表\ref{表：古典部}に，本実験で使用する主要人物とそのセリフ数，および，
学習データ（表\ref{表：口調タイプ}）で設定した口調タイプの中で，該当すると考えられる口調タイプ
を示す．
ただし，人物Dの口調は，設定した10種類の口調タイプには該当するものがない．
この人物の口調にタイプラベルを付与するとすれば，「女性-優しい」となろう．
口調タイプの前に示しているIDは，表\ref{表：口調タイプ}の口調タイプのID に対応する．



話者推定の評価指標には macro-F1（シード値が異なる5つのモデルのmacro-F1の平均値）を用いる．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.3.3
\subsubsection{結果}
\label{口調エンコーダ：結果}

実験結果を図\ref{図：結果：口調エンコーダの構成}に示す．
ただし，図2aは，文エンコーダとしてLUKEを用いた構成の結果を，
図2bは，文エンコーダとしてBERTを用いた構成の結果を，それぞれ示している．
これらの図における BERT+ や LUKE+ の「+」は，「追加学習あり」を意味する．
なお，LUKEと話者分類器を組み合わせた口調エンコーダの構成（20種類）は，
いずれも学習が不安定であり，評価指標も著しく低かったため，実験結果からは除外した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F2
\begin{figure}[b]
{\vskip -5pt}
\begin{center}
\includegraphics{31-3ia3f2.pdf}
\end{center}
    %\includegraphics[width=12cm]{figure/whole_result.png}
    \caption{各構成の口調エンコーダ対する話者推定の結果}
    \label{図：結果：口調エンコーダの構成}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

評価指標が最も高かった構成は，以下の構成である．
\begin{itemize}
    \item 文エンコーダ：LUKE
    \item 文エンコーダの追加学習：なし
    \item 分類器：口調タイプ分類器
    \item 口調ベクトルとして採用する層：中間層
    \item 中間層の次元数：64次元
\end{itemize}

さらに，図\ref{図：結果：口調エンコーダの構成}では，次のことが観察される．
\begin{itemize}
    \item 文エンコーダ\\
    ほとんどの場合でLUKEの方がBERTよりも評価指標が高い．これは，
    LUKEの方がBERTより文エンコーダとして優れていることを示唆する．
    \item 文エンコーダの追加学習\\
    BERTでは追加学習の効果が見られるが，LUKEでは効果が見られない．
    この点については，\ref{未知の口調に対する追加学習の効果}節で検討する．
    \item 分類器\\
    ほとんどの場合で口調タイプ分類器の方が話者分類器よりも評価指標が高い．
    これは，口調の特徴を直接的に学習する方が，話者の分類を介して間接的に学習するよりも効果的であることを示唆する．
    \item 口調ベクトルとして採用する層\\
    口調タイプ分類器では，中間層の次元数が同一（64次元）の場合，中間層を採用した方が若干評価指標が高い．
    一方，話者分類器で出力層を口調ベクトルとして採用した場合は，評価指標はかなり低い値となる．
    これは，口調を50人の話者の混合として捉えることが難しいことを示唆する．
    \item 中間層の次元数\\
    口調タイプ分類器においては，ほとんどの場合で64次元が最も評価指標が高い．
\end{itemize}

なお，付録\ref{各モデルの評価結果}の表\ref{表：各モデルにおける話者推定の結
果}に，全構成の5つのシード値に対する結果を示す．


以降の実験では，特に断らない限り，評価指標が最も高かった構成（LUKE/口調タイプ分類器/中間層/64次元）を口調エンコーダとして使用する
\footnote{口調エンコーダのパ
ラメータは，シード値を変えて実験を行って得られたモデルの内，最も高いmacro-F1 (67.0\%)を
示したモデルのパラメータを使用する．}．
セリフを口調ベクトルに変換する際には，この学習された口調エンコーダにセリフを入力し，そのときの中間層の値を口調ベクトルとして出力する．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S4.4
\subsection{口調ベクトルを用いたセリフ間の距離}

本節では，簡単な実験で，口調ベクトル間の距離が，口調の類似性を反映してい
るかどうかを確認する．具体的には，2つの動詞と6種類の文末表現を組み合わ
せた12種類のセリフを用い，各セリフの組に対して，口調ベクトル間のユークリッド距離を算出する．

その結果を表\ref{表：ユークリッド距離}に示す．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T5
\begin{table}[t]
\input{03table05.tex}
    \caption{口調ベクトル間の距離の例}
    \label{表：ユークリッド距離}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


なお，セリフ1～4と，5～8，9～12は，それぞれ同じような口調を使っているセリフである．
この表に示すように，対角線ブロックに含まれる距離の値は，他のブロックの値よりも小さい．
一部に直感に合わない値も散見されるが
\footnote{セリフ11の「行こうよ」というセリフが，セリフ5～8に近いと判定されるなど，
一部は直感に合わない結果となっている．}，
おおむね，我々の直感に合った大小関係を示している．

これらの結果から，口調ベクトルにはセリフの口調の特徴が埋め込まれており，
口調ベクトル間の距離に基づいて，2つのセリフの口調が似ているかどうかを判定できる可能性を示唆する．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5
\section{口調ベクトルの話者弁別性能}
\label{口調ベクトルの話者弁別性能}

本節では，口調ベクトルの話者弁別性能を調査する．
まず，話者ごとの推定結果を観察することで，口調ベクトルを使った話者同定の特徴を確かめる．
次に，セリフ実例数と推定精度の関係，および，話者候補数と推定精度の関係を調査する．
なお，特に断らない限り，実験設定は\ref{評価方法}節と同様である．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5.1
\subsection{話者ごとの同定結果の分析}

\ref{口調エンコーダ：結果}節では，話者全体に対する結果 (macro-F1) を示した．
ここでは，それぞれの話者に対する同定結果を表\ref{表：口調ベクトルを用いた話者推定の結果の詳細}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T6
\begin{table}[t]
\input{03table06.tex}
    \caption{口調ベクトルを用いた話者推定の結果の詳細}
    \label{表：口調ベクトルを用いた話者推定の結果の詳細}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

この表に示すように，それぞれの話者のF1の値は，63\%から70\%をとる．
その一方，recallやprecisionの値は，F1よりもばらついている．

話者Bは必ず敬語を使う話者であり，他の話者は限られた状況
でしか敬語を使わない．この4人の話者内において，話者Bの口調の際立った特
徴は「敬語の使用」であり，実際の推定結果を観察しても，敬語を含むセリフ
のほとんどは，実際の話者に関わらず，話者Bのセリフと推定されている．話
者Bのrecallが高く (88\%)，precisionは低い (57\%) のは，このような理由によ
るものと考えられる．

話者Cは，男性ではあるが優しい話し方をする話者である．
話者Cのセリフは，話者Aや話者Dに誤判定される場合が比較的多く（それぞれ38件と26件），これがrecallを押し下げている (55\%)．その一方で，その逆のケー
ス，すなわち，話者Aのセリフや話者Dのセリフが話者Cと誤判定されることは
少ない（それぞれ13件と5件）．そのため，precisionの値が高くなっている (83\%)．このように，話者Xのセリフが話者Yと誤判定される数と，話者Yのセ
リフが話者Xと誤判定される数に大きな乖離がある場合がある．

この乖離の原因には，いくつかの要因が考えられが，そのひとつに，複数の口
調の使い分けの有無がある．普段は敬語を使わない話者Aが敬語を使った場合，
そのセリフは話者Bと誤判定されやすいが，話者Bは敬語を使わないことがない
ため，話者Bのセリフが話者Aと誤判定されことはほとんどない．これが誤判定
の数の乖離を生む．考えられるもうひとつの要因は，他の話者の口調との類似性
と特徴の強度である．話者C（「男性-優しい」）のセリフは，男性口調の特徴が
強いと話者Aに誤判定されやすく，優しい口調の特徴が強いと話者Dと誤判定
されやすいと考えられる．その一方で，話者Dのセリフは，男性である話者Aや
話者Cに誤判定されことが少ない．これは，話者Dのセリフが，女性口調の特徴
をより強く持つためではないかと考えられる．



表\ref{表：誤推定例}に，推定に成功したセリフと推定に失敗したセリフの実例を示す．
推定に成功したセリフは，それぞれの話者が常用する口調と同じ口調のセリフが多い．
これに対し，推定を誤ったセリフには，その話者が常用する口調とは別の口調が使われているものが多い．
例えば，セリフ例9の正解話者はAだが，この話者は乱暴な口調を使うことが多いのにも関わらず，
セリフ例9では敬語を使っており，敬語を常用する話者Bと誤推定されている．

このように，直感的に納得できる誤りが多かったが，中には不可解な事例も少数ながら存在した．
例えば，セリフ例14は男性的な口調が用いられているセリフだが，推定先として女性の話者Dが選ばれている．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T7
\begin{table}[t]
\input{03table07.tex}
    \caption{推定を誤ったセリフ例}
    \label{表：誤推定例}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5.2
\subsection{セリフ実例数と推定精度}
\label{セリフ実例数と推定精度}

口調に基づく話者同定では，代表口調ベクトルの計算に，
その話者のセリフの実例が一定数必要である．
本節では，セリフ実例数と推定精度の関係を調べる．

セリフ実例数を$n$とする場合の推定精度を以下の方法で求める．
\begin{quote}
各話者のセリフの中から$n$個のセリフをランダムに選び，これをセリフ実例として代表口調ベクトルを計算する．
この代表口調ベクトルを用いて，口調に基づく話者同定を行う．
1つの$n$の値につき上記の手続きを5回実行し，macro-F1の平均を$n$に対する評価指標とする．
\end{quote}

その結果を図\ref{図：セリフ実例数}に示す．この図に示すように，$n=10$ま
では評価指標は大きく向上するが，それより$n$を大きくしても，評価指標の
向上はほとんどみられない．この結果より，各話者に対して10件程度のセリフ
を用意すれば十分であることが示唆される．10件程度のセリフであれば，日本
語のライトノベルであっても，小説テキストから地の文の手がかり
を用いて収集可能と考えられる．このよう
な収集方法と組み合わせれば，事前に各話者のセリフ実例を用意することなく，
口調に基づく話者同定が適用可能となる．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F3
\begin{figure}[t]
\begin{center}
\includegraphics{31-3ia3f3.pdf}
\end{center}
    \caption{セリフ実例数とmacro-F1の関係}
    \label{図：セリフ実例数}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S5.3
\subsection{話者候補数と推定精度}
\label{話者候補数と推定精度}

一般に，クラス分類は，対象となるクラス数が少なければ分類が容易になり，推定精度が向上する．
そこで本節では，対象となる話者のクラス数（話者候補数）と推定精度の関係を調べる．

話者候補数を$k$とする場合の推定精度を以下の方法で求める．
\begin{quote}
    各セリフの話者候補を，そのセリフの真の話者に，
    その他の主要人物のランダムな $(k-1)$ 人を加えた$k$人として話者推定を行う．
    それ以外の設定は\ref{評価方法}節と同様である．
    これを，1～4の$k$の値に対して行い，$k=1,4$の場合はmacro-F1を$k$に対する評価指標とする
    \footnote{$k=1$ は話者候補を真の話者のみにすることに相当し，$k=4$ は話者候補を主要人物全員とすることに相当するため，ランダム性は存在しない．}．
$k=2,3$の場合は，上記の手続きを5回実行し，得られた
macro-F1の平均を$k$に対する評価指標とする．
\end{quote}


結果を図\ref{図：話者候補数}に示す．
候補が4人のときは評価指標は67.0\%だったが，3人に減らすと72.5\%，2人に減らすと80.7\%にまで向上した．
この結果より，話者候補数を限定すれ
ば評価指標が向上することが確かめられた．
したがって，口調に基づく話
者同定を適用する際には，可能な限り話者候補を限定することが望ましい．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F4
\begin{figure}[t]
\begin{center}
\includegraphics{31-3ia3f4.pdf}
\end{center}
    \caption{話者候補数とmacro-F1の関係}
    \label{図：話者候補数}
{\vskip -5pt}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


なお，本実験では話者候補が1人から4人の状況を考えたが，
実際の小説においても4人を超える話者が同時に会話に参加することはほとんどない．
会議など，参加者が多数存在する特殊な状況もあるが，
その場合は話者が明記されていることが多い．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6
\section{複数の手がかりを利用した話者推定}
\label{複数の手がかりを利用した話者推定}

本章では，話者候補生成と口調に基づく話者同定を組み合わせた新しい話者推定法を提案する．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.1
\subsection{問題設定}

話者推定問題の理想的な問題設定は，小説テキストを与えれば，そこに含まれ
るすべてのセリフに話者を付与したテキストを出力するという問題設定である．
これを実現するためには，セリフの話者の自動推定以外に，小
説の登場人物の自動検出が必要となる．しかしながら，登場人物の自動検出の
実現は，それほど容易ではない
\footnote{ライトノベルでは，一般的ではない人名が使われる場合もある．
このような人名の自動検出は，一般的な固有表現抽出器を使うだけでは難しい．
さらに，抽出した複数の人名表現（姓や名）が同一人物を指すかどうかを判定する処理
も必要となる．}．

本研究の主目的は，セリフの話者の自動推定であり，かつ，
自動推定に話者の口調が利用できることを確かめることである．
そこで，登場人物の自動検出は切り離し，登場人物のリストはあらかじめ与えられるものとする．

もうひとつの検討事項は，すべての登場人物のセリフを対象とするかという点である．
一般に，小説は，複数人の主要登場人物を中心に展開され，
セリフの多くもこれらの人物のセリフである．
さらに，主要登場人物のみがセリフの口調の書き分けの対象となることが多く，
出現数の少ない人物は口調が書き分けられないことが多い．
そこで，ここでは話者推定の対象セリフを，主要登場人物のセリフに限定することとする．

以上を踏まえ，次のような問題設定を採用する．
\begin{itemize}
    \item 与えられるもの
    \begin{enumerate}
        \item 小説本文のテキストデータ．
        ただし，\ref{小説テキストの構造化}節で述べるような構造化がなされ，
        話者を推定すべきセリフが明示化されているものとする．
        \item 主要人物のリスト．それぞれの人物に対して，人物ID，および，その人物の人名表現（姓，名，フルネーム）が与えられるものとする．
        \item 小説の視点．一人称小説か，三人称小説かの区別．
        \item 一人称小説の場合，どの人物IDの一人称視点で書かれており，その人物が地の文で自分を表すのに
        どんな一人称表現を用いているか．
    \end{enumerate}
    \item 推定すべきもの
    \begin{enumerate}
        \item それぞれの推定対象セリフに対して，その話者である人物ID．
    \end{enumerate}
\end{itemize}

以降の説明では，「人物」と「人名表現」を使い分ける．「人物」はID，「人名表現」は表記を意味するものとする．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.2
\subsection{システムの構成}

話者推定システムの構成を図\ref{図：全体像}に示す．
この図に示すように，本システムは\textbf{話者候補生成}と\textbf{口調に基づく話者同定}の2つのモジュールから構成される．
前者の話者候補生成では，それぞれのセリフに対して，
話者候補となる人物のリスト（話者候補リスト）を決定する．
ここで，話者候補が1名となったセリフは，その時点で話者を確定させる．
後者の口調に基づく話者同定では，話者が確定したセリフを用いて
各人物の代表口調ベクトルを計算し，話者が確定していないセリフの話者を推定する．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F5
\begin{figure}
\begin{center}
\includegraphics{31-3ia3f5.pdf}
\end{center}
    \caption{話者推定システムの全体像}
    \label{図：全体像}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.3
\subsection{小説テキストの構造化}
\label{小説テキストの構造化}
話者推定システムに入力するテキストは，以下の方法であらかじめ構造化する．
\begin{enumerate}
    \item 章または節への分割\\
    小説中に明示的な章や節の区切りが存在する場合，これらの区切りでテキストを分割する．
    なお，空行は必ずしも節の区切りとは限らないので，分割しない．
    \item ブロックへの分割\\
    その後，テキストを改行コードで分割する．分割した単位をブロックと呼ぶ．
    ブロックの先頭と末尾が引用符（『「』および『」』）である場合，それをセリフと認定する．
    それ以外のブロックを地の文の段落と認定する．
    \item 段落の文への分割\\
    以下に示す5種類の区切り記号を用いて，段落を文に分割する．
    \begin{quotation}
        [\ 。,\ ？,\ ！,\ !!,\ !?\ ]
    \end{quotation}
    \item 形態素・構文解析\\
    セリフ，および，文を，MeCab (IPAdic)（京都大学情報学研究科―日本電信電話株式会社コミュニケーション科学基礎研究所）\nocite{MeCab}とCaboCha \cite{cabocha}を用いて形態素・構文解析する．
\end{enumerate}

なお，実験に用いるテキストでは，各セリフに正解話者をあらかじめ人手で付与しておき，
システムに入力する際には，人手で付与した正解話者をマスクするとともに，
どのセリフが話者推定の対象セリフであるかを明示化する．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4
\subsection{話者候補生成}
\label{話者候補推定}

話者候補生成では，各セリフに対してそのセリフの話者候補を決定する．
話者候補生成の概要を図\ref{図：話者候補推定}に示す．
この図に示すように，話者候補生成は5つのステップから構成される．
なお，「話者交替に基づく候補限定」と「一人称に基づく候補限定」は，全セリフの話者候補が変わらなくなるまで交互に繰り返す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%F6
\begin{figure}
\begin{center}
\includegraphics{31-3ia3f6.pdf}
\end{center}
    \caption{話者候補生成}
    \label{図：話者候補推定}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4.1
\subsubsection{周辺文脈からの候補抽出}

各セリフに対して，その周囲に現れる人名表現を集めることで，話者候補リストを作成する．
以下にその手順を示す．
\begin{enumerate}
    \item 対象のセリフの$N_b$文前から$N_a$文後までを候補抽出範囲とする．
    ただし，候補抽出範囲内にセリフが含まれる場合，そのセリフを候補抽出範囲には含めるが，$N$のカウントはしない．
    なお，候補抽出範囲は，章や節の単位を超えないこととする．

    \item 候補抽出範囲に主要人物リストに含まれる人名表現（姓，名，またはフルネーム）が出現した場合，その人名表現の人物を話者候補リストに含める．
    ただし，対象とする小説が一人称小説の場合，一人称視点の人物は必ず話者候補リストに含める．
\end{enumerate}

$N_b$と$N_a$の値は，『氷菓』および『愚者のエンドロール』を用いた予備実験により，
$N_b=10, N_a=3$と定めた．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4.2
\subsubsection{話者明記に基づく話者同定}
\label{話者明記に基づく話者推定}

セリフの前後の文に人名表現が発話動詞の主語として出現する場合に，セリフの話者を確定させる．
具体的には，以下に示す4つのパターンを用い，セリフの前後がこれらのいずれかのパターンと一致した場合に，
そのセリフの話者を確定させる．

\begin{description}
    \item[パターン1]\mbox{}\\
    \begin{tabular}{l@{ : }l}
        $N_{-1}$&（任意の地の文）\\
        $U_0$&（推定対象のセリフ）\\
        $N_1$&　と$\cdots$ $A$ $\cdots$（発話動詞 $V$）$\cdots$
    \end{tabular}
    
    \item[パターン2]\mbox{}\\
    \begin{tabular}{l@{ : }l}
        $N_{-1}$&$\cdots A\cdots$\\
        $U_0$&（推定対象のセリフ）\\
        $N_1$&　と$\cdots$（発話動詞 $V$）$\cdots$
    \end{tabular}
    \item[パターン3]\mbox{}\\
    \begin{tabular}{l@{ : }l}
        $N_{-2}$&（任意の地の文）\\
        $N_{-1}$&$\cdots A\cdots$（発話動詞$V$）$\cdots$\\
        $U_0$&（推定対象のセリフ）
    \end{tabular}
    \item[パターン4]\mbox{}\\
    \begin{tabular}{l@{ : }l}
        $U_0$&（推定対象のセリフ）\\
        $N_1$&$\cdots A\cdots$（発話動詞$V$）$\cdots$\\
        $N_2$&（任意の地の文）
    \end{tabular}
\end{description}

ここで，$N_i$は地の文，$U_0$は推定対象セリフを表す．
$A$は，主要人物リストに含まれる人名表現を表す．
ただし，一人称小説の場合は，一人称視点の人物の一人称表現も$A$として認める．
発話動詞$V$は，「言う・答える」などの発話を示唆する動詞
\footnote{発話動詞は，国立国語研究所の「分類語彙表増補改訂版データベース (ver.1.0)」\cite{分類語彙表}から940語を収集した．}である．
上記のパターンには明記していないが，$A$を含む文節の係り先文節に発話動詞$V$が存在すること，
および，発話動詞$V$の直後に否定を表す助動詞が存在しないことも，条件とする．
なお，4つのパターンは上から順に照合する．

たとえば，次の例の場合，パターン3により$U_0$の話者は一人称視点の人物となる．

\begin{screen}
    \begin{tabular}{l@{ : }l}
    $N_{-2}$ & 　いかにも心外だ。\\
    $N_{-1}$ & 俺は抗議した。\\
    $U_0$ & 「俺が灰色だって？」\\
    \end{tabular}\\
    \rightline{『氷菓』\cite{氷菓} p.7より}
\end{screen}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4.3
\subsubsection{発話内人名に基づく候補限定}

セリフ内に人名が出現した場合，自己紹介など特殊な状況を除けば，その人物は話者とはならない．
この手がかりを次のように実装する．

\begin{quote}
    対象のセリフの中に人名表現が出現する場合，対応する人物を話者候補から除外する．
\end{quote}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4.4
\subsubsection{話者交替に基づく候補限定}
\label{話者交替に基づく候補限定}

小説でセリフが連続する場合，話者は交替する．
この手がかりを次のように実装する．

\begin{quote}
    あるセリフの話者が人物$S$で確定しており，かつ，その直前または直後がセリフだった場合，それらのセリフの話者候補から$S$を除外する．
    これにより新たに話者が確定したセリフが得られた場合は，そのセリフに対してもこの手続きを適用する．
\end{quote}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.4.5
\subsubsection{一人称に基づく候補限定}
\label{一人称に基づく候補限定}
各人物は，小説を通して一貫した一人称表現を用いるのが普通である
\footnote{特定の聞き手や状況によっては普段と異なる一人称表現を使う場合もある．
この場合，正解話者を話者候補から除外してしまうことになる．}．
この手がかりを次のように実装する．

\begin{enumerate}
    \item その時点までに話者が確定したセリフから，一人称表現を収集し，
    出現回数が最も多かった一人称表現を，その人物が用いる一人称表現とする\footnote{一人称表現がひとつも得られない場合は，不定とする．}．
    なお，ステップ4と5の繰り返し処理で，二度目以降にこの処理を行う場合は，
    その時点でまだ一人称表現が決定していない人物のみを対象とする．

    \item セリフ中に一人称表現$X$が含まれる場合，そのセリフの話者候補から，$X$以外の一人称表現を使う人物を除外する．
\end{enumerate}

表\ref{表：一人称}に，一人称表現として認定する語の一覧を示す
\footnote{一般的に小説で使われることが多いと思われる一人称表現を採用した．}．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T8
\begin{table}[t]
\input{03table08.tex}
    \caption{一人称表現として認定する語}
    \label{表：一人称}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S6.5
\subsection{口調に基づく話者同定}
\label{口調ベクトルを利用した話者推定}

3章で示した\textbf{口調に基づく話者同定法}を用いて，話者が確定していないセリフの話者を決定する．
まず，話者が確定しているセリフを用いて，各話者の代表口調ベクトルを求める．
次に，話者を決定したいセリフの口調ベクトルと，そのセリフの各話者候補の代表口調ベクトルとの距離を計算し，
最も距離が小さい話者候補をそのセリフの話者とする．

ただし，地の文を挟まずにセリフが連続する場合，話者交替の条件をみたす必要がある．
これを実現するために，セリフが連続する場合には，一連のセリフに対するすべての可能な話者の割当てに対して代表口調ベクトルと口調ベクトルの距離の和を取り，
これが最小となる話者の割当てを採用する．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S7
\section{話者推定の実験}
\label{話者推定の実験}

本章では，\ref{複数の手がかりを利用した話者推定}章のシステムを用いた話
者推定の実験について述べる．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S7.1
\subsection{推定対象小説}

本実験では，次の5つの作品を使用する\footnote{書籍媒体をOCRで読み込み，誤字脱字の修正を行ったのち，セリフに対する話者のアノテーションを人手で行うことでデータを作成した．}．
\begin{enumerate}
    \item 「古典部シリーズ」（『氷菓』と『愚者のエンドロール』を繋げて扱う）
    \item 『ノーゲーム・ノーライフ』\cite{ノーゲーム・ノーライフ}
    \item 『涼宮ハルヒの憂鬱』\cite{涼宮ハルヒの憂鬱}
    \item 『かがみの孤城』\cite{かがみの孤城}
    \item 『謎解きはディナーのあとで』\cite{謎解きはディナーのあとで}
\end{enumerate}

これらの5作品のうち，「古典部シリーズ」は，\ref{口調エンコーダ：実験}
節で口調エンコーダの評価に使用したが，それ以外の小説は口調エンコーダの
学習，評価のいずれにも使用していない．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T9
\begin{table}[t]
\input{03table09.tex}
    \footnotesize
    *は一人称視点の人物を表す．
    \caption{各作品の主要人物}
    \label{表：主要人物}
{\vskip 5pt}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


表\ref{表：主要人物}に，これらの作品の主要人物とそのセリフ数，および，
口調タイプを示す．
なお，口調タイプは，学習用データに該当する口調タイプがあれば，その口調タイプとIDを示し，
該当するタイプがない場合は，その口調の特徴を表すラベルを示している．


表\ref{表：主要人物}に示すように，「古典部シリーズ」，『ノーゲーム・ノー
ライフ』，『涼宮ハルヒの憂鬱』の3作品では，主要人物の口調タイプはすべて異なる．
これに対して，『かがみの孤城』では女性2人の口調が「女性-普通」に，男性3
人の口調が「男性-普通」に該当し，これらの人物が使用する口調間に大きな差はみられない．
また，『謎解きはディナーのあとで』では，人物A（宝生麗子）は「女性-敬語」と「女性-てよ
だわ言葉」に該当する2種類の口調を，人物C（風祭）は「男性-敬語」と「男性-軽薄」に該当する2種類の
口調を状況や対話相手に応じて使い分けている．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S7.2
\subsection{ベースライン手法}
口調に基づく話者同定と比較するベースライン手法として，次の2つの手法を設定する．

\begin{itemize}
    \item Frequent法\\
    それぞれの話者$s$に対して，話者候補生成により確定したセリフ数$K_s$を求める．
    話者が未確定のセリフの話者を，そのセリフの話者候補のうち，$K_s$の値が最も大きい人物とする．
    \item Nearest法\\
    話者が未確定のセリフの話者を，そのセリフの話者候補のうち，人名が
    文字単位で最もセリフの近くに出現する人物とする．
\end{itemize}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T10
\begin{table}[b]
\input{03table10.tex}
    \caption{話者推定の結果}
    \label{表：推定結果}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S7.3
\subsection{話者推定結果}
\label{話者推定結果}
話者推定の実験結果を表\ref{表：推定結果}に示す．
この表では，各作品に対して以下の値を示した．
\begin{itemize}
\item 作品固有の値
\begin{itemize}
    \item 主要人物数
    \item 小説の視点（一人称人物または三人称）
    \item セリフ数
    \item 内，話者近接数：
    セリフの話者の人名表現がセリフの直前直後の文で出現するセリフ数，および，その割合（発話動詞の主語となっていることを条件としない）
\item 話者候補生成の結果
    \item 話者確定数：
    話者が確定したセリフ数，および，セリフ全体に対するその割合
    \item 正解率：
    話者が確定したセリフの正解率
    \item 話者未確定数：
    話者が確定しなかったセリフ数，および，セリフ全体に対するその割合
    \item 平均候補数：
    話者が確定しなかったセリフの，平均話者候補数
    \item 正解含有率：
    話者が確定しなかったセリフの，話者候補の中に正解話者が含まれている割合
\end{itemize}
\item 話者未確定セリフに対する話者同定の結果
\begin{itemize}
    \item Frequent法，Nearest法，提案手法：それぞれの手法の，話者が未確定のセリフに対する推定結果 (macro-F1/micro-F1)
    \item 各話者のF1：    口調に基づく話者同定の，各話者のF1
\end{itemize}
\item 話者推定システム全体の結果
\begin{itemize}
    \item Frequent法，Nearest法，提案手法：それぞれの手法の，全セリフに対する推定結果 (macro-F1/micro-F1)
\end{itemize}
\end{itemize}


まず，話者未確定セリフに対する話者同定の結果に注目する．「古典部シリーズ」，『ノー
ゲーム・ノーライフ』，『謎解きはディナーのあとで』の3作品において，提
案手法（口調に基づく話者同定）は，macro-F1とmicro-F1\footnote{micro-F1は，全セリフのうち，話者を正しく同定した割合（精度）を表す．}
の両方の指標において，ベースラインを上回った．
『涼宮ハルヒの憂鬱』は，macro-F1では
Nearest法より若干劣るが\footnote{人物CとEのF1が極端に低いことが
macro-F1の値を押し下げている．}，micro-F1はNearest法を上回っている．
実際，口調に基づく話者同定は，話者候補が複数の場合に適用するので，
チャンスレベルは50\%以下である．すなわち，micro-F1の値が0.5を超え
ていれば，口調エンコーダによって作られた口調ベクトルは，話者の判別に役
立っているといえる．

これに対して，『かがみの孤城』では，提案手法は，macro-F1とmicro-F1の両方で
Nearst法を下回った．この理由は，この作品に固有な性質によると考えられる．
本論文の冒頭で述べたように，セリフの話者を特定する手がかりとして，どの
ような種類の手がかりが多用されるかは，個々の作品によって異なる．
『かがみの孤城』は，セリフの話者の人名表現がセリフの前後の文に出現する割合
（話者近接数の割合）が5作品中一番高く (62.2\%)，さらに，主要人物数が8名で
あるにも関わらず，話者候補生成で話者が特定できたセリフの割合が
高い (29.7\%)．
これは，口調以外の特徴でセリフの話者を同定できる割合が高いことを意味する．
このような作品では一般に，セリフの口調を書き分ける必然性に乏しい．
実際，話者Hを除けば，話者間にはっきりした口調の違いはなかった\footnote{推定結果においても，話者H以外は，表\ref{表：主要人物}に示した口調タイプに関わらず様々な話者が推定先に選ばれていた．}．
このような場合，口調に基づく話者同定の有効性は低い．
ただし，micro-F1の値は46.5\%であり，チャンスレベル
\footnote{平均話者候補数は3人を超えているため，チャンスレベルは1/3以下である．}
を上回っているため，話者の判別にまったく効果がない訳ではない．

次に，話者候補生成の結果に注目する．話者候補生成では，次のことが望ましい．
\begin{enumerate}
\item 話者が確定したセリフ数（絶対数）とその割合が高い方が望ましい．
\item 話者が確定しなかったセリフに対しては，平均話者候補数が少なく，正解含有率が高い方が望ましい．
\end{enumerate}
どの作品においても，話者が確定したセリフ数は150件以上得られており，最
低限のセリフ実例数（各話者10件程度）はおおよそ確保されている\footnote{『ノー
ゲーム・ノーライフ』の人物Bの確定セリフ数は22件（正解含有率54\%），
人物Dの確定セリフ数は6件（正解含有率17\%）であった．このように，人物によっては
十分な確定セリフ数が得られていないものもあった．}．一方，正解率は，
90\%に満たないものが3作品ある．セリフ実例の品質は代表口調ベクトルの品
質を左右するため，正解率が高いことが望ましいが，本実験結果より，必ずしも100\%でなくても，口調に基づく話者同定は機能することがわかる．

話者が確定しなかったセリフの平均話者候補数は，2.15人から3.31人である．
一人称小説では，一人称視点の人物を必ず候補に含めるため，平均話者候補数は比較的大きな値となる．
一方，正解含有率は87.6\%から97.1\%である．正解含有率は，口調に基づく話者同定の精度 (micro-F1) の上限を与えるため，この値も90\%以上が望ましい．
話者候補から正解話者が除外される原因を，付録\ref{話者候補生成におけるエラー}の表\ref{表：話者候補生成におけるエラー}に示す．

話者候補生成で，確実性の高い手がかりのみを使えば，上記の正解率・正解含
有率を高くすることができる．その一方で，話者確定セリフ数は少なくなり，
話者不確定セリフの平均候補数も多くなる．話者候補生成では，このトレード
オフをうまくバランスさせる必要がある．

最後に，話者推定全体の結果に注目する．『かがみの孤城』を除く4作品では，
提案手法は，macro-F1およびmicro-F1において，ベースライン手法を上回った．
これらの結果より，ライトノベルの話者推定において，口調に基づく話者同定
を利用した提案手法は，有力な手法のひとつとなりうる．
しかしながら，全体の精度 (micro-F1) は70\%から80\%程度であり，さらなる精
度向上が必要である．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S7.4
\subsection{文エンコーダに対する追加学習の効果}
\label{未知の口調に対する追加学習の効果}

先の実験で用いた小説には，口調エンコーダ（口調タイプ分類器）の学習で設定した10種類の口調タイプ以外の口調を用いる人物が含まれる．文エンコーダの追加学習で利用したBCCWJ小説会話文のセリフデータには，10種類の口調タイプ以外に分類される口調も数多く含まれている．\ref{口調エンコーダ：結果}節で述べたように，文エンコーダとしてLUKEを用いた場合には，追加学習の効果は得られず，BERTを用いた場合のみ追加学習の効果が得られた．ここでは，この点をさらに追求する．
具体的には，以下に示す追加実験を行う．
\begin{enumerate}
    \item 『謎解きはディナーのあとで』を用いて，10種類の口調タイプに含まれない「男性-執事口調」の人物BのF1を調べる．
    \item 以下に示す4種類の口調エンコーダを比較する
    \footnote{
    口調エンコーダのパラメータには，シード値を変えて実験を行った中で最も高いmacro-F1を示したものを
    用いる．}．
    
    \begin{enumerate}
        \item BERT（BERT/口調タイプ分類器/中間層/64次元）
        \item BERT+（BERT+/口調タイプ分類器/中間層/64次元）
        \item LUKE（LUKE/口調タイプ分類器/中間層/64次元）（\ref{話者推定結果}節で用いた構成）
        \item LUKE+（LUKE+/口調タイプ分類器/中間層/64次元）
    \end{enumerate}
    
\end{enumerate}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T11
\begin{table}[b]
\input{03table11.tex}
    \caption{『謎解きはディナーのあとで』を対象とした各口調エンコーダでの推定結果}
    \label{表：未知の口調}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

追加実験の結果を表\ref{表：未知の口調}に示す．
ここで示した数値は，口調に基づく話者同定の対象となる，話者未確定セリフ497件に対する結果である．
この表に示すように，文エンコーダとしてBERTを用いた場合，
追加学習により「男性-執事口調」を用いる話者BのF1は大きく向上している．
一方LUKEを用いた場合は，追加学習により若干悪化した．

BERTで追加学習を行わなかった場合のF1は，かなり悪い．これは，BERT
が未知の口調の特徴をうまく捕えていないことを示唆する．BERTにおいて追加学習を行った場合のF1の向上は，追加学習において，より多くのセリフを「見る」ことによって，
より多くの口調の特徴を文埋め込みに埋め込むことが可能となり，その結果，
口調の特徴をより反映した口調ベクトルが作成できるようになったと解釈でき
る．

一方，LUKEを文エンコーダとして用いた場合は，追加学習なしでもある程度の
推定精度が得られている．これは，文エンコーダとしてLUKEがBERTより優れて
いることを示唆する．追加学習の効果がなかった理由は不明であるが，LUKEは，
BERTより多くのパラメータを内在する
\footnote{BERT-baseのパラメータ数は110Mだが，LUKE-large-liteのパラメータ数は414Mである．}
ため，新しい口調を学ぶためにより多く
の学習データを必要とするのかもしれない．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%S8
\section{おわりに}
本論文では，小説のセリフを，そのセリフの口調の特徴を埋め込んだ口調ベク
トルに変換する口調エンコーダ，および，口調ベクトルを用いた話者同定手法
を提案するとともに，この方法を組み込んだ小説の話者推定システムを提案し
た．これら一連の提案により，小説の話者の自動推定にセリフの口調が活用で
きることを明らかにした．

口調エンコーダは，文エンコーダと分類器を組み合わせて実現する．その実装
として80種類の構成を検討し，文エンコーダLUKEと64次元の中間層を持つ口調
タイプ分類器を組み合わせ，64次元の中間層の値を口調ベクトルとして採用す
る構成が，最も優れていることを実験的に明らかにした．

口調に基づく話者同定手法は，セリフ実例から話者の口調を表すベクトル（代表口調ベクトル）を算出し，話者を同定したいセリフの口調ベクトルと各話者候補の代表口調ベクトルの距離に基づき，話者を同定する．この手法が必要とするセリフ実例の数は，各話者に対して10件程度であり，大量のセリフ実例を必要としない点に特徴がある．この手法は，多クラス分類問題として話者同定タスクを解くため，話者候補数を限定したほうが高い精度が得られる．

日本語のライトノベルを対象とした話者推定システムは，口調に基づく話者同
定の前段に，話者候補生成モジュールを配置したシステムである．このシステ
ムでは，前段のモジュールで話者が確定したセリフを代表口調ベ
クトルの算出に使用するため，あらかじめセリフ実例を準備する必要がない．

本システムを用いて5つの作品に対して話者推定実験を行ったところ，4つの作
品でベースラインを上回る結果が得られた．ベースラインを下回った1つの作
品は，セリフの話者を特定させるために，口調以外のより明示的な手がかりを
多用している作品であった．

今回実現した話者推定システムを，小説テキストに対する話者アノテーション
支援ツールとして利用することを想定した場合，以下の点を解決する必要があ
る．
\begin{itemize}
    \item 多様な作品に対応するため，より多くの手がかりを活用できるシステムに拡張する必要がある．
    \item 本システムは，主要人物のセリフのみを推定対象としているが，その他の人物のセリフも
    対象に含める必要がある．
\end{itemize}


特に，2つ目の課題の解決は重要である．現在のシステムは，話者推定の対象
セリフ（主要人物のセリフ）が事前に判明しているという設定を採用しているが，
この設定は現実的ではない．実用的なツールにするためには，少なくとも主要
人物以外の人物のセリフに対して，「主要人物以外」と判定する機能の実現が
不可欠である．

本論文で提案した口調エンコーダは，任意のセリフを口調ベクトルに変換する
ことができる．これにより，任意の2つのセリフの口調の類似性を判定するこ
とができる．この類似性判定能力は，セリフの話者推定以外にも，多くの活用
法がある．たとえば，複数のセリフ候補の中から，キャラクターの代表口調ベ
クトルに類似するセリフを選択することにより，キャラクターらしいセリフの
生成が可能になる．


%%% Acknowledgement %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\acknowledgment

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


%%% Bibliography %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliographystyle{jnlpbbl_1.7}
    \input{03ishikawa.bbl.tex}
%%%%\bibliography{03refs}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage
\appendix

\section{各口調タイプのセリフ例}
\label{各口調タイプのセリフ例}
各口調タイプのセリフ例を表\ref{表：各口調タイプのセリフ例}に示す．
これらのうち，口調タイプ分類器の学習で使用したのは，ID付きの10種類の口調である．

\section{口調エンコーダの評価結果の詳細}
\label{各モデルの評価結果}
\ref{評価方法}節で述べた方法で，口調エンコーダの評価を行った結果を表\ref{表：各モデルにおける話者推定の結果}に示す．
結果1～5には，各構成の口調エンコーダに対し，シード値を5種類に変えて学習を行った結果を昇順で示している．
% また，平均にはこれらの平均を示している．

\section{話者候補生成におけるエラー}
\label{話者候補生成におけるエラー}
表\ref{表：話者候補生成におけるエラー}に話者候補生成において，正解話者が話者候補から除外される原因を示す．
なお，エラー例において，エラーが起きたセリフを太字で示し，エラーの原因となった箇所に下線を引いている．
また，本実験の対象作品では見られなかったが，作品によっては一人称に自分の名前を使う人物も存在する．
の場合，「一人称に基づく候補限定」で正解話者が候補から除外されてしまう．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T12
\begin{table}[b]
\input{03table12.tex}
    \caption{各口調タイプのセリフ例}
    \label{表：各口調タイプのセリフ例}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\clearpage

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T13
\begin{table}[t]
\input{03table13a.tex}
\end{table}
\begin{table}[t]
\input{03table13b.tex}
    \caption{各口調エンコーダの評価結果}
    \label{表：各モデルにおける話者推定の結果}
\end{table}

\clearpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%T14
\begin{table}[t]
\input{03table14.tex}
    \caption{話者候補生成におけるエラー}
    \label{表：話者候補生成におけるエラー}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%% Biography %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{biography}
\bioauthor{石川　和樹}{%
2024年名古屋大学大学院工学研究科博士前期課程修了．
同年，WED株式会社入社．
言語処理学会会員．
}
\bioauthor{小川　浩平}{%
2010年公立はこだて未来大学 博士後期課程修了．
ATR知能ロボティクス研究所 研究員，大阪大学基礎工学研究科 助教及び講師を経て，
2019年より名古屋大学大学院工学研究科准教授．博士（システム工学）．
情報処理学会，ヒューマンインタフェース学会，ACM各会員．
}
\bioauthor{佐藤　理史}{%
1988年京都大学大学院工学研究科博士後期課程研究指導認定退学．
京都大学工学部助手，北陸先端科学技術大学院大学情報科学研究科助教授，
京都大学情報学研究科助教授を経て，
2005年より名古屋大学大学院工学研究科教授．博士（工学）．
言語処理学会，人工知能学会，日本認知科学会，ACM各会員．
}

\end{biography}

\biodate

\end{document}

