# SentencePiece を用いたキャラクターの特徴語抽出

岸野望叶
茨城大学工学部情報工学科
17t4036s@vc.ibaraki.ac.jp
}

古宮嘉那子
茨城大学理工学研究科工学野情報科学領域
kanako.komiya.nlp@vc.ibaraki.ac.jp

## 1 はじめに

自然言語処理の分野では、ジェンダー、または年代などのキャラクターの特徴表現に注目した研究 がなされている。しかしこれらの特徴語は、主に年代やジェンダーの分類にとどまり、個々のキャラク ターの特徴的な話し方については注目されてこな かった。そこで本研究では、年代やジェンダーに限 らずどのような言葉がキャラクター性を表している かを抽出、分析した。

Mecab などの従来の形態素解析器では、キャラク ターのセリフのような砕けた表現や、辞書に載って いないキャラクター固有の語尾などの分割が上手く できない。そのため、SentencePiece を使ってセリフ を分割することで頻出する文字列の並びとしてセリ フから特徴的な部分を切り出すことでよりキャラク ター性をとらえた表現の抽出を行う手法を提案す る。また、 $\mathrm{TF}$ ・IDFにより、性別、年代別、キャラ クター別に特徴づける部分の重み付けを行い、それ ぞれの特徴にあった言語表現の抽出を行った。

## 2 関連研究

宮崎ら [1] は、部分的に発話を書き換えることに よって話者のキャラクタ性を表現する技術の実現 を目指し、話者のキャラクタ性に寄与する言語表現 の基礎的分析を行った。また、宮崎らのその後の研究 [2] では対話エージェントに発話にキャラクタ性 を付与し、かつバリエーションを豊かにする方法と して、各文節の機能部を目的のキャラクタに適した 確率で適した表現に書き換え、キャラクタ性が読み 手に伝わるかの実験を行った。また、音変化表現に 注目し、それらを収集、分類を行った論文もある ([3])。また、奥井ら [4] はポインタ生成機構から、複数の異なるキャラクター応答を参照しながら少量 データで学習する研究を行っている。

## 3 SentencePiece による特徵的な単語の抽出

キャラクターのセリフは、語尾にキャラクターの 特徴を表す言葉がついていたり、砕けた表現だっ たりと、辞書に載っていない単語も多く出現する。 ゆるキャラの「ふなっしー」のように、語尾に「〜 なっしー」とつけるようなものや、「危ない」という 単語を「危ねえ」と変化していたりなどが例に挙げ られる。そのため、辞書を使った既存の形態素解析 では上手く特徴をとらえキャラクターのセリフ分割 することが難しいと考えられる。そこで本稿では、 SentencePiece によってキャラクターコーパスを分割 し、それによって得た単語を TF・IDFによって重み 付けすることで、キャラクターの特徴と言える部分 を抽出する手法を提案する。

手法の評価のため、求めた $\mathrm{TF}$ ・IDF の値を入力べ クトルとしてサポートベクターマシン（SVM）で性別、年代の分類を行い、既存の形態素解析器と比較 した。

## 4 コーパス

インターネットから 22 作品、100人のキャラク ターのセリフを収集した。以下このセリフ集をキャ ラクターコーパスと呼ぶ。収集方法には、以下の三 つを利用した。

1. インターネットに載っているアニメ・ゲームの セリフのまとめサイトから収集

2. アニメ動画サイトから得る

3. 漫画の電子書籍から、文章検出アプリを使って テキスト化

キャラクター選ぶ際は、作品内でセリフの多いキャ ラクターを優先的に集めた。また、メインキャラク ターとして出てくるキャラクターの年代は少年や青年に分類される者が多くなることが予想されたた め、老人や子供に分類されるキャラクターでセリフ の量が多いキャラクターは優先的に選出した。

## 5 キャラクターの特徵語抽出の実験

## 5.1 SentencePiece による特徵語抽出

SentencePiece とは、文章から直接分割方法を学習 し、文章をサブワードへ分割するものである。サ ブワードとは、事前に単語の出現頻度を調べ、出現頻度の低い単語は文字やより小さい単語に分解 するという考え方である。つまり SentencePiece で は、辞書に載っている単語ではなく、出現頻度が高 い文字列を1つの単語として扱う。この実験では、 SentencePiece の Python モジュールを利用した。1)

