まだらの紐の真相を追って～人工知能学会 推論チャレンジ問題～

2018年11月25日
株式会社野村総合研究所
田村 光太郎 外園 康智〒100-0004
東京都千代田区大手町1-9-2 大手町フィナンシャルシティ グランキューブ

アプローチの概観
 アプローチの特徴
 犯行状況を設定し、ナレッジグラフ（場面番号368番以下）＋外部知識を束縛条件に、述語論理式の充足可能問題として、真相を導く。

ナレッジグラフ①抽出
SPARQL外部知識②テンソル変換③タッカー分解
知識補完④推論規則抽出
知識補完⑤CCG2Lambda
述語論理式へ変換

ナレッジグラフ＋補完
知識外部知識述語論理

物語の階
層構造の視点⑥AlloyＳＡＴ問題
形式手法
Alloy言語へ変換
（手作業）

場面１：
ジュリア殺害場面２：
ヘレン殺害未遂場面３：
事件の真相の様相

 結論

 一連の事件（ジュリア殺害、ヘレン殺害未遂）は、ロイロットが犯人。
 一部犯行は、ヘレンが犯人とも推察されるが、証拠不十分。

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

1

③テンソルデータに対して、Ｔｕｃｋｅｒ分解で、知識の補完
 与えられたナレッジグラフの全体傾向からリンクを補完する
 外部知識を用いずに、「内部知識」でどこまで補完できるか。
欠損関係を補完する

トリプル化されたグラフ

全体の傾向から尤もらしいと考えられる関係を補完※18（人物と動物）×146（動作）× 18（人物と動物）のテンソル 補完された知識（※場面は368番までの情報。）
 行動や状況（部屋/時刻）が似ている人同士の間で、片方のみ行った行動が、他方の行動としても補完がなされた 補完された知識には解釈が困難なものもあるが、Juliaに対して、Animalが何らかの行為を行ったことが多数出る。

補完された知識確度は低いが補完候補になった知識

Homes See Animal

Helen bite Julia

Watson Hit Animal

Animal Call Julia

Watson Put Animal

Animal Meet Julia

Homes Go Roylott

Animal Support Roylottetcetc

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

※コアテンソルの大きさ（3×15×3）、 繰り返し計
算10数回程度で収束にいたった。
※疎テンソルのため、適用の妥当性については要検討。

2

⑤CCG2ｌambdaにて、外部知識（日本語文）を述語論理式に変換
 外部知識（日本語文）を、述語論理式に変換
外部知識
（日本語）

ＣCG2
Lambda述語論理式

手作業

Ａｌｌｏｙ言語形式

コンパイル

ＣＮＦ形
式

ＳＡＴ問
題

例１：
日本文

全ての人は 、 自分を殺さ ない 。

述語論理式

exists x.(exists z1.(全て(z1) & (x = z1)) & 人(x) & -exists z1.(自分(z１) & exists e.(殺す(e) &(Nom(e) = x) & (Acc(e) = z１))))

Alloy
言語形式

fact{all p:Person|all t:Time|all r:Room{no p.kill.t.p.r}}

例２：
日本文

ある人が、 毒 を 盛られたなら ば 、 ある人は死ぬ。

述語論理式(exists x.(_人(x) & exists z2.(_毒(z2) & exists e.(_盛る(e) & Past(e) & exists z2.(_人(z2) & (Dat(e)= z2)) & (Acc(e) = x) & (Acc(e) = z2)))) -> exists x.(_人(x) & exists e.(_死ぬ(e) & (Nom(e) = x))))

Alloy
言語形式

Fact{all q:Person|all t:Time{some Person.毒を盛る.t.q=>dead[q,t.next]}}※述語論理式からＡｌｌｏｙ言語に変換プログラムはできておらず、手作業で変換。
ただし、日本語文→述語論理式→ＣＮＦ（連言標準形）→充足可能問題（ＳＡＴ問題） という形ができるのが理想。
Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

3利用した外部知識 外部知識として、主に次のものを加えた②インドに生息する生き物
動物 大きさ 毒性

 ①密室殺人の殺害方法リスト
 ②インドに生息する生き物とその属性、行動リストー>回収できる ⇒蛇、トカゲ、蜘蛛 ③ロイロット屋敷の構造①密室殺人の殺害方法リスト（自殺を除く、全てのケースを考慮）
・部屋外からの殺害 殺害は外で時間差
薬物
・室内で生きている被害者を外から殺害
隙間凶器
有毒生物
・自殺
③ロイロット屋敷のトポロジーデータ

