(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023156489
(43)【公開日】2023-10-24
(54)【発明の名称】自然言語処理システム、自然言語処理方法および自然言語処理プログラム
(51)【国際特許分類】
G06F 40/30 20200101AFI20231017BHJP
G06F 40/279 20200101ALI20231017BHJP
【FI】
G06F40/30
G06F40/279
【審査請求】有
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2023134200
(22)【出願日】2023-08-21
(62)【分割の表示】P 2021147102の分割
【原出願日】2019-11-08
(31)【優先権主張番号】PCT/JP2019/022680
(32)【優先日】2019-06-07
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】520078949
【氏名又は名称】株式会社ロボマインド
(74)【代理人】
【識別番号】100136098
【弁理士】
【氏名又は名称】北野 修平
(74)【代理人】
【識別番号】100137246
【弁理士】
【氏名又は名称】田中 勝也
(74)【代理人】
【識別番号】100158861
【弁理士】
【氏名又は名称】南部 史
(74)【代理人】
【識別番号】100194674
【弁理士】
【氏名又は名称】青木 覚史
(72)【発明者】
【氏名】田方 篤志
(57)【要約】 (修正有)
【課題】入力された文から、場面や状況、主体モデルのプラスマイナス感情を設定し、単語に対応した単純な感情でなく状況に応じた最適な感情を推測して、文の意味を理解することができる自然言語処理システム、方法及びプログラムを提供する。
【解決手段】文字又は音声による文が入力される入力装置と、CPU及び主記憶メモリを有し、入力装置からの入力文を単語に分解して意味を解析する制御装置と、を有する自然言語処理システムであって、主記憶メモリには、自然言語を理解し、心的状態を有し、自分に好ましい感情であるプラス感情及び自分に好ましくない感情であるマイナス感情を持つ主体に対応する単語を有する単語オブジェクトが生成される。制御装置は、入力文の単語から主体の単語オブジェクトを生成し、主体のプラス感情又はマイナス感情を求めることで、主体の心的状態を判定し、主体の行動を予測することによって意味解析を行うことを特徴とする。
【選択図】
図3
【特許請求の範囲】
【請求項1】
文字または音声による文が入力される入力装置と、CPUおよび主記憶メモリを有し、前記入力装置からの入力文を、単語に分解して、意味を解析する制御装置と、を有する自然言語処理システムであって、
前記主記憶メモリには、自然言語を理解し、心的状態を有し、自分に好ましい感情であるプラス感情、および自分に好ましくない感情であるマイナス感情を持つ主体に対応する単語を有する単語オブジェクトが生成され、
前記制御装置は、前記入力文の単語から前記主体の単語オブジェクトを生成し、前記主体のプラス感情またはマイナス感情を求めることで、前記主体の心的状態を判定し、前記主体の行動を予測することによって意味解析を行うことを特徴とする自然言語処理システム。
【請求項2】
文字または音声による文が入力される入力装置と、CPUおよび主記憶メモリを有し、前記入力装置からの入力文を、単語に分解して、意味を解析する制御装置と、を有する自然言語処理システムに用いられる自然言語処理方法であって、
前記主記憶メモリには、自然言語を理解し、心的状態を有し、自分に好ましい感情であるプラス感情、および自分に好ましくない感情であるマイナス感情を持つ主体に対応する単語を有する単語オブジェクトが生成され、
前記制御装置は、前記入力文の単語から前記主体の単語オブジェクトを生成し、前記主体のプラス感情またはマイナス感情を求めることで、前記主体の心的状態を判定し、前記主体の行動を予測することによって意味解析を行うステップを備えることを特徴とする自然言語処理方法。
【請求項3】
文字または音声による文が入力される入力装置と、CPUおよび主記憶メモリを有し、前記入力装置からの入力文を、単語に分解して、意味を解析する制御装置と、を有する自然言語処理システムに用いられる自然言語処理プログラムであって、
前記主記憶メモリには、自然言語を理解し、心的状態を有し、自分に好ましい感情であるプラス感情、および自分に好ましくない感情であるマイナス感情を持つ主体に対応する単語を有する単語オブジェクトが生成され、
コンピュータを、
前記制御装置が、前記入力文の単語から前記主体の単語オブジェクトを生成し、前記主体のプラス感情またはマイナス感情を求めることで、前記主体の心的状態を判定し、前記主体の行動を予測することによって意味解析を行うよう機能させるための自然言語処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、自然言語処理システム、自然言語処理方法および自然言語処理プログラムに関する。
【0002】
本出願は、2019年6月7日出願の国際出願PCT/JP2019/022680に基づく優先権を主張し、前記国際出願に記載された全ての記載内容を援用するものである。
【背景技術】
【0003】
近年、人が話す言葉(自然言語)で対話可能なシステムが増えてきている。たとえば、特開2006-178063号公報(特許文献1)には、単語をネガティブ、ポジティブ、ニュートラルの3つの感情に分類した感情語辞書を作成し、ユーザーの発話に含まれる感情語からユーザーの感情を推測し、それに基づいた返答をする対話処理装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の技術によると、感情語が出てくれば、それに対応した返答をするだけである。よって、特許文献1に開示の対話処理装置は、文の意味を理解して出力しているわけではない。そのため、ちぐはぐな返答となり、自然な会話が続かないという問題がある。
【0006】
そもそも、感情というのは、単語に一対一で対応するものでなく、同じ単語であっても、そのときの状況や、見方によって異なる感情が発生し得る。たとえば、プレゼントをもらった場合、「嬉しい」という感情が発生するとともに、プレゼントをくれた相手に対して「感謝」といった感情も発生する。「プレゼント」という語にポジティブという感情を対応させた感情辞書を作成しておけば、「お父さんからプレゼントをもらったよ」という文からポジティブを読み取り「よかったねぇ」とは言えても、「おとうさんに感謝しないといけないよね」という返答は出てこない。
【0007】
このことの根本的な問題は、自然言語処理の分野では、未だに意味理解ができておらず、意味理解の定義すらできていないということに尽きる。
【0008】
本発明の目的は、自然言語処理において、意味理解の方法を提供することである。
【課題を解決するための手段】
【0009】
この発明にかかる自然言語処理システムは、入力された自然言語の文を解析し、自然言語を理解する主体を表す主体データ、および主体が行動する世界の一部を表す場面データを生成し、場面データに主体データを設定する場面設定部と、入力された自然言語の文を解析し、場面の状況変化を設定する状況変化設定部と、場面の状況変化に基づいて、主体にとって好ましい感情であるプラス感情、または主体にとって好ましくない感情であるマイナス感情が発生したかを判定するプラスマイナス感情設定部と、発生したプラスマイナス感情に基づいて意味解析する意味解析部とを有する。状況変化設定部は、状況変化の前状態で主体データに作用する価値と状況変化の後状態で主体データに作用する価値とをそれぞれ数値として取得する。プラスマイナス感情設定部は、前状態の数値と後状態の数値との差を計算してプラスマイナス感情を算出する。
【0010】
また、この発明にかかる自然言語処理方法は、入力された自然言語の文を解析し、自然言語を理解する主体を表す主体データ、および主体が行動する世界の一部を表す場面データを生成し、場面データに主体データを設定するステップと、入力された自然言語の文を解析し、場面の状況変化を設定する状況変化を設定するステップと、場面の状況変化に基づいて、主体にとって好ましい感情であるプラス感情、または主体にとって好ましくない感情であるマイナス感情が発生したかを判定するステップと、発生したプラスマイナス感情に基づいて意味解析するステップと、を備える。状況変化を設定するステップは、状況変化の前状態で主体データに作用する価値と状況変化の後状態で主体データに作用する価値とをそれぞれ数値として取得する。判定するステップは、前状態の数値と後状態の数値との差を計算してプラスマイナス感情を算出する。
【0011】
また、この発明に係る自然言語処理プログラムは、コンピュータを、入力された自然言語の文を解析し、自然言語を理解する主体を表す主体データ、および主体が行動する世界の一部を表す場面データを生成し、場面データに主体データを設定する場面設定部、入力された自然言語の文を解析し、場面の状況変化を設定する状況変化設定部、場面の状況変化に基づいて、主体にとって好ましい感情であるプラス感情、または主体にとって好ましくない感情であるマイナス感情が発生したかを判定するプラスマイナス感情設定部および発生したプラスマイナス感情に基づいて意味解析する意味解析部として機能させるための自然言語処理プログラムである。状況変化設定部は、状況変化の前状態で主体データに作用する価値と状況変化の後状態で主体データに作用する価値とをそれぞれ数値として取得する。プラスマイナス感情設定部は、前状態の数値と後状態の数値との差を計算してプラスマイナス感情を算出する。
【発明の効果】
【0012】
この自然言語処理システムは、入力された文から、場面や状況、主体モデルのプラスマイナス感情を設定するので、単語に対応した単純な感情でなく、状況に応じた最適な感情を推測して、文の意味を理解することができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、本発明の第一の実施形態であるチャットボットシステムのブロック図である。
【
図2】
図2は、意味理解プログラムのブロック図である。
【
図3】
図3は、意味理解プログラムの処理の流れを示すフローチャートである。
【
図6】
図6は、概念ツリーのデータ構造を示す図である。
【
図7】
図7は、単語オブジェクトのデータ構造を示す図である。
【
図8】
図8は、出来事のデータ構造を示す図である。
【
図16】
図16は、本発明の第二の実施形態のロボットのブロック図である。
【
図20】
図20は、仮想的に構築した相手の心のデータ構造を示す図である。
【
図21】
図21は、町のHas-aツリーのデータ構造である。
【
図22】
図22は、「走る」という行動から導かれる二つの前後状態を示す図である。
【発明を実施するための形態】
【0014】
本発明は、自然言語の意味理解の方法、つまり、人間と同じように文の意味をコンピュータに理解させる方法についての発明である。自然言語処理の分野では、未だに意味理解の定義すら定まっていないので、発明者は、意味理解を二つ定義することから行った。
【0015】
一つ目の定義は、情報量の削減である。意味を理解するとは、何らかの情報処理を行うということといえる。情報処理の一例として、数値計算を考えてみる。「1+1=2」は、元々あった「1+1」という情報を処理して「2」という情報になったわけである。情報処理した結果、情報量が削減されている。何と何とを足したかという情報が失われた代わりに、足した合計値にまとめられたわけである。不要な情報を削除し、必要な情報にまとめるのが情報処理といえる。発明者は、自然言語の意味理解も同じと考えた。文の意味を理解するとは、意味理解前に比べて情報量が削減されているはずである。文の中の無駄な要素を省き、必要な要素にまとめられれば意味理解できたことになるという考えである。
【0016】
二つ目の定義は、人の行動予測である。人と同じように言葉の意味を理解できるということは、人と会話したとき、人と同じように回答できるということである。つまり、人ならこう話すだろうという行動予測ができれば、それは、意味を理解しているといえる。
【0017】
人が行動または発言するには、何らかの心理的な原動力が存在するはずである。それは、「お腹がすいた」や「眠い」といった本能に根差したものから、「怒り」や「感謝」、「悔しい」といった感情まで、人の様々な心の状態である。この心的状況がわかれば、その人の次の言動を予測することができる。つまり、心的状況を正確に表現できたとすれば、それこそが、意味理解だといえるのである。本発明の中心は、人の心的状況をデータ構造として表現し、自然言語の文を読み取り、どのような心的状況にあるかを推定することにある。これは、言い換えれば、人と同じ「心」をコンピュータプログラムで実現するともいえる。そして、たとえば、その人の心的状況が「感謝」となれば、「ありがとう」と発言するだろうと予測できる。つまり、意味理解の第二の定義である行動予測ができたといえる。これが、コンピュータで自然言語の意味を理解するということである。
【0018】
以下、本発明の第一の実施形態について説明する。
図1は、本発明の第一の実施形態であるチャットボットシステム1のブロック図である。
図1に示すチャットボットシステム1は、ユーザーが文字を入力するキーボードなどの入力装置2と、対話内容を表示する表示装置3と、入力文を意味解析し、応答文を生成して表示装置3に表示する制御装置4とを有する。
【0019】
表示装置3は、LCD(Liquid Crystal Display)などで実現され、ユーザーからの入力文5およびシステムの応答文6を表示する。制御装置4は、CPU(Central Processing Unit)7と、本発明の意味理解プログラムがロードされる主記憶メモリ8を有する。
【0020】
図2は、本発明の意味理解プログラム9の構成を示すブロック図である。意味理解プログラム9は、場面設定部10、状況変化設定部11、プラスマイナス感情設定部12、意味解析部13を有する。
【0021】
図3は、意味理解プログラムの処理の流れを示すフローチャートである。
図3に従って、チャットボットシステム1の処理の全体の流れを説明する。
【0022】
ユーザーは、入力装置2から入力文を入力し終わると確定キーを押す。制御装置4は、ステップS14で入力文が確定されるのを待っており、確定されると、ステップS15において、ユーザーの入力文を表示装置3に、ユーザー入力文5として表示する。
【0023】
ステップS16では、入力文の意味解析を行う。意味解析では、最初に、入力文の単語分割処理を行う。たとえば、「太郎が、学校に行った」といった文の場合、「太郎/が/、/学校/に/行った/。」と分割する。これは、入力文が日本語の場合、形態素解析によって行われる。その後の意味解析処理については、後で詳しく解説する。
【0024】
ステップS17では、意味解析の結果、心的状態の変化を判定し、変化があれば、ステップS18に進み、心的状態に応じた感情語応答を行う。たとえば、ユーザーの心的状態が「喜び」であれば、それに対応した応答として「よかったね」などと返答する。
【0025】
心的状態の変化がなければ、ステップS19に進み、標準応答を行う。たとえば、「それでどうなったの?」などと次の会話を促す。
【0026】
次に、
図4~
図15を参考に、意味解析プログラムがどのようなデータを持ち、どのように処理するかについて説明する。意味解析プログラムは、会話の内容を物語データ20として管理する。物語データ20は、
図4に示すように1または複数の場面データ21から構成される。場面データ21は、
図5に示すように、時データ26、場所データ27、出来事データ28、登場物データ29、登場人物データ30を有する。場面データ21に設定されるこれらのデータ26~30は、単語オブジェクトとして設定される。単語オブジェクトとは、言葉を定義するデータであり、概念ツリーによって管理される。
【0027】
図6に、概念ツリーの一例として、「プリン」の概念ツリー40を示す。概念ツリー40は、上位概念と下位概念が連なった形で構成され、ここでの最上位概念は具体物41である。具体物41の下位概念が無生物42で、その下位概念が飲食物43で、その下位概念が料理44で、その下位概念が菓子45で、その下位概念がプリン46となる。この例では、概念ツリーは一列で構成されるが、概念ツリーは分岐してもよい。
【0028】
図7に示すように、単語オブジェクトは属性を持っている。属性は、属性名と属性値で管理され、属性名としては、色や形、名前などがある。プリンの場合、名前が「プリン」であり、形は「丸」であり、味は「甘い」などとなる。
【0029】
概念ツリーは、上位概念の属性を下位概念が持つ(継承)ように構成される。たとえば、菓子の味(属性名)が「甘い(属性値)」と設定されていると、その下位のプリンの味も「甘い」となる。なお、例外がある場合は、属性値を上書きすることも可能である。
図5に設定される時データ26、場所データ27、登場物データ29、登場人物データ30は、このような単語オブジェクトが設定可能に構成される。
【0030】
人が話をするとき、たとえば、「昨日、こんなことがあったよ」といった風に話す。その中には、一つの物語が含まれる。物語は何かしらの世界で展開される。ここでいう世界とは、3次元空間的な広がりを持ち、人や物を含み、時間が流れているものとする。世界の一例として、会話してる本人が含まれる、今、現在のこの世界であってもいいし、昔話などの現実世界とは異なる別の世界であってもいい。
【0031】
物語データ20は、
図4に示したように複数の場面データ21から構成される。場面データ21とは、世界を時と場所で切り取った断面といえる。場面データ21には、時データ26や場所データ27などが含まれる。時データ26には、時間概念の下位概念となる単語オブジェクトが設定され、場所データ27には、場所概念の下位概念となる単語オブジェクトが設定される。この場面は、場面設定部10によって生成されて設定される。
【0032】
たとえば、「昔々、あるところにおじいさんとおばあさんがいました」との入力文があったとする。意味解析プログラムは、新たな物語が開始されたと判断し、最初に、物語データ20を新規生成し、さらに場面データ21を生成し、物語データ20に追加する。つぎに、場面データ21の時データ26に「昔々」を設定し、場所データ27に「あるところ」を設定し、登場人物データ30に「おじいさん」と「おばあさん」を設定する。
【0033】
登場物データ29と登場人物データ30の違いは、心を持つか持たないかである。心を持つ者を登場人物データ30とするが、これは、人に限らず、たとえば昔話に登場する動物や空想上の生き物や、さらには物であっても、心をもてば登場人物データ30とする。心を持つとは、嬉しいや悲しいなどの感情や、努力といった心的状態を持ち得るものである。なお、本発明では、実際の世界に存在する心を持つ者のことを主体と呼び、それをプログラム内のデータとして表したものを主体データと呼んでいる。
【0034】
意味理解プログラムは、文を読み込むと、文を解析し、物語データ20や場面データ21を生成したり、場面データ21の状況を設定する。つまり、意味理解処理とは、自然言語で表現された文を物語データ20に変換する処理といえる。
【0035】
文は主語、述語、目的語などからなり、述語によって文の役割がきまる。文の役割は、大きく分けて状況の設定と、状況の変化の二つに分かれる。状況の設定とは、場面データ21に登場物データ29や登場人物データ30を設定したり、登場物データ29や登場人物データ30に名前などの属性を設定することである。つまり、これから始まる物語の前提となる状況を設定することである。
【0036】
たとえば、「おじいさんがいました」という文の場合、「いる」という述語によって文の役割が決まる。「いる」という述語は、状況設定の役割があり、具体的には、主語を場面に存在させるという機能を持つ。この場合、主語は「おじいさん」であり、「おじいさん」は人物の下位概念となるので、「おじいさん」という主体データである登場人物を生成し、場面データ21の登場人物データ30に設定する。
【0037】
また、形容詞なども状況設定の役割がある。たとえば、「花は白い」という文の場合、「白い」という述語は、主語である「花」の色属性に「白」という属性値を設定することである。
【0038】
「おじいさんは山に行きました」という文の場合、「行く」という述語によって文の役割がきまり、「行く」という述語は、状況の変化の役割となる。「行く」は「主語」を「目的地」に移動させる機能がある。場所が変わるということは場面が変わることになるので、この文を読み込むと、新規に場面データ21を生成し、場所データ27に目的地である「山」を設定し、登場人物データ30に「おじいさん」を設定する。これが、状況の変化の文である。
【0039】
また、状況の変化は、出来事でもあるので、場面データ21の出来事データ28にも設定される。
図8は、出来事データ28のデータ構造を示す図である。出来事データ28は、登場人物または登場物が設定される出来事主体50と、出来事主体50の前後の状態を管理する前後状態51と、出来事主体50の行動60とを有する。
【0040】
図9は、行動60のデータ構造を示す図である。行動60は、文の作用を示す作用語61を中心にまとめられる。作用語とは、通常、文の述語となる。「おじいさんが山に行きました」の場合、述語は「行く」なので、作用語61は「行く」となる。行動60のデータ構造は、作用語ごとに異なり、作用語「行く」のデータ構造が、
図9に示す内容となる。作用語「行く」は主語62、目的地63、出発地64、意味65を有する。
【0041】
全ての作用語のデータ構造は、作用語辞書に格納されており、「行く」などの作用語で作用語辞書を検索することで、「行く」のデータ構造を取得することができる。
【0042】
意味理解プログラムは、作用語「行く」のデータ構造を取得すると、文「おじいさんが山へ行きました」と照らし合わせて、主語62に「おじいさん」、目的地63に「山」を設定する。この文からは出発地64を読み取れないので、出発地64は空欄とするが、デフォルト値として「家」を設定するようにしてもよい。こうやって行動60が完成する。
【0043】
行動60の意味65の内容は、行動60の内容を出来事データ28の出来事主体50および前後状態51に設定するプログラムであり、たとえばスクリプト言語で記述されている。意味理解プログラムは、このスクリプト言語を解釈、実行することができる。意味65については、このようなスクリプト言語をテキスト形式で記述してもよく、または、実行プログラムを設定してもよい。
【0044】
「行く」の場合だと、意味65は、出来事データ28の出来事主体50に主語62を、前属性52、後属性54に「場所」を、前属性値53に出発地64の中身を、後属性値55に、目的地63の中身を設定せよとの内容が記述されている。意味理解プログラム9の状況変化設定部11は、この意味を読み込み、その内容に従って設定する。つまり、前後状態51の出来事主体50を「おじいさん」とし、後属性値55を「山」と設定する。なお、出発地64が「家」となっていれば、前属性値53に「家」を設定する。このようにして、出来事データ28が完成する。
【0045】
登場人物データ30は、心的状態が設定される心的状態部31を有する。心的状態部31は、自分のプラスマイナスの感情が設定されるプラスマイナス感情部を有する。プラスの感情とは、自分にとって好ましい感情であり、マイナスの感情とは、自分にとって好ましくない感情である。たとえば、「お腹がすいた」とか「危険」といった、不快となるものがマイナス感情で、「お腹がいっぱい」とか、「安心」といった快となるものがプラス感情となる。
【0046】
不快(マイナス感情)を避け快(プラス感情)を求めるというのが、生物の行動の基本原則である。これは、人間に限らず、あらゆる生物が持つ基本原則である。なお、プラスマイナス感情は主体単独で発生するもので、「痛い」や「気持ちいい」といった身体的なものと、「嬉しい」や「悲しい」といった精神的なものとがある。
【0047】
それでは、再び
図3のフローチャートを参考に、意味解析を示すステップS16以降の動作について説明する。
【0048】
最初に「はじめまして、太郎です」と文が入力されたとする。すると、まず、初期設定として、場面設定部10が、物語データ20および場面データ21を生成し、物語データ20に場面データ21を追加する。そして、入力文を解析し、主語である「太郎」を取り出す。「太郎」を概念ツリーで検索すると、「人物名」概念以下とわかるので、「太郎」とは人間の名前と判断し、登場人物データ30を生成し、その名前属性に「太郎」と設定する。また、述語は「です」なので、「太郎」が存在すると判断でき、生成した「太郎」を場面データ21の登場人物データ30に設定する。
【0049】
図10は、この場面データ21の出来事データ28のデータの中身を示す図である。
【0050】
まず、「はじめまして」を概念ツリーで検索すると挨拶概念以下とわかるので、「挨拶」で作用語辞書を検索して「挨拶」のデータ構造を取得する。そして、「挨拶」のデータ構造の主語71に「太郎」、挨拶内容72に「はじめまして、太郎です」と設定して挨拶の行動70を完成させる。また、作用語「挨拶」は、出来事主体の前後状況に変化を及ぼさないから、意味は空欄となっている。意味が空欄なので、状況変化設定部11は、前後状態51には何も設定しない。
【0051】
ここで、次のステップS17に進み、プラスマイナス感情設定部12は、登場人物データ30の心的状態に変化があったかどうかを判定する。今の場合、出来事データ28の前属性値、後属性値で変化がないので、意味解析部13は、心的状態に変化がないと判断して、次の標準応答を示すステップS19に進む。
【0052】
標準応答を示すステップS19は、
図11に示す標準応答辞書を使って応答する。標準応答辞書は、相手の発話と、その返答がペアとなった辞書であり、今回の場合、「太郎」の発話が「はじめまして」なので、それに対応した「初めまして、太郎君」を返答として返す。また、挨拶の後は、会話が続くように、「最近、何かあった?」と続けて尋ねる。これらが、応答文6として表示装置3に表示される。
【0053】
これを受けて、太郎君は、たとえば「今日、コンビニに行ってくじ引きをしたよ」と回答したとする。意味解析を示すステップS16において、「コンビニに行く」から場所が変わったと判断して、場面設定部10は、新たな場面データ21を生成し、場所を「コンビニ」と設定し、出来事データ28に、「太郎がコンビニに行く」を設定する。続けて、さらに出来事データ28を生成し、「太郎がくじを引く」と設定する。このように、一つの場面データ21で複数の出来事データ28が設定されることもある。
【0054】
今回の場合、状況変化設定部11によって、出来事の前後状態は、最終的に、後属性54が「場所」で、後属性値55が「コンビニ(コンビニエンスストア)」となる。
【0055】
出来事データ28が設定されると、ステップS18にてプラスマイナス感情設定部12は、心的状態の変化を判断する。心的状態は、
図12示す心的状態辞書で判断する。心的状態辞書は、登場人物の属性に応じた値が数値で設定されており、数値がプラスであればプラス感情、マイナスであればマイナス感情で、感情の大きさは値の大きさで示される。
【0056】
図12の心的状態辞書には、登場人物がその属性になった時に予想されるプラスマイナス感情の値が設定されている。たとえば、たとえばディズニーランドなどの遊園地は楽しい場所なので、その場所にいるときの登場人物のプラスマイナス感情は+7などと高い値となる。今回の場合、場所のコンビニの値は+1となっている。元の場所の値が0だとすると差は+1となる。
【0057】
ここで、予め感情発生の基準値の大きさとして「+3」と設定してあったとして、大きさが+3に満たないので感情が発生しないと判断される。次の「くじを引く」も、心的状態辞書には「くじを引く」という行動がないので、これも感情が発生せず、心的状態に変化がないと判断され、標準応答を示すステップS19に進む。
【0058】
標準応答辞書には、「くじを引く」に対応する応答がないので、どこにも該当しない場合の「それでどうなったの?」を応答文6として表示装置3に表示する。
【0059】
これを受けて太郎君は、「プリンが当たったよ」と答えたとする。意味解析を示すステップS16では、まず、
図13示すように、「プリンが当たる」という行動90を作成する。行動90では、作用語61が「当たる」で、主語62が「太郎」で、対象66が「プリン」となる。そして、意味には、主語の所有物が対象となるように前後状態51を設定することが記述されている。この意味に従って、状況変化設定部11が、行動90を前後状態51に変換すると、
図14示すように、後属性値で、「太郎」の所有物が「プリン」となる。
【0060】
図6に示すように、プリンは菓子の下位概念である。
図12の心的状態辞書を見ると、所有物の菓子の値は+5である。ということは、太郎のプラスマイナス感情が、前状態の0から後状態の+5に5増加したことになる。これは、基準値の+3より大きい値なので、プラスマイナス感情設定部12は、プラスの感情を発生して設定する。そこでステップS17に進み、意味解析部13による感情語応答が行われる。
【0061】
感情語応答は、
図15に示す感情語応答辞書に基づいて行われる。感情語応答辞書は、プラスの場合、応答語は、「よかったね」であり、マイナスの場合「残念だったね」である。今回は、プラス感情が発生したので、「よかったね」との応答文6を表示装置3に表示する。
【0062】
人が会話する目的は、何か言いたいことがあるからである。言いたいこととは、昨日こんなことがあったといったことである。それは、一言でいえば、こんな楽しいことがあったとか、こんな悲しいことがあったといった感情となる。感情を分解し、最も基本的な感情がプラスマイナス感情というわけである。つまり、その人にとって好ましいことか、好ましくないことかである。また、感情が発生することが、言いたいことの最小単位ともいえるし、本発明の「物語」の最小単位ともいえる。したがって、相手の発話から感情をよみとれなかったら、まだ、その「物語」が完結していないと判断でき、その続きを促すために、「それでどうなったの?」などと返答することができる。このようにして、自然な会話が可能となる。
【0063】
本発明の意味理解方法を一言でいえば、文の内容を、主体のプラスマイナス感情に落とし込むように処理することである。たとえば、「太郎は、コンビニでくじを引いて、プリンが当たった」といった文から読み取れることは、概念ツリーや単語オブジェクトの属性といったデータから、「プリンというものは甘くて丸いものだ」とか、「コンビニの店員は、冷蔵庫からプリンを取り出しただろう」とか、この文から考えられる意味は無限に考えられる。
【0064】
そこを、太郎のプラスマイナス感情に落とし込むように処理するのである。つまり、太郎にとって、それは良かったのか、悪かったのかを導くように情報を整理する。そのための工夫として、「当たる」という動詞の意味を、登場人物の所有物の変化となるように定義した。なぜなら、人は価値のあるものを得ることで嬉しくなり、価値のあるものを失うことで悲しくなるという、プラスマイナス感情が発生するからである。
【0065】
作用語の意味は、様々な方法で定義することができるが、本発明では、登場人物のプラスマイナス感情の変化に寄与する意味を選択するといえる。このように、作用語の意味をプラスマイナス感情に関するものに整理することで、文の意味を絞ることができる。結果として、自然言語の意味理解の第一の定義である情報量の削減を行っているといえる。
【0066】
次に、自然言語の意味理解の第二の定義である行動予測について、第二の実施の形態を使って説明する。
【0067】
図16は、本発明をロボット100に組み込んだ第二の実施の形態を示すブロック図であり、
図17はその外観である。ロボット100は、人間とほぼ同じ大きさの人型ロボットであり、人間とほぼ同じ機能を有する。つまり、目107に備えられるカメラ101で外界を撮影し、マイク102で音声を聞き、口108に備えられるスピーカ103から音声を発する。また、手足109はモータ104で駆動され、そのほか接触センサ105なども備え、これらは制御装置106で制御される。
【0068】
制御装置106において、第一の実施形態と同様の意味理解プログラムが実行される。ただし、本実施形態では、入力はマイク102からの音声入力であり、出力はスピーカ103からの音声出力である。そのため、入力文は音声が文字変換され、応答文も音声変換されて出力され、より人間に近い形で会話ができるようになっている。また、カメラ101やセンサ105によって音声以外の外界の状況も取得できる。そして、さらに異なるのは、意味理解プログラムの内容である。
【0069】
本実施形態の意味理解プログラムは、ロボット100の「心」として機能する心理プログラムの一部として組み込まれる。心理プログラムは、人間の様々な心理を理解できるプログラムであり、社会的な感情も理解することが可能となっている。社会的な感情とは、相手と自分がいて成立する感情であり、「感謝」や「怒り」、「恥」といったものがある。
【0070】
一例として「感謝」の感情を理解する方法について説明する。ここで、ロボット100の名前を「ロボ太」とし、太郎がロボ太にプレゼントを贈ったとする。たとえば、太郎が「ロボ太、プレゼントをあげるよ」とプレゼントを渡したとする。
【0071】
図18は、本実施形態の意味理解プログラムの出来事110のデータ構造である。出来事110には、登場人物として自分111と相手112を持つ。自分とは、心理プログラムが実行される自分のことであり、相手とは、自分と会話している相手のことである。
【0072】
「ロボ太、プレゼントをあげるよ」との入力文を得ると、「あげる」という述語を概念ツリーで検索し、「ゆずる」の下位概念であると判断し、出来事110の行動を生成する。行動の作用語120は、「ゆずる」となるので、作用語辞書から「ゆずる」のデータ構造を取得する。取得したデータ構造に対し、作用語120に「ゆずる」、主語121に「太郎」、「ゆずる相手」に「ロボ太」、「ゆずる物」に「プレゼント」を設定する。これで行動が完成する。
【0073】
そして、行動の意味124にしたがって、出来事110の自分前後状態を設定する。自分前後状態とは、行動の前後の自分の状態を示すデータ構造であり、今回の場合、前属性名130、後属性名132は「所有物」であり、前属性値131は空であり、後属性値133は「プレゼント」となる。
【0074】
心的状態辞書で「プレゼント」を検索すると、たとえば+8といった値であり、ロボ太のプラスマイナス感情は+8となって、基準値より大きくなるので、ロボ太はプラス感情、たとえば「嬉しい」といった感情を発生することになる。
【0075】
ここで発生したのは、「自分」の感情である。つぎに、行動を確認すると、主語121が「太郎」となっている。つまり、行動したのは、現在、会話している相手である。相手の行動の結果、自分がプラス感情となったということは、自分がプラス感情となった原因は相手ということになる。
【0076】
ここで、社会的感情辞書というものを作成しておく。これは、「感謝」や「怒り」など、自分と相手がいて成り立つ社会的感情が発生するパターンを登録したものである。「感謝」の場合、自分にプラス感情が発生し、その原因が相手だった場合、相手に対して「感謝」の感情が発生するとする。今の場合、プレゼントをくれたのが太郎なので、ロボ太は太郎に対して「感謝」の感情が発生することになる。また、「感謝」の感情が発生したとき、相手にいう言葉として「ありがとう」と登録しておくことで、ロボ太は、プレゼントをもらって、太郎に「ありがとう」と言うことができる。
【0077】
このようにして、本実施形態の意味理解プログラムでは、「感謝」の感情を理解することができる。また、プレゼントをもらって「ありがとう」と言うこともできる。これは、人間がとる行動と同じである。つまり、人の行動予測ができているといえ、冒頭に定義した意味理解の第二の定義ができているといえる。
【0078】
ここでプレゼントが、ロボ太の欲しいものでなかった場合を考えてみる。たとえば、太郎はロボ太は、きっと、乾電池が好きだろうと思って乾電池をプレゼントしたとする。ロボ太は、乾電池で動いているわけでないので、乾電池をもらっても嬉しく思わない。こんな場合でも、人間なら、相手の好意を汲み取って「ありがとう」というはずである。
【0079】
そこで、次は、このような複雑な感情も理解できるようにする。そのために、
図19に示すように、自分のプラスマイナス感情を管理する自分感情管理部150を有する。自分感情管理部150は、実際に自分に発生した感情151と、相手が意図した自分の感情152を有する。今の場合、実際の自分の感情とは、乾電池をもらったロボ太のプラスマイナス感情なので、マイナスとなる。相手の意図とは、乾電池を受け取るとロボ太(自分)は喜ぶ(プラス感情)と思った太郎(相手)の意図のことであるので、相手(太郎)が意図した感情152はプラスとなる。
【0080】
意味理解プログラムは、自分前後状態を設定した後、この自分感情管理部150を設定する。そして、社会的感情辞書に、相手が意図した自分の感情152がプラスであれば「感謝」の感情が発生すると登録しておく。このようにして、相手の気持ちを汲み取って、自分の気持ちより相手の気持ちを優先して「ありがとう」と言う、より複雑な感情が理解できるようになる。
【0081】
なお、自分の感情を優先させるか、相手の意図を優先させるかは、パラメータを心理プログラムに設定して決定してもよい。このパラメータによって、相手を優先しがちな場合は、「優しい」となり、自分を優先しがちなら「自分勝手」となる。このようにして、ロボットの「性格」も設定することができる。
【0082】
このような機能は、相手の心を推し量る、または、相手が考える出来事を想像する機能といえる。相手の考える出来事を想像するとは、相手の考える出来事をシミュレートしているともいえる。この機能を実現するために、相手の心を仮想的に構築する。これを
図20に示す。仮想的な相手の心160では、相手の考える出来事161が計算される。相手の考える出来事161は、相手の前後状態162を持っている。相手が考える相手とは、相手からみた相手なので、自分となる。したがって、相手の前後状態162に設定される属性値とは、相手が考える自分の属性値となる。
【0083】
先の例で説明すると、自分はロボ太で、相手が太郎となり、ロボ太(自分)が太郎(相手)の仮想的な心160を想像することとなる。仮想的な太郎の心160には、太郎の考える出来事161が設定される。太郎がロボ太に乾電池をプレゼントすると、ロボ太の後属性値が、ロボ太がもらった乾電池の価値だけ上がることとなる。ロボ太がもらった乾電池の価値は、実際にロボ太が感じる価値でなく、太郎が想像するロボ太の乾電池の価値となる。太郎は、太郎の経験や知識からロボ太が感じる乾電池の価値を想像する。たとえば、「ロボットだから乾電池をもらうと喜ぶだろう」といったことである。これは、太郎の知識として、主体別に心的状態辞書を作成しておき、「ロボット(主体)にとっての乾電池の価値は+5」といったように記録することで実現できる。そうすると、相手(太郎)が想定する自分(ロボ太)の感情は、乾電池をもらうと+5となる。これは、相手(太郎)の行動の結果、自分(ロボ太)のプラスマイナス感情がプラスとなることであり、これが相手の意図といえる。そして、相手が意図した自分の感情がプラスなら、相手は、自分を喜ばせようと思って行動したのであるから、相手に対して「感謝」の感情が発生する。逆に、相手が意図した自分の感情がマイナスなら、相手は、自分を不快にさせようと思って行動したのであるから、「怒り」の感情が発生する。
【0084】
相手の心を推し量るとは、相手が行動するときに限らず、相手から見た自分の評価、価値を推測する場合も含まれる。つまり、相手が自分のことをどう思っているかも推測することができる。これができるようになると、他人の視線といったものも生成でき、「恥」という感情も生成できる。どんな集団や社会にも、その社会に属すなら、最低限満たしていて当然な基準というものが存在する。たとえば、「中学生なら、この程度の漢字は知っているはず」とか、「陸上部なら、50mを6秒台で走れるはず」といったことである。このような、「何々なら、少なくともこれはできるはず」といった、特定の社会で、最低限満たすべき基準が設定されたとする。この基準は、経験などから導かれるものである。そして、その社会に属している自分が、その基準を満たしておらず、それを他人が見てどう思うかとシミュレートしたとき、「恥」という感情が発生するようにする。そうすると、「何々なのに、これもできない」という他人から見た自分の価値を推測して、「恥ずかしい」という感情を生成することができる。
【0085】
人は、この「恥」という感情を持ち得ることで、まとまりのある社会を形成する。なぜなら、その社会に属すには、最低限、その基準を満たすべきという心理的欲求が発生し、これが原動力となってその基準を満たすように行動するからである。この「恥」という感情を持つことで、人間社会に溶け込める心を持った人工知能が実現できる。
【0086】
次は、「怒り」について説明する。たとえば、誰かがロボ太に「ポンコツ」と言ったとする。ロボ太は、聞いた音声を音声認識により文字列に変換して意味解析をする。「ポンコツ」という言葉の意味は、対象の性能が悪いことを示す。対象とは、ロボ太のことであるので、ロボ太は、自分に対して悪口を言われたと判断し、マイナス感情が発生する。ロボ太が見てみると、画像認識から次郎君が発言したことが確認できた。
【0087】
この状況を自分感情管理部150に設定すると、自分の感情はマイナスとなる。また、相手が言ったので、相手が意図をもって発言したと判断して、相手の意図した自分の感情152もマイナスとなる。社会的感情辞書には、相手が意図した自分の感情152がマイナスの場合、その行動をした相手に対して、「怒り」の感情が発生すると登録しておく。これによって、今の場合、「怒り」の感情が発生し、たとえば「何だとー!」などと怒りの感情に応じた応答をする。
【0088】
ここで、悪口を言った相手が「ごめんなさい」と言ってきたとする。「ごめんなさい」を概念ツリーで検索すると「謝罪」概念以下とわかるので、「謝罪」の行動を作成する。作用語を「謝罪」と設定し、「謝罪」の意味から出来事を設定すると、相手の意図した自分の感情152が±0となる。また、謝罪した人は、謝罪する相手に対して相対的に下の立場となる。つまり、「謝罪」とは、自ら自分の立場を下げることで、悪意がないことを示す機能があるといえる。ここで、意味理解プログラムが解析し直すと、相手の意図した自分の感情152が0となるので、怒りが発生しない、つまり、怒りが収まる。このようにして、「謝罪」といった心理も理解できるようになる。
【0089】
つぎは、社会的感情に基づく行動予測について説明する。人は、相手との間で心理的なバランスを取ろうとする。たとえば、「怒り」の感情の場合、相手によって、自分はマイナス感情となっている。バランスを取るとは、相手によって自分がマイナス感情となっているなら、相手もマイナス感情とすることで、お互いがマイナスとなってバランスが取れるということである。そこで、心理プログラムは、「怒り」の感情が発生したとき、次の応答として、相手がマイナス感情を発生するような発言を探索する。
【0090】
これは、今までの逆の過程を行うことで実現可能である。つまり、出来事110において、自分前後状態を自分でなく相手の前後状態を想定し、相手がマイナス感情を発生するような後属性値を探し、その後属性値が設定されるような行動を探し出すわけである。これは、別の言い方をすれば、相手の立場に立って考えるともいえる。
【0091】
一例として、相手に「バカ」と言われて、自分がマイナス感情となったとする。相手が、自分と同じマイナス感情となるような行動を探索して、たとえば、相手に「アホ」と言い返すことが考えられる。これは、「仕返し」や「報復」といった意味を理解してるといえる。これも、行動予測としての意味理解の一例である。
【0092】
「感謝」の気持ちが発生したときも、バランスを取ろうとして、相手がプラス感情となるように行動を取る。たとえば、誕生日プレゼントをもらったら、自分がプラス感情となったので、相手もプラス感情となるように、相手の誕生日にプレゼントをするといった行動を取る。これは、「お返し」といった意味を理解して行動しているといえる。このようにして、相手から受けたプラスマイナスの感情のバランスを取るように行動を取ることで、より人間の心に近い心理プログラムとなる。
【0093】
つぎは、社会的感情として最も重要な「善」と「悪」について説明する。「善」とは、「相手のプラスマイナス感情がプラスとなるように行動すべき」と定義できる。つまり、相手が喜ぶことをすることが「善」というわけである。複数の行動を取り得る場合、相手がプラス感情となる行動を選択するように心理プログラムを構成することで、「善」の意味を理解できるというわけである。なぜなら、人間と同じ行動を取る(行動予測)ことができるということが、意味を理解しているといえるからである。同様に、「悪」は、複数の行動を取り得る場合、相手がマイナス感情となる行動を選択することと定義できる。
【0094】
ここで、相手が存在しない場合の善悪の判断を考えてみる。たとえば、道にゴミを捨てるといった行為の場合である。これは、明らかに「悪い」行動であるが、明確な相手が存在しない。このような場合は、関係する第三者を相手として設定する。関係する第三者とは、その行為によって影響を受ける主体のことであり、「道にゴミを捨てる」場合、その道を使う人などである。
【0095】
ここで、関係する第三者の抽出方法について説明する。単語は、前記概念ツリーだけでなく、Has-aツリーでも管理される。Has-aツリーとは、全体と部分の関係で言葉を管理するデータ構造である。
【0096】
図21は、町140のHas-aツリー141のデータ構造である。道142が含まれるHas-aツリーを検索すると、町140が見つかったとする。町140は、住人143、道142、学校144、病院145などを持っているとする。町140に含まれる主体を探しだすと住人143が得られるので、この住人143を道に関係する第三者として設定する。つぎに、「ごみを捨てる」という行動を実行する。すると、出来事の登場物を町140として、町140の後状態で、後属性「環境」の後属性値が「汚損」となる。つぎに、この場合の町140の住人143の前後状態を設定する。町140の環境が「汚損」となってマイナス状態なので、町140に含まれる住人143の感情もマイナス感情となることが算出される。以上のことから、「道にゴミを捨てる」という行為は、その道に関係する町140の住人143がマイナス感情となるので、「悪い」行為だといえる。
【0097】
同様に、道に落ちてるゴミを拾う行為は、町140が美しくなり、町140の住人143がプラス感情となる行為なので「善い」行いと判断できる。このようにして、ある行為の善悪の判断は、その行為を行ったとき、その行為に関する第三者のプラスマイナス感情を計算することで判断できるようになる。このようにして、心理プログラムは、人間社会の善悪の判断ができることで、心理プログラムを持つロボット100は、人間社会で人間と共存することができるといえる。
【0098】
次は、心理的状況である「努力」という言葉の意味の理解について説明する。たとえば、太郎君がかけっこの練習をしていたとする。
図22は、「走る」という行動から導かれる二つの前後状態である。前後状態Aは、走ることで、身体状態が疲労することを示している。前後状態Bでは、走ることで足の速さが速くなることを示している。前後状態Aからは疲労というマイナス感情が発生し、前後状態Bからは、足が速くなるというプラス感情が発生している。「努力」という心理状態は、プラス感情になるために、マイナス感情が発生しても、あえて、その行動を選択する心理状態と定義することができる。
【0099】
さらに、この行動を繰り返すことで、より足が速くなると算出できる。行動を繰り返すとは、時間をかけることである。つまり、ここで「時間」という概念が生まれてくる。また、50mを7秒以下で走るという条件を設定したとする。この条件を満たすように、走るという行動を繰り返す行動パターンを設定したとすれば、これは、「目標に向けて努力する」という心理状態を定義したことになり、この行動パターンで設定した条件が「目標」という言葉の意味となる。
【0100】
このようにして、「努力」や「目標」といった心理状態を理解することができる。また、そのような行動をしている人に対して、その行動を後押しする言動を「応援」と定義することができる。「応援」の一例として、「がんばれ」という言動があげられる。たとえば目標に向けて努力している人を認識すると、「がんばれ」と声をかけることができるのである。
【0101】
つぎは、「後悔」という言葉を定義してみる。たとえば、大学合格といった目標を設定し、それに向けて勉強という努力をしたとする。しかし、その結果大学に合格しなかったとする。この場合、勉強という行動が足りなかったと推測できる。つまり、大学受験までの期間の中で、勉強という行動の数(量)が足りなかったと算出できる。仮に、勉強の量を増やしたとすれば、合格したという仮定の出来事を生成して、実際に起こった出来事と比較する。その二つを比較すると、違いが、勉強という行動の数と算出できる。つまり、過去の行動を変更することで、現実に起こったマイナス感情がプラス感情となるわけである。このパターンを「後悔」とすれば、「後悔」の意味が理解できたといえる。つまり、もっと勉強していれば、大学に合格したのになぁといった「後悔」という感情を理解できるわけである。
【0102】
このようにして、本発明の意味理解プログラムは、様々な心理的状況を理解することができる。
【0103】
本発明の各実施形態では、意味理解は、チャットボットシステム1またはロボット100と一体となった制御装置で実行しているが、本発明はこれに限定されるものではなく、たとえばインターネットで接続されたサーバーまたはクラウドで意味理解を行って、その結果をチャットボットシステム1またはロボット100に返すように構成してもよい。
【0104】
また、本発明の各実施形態では会話するシステムとして記載したが、会話や対話に限定されるものではなく、本発明の意味理解プログラムを文書の自動要約や機械翻訳に適用してもよい。
【0105】
今回開示された実施の形態はすべての点で例示であって、どのような面からも制限的なものではないと理解されるべきである。本発明の範囲は上記した説明ではなく、請求の範囲によって規定され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0106】
1 チャットボットシステム、9 意味理解プログラム、10 場面設定部、11 状況変化設定部、12 プラスマイナス感情設定部 13 意味解析部、100 ロボット