SentencePiece による特徴語抽出の手順は以下の通 りである。まず作成したキャラクターコーパス全体 を入力とし SentencePiece で分割モデルを作成する。 この際単語数は 1 万個に設定した。また同時に単語 リストも作成した。作成した単語リストから、漢字 1 文字の単語を削除した。これは漢字 1 文字の単語 はキャラクター性を表すことはないと考えたから である。次に作成した分割モデルを使ってキャラク ターコーパスを分割する。作成した単語リストと分割したキャラクターコーパスを使って TF・IDFを求 める。TF・IDF は次の式で求めた。

$
t f(t, d)=\frac{n_{(t, d)}}{\sum_{s \in d} n_{(s, d)}}
$

$t f(t, d)$ : 文書 $d$ 内のある単語 $t$ の $T F$ 値 $\left.n_{(} t, d\right)$ : ある単語 $t$ の文書 $d$ 内での出現回数 $\sum_{s \in d} n_{(}(d)$ : 文書 $d$ 内のすべての単語の出現回数 の和

$
i d f(t)=\log \frac{N}{d f(t)}
$

$i d f(t)$ : ある単語 $t$ の $I D F$ 値

$N$ : 全文書数

$d f(t)$ : ある単語 $t$ が出現する文書の数

$
T F \cdot I D F=t f(t, d) \cdot i d f(t)
$

性別ごとの特徴語の抽出は、割合を使った方法 と、 $\mathrm{TF}$ ・IDFを使ったやり方の二通りの方法で行っ た。割合を使う方法は、

$
\frac{\left.n_{(} t, d 1\right)}{\left.n_{(} t, d 2\right)}
$

$\left.n_{(} t, d 1\right)$ : ある単語 $t$ の文書 $d 1$ 内での出現回数 $\left.n_{(} t, d 2\right)$ : ある単語 $t$ の文書 $d 2$ 内での出現回数 の式で求めた。この際、 $\mathrm{d} 1$ と $\mathrm{d} 2$ は男性または女性 の全キャラクターのセリフ集とする。片方の出現回数が 0 回の単語は、 0 の代わりに 0.001 で計算を行 い、スムージングを行った。(4) 式は数値が大きく なるほど、その単語は片方の性別のみによく使われ ていることを示す。

性別の TF・IDF 値を求めるときは、どちらかの性別の全キャラクターのセリフを 1 文書とし、対する 性別は各キャラクターのセリフをそれぞれ 1 文書と する。年代別の際は、各年代のキャラクターのセリ フを 1 文書とした。キャラクターごとの際は、キャ ラクターコーパス全体を全文書、各キャラクターの セリフを 1 文書とした方法と、キャラクターコーパ スを作品ごとに分け、作品ごとのセリフを全文書と し、その中での各キャラクターのセリフを 1 文書と する方法の 2 通りで行った。以降前者を全文書、後者を作品別文書と略記する。

## 5.2 Mecab による特徴語抽出

キャラクターコーパスを Mecabを使って分割し、分割されてできた単語を集めた Mecab 単語リストを 作成した。SentencePiece と同様に、性別、年代別、 キャラクター別で TF・IDFを求めた。

## 6 結果

得られた単語の $\mathrm{TF} \cdot \mathrm{IDF}$ 値上位 10 単語を表 1-4 に示す。また、キャラクター別の特徴は、一部を結果例として載せる。例として挙げるキャラクター は、アニメ「約束のネバーランド」からエマ、アニ メ「エヴァンゲリオン」からシンジ、ゲーム「ドラ ゴンクエスト」からヤンガスである。

## 7 SVM による分類実験

求めた TF・IDF 值を入力として SVMを用いて性別、年代の分類をした。性別は、男性、女性、その 他の 3 種類に分類をおこなった。アニメなどに登場 するキャラクターには、性別不明のキャラクターも いるが、そのような場合はその他に分類する。年代 は、1. 子供 ( 12 歳)、2. 少年 ( 12 歳 17 歳、 18 歳 の学生)、3. 青年 (18 歳 29 歳)、4. 大人 (30 歳 49 歳)、5. 老人 (50 歳〜) の 5 種類に分類を行った。

実験は 5 分割交差検証により行った。比較に用い 丞既存の辞書を使った形態素解析器には Mecabを

SentencePiece

Mecab

表 1 性別特徴語

表 2 年代別特徴語

表 3 キャラクター別特徴語全文書

表 4 SentencePiece キャラクター別特徴語作品別文書

利用した。この実験では、sklearnをライブラリとし て利用した2)。SVM の入力は、キャラクター 1 人を 1 ベクトルとした。性別の分類では SentencePiece で 得られた全単語の TF・IDF 值を入力した場合、TF・ IDF 値の男女それぞれ上位 1000 単語を大力とした 場合、Mecab で得られた単語を入力とした場合で比較する。年代の分類では、SentencePiece で得られた 全単語の TF・IDF 值を入力した場合、TF・IDF 值 の各年代それぞれ上位 500 単語を入力とした場合、 Mecabで得られた単語を入力とした場合で比較を 行った。