外ロイロット屋敷通路
ロイロット部屋

ジュリア部屋

ヘレン部屋

金庫※灰色の矢印は動物は移動できない
Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

牛象
虎
馬
ロバ
ラクダ
ヤク
ゾッキョ
鹿山羊
羊
猿
犬
猫
ウサギ
鳥
コウモリ
鶴
七面鳥
カラス
にわとり
鳩魚
カニ
トカゲ
ヒル
蚊
アリ
クモ蛇
ネズミ大大大大大大大大大大大中
中中
中
中中
大大中
中中
小小小小小小小小小ハエ

小毒
毒
毒
毒
毒

4

Ａｌｌｏｙの紹介
 「犯行の可能性の列挙」を、ナレッジグラフ＋補完知識の述語論理式の充足可能性問題ととらえる。
 充足可能性問題（以下、SAT問題）は、形式手法AlloyAnalyzerを使って解く。
Alloyの例

構成 具体

Alloy形式言語

対象ある人物A,Bがいる

abstract sig Person {kill : this -> Person}
one sig A,B extends Person {}論理

人は殺されると死ぬ

pred dead[q:Person] { some Person.kill.q}
fact{

事実

Aは生きている
Bは死んでいるnot dead[A]dead[B]}

AがBを殺害する

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

AがBの自殺に協力する

Bが自身を殺害する

5

場面１と場面２でＡｌｌｏｙスクリプトに与えた設定・知識
 物語を２つの場面１と場面２に分割して設定
 ２つの場面に共通部分と、各場面の状況を記述する部分について説明する。

場面１ ジュリア殺害の日

場面２ ヘレン殺害未遂の日

時間

夜/深夜

夕方/夜/深夜空間

ロイロット部屋、ジュリア部屋、ヘレン部屋、外、金庫

ロイロット部屋、ジュリア部屋、ヘレン部屋、外、金庫

登場人物

ヘレン、ジュリア、ロイロット

ヘレン、ロイロット、ホームズ

その他

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

殺害行為の失敗について追加

6

⑥-３：場面１ 殺人方法に関する記述
 「密室殺人における殺害方法のリスト＋直接（対面）の殺人」をもとに、全ての殺害方法の可能性を記述。
//////////////////////////////////////////殺人方法に関する記述//////////////////////////////////////殺される人は、殺す意思を持たない
fact {
all p: Person | all t: Time { 殺害[Person,p,t] => no p.Kill}}--考えられる殺害方法は直接, 薬物, 隙間凶器, 小生物である。
abstract sig Method {}one sig 直接, 薬物, 隙間凶器, 小生物 extends Method {}//殺害は、直接, 薬物, 隙間凶器, 小生物のいずれかで行われる。
pred 殺害[p : Person , q : Person , t:Time]{直接[p, q, t] || 薬物[p, q, t] || 隙間[p, q, t] || 生物[p, q, t]}

ジュリア殺害の日//殺害は、直接, 薬物, 隙間凶器, 小生物のいずれかで行われる。

//直接は、pが直接殺害する意思を持っていて、pとqは時刻tに同じ部屋にいると行われる。
//薬物は、pが薬殺する意思を持っていて、pとqは殺害時刻以前t.prevsに同じ部屋にいると行われる//隙間は、pが隙間凶器で殺害する意思を持っていて、 pとqは時刻tに別の部屋にいるが、pの部屋とqの部屋は（隙間）行き来できると行われる。
//生物は、pが小生物で殺害する意思を持っていて、 pとqは時刻tに別の部屋にいる。そして、ある動物aがいて、pとは別の部屋にいて、aが襲うと行われる。
//※襲うは、小生物で殺害する意思を持っている人pがいて、動物aがそれ以外の人qと同じ部屋にいる。

//薬物は、pが薬殺する意思を持っていて、pとqは殺害時刻以前
t.prevsに同じ部屋にいると行われる

