高木 一 (TAKAGI, Hitoshi)
公開開始 2024/ 9/ 2
文章から感情を読み取る感情分析システム「ライム回路」で実施している計算方法について説明します。
「ライム回路」では、入力された文章の聞き手と話し手それぞれの、ロバート・プルチックの 8つの基本感情※、合計16個の感情強度を、感情情報付きコーパス※※を参考にして、算出します。感情強度は、0以上 3.5未満の数値※※※で出力されます。
※ 心理学者ロバート・プルチック (Robert Plutchik、1927年-2006年)が1980年に提唱した「感情の輪」における基本感情: 喜び (Joy)、悲しみ (Sadness)、予期(期待) (Anticipation)、驚き (Surprise)、怒り (Anger)、怖れ (Fear)、嫌悪 (Disgust)、信頼 (Trust)。基本感情を組み合わせることにより、混合感情を表現可能である(例: 喜び×信頼=愛)。
※※ 梶原 智之さん、中島 悠太さんによる「WRIME: 主観と客観の感情分析データセット」(Ver.1)を使用しています(以下、「WRIME Ver.1」と記す)。
なお、句読点等の半角・全角の統一、文章末に句読点がない場合の補完、改行の削除、などの標準化を実施しました。
※※※「WRIME Ver.1」の感情強度は、0:無、1:弱、2:中、3:強 の4段階であり、これに合わせて「ライム回路」では、四捨五入して3になる 3.5未満を上限として、0以上 3.5未満の数値で出力する。
下記の計算方法(アルゴリズム)を、それぞれの基本感情(聞き手と話し手それぞれの、ロバート・プルチックの 8つの基本感情、合計16個)について実施しています。
なお、定数 a[0], a[1], a[2], …、b[0], b[1], b[2]は、基本感情(16個)毎に3.節に記載する方法で最適値を予め決定しておきます。
凡例:
評価対象の文章「Ea」
計算に使用する文章データ「La[k]」と、その感情強度データ※「Lb[k]」(k=0,1,2,…)。
Length(str): 文字列strの長さ。
Length(M): 配列Mの要素の個数。
※「WRIME Ver.1」の感情強度は、0:無、1:弱、2:中、3:強 の4段階である。
(1) EaとすべてのLa[k]について、後ろから a[6]文字を取り出す(JavaScriptの「.slice(-1*a[6])」)。取り出された文字列を、Ea*、La*[k] と表す。
(2) 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])) .
NormalizedLD(Ea*, La*[k])の最小値を MinNormalizedLD(Ea*)と表す。
MinNormalizedLD(Ea*)=min{NormalizedLD(Ea*, La*[k]) | k=0,1,2,…}.
(3) NormalizedLD(Ea*, La*[k])が小さい順に、k を a[0]個+α探し出す(同じ値である場合は全て採用する)。探し出されたkをK[n] (n=0,1,2,…)と表記する。
(4) 感情強度と正規化されたレーベンシュタイン距離で重みづけした平均値 AveEb と、感情強度で重みづけした平均値 AveLb を計算する。
AveEb = {Σ(n=0,1,2,…) (Lb[K[n]]×f(Lb[K[n]])×a[1]| (NormalizedLD(Ea*, La*[K[n]])/MinNormalizedLD(Ea*))-1-a[2] |)} / {Σ(n=0,1,2,…) (f(Lb[K[n]])×a[1]| (NormalizedLD(Ea*, La*[K[n]])/MinNormalizedLD(Ea*))-1-a[2] |)},
AveLb = {Σ(k=0,1,2,…) (Lb[k]×f(Lb[k]))} / {Σ(k=0,1,2,…) f(Lb[k])}.
ただし、重みづけ関数 f(x) = a[7] (if x=3), a[8] (if x=2), a[9] (if x=1), 1 (if x=0)。 Σは、総和記号。| |は、絶対値演算子。
(5) RatioEb = AveEb / AveLb を計算する。
(6) RatioEE = 1.0 / AveLb を計算する。
(7) RatioEb/RatioEE から、下記の方法で、Ea の感情強度推定値 Eb を計算する。
下記の関係になるように、0≦Eb<0.5、0.5≦Eb<1.5、1.5≦Eb それぞれに一次関数 Eb= p×RatioEb/RatioEE +qを設定して、Ebを計算する。
RatioEb/RatioEE = 3×a[7] ⇒ Eb = 2.5 (四捨五入で3になる下限値),
RatioEb/RatioEE = 3×a[7]×a[8] ⇒ Eb = 1.5 (四捨五入で2になる下限値),
RatioEb/RatioEE = 3×a[7]×a[8]×a[9] ⇒ Eb = 0.5 (四捨五入で1になる下限値),
RatioEb/RatioEE = 0 ⇒ Eb = 0.0.
ただし、Eb>3.0になる場合は、 3.5-0.5×(3.0/Eb)6 ※に補正する。
※y=3.5-0.5×(3.0/x)6は、(x,y)=(3.0, 3.0)において傾き1で、x=+∞ で y=3.5に下から漸近する(すなわち、x>3でyを四捨五入すると 3にしかならない)。
下記する相対する2つの基本感情データを用いて、1基本感情データからの感情分析よりも正確さを高めることを意図した計算方法です。なお、実際に、全ての基本感情(聞き手・話し手×8つの基本感情=16個)について、正確さは向上しました。
相対する2つの基本感情
(1) 2.1「1基本感情データからの感情分析」の (1)〜(6)を、推定したい基本感情と、それに相対する基本感情について実施し、推定したい基本感情のRatioEbobj, RatioEEobjとそれに相対する基本感情のRatioEbref, RatioEErefを計算する。
(2) RatioEb = RatioEbobj-a[10]×(RatioEbref×RatioEEobj/RatioEEref -a[11]) を計算する。
(3) 2.1「2感情成分データからの感情分析」の (7)を実施し、RatioEb/RatioEEobj から、Ea の推定したい基本感情の感情強度推定値 Eb を計算する。
2.2「1基本感情データからの感情分析」を実施すると、喜びと悲しみの両方の感情強度が高い等、相対する2つの基本感情の両方の感情強度が高い結果が見られることがありました。原理的におかしい結果であるため、補正計算を実施します。
なお、補正計算により感情分析の正確度が向上すると評価された下記の基本感情にのみ実施します。
聞き手の、驚き。
話し手の、喜び、悲しみ、予期、嫌悪、信頼。
補正計算方法:
2.1「2感情成分データからの感情分析」の相対する2つの基本感情の感情強度(Eb[i], Eb[j])が、両方ともb[0]以上である場合に、下記の補正を実施する。
if (Eb[i] > Eb[j]){ Eb[i] = (Eb[i] - Eb[j])*b[2] + b[1]; Eb[j] = b[1]; } else { Eb[j] = (Eb[j] - Eb[i])*b[2] + b[1]; Eb[i] = b[1]; }
定数 a[0], a[1], a[2], …、b[0], b[1], b[2]は、基本感情(聞き手・話し手×8つの基本感情=16個)毎に、遺伝的アルゴリズムや総当たり法で決定しました。
感情強度が高い場合・低い場合双方において、安定的な正確度が発揮されるように、最適化にあたっては下記の指標を用いました。
最適化の評価指標: min{p/(p+q), s/(r+s)} 。即ち、感情強度が基準値以上である場合の正答率 p/(p+q) と基準値未満である場合の正答率 s/(r+s) の最小値。この評価指標が最大化するように各定数の値を探索しました。
ただし、p, q, r, s は、下記のとおり。
最適化にあたっては、「WRIME Ver.1」の 1〜300番目の感情強度データ付き文章を評価データに、301〜43200番目の感情強度データ付き文章を計算に使用するデータにしました(評価データは、計算資源の都合から、限定的なものになっています。また、最適化にあたって使用した評価データであり、第1報に記した性能評価においては、より件数が多く且つ別の評価データを使用しています)。
感情強度が基準値以上の計算結果 | 基準値未満の計算結果 | 小計 | |
「WRIME Ver.1」で付された感情強度が基準値以上 | p 件 | q 件 | p+q |
「WRIME Ver.1」で付された感情強度が基準値未満 | r 件 | s 件 | r+s |
小計 | p+r | q+s | p+q+r+s = 300 |
註: ■薄青色でハイライトした桝(マス)は正答の件数。
基準値は、聞き手の感情強度は、話し手の感情強度よりも低い傾向にあるため、聞き手の場合に 0.5 (即ち、四捨五入で1以上)、話し手の場合に 1.5 (即ち、四捨五入で2以上)にしました。
公開開始: 2024/ 9/ 2
© 2024 TAKAGI-1