高木 一 (TAKAGI, Hitoshi)
公開開始 2024/ 5/ 7
第1報にて、会話コーパスとレーベンシュタイン距離を用いて※、新たな問いかけ文に対して、複数の応答文候補の中から適切な応答文を選択する能力を高められることを報告しました。例えば、下記のケース例で示す AさんとBさんの会話で、Bさんの応答文が(1)〜(5)の中で(1)であることを、計算で推定することが可能です。
本報では、評価関数の改良によって、第1報に比べて平均正答率を高めることができたので報告します。
それぞれ選択肢が5つの25,000余のケースについて推定を実施した結果、平均正答率は、25.3%(第1報では 23.7%)で、ランダムに選択した場合の正答率である 20%の1.26倍でした。ランダム選択による正答率より高い正答率になる確率は、統計的な検定の結果、98%以上です(つまり、有意水準0.02において、ランダム選択による正答率より高い正答率になると言えます)。※※
ケース例
Aさん: そうなんだ。あ、でもそれ植物油、植物。
Bさん:註
※ コーパス(corpus)、及びレーベンシュタイン距離(Levenshtein distance)に関する解説は、第1報を参照ください。
※※本正答率、及び確率は、最適化10世代段階での値です。今後、最適化の世代を重ねること、及び計算方法の改良により、さらに向上できると考えます。
便利のため、第1報での推定計算の方法(アルゴリズム)を記します。
凡例:
評価対象の会話「Ea」---「Eb」。Ebの候補として、Ebc[j] (j=0,1,2,…)があると仮定。
計算に使用する会話データ「La[k]」---「Lb[k]」(k=0,1,2,…)。
Length(str): 文字列strの長さ。
Length(M): 配列Mの要素の個数。
(1) EaとLa[k]の間のレーベンシュタイン距離を計算する。文字列str1とstr2のレーベンシュタイン距離をLD(str1, str2)と表す。すべてのLa[k]について、それぞれ 正規化されたレーベンシュタイン距離 NormalizedLD(Ea, La[k]) を計算する。
NormalizedLD(Ea, La[k])=LD(Ea, La[k])/max(Length(Ea), Length(La[k])) .
(2) NormalizedLD(Ea, La[k])が最小なk を10+α個探し出す(同じ値である場合は全て採用する)。探し出されたkをK[n] (n=0,1,2,…)と表記する。
3-1) すべてのK[n]について、それぞれ NormalizedLD(Ebc[j], Lb[K[n]])=LD(Ebc[j], Lb[K[n]])/max(Length(Ea), Length(Ln[K[n]])) を計算する。
Kに関する平均値 AvrNormalizedLD(j, 0)=(1/Length(n))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]]) を計算する (Σは、総和記号)。
3-2) 同様に、
AvrNormalizedLD(j, +2)=(1/Length(K))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]+2]) 、
AvrNormalizedLD(j, +1)=(1/Length(K))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]+1]) 、
AvrNormalizedLD(j, -1)=(1/Length(K))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]-1])
を計算する。なお、上記3式での Lb[K[n] +2, +1 or -1] は略記であり、正確には Lb[(K[n] +2, +1 or -1 + Length(Lb))%Length(Lb)] である(%は剰余演算子(割り算の余り))。
3-3) Fit(j)=( AvrNormalizedLD(j, +2) - AvrNormalizedLD(j, 0) + AvrNormalizedLD(j, +1) - AvrNormalizedLD(j, 0))5×(1-AvrNormalizedLD(j, -1)) を計算する。
(4) 評価値 Fit(j)が最大となるEbc[j]が、Eaの応答文として最適である。
2.1節に記した第1報での推定計算の方法に、下記のとおり、パラメータa[0]からa[4]を付加しました。これらパラメータを最適化することによって、評価関数を改良します。下記では、2.1節の方法からの変更点を赤字で示します。
(1) すべてのLa[k]について、それぞれ 正規化されたレーベンシュタイン距離 NormalizedLD(Ea, La[k]) を計算する。
NormalizedLD(Ea, La[k])=LD(Ea, La[k])/max(Length(Ea), Length(La[k])) .
(2) NormalizedLD(Ea, La[k])が最小なk をa[4]+α個探し出す(同じ値である場合は全て採用する)。探し出されたkをK[n] (n=0,1,2,…)と表記する。
3-1) すべてのK[n]について、それぞれ NormalizedLD(Ebc[j], Lb[K[n]])=LD(Ebc[j], Lb[K[n]])/max(Length(Ea), Length(Ln[K[n]])) を計算する。
Kに関する平均値 AvrNormalizedLD(j, 0)=(1/Length(n))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]]) を計算する。
3-2) 同様に、
AvrNormalizedLD(j, +2)=(1/Length(K))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]+2]) 、
AvrNormalizedLD(j, +1)=(1/Length(K))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]+1]) 、
AvrNormalizedLD(j, -1)=(1/Length(K))×Σ(n=0,1,2,…) NormalizedLD(Ebc[j], Lb[K[n]-1])
を計算する。
3-3) Fit(j)=PM(j)× |{a[0] + a[1]×(AvrNormalizedLD(j, +2) - AvrNormalizedLD(j, 0) )+ (2.0-a[1])×(AvrNormalizedLD(j, +1) - AvrNormalizedLD(j, 0))}|a[2]×(1.01-AvrNormalizedLD(j, -1))1.0-a[3]×(1.01-AvrNormalizedLD(j, 0))a[3] を計算する (| |は、絶対値演算子)。
ただし、PM(j)は、{ }括弧内、即ち a[0] + a[1]×(AvrNormalizedLD(j, +2) - AvrNormalizedLD(j, 0) )+ (2.0-a[1])×(AvrNormalizedLD(j, +1) - AvrNormalizedLD(j, 0)) の正負を表す関数であり、正の値またはゼロ(≧0)であれば PM(j)= +1、負の値(<0)であれば PM(j)= -1 である。
なお、1.0を1.01に変更した理由は、ゼロ除算を防ぐためである。
(4) 評価値 Fit(j)が最大となるEbc[j]が、Eaの応答文として最適である。
パラメータa[0]からa[4]は、次の値の時に 2.1節に記した第1報での推定計算の方法と同じになります。
パラメータ最適化には、遺伝的アルゴリズム(genetic algorithm, GA)を用いました。個体数は各世代 5(その内、1個体は親世代の最良個体の遺伝子(=パラメータ)を受け継ぐ)、交叉率 0.3、突然変異率 0.1です。ただし、長時間の連続計算によるリスクを低減するため、数世代ごとに計算を切り分けて実施しており、計算を再開する時には最良個体では遺伝子を受け継ぎますが、それ以外の個体では全遺伝子をランダムに設定し直しています(したがって、見かけの突然変異率は0.1より高いです)。
最大化すべき適応度は、下記の仕様での推定計算を実施した時の正答率です。これは、第1報のテスト計算1のRUN 1〜9と同じです。
9 RUN×300ケース/RUN = 総 2700ケース
比較用の誤りの応答文は、テスト評価対象の会話データの中で、正しい応答文のindexを+10, +20, +30, +40して作成。(正答1ケ、誤答4ケの 5択)
用いたコーパスは、第1報と同じです。
即ち、「名大会話コーパス※」内の会話(Aさん「a」---Bさん「b」)のうち、応答者(Bさん)が10〜30歳代女性であるもの。なお、順序は、同コーパス収録の順序です。自然な会話文では表れないコーパス内での特別な表記(例: 相槌を表す括弧書き、プライバシー情報を表す伏字や記号)は、表記箇所、又は文単位での削除をしました。
上記の会話文(「a」---「b」の組) 43,406件(indexが 0〜43405)を、43,106件と300件に分けて、
前者を計算に使用する会話データ「La[k]」---「Lb[k]」(k=0,1,2,…)、
後者をテスト評価対象の会話データ「Ea[i]」---「Eb0[i]」(i=0,1,2,…)にします。
※ 藤村逸子・大曽美恵子・大島ディヴィッド義和、2011「会話コーパスの構築によるコミュニケーション研究」藤村逸子、滝沢直宏編『言語研究の技法:データの収集と分析』p. 43-72、ひつじ書房.
第1世代の1個体※を2.2節に記した第1報での推定計算の方法と同じになるパラメータにして、10世代の最適化計算を実施しました。
各世代の最良個体の正答率を図1に示します。なお、※の個体を第0世代の最良個体としました。
図1. 各世代の最良個体の正答率
第10世代の最良個体の遺伝子(パラメータ)は、下記になりました。
第10世代の最良個体による各RUNの結果を下表に示します。
表1. 第10世代の最良個体の各RUNの結果
↑クリックで拡大
平均の正答率は 26.1%、正答数は、300ケース中 σ= 78.3ケース、標準偏差 s= 7.44ケースでした。
正しい応答文の5択中の順位(1位から5位)それぞれの頻度は、1位から順位が下るにつれて減少する傾向にあり、評価関数が妥当であることを裏付けています(例えば、1位である頻度が5位である頻度を下回るようなことにはなっていないです)。
補足
第0世代の最良個体(=第1報での推定計算の方法)による平均の正答率は 23.8%、正答数は、300ケース中 σ= 71.3ケースでした。
最適化計算の適応度計算(総ケース数 2700)よりも多くのケース数でテスト計算を実施し、最適化10世代後の選択能力を評価しました。
下記の仕様でテスト計算を実施しました。これは、第1報のテスト計算3と同じです。
86 RUN×300ケース/RUN = 総 25800ケース
比較用の誤りの応答文は、テスト評価対象の会話データの中で、indexをランダムに4件 選んで(ただし、正しい応答文とは重複しない)作成。(正答1ケ、誤答4ケの 5択)
各RUN(全 86 RUN)それぞれ 300ケース中の正答数の結果を、ヒストグラムにして図2に示します。
図2. 最適化10世代後のテスト計算の正答数の分布 縦軸: RUN数。横軸: 正答数("(p,q]"は"p超えq以下"の意味)
平均の正答数は、300ケース中 σ= 75.9ケースでした。平均正答率は、25.3%です。5択からの選択であるため、ランダムに選択した場合の正答率は 20%ですが、その1.26倍でした。
標準偏差 s= 7.50ケースでした。
ランダム選択での平均正答数は、300ケース中 60ケースですが、60=σ-2.11s であるため、t検定(自由度 86)すると、本方法による選択の正答率がランダム選択による正答率(即ち、正答数 60ケース)より大きい確率は、98.1%です。
なお、正答数が 60ケースより大きいRUNは、全 86 RUN中 85 RUN (98.8%)でした。
したがって、ランダム選択による正答率より高い正答率になる確率は、統計的な検定の結果、98%以上です(つまり、有意水準0.02において、ランダム選択による正答率より高い正答率になると言えます)。
公開開始: 2024/ 5/ 7
© 2024 TAKAGI-1