pred 直接[p : Person , q : Person , t:Time]{ one p.Kill.t.直接.q && no p.Kill.Time.(Method - 直接) && Together1[p, q, t]}pred 薬物[p : Person , q : Person , t:Time]{ one p.Kill.t.薬物.q && no p.Kill.Time.(Method - 薬物)&& Together1[p, q, (t.prevs)]}pred 隙間[p : Person , q : Person , t:Time]{ one p.Kill.t.隙間凶器.q && no p.Kill.Time.(Method - 隙間凶器)&& not Together1[p, q, t] && Passable[(~(p.enter.t)).p,(~(q.enter.t)).q]}
pred 襲う[a : Animal, t: Time ]{one p:Person | one p.Kill.t.小生物 && no p.Kill.Time.(Method - 小生物) && one q:( Person - p ) | Together1[a,q,t]}pred 生物[p : Person , q : Person , t:Time]{ one p.Kill.t.小生物.q && no p.Kill.Time.(Method - 小生物)&& not Together1[p,q, t] && one a:Animal | not Together1[p,a, t] && notTogether2[p,a, t] && 襲う[a,t]}--殺人方法による結果の定義//凶器、隙間凶器使うと外傷ができる、遅効性薬物使うと薬物反応がでる
pred 外傷[p: Person ] { one t:Time | 直接[ Person, p, t ] || 隙間[ Person, p, t] }pred 毒物[p: Person ] { one t:Time | 薬物[ Person, p, t ] }--殺人による結果：殺害された人は死ぬ。そうでない人は生きている。
pred Dead[p: Person, t: Time]{殺害[Person,p,t] }pred Alive[p: Person, t: Time]{not Dead[p,t]}

殺害された人は死ぬ。そうでない人は生きている。
pred Dead[p: Person, t: Time]{殺害[Person,p,t] }pred Alive[p: Person, t: Time]{not Dead[p,t]}

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

7⑥-３：場面１と場面２ 建物に関する記述
場面に共通する部分は、登場主体・殺人方法・建物/所在を記述した。
//////////////////////////////////////////建物に関する記述////////////////////////////////////--建物に関する定義--登場する建物はヘレン部屋,ジュリア部屋, ロイロット部屋, 金庫,外である。
abstract sig Room {owner : set Person,pass: set Room}
one sig ヘレン部屋,ジュリア部屋, ロイロット部屋, 金庫,外 extends Room{}
fact {//部屋はownerが内側からしかlockできない。金庫はownerがlockできる
all r: ( Room - 金庫 ) | all p: Person | all t: Time { some p.lock.t.r => p in r.owner && some p.enter.t.r}
all r: 金庫 | all p: Person | all t: Time { some p.lock.t.r => p in r.owner}//部屋が、ある人にlockされてたら、その人以外は入れない。
all disj p, q: Person | all r: (Room - 金庫) | all t: Time { some p.lock.t.r => no q.enter.t.r }//金庫に人は入れない
all p: Person {not p -> 金庫 in p.enter.Time}//金庫はロイロット不在のときは施錠されている。入っているものはロイロットが鍵をかけている限り出れない。
all t: Time {no ロイロット.enter.t.ロイロット部屋 => some ロイロット.lock.t.金庫 }all t: Time {one ロイロット.lock.t.金庫 => lone Character.enter.t.金庫 }//隙間がある部屋間
ロイロット部屋.pass=( ジュリア部屋 + ロイロット部屋)
ジュリア部屋.pass=( ジュリア部屋 + ロイロット部屋 )all r:( Room - ロイロット部屋 - ジュリア部屋) {no r.pass}}//金庫に人は入れない
all p: Person {not p -> 金庫 in p.enter.Time}

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

8⑥-３：場面１と場面２ 所在に関する記述
場面に共通する部分は、登場主体・殺人方法・建物/所在を記述した。
//////////////////////////////////////////所在に関する記述////////////////////////////////////--所在に関する定義--同部屋にいることの定義
pred Together1[ p : Character , q : Character , t:Time ]{ ~(p.enter.t).p = ~(q.enter.t).q}
pred Together2[ p : Character , q : Character , t:Time ]{ ~(p.enter.t).p.owner = ~(q.enter.t).q.owner}pred Passable[r:Room, s:Room]{ s in r.pass}pred Alone[ p : Character , t:Time ]{ not Together1[p, Person,t] }//動物が行き来できる条件
fact{--動物が動き回れる範囲//動物は外と屋内を行き来できないfact{
all a:Animal { a -> 外 in a.enter.夜 => a -> 外 in a.enter.深夜}//動物は外と屋内を行き来できない
all a:Animal { a -> 外 in a.enter.夜 => a -> 外 in a.enter.深夜}
all a:Animal { not a -> 外 in a.enter.夜 => not a -> 外 in
all a:Animal { not a -> 外 in a.enter.夜 => not a -> 外 in a.enter.深夜}
all a:Animal {a.enter.深夜}
lone a.enter.Time.金庫
lone a.enter.Time.ジュリア部屋
all a:Animal {lone a.enter.Time.ロイロット部屋
lone a.enter.Time.外
lone a.enter.Time.金庫
all r:( Room - 金庫 - ジュリア部屋 - ロイロット部屋 - 外 ) { no a.enter.Time.r}lone a.enter.Time.ジュリア部屋}}
lone a.enter.Time.ロイロット部屋
lone a.enter.Time.外
all r:( Room - 金庫 - ジュリア部屋 - ロイロット部屋 外 ) { no a.enter.Time.r}}}

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