性別、年代の分類結果は以下の表 7-8 に示す。

表 5 性別データ数

表 6 年代別データ数

## 8 考察

表 1 から SentencePiece を用いて抽出した特徴語 のほとんどが性別に特徴的な単語であること、ま た、特に一人称や語尾が特徴として抽出されやす いことが分かった。また SentencePiece では、「でが す」「わよね」「のね」などのような辞書に載ってい ない表記も取ることができた。年代別の特徴語は、 SentencePiece、Mecab どちらも固有名詞が多く、特徴的な表記を取ることができなかった。その理由と しては、年代ごとに共通する表記が少なかったこと が考えられる。また、大人世代と老人世代は一見固

2) https://sklearn.org/

表 75 分割交差検証性別分類

表 85 分割交差検証年代別分類

有名詞が少なく特徴語が取れているようにみえる が、これは年代の特徴というより、その年代の中の あるキャラクターの特徴である。このような結果に なった要因として、大人世代と老人世代は人数が少 なかったこと、その中でもキャラクターのセリフ量 にばらつきがあり、セリフの多いキャラクターの特徵になってしまったことが挙げられる。キャラク ター別の特徴語は、こちらも SentencePiece、Mecab 両方で固有名詞や一般名詞がよく出てきた。しか し、Mecab のほうでは「アッシ」という単語が「アッ シ」だったり「シ」だったりと、文脈によって分割 のされ方が変わってしまった。SentencePiece の手法 では、キャラクターコーパスを作品ごとに分け、そ の中で $\mathrm{TF}$ ・IDF 値をとることで、表 4 のように、よ り特徴とは言えない固有名詞や一般名詞を削除し、特徴語のみをとることができた。

SVM の結果を見ても性別年代別共に SentencePiece で分割した全単語の TF・IDF 值を入力としたときが 最もよい精度となった。

## 9 まとめ

本稿では、SentencePiece を用いてアニメなどの キャラクターのセリフを分割し、TF・IDF 值で重み づけをすることによって、既存の辞書を用いた形態素解析器ではとれなかったキャラクターに固有の特徴語を抽出したことを示した。また、抽出した特徴語を素性としてキャラクターの性別と年代を分類し たところ、MeCabを用いてセリフを単語分割した場合に比べて、分類精度が向上したことを示した。

## 謝辞

本研究は、茨城大学の特色研究加速イニシアティ ブ個人研究支援型「自然言語処理、データマイニ ングに関する研究」に対する研究支援および JSPS 科研費 17KK0002、18K11421 の助成を受けたもの です。

## 参考文献

[1] 宮崎千明, 平野徹, 東中竜一郎, 牧野俊朗, 松尾義博, 佐藤理史. 話者のキャラクタ性に寄与する 言語表現の基礎的分析. 言語処理学会第 20 回年次大会 発表論文集, pp. 232-235, 2014.

[2] 宮崎千明, 平野徹, 東中竜一郎, 牧野俊朗, 松尾義博, 佐藤理史. 文節機能部の確率的書き換えに よる言語表現のキャラクタ性変換. 人工知能学会論文誌, Vol. 31, No. 1, pp. DSF-515, 2016.

[3] 宮崎千明, 佐藤理史. 発話テキストへのキャラ クタ性付与のための音変化表現の分類. 自然言語処理, Vol. 26, No. 2, pp. 407-440, 2019.

[4] 奥井颯平, 中辻真. ポインタ生成機構を用いた キャラクター応答生成の検証. 第 34 回人工知能学会全国大会論文集, pp. 1I4-GS-2-01, 2020.
 岸野望叶 茨城大学工学部情報工学科 17t4036s@vc.ibaraki.ac.jp }  古宮嘉那子 茨城大学理工学研究科工学野情報科学領域 kanako.komiya.nlp@vc.ibaraki.ac.jp  