9⑥-４：場面１：「ジュリア殺害の日」とAlloyによる結果
 ジュリア殺害の日における事実（FACT）//////////////////////////////////////////場面に関するFACT////////////////////////////////////

モデルを限定するための付加条件//場面に関する情報//場所に関する情報（言及あり）
fact {
ジュリア部屋.owner=ジュリア
ヘレン部屋.owner=ヘレン
ロイロット部屋.owner=ロイロット
金庫.owner=ロイロット
ジュリア.lock.深夜=ジュリア -> ジュリア部屋
ヘレン.lock.深夜=ヘレン -> ヘレン部屋
ヘレン.enter.夜=ヘレン -> ヘレン部屋
ジュリア.enter.夜=ジュリア-> ヘレン部屋
ヘレン.enter.深夜=ヘレン -> ヘレン部屋
ジュリア.enter.深夜=ジュリア -> ジュリア部屋
ロイロット.enter.深夜=ロイロット -> ロイロット部屋
ヒヒ.enter.夜=ヒヒ -> 外チーター.enter.夜=チーター -> 外}//状態に関する情報（言及あり）
fact {
Alive[ヘレン,夜]Alive[ジュリア,夜]Alive[ヘレン,深夜]
Alive[ロイロット,夜]Alive[ロイロット,深夜]
not 外傷[ジュリア]not 毒物[ジュリア]}//ヘレンは善意の正直者。
pred honest[p: Person]{ no p.Kill}
fact {//ヘレンは殺す意思を持たない
honest[ヘレン]}//ヘレンとジュリアが夜一緒にいる

Together1[ヘレン, ジュリア, 夜]Dead[ジュリア,深夜]

//
//
//
//
//
//
//
//
//
//
//
//
//
//

//

//これより下、結果に影響がない範囲で与えた計算上都合上の束縛条件//場面からの推測（外部知識でもある）
fact {//ヘレンとジュリアが夜にヘレン部屋にいる間//ヘレン部屋が施錠されているか定かではない事実から//ヘレン部屋に人物が出入りする解が出てきてしまう。
ロイロット.enter.夜=ロイロット -> ロイロット部屋
no Character.enter.夜.ジュリア部屋//外は誰のものでもない//ownerを付与すると、施錠するかどうかの解が増えてしまうため
no 外.owner}////ジュリアは深夜には死んでいる

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

//
//
//
//
//
//
//

10

⑥-４：場面１：「ジュリア殺害の日」とAlloyによる結果（青字） Roylottの犯行の可能性のみが残り、当時の人物・動物・モノの所在や状態の可能性が解として提示される

ロイロットが、ジュリアに対し、小生物での殺害の意思を持ち、実行して、ジュリアを殺害。

夜深夜

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

11⑥-４：場面１：「ジュリア殺害の日」とAlloyによる結果
ジュリア殺害の日における事実（FACT）//////////////////////////////////////////場面に関するFACT//////////////////////////////////////場面に関する情報//場所に関する情報（言及あり）
fact {
ジュリア部屋.owner=ジュリア
ヘレン部屋.owner=ヘレン
ロイロット部屋.owner=ロイロット
金庫.owner=ロイロット
ジュリア.lock.深夜=ジュリア -> ジュリア部屋
ヘレン.lock.深夜=ヘレン -> ヘレン部屋
Together1[ヘレン, ジュリア, 夜]
ヘレン.enter.夜=ヘレン -> ヘレン部屋
ジュリア.enter.夜=ジュリア-> ヘレン部屋
ヘレン.enter.深夜=ヘレン -> ヘレン部屋
ジュリア.enter.深夜=ジュリア -> ジュリア部屋
ロイロット.enter.深夜=ロイロット -> ロイロット部屋
ヒヒ.enter.夜=ヒヒ -> 外チーター.enter.夜=チーター -> 外}//状態に関する情報（言及あり）
fact {
Dead[ジュリア,深夜]
Alive[ヘレン,夜]Alive[ジュリア,夜]Alive[ヘレン,深夜]
Alive[ロイロット,夜]Alive[ロイロット,深夜]
not 外傷[ジュリア]not 毒物[ジュリア]}Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

モデルを限定するための付加条件//ヘレンは善人・犯行に関与しない
//
//
//
//
//
//
//
//
//
//
//
//
//
//

//
//
//
//
//
//
//
//

//ヘレンは善意の正直者。
pred honest[p: Person]{ no p.Kill}
fact {//ヘレンは殺す意思を持たないhonest[ヘレン]}////これより下、結果に影響がない範囲で与えた計算上都合上の束縛条件//場面からの推測（外部知識でもある）
fact {//ヘレンとジュリアが夜にヘレン部屋にいる間//ヘレン部屋が施錠されているか定かではない事実から//ヘレン部屋に人物が出入りする解が出てきてしまう。
ロイロット.enter.夜=ロイロット -> ロイロット部屋
no Character.enter.夜.ジュリア部屋//外は誰のものでもない//ownerを付与すると、施錠するかどうかの解が増えてしまうため
no 外.owner}

以上のような一階述語論理と事実からこれを満たす解を探す

12

⑥-４：場面１：「ジュリア殺害の日」とAlloyによる結果（青字）へレンが殺意を持つ場合、犯行時（深夜）の状況が大きく変わる。

深夜（パターン１）

ヘレンとロイロットが共謀していた可能性

深夜（パターン２）

ヘレンは殺意を持っていたが、ジュリアは蛇が逃げたことによる事故死の可能氏

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

13

⑥-５：場面２：「ヘレン殺害未遂の日」とAlloyによる結果
ヘレン殺害未遂の日では、殺害の方法に関して修正を加えた。
 殺害時に、邪魔・反撃が入ると失敗し、自分が死ぬ//////////////////////////////////////////場面に関するFACT//////////////////////////////////////場所に関する情報（言及あり）
fact {//共通部分
金庫.owner=ロイロット
no 外.owner
ロイロット部屋.owner=ロイロット//場面に拠る状況
ヘレン部屋.owner = (ヘレン + ロイロット)
ジュリア部屋.owner=(ヘレン + ホームズ)}//状態に関する情報（言及あり）
fact {//夕方
小さい有毒生物.enter.夕方!=小さい有毒生物 -> 外小さい有毒生物.enter.夕方!=小さい有毒生物 -> ジュリア部屋
小さい有毒生物.enter.夕方!=小さい有毒生物 -> ロイロット部屋
小さい有毒生物.enter.夕方!=小さい有毒生物 -> ヘレン部屋
ロイロット.lock.夕方=ロイロット -> 金庫ロイロット.enter.夕方=ロイロット -> 外//夜
小さい有毒生物.enter.夜!=小さい有毒生物 -> ジュリア部屋
one ロイロット.lock.夜.金庫ホームズ.enter.夜=ホームズ-> 外ヘレン.enter.夜=ヘレン-> ジュリア部屋
ヘレン.lock.夜=ヘレン -> ジュリア部屋
ヒヒ.enter.夜=ヒヒ -> 外チーター.enter.夜=チーター -> 外Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

//深夜
one ホームズ.Intercept.深夜
ロイロット.enter.深夜=ロイロット -> ロイロット部屋
ホームズ.enter.深夜=ホームズ-> ジュリア部屋
ホームズ.lock.深夜=ホームズ -> ジュリア部屋
ヘレン.enter.深夜=ヘレン-> ヘレン部屋
Together1[ヘレン,ホームズ,夕方]

Alone[ロイロット,夜]Dead[ロイロット,深夜]
Alive[ロイロット,夜]Alive[ロイロット,夕方]
Alone[ヘレン,夜]Alive[ヘレン,深夜]
Alive[ヘレン,夜]Alive[ヘレン,夕方]
Alive[ホームズ,深夜]Alive[ホームズ,夜]Alive[ホームズ,夕方]}//解の個数を狭めるための束縛条件（推理に本質でない）//束縛のための付与条件
pred honest[p: Person]{ no p.Kill}
fact {
no ヘレン.enter.夕方.外ヘレン.enter.夕方=ヘレン-> ヘレン部屋//ヘレンはhonestである。
honest[ホームズ]
honest[ヘレン]}//扉にlockがかかるかどうかで解のパターンが増えるので限定
pred show {#Person.lock <5//one ロイロット.Kill.Time.Method.ホームズ}
run show14

⑥-５：場面２：「ヘレン殺害未遂の日」とAlloyによる結果（青字）ロイロットが犯行を試み、失敗する解が提示される

夕
方夜

ロイロットが、ヘレンに対し、小生物での殺害の意思を持ち実行するが、ホームズにより阻止され自身が死ぬ。

深夜

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

15

場面３：事件の真相の様相
物語の構造＝ワトソンの語りと ヘレンの証言で成り立っている
 ヘレンの証言を前提にホームズは推理 ＝ ヘレンの発言（証言）を嘘とすると、後半のホームズは間違う ヘレンの怪しい点▪ ヘレンが死んでから、ワトソンがこの物語を語りだしたこと▪ ヘレンにも動機あり！
▪ ロイロットをホームズ屋敷まで追いかけさせ、ロイロット部屋を留守に！

ヘレンが嘘をついている場合ジュリア殺害の真相を知っている

ホームズの認識

ヘレンは真相を知らない

真相は知らない！

ヘレン

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

ホームズ

16

場面３：事件の真相の様相

Ａｌｌｏｙによる結果

「ヘレンがジュリア殺害の真相」を知っていたか、知らなかったかを考慮し、様相論理で推論を行う。
ヘレンの供述をすべて嘘にすると、FACTが足らずに解が出ない。
ヘレンの供述毎に真偽を振り分ける方法は、煩雑で今回はできず。
様相論理命題の外部知識①ヘレンが「殺害の真相を知って」いて、かつ、「ヘレンが殺害真相を知っている」ことをホームズが知ることができたならば、ロイロットは死なない。
②「ヘレンが正直に話す」時に限り、ヘレンの真の状態を、ホームズは知る。
様相論理の公理例 「ある事実を知っている⇒ある事実を知っていることを知っている」

ヘレン

ホームズ

ヘレンの真の状態 ヘレンの供述 「ヘレンの真の状態」をジュリア殺害真相を知っていた

ジュリア殺害真相を知らなかった

正直に話す
うそを言う
正直に話す
うそを言う

知る
知らない
知る
知らない
知る
知らない
知る
知らない

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

Ａｌｌｏｙ結果
結果

考察×××〇〇××〇

ホームズは、ヘレンから真相を伝えられ、ロイロットは死なない。
ホームズの能力から、起きない。
ヘレンが嘘つきのため、起きない。
ヘレンの策略のため、ロイロットは死ぬ。
物語のメイン解釈。ホームズの落ち度で最後の発言の根拠ホームズの能力から、起きない。
ヘレンが嘘つきのため、起きない。
事故は偶然起きた。
17Ｃ）まとめ１ アプローチ全体と各プロセス

場面１：
ジュリア殺害場面２：
ヘレン殺害未遂場面３：
事件の真相の様相

Tucker分解による知識補完
 機械的な知識補完でも、人が気づかないような示唆を得ることが可能。
※ただし、補完知識を採用するかを精査する必要あり。
 犯人を特定するまでの推論は難しい。
SAT問題による整合解探索
 述語論理式のSAT問題にすることで、推論過程でどのファクトを使うかの取捨選択自体を、プログラムに任せることできる。
 SAT問題を解くための時間がかかるために、モデルを限定する必要があった。
⇒大規模な並列計算環境や量子計算環境があれば、全数・網羅性を持たせた解析ができた。

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

18Ｃ）今後の課題 日本語文と述語論理式と形式手法Ａlloy言語とフレーム問題の関係
本文（またはナレッジグラフ）全体では、“関係のない知識が多すぎ”＆“知識が足りない”、ため、ＳＡＴ問題は解けない。
本アプローチでは、Ａｌｌｏｙの中でオブジェクトを定義することで、フレーム＝“関係ある知識”を定義している問題 ：ＳＡＴ問題に充足解がない、または、一意にならない場合、どうするか？

解決案：充足解が見つかる、または、一意になるために必要な論理式を数学的に導くこと、仮説推論も候補の1つ

日本語文（まだらの紐）CCG2
Lambda

述語論理式

手作業

形式手法
コンパAlloy言語
イル（＋様相論理公理）

ＣＮＦ

述語論理式の充足可能問題（ＳＡＴ問題）

フレームの設定・充足解がない・一意にならない

今回のアプローチ

必要な知識（日本語文）

逆変換
（研究中）

述語論理式

充足に必要な論理式の算出

今後の課題
Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

19Ｃ）まとめ２ 物語の真相
物語の真相

一連の事件はロイロットによる犯行である。
ヘレンが犯行に関わった可能性が否定できない。

Copyright（C） Nomura Research Institute, Ltd. All rights reserved.

20