(57)【要約】【課題】従来の人工知能関連技術では、文章や会話の意図や意味を十分に理解することができなかった。また、人工知能を学習で実装していく方法には問題や危険が多い。【解決手段】文章や会話の意味そのものを記述する「意味言語」を定義し、「文章を理解する」ことを実際の手続きとして定義、実装した。また、意味言語を使って、文章を理解するために必要な辞書やプログラムの仕様を定義、実装した。この一連のシステムを使用することで、自然言語の文章や会話の理解、意味の解釈が可能である。また、この実装方法であれば、人工知能の予想外の挙動や危険な判断をかなり排除できる。また、中核となる「意味言語」の技術は自然言語や国籍から切り離されているため、どの国でも同じ挙動をとる安定した人工知能を実装できる。【選択図】図１
2019121367.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに入力された形式言語の文章を解析してその結果を出力させる形式言語理解処理プログラムであって、
データ入力部に入力された形式言語の文章と形式言語で表現された知識辞書の内容を比較しデータ入力部に入力された形式言語の文章を理解する形式言語理解手段と、
データ入力部に入力された形式言語の文章を理解できたか結果を通知する手段
として機能させることを特徴とする形式言語理解処理プログラム。
【請求項２】
前記形式言語理解手段は、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、
該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段と、
を備えることを特徴とする請求項１に記載の形式言語理解処理プログラム。
【請求項３】
コンピュータに入力された自然言語の文章を解析して形式言語の文章に変換する自然言語変換処理プログラムであって、
データ入力部に入力された自然言語の文章を自然言語ＩＤ辞書を使用して形式言語の文章に変換する形式言語への変換手段と、
前記形式言語に変換された文章を処理結果として通知する手段
として機能させることを特徴とする自然言語変換処理プログラム。
【請求項４】
前記形式言語への変換手段は、
変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解手段と、
前記形式言語理解手段は、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、
該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段と、
を備えることを特徴とする請求項４に記載の自然言語変換処理プログラム。
【請求項５】
前記形式言語への変換手段は、
自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完手段と、
自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定手段と、
を備えることを特徴とする請求項３または４に記載の自然言語変換処理プログラム。
【請求項６】
コンピュータに入力された自然言語の文章を解析して理解する自然言語理解処理プログラムであって、
データ入力部に入力された自然言語の文章を自然言語ＩＤ辞書を使用して形式言語の文章に変換する形式言語への変換手段と、
前記形式言語に変換された文章を理解する形式言語理解手段と、
データ入力部に入力された自然言語の文章を理解できたか結果を通知する手段
として機能させることを特徴とする自然言語理解処理プログラム。
【請求項７】
前記形式言語理解手段は、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、
該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段と、
を備えることを特徴とする請求項６に記載の自然言語理解処理プログラム。
【請求項８】
前記形式言語への変換手段は、
自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完手段と、
自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定手段と、
を備えることを特徴とする請求項６または７に記載の自然言語理解処理プログラム。
【請求項９】
コンピュータに入力された自然言語の文章を解析して翻訳する自然言語翻訳処理プログラムであって、
データ入力部に入力された翻訳元の自然言語の文章を翻訳元の自然言語ＩＤ辞書を使用して形式言語の文章に変換する形式言語への変換手段と、
前記形式言語に変換された文章を翻訳先の自然言語ＩＤ辞書を使用して翻訳先の自然言語の文章へ変換する自然言語変換手段と、
前記翻訳先の自然言語の文章に変換された文章を処理結果として通知する手段
として機能させることを特徴とする自然言語翻訳処理プログラム。
【請求項１０】
前記形式言語への変換手段は、
変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解手段と、
前記形式言語理解手段は、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、
該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段と、
を備えることを特徴とする請求項９記載の自然言語翻訳処理プログラム。
【請求項１１】
前記形式言語への変換手段は、
自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完手段と、
自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定手段と、
を備えることを特徴とする請求項９または１０に記載の自然言語翻訳処理プログラム。
【請求項１２】
前記データ入力部に入力される、または処理の過程で変換される、または知識辞書の文章に用いられる形式言語は、
概念識別子と関係属性記述子という要素を備え、概念識別子は記述対象を抽象化した概念と一意に対応し、関係属性記述子は概念識別子や関係属性記述子の関係または属性を記述し、概念と概念の関係や概念の属性を記述する能力を持つ形式言語である意味言語
を使用することを特徴とする請求項１〜１１のいずれか一項に記載の言語処理プログラム。
【請求項１３】
コンピュータに入力された形式言語の文章を解析してその結果を出力する形式言語理解処理装置であって、
形式言語の文章データを入力するデータ入力部と、
文章を理解するために必要な知識を格納した知識辞書と、
形式言語の文章や途中処理内容をを保持する記憶部と、
入力された形式言語の文章と知識辞書の内容を比較することで入力された形式言語の文章を理解する形式言語理解処理部と、
入力された形式言語の文章を理解できたかどうかの結果を出力する通知部と、
を備え、
データ入力部に入力された形式言語の文章を理解できたか結果を出力する
ことを特徴とする形式言語理解処理装置。
【請求項１４】
前記形式言語理解処理部は、さらに、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、
該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部と、
を備える、
請求項１３に記載の形式言語理解処理装置。
【請求項１５】
コンピュータに入力された自然言語の文章を解析して形式言語の文章に変換する自然言語変換処理装置であって、
自然言語の文章データを入力するデータ入力部と、
形式言語の要素と自然言語の表記を紐付けする単語ＩＤを記録した自然言語ＩＤ辞書と、
形式言語の文章や途中処理内容を保持する記憶部と、
入力された自然言語の文章を形式言語の文章へ変換する形式言語への変換処理部と、
変換された形式言語の文章を出力する通知部と、
を備え、
前記形式言語への変換処理部は自然言語の文章を解析し自然言語の構成要素を自然言語ＩＤ辞書のＩＤに変換し形式言語の文法構造へ変換する、
ことを特徴とする自然言語変換処理装置。  
【請求項１６】
前記形式言語への変換処理部は、さらに、
文章を理解するために必要な知識を格納した知識辞書と、
変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解処理部と、
を備え、
前記形式言語の理解処理部は、さらに、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、
該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部と、
を備える、
請求項１５に記載の自然言語変換処理装置。
【請求項１７】
前記形式言語への変換処理部は、さらに、
自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完処理部と、
自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定処理部と、
を備える、
請求項１５または１６に記載の自然言語変換処理装置。
【請求項１８】
コンピュータに入力された自然言語の文章を解析して理解する自然言語理解処理装置であって、
自然言語の文章データを入力するデータ入力部と、
形式言語の要素と自然言語の表記を紐付けする単語ＩＤを記録した自然言語ＩＤ辞書と、
文章を理解するために必要な知識を格納した知識辞書と、
変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解処理部と、
入力された自然言語の文章を形式言語の文章へ変換する形式言語への変換処理部と、
形式言語の文章や途中処理内容を保持する記憶部と、
入力された自然言語の文章を理解できたか結果を出力する通知部と、
を備え、
前記形式言語への変換処理部は自然言語の文章を解析し自然言語の構成要素を自然言語ＩＤ辞書のＩＤに変換し形式言語の文法構造へ変換する、
ことを特徴とする自然言語理解処理装置。
【請求項１９】
前記形式言語理解処理部は、さらに、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、
該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部と、
を備える、
請求項１８に記載の自然言語理解処理装置。
【請求項２０】
前記形式言語への変換処理部は、さらに、
自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完処理部と、
自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定処理部と、
を備える、
請求項１８または１９に記載の自然言語理解処理装置。
【請求項２１】
コンピュータに入力された自然言語の文章を解析して翻訳する自然言語翻訳処理装置であって、
自然言語の文章データを入力するデータ入力部と、
形式言語の要素と翻訳元の自然言語の表記を紐付けする単語ＩＤを記録した翻訳元言語用の自然言語ＩＤ辞書と、
形式言語の要素と翻訳先の自然言語の表記を紐付けする単語ＩＤを記録した翻訳先言語用の自然言語ＩＤ辞書と、
入力された翻訳元の自然言語の文章を形式言語の文章へ変換する形式言語への変換処理部と、
変換された形式言語の文章を翻訳先の自然言語の文章へ変換する自然言語への変換処理部と、
形式言語の文章や途中処理内容を保持する記憶部と、
変換された自然言語の文章を出力する通知部と、
を備え、
前記形式言語への変換処理部は自然言語の文章を解析し自然言語の構成要素を自然言語ＩＤ辞書の単語ＩＤに変換し形式言語の文法構造へ変換する、
前記自然言語への変換処理部は自然言語ＩＤ辞書から自然言語の表記を得て形式言語から翻訳先の文法構造へ変換する、
ことを特徴とする自然言語翻訳処理装置。
【請求項２２】
前記形式言語への変換処理部は、さらに、
文章を理解するために必要な知識を格納した知識辞書と、
変換された形式言語の文章と知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解処理部と
を備え、
前記形式言語理解処理部は、さらに、
該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、
該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部と、
を備える、
請求項２１に記載の自然言語翻訳処理装置。
【請求項２３】
前記形式言語への変換処理部は、さらに、
自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完処理部と、
自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定処理部と、
を備える、
請求項２１または２２に記載の自然言語翻訳処理装置。
【請求項２４】
前記データ入力部に入力される、または処理の過程で変換される、または知識辞書の文章に用いられる形式言語は、
概念識別子と関係属性記述子という要素を備え、概念識別子は記述対象を抽象化した概念と一意に対応し、関係属性記述子は概念識別子や関係属性記述子の関係または属性を記述し、概念と概念の関係や概念の属性を記述する能力を持つ形式言語である意味言語
を使用することを特徴とする請求項１３〜２３のいずれか一項に記載の言語処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、意味を記述する言語とその言語による情報処理によって、人間の使う言語を、解釈、理解するシステムに関するものである。
【背景技術】
【０００２】
人工知能分野で最も難しい課題の一つが、「文章を理解する」ことである。文章や会話を理解することは、ＡＩ研究の重大な目標の一つである。ＡＩ学習システムを使って、「擬似的に文書を処理」する、「統計的手法で質問の意図を推定し、回答をする」方法は広く使われているが、これはあくまで「人間の知的活動をごく一部、限定的に模倣している」に過ぎない。これら学習的方法は、いまだに「文章を理解」するには至らない。また、現在主流の学習的ＡＩは、２つの重大な欠点を持つ。
【０００３】
一つ目の問題は、知識レベル・知識の質の限定・メンテナンスが極めて難しいという点である。２０１６年３月２３日、マイクロソフトが実施した、インターネット上で大勢とコミュニケーションを図ることで学習する、ＡＩチャットロボット「Ｔａｙ」は言語知識の学習の難しさを実験的に明らかにした。一部のユーザーから「差別的」知識を与えられ、ＡＩは差別的な知識を学習し、ナチズムなどの思想に染まった。外部からの自然言語によるあいまいな知識は、統制が難しい。最悪の場合、１億のコミュニケーションの中に存在する１つの望ましくないやり取りが、高級ワインに入れられたドブ水になりかねない。その上、望ましくない知識は少ないがゆえに、一般的コミュニケーション（デバッグ）ではなかなか発覚しない。特定の人種に対してのみ不条理な対応をするＡＩなど、誰も望まないはずである。
【０００４】
二つ目の問題は、知識の中に曖昧さが混入しやすく、ＡＩが人間に近づきすぎてしまうという点である。一つ目の問題とも関連するが、現在の人工知能研究は、ＡＩを人間に近づけようとしすぎている。ＡＩの運用を考えれば、過度に人間的、つまり挙動が複雑で予測不可能なＡＩなど危険すぎて使えない。ＡＩは運用上、ほどほどに柔軟で、常に常識的な、ルールに則った挙動をすべきである。そのためには、ＡＩを構築する基本データは、厳密かつ明瞭に扱われるべきである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２２５７２３号公報
【特許文献２】特開２０１７−１３８９８５号公報
【特許文献３】特開２００２−１２３５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上に述べたＡＩ、情報技術では、ある程度意味のある文章を生み出したり処理することはできるが、文章を厳密に理解することはできず、文章評価や翻訳技術に十分に寄与するとはいえない。また、処理に使う知識の質を保証することが難しく、またメンテナンスも難しい。かかる課題は、ＡＩ技術に限らず、自然言語を扱う技術に共通する問題であった。また、以上の技術は、特定の自然言語に関わる処理が多く、自然言語ごとに開発するコストが大きいものであった。かかる課題も、ＡＩ技術に限らず、自然言語を扱う技術に共通する問題であった。
【課題を解決するための手段】
【０００７】
本発明は上記問題を解決するため、文章や知識の処理に使用する形式言語として、より好適と思われる「意味言語」を新たに定義した。ここでいう文章には、もちろん会話などの人間が使用する一般的な言語表現を含む。以下の実施形態は、形式言語として意味言語を使用することが好適と考える。
【０００８】
（１）請求項１に記載の発明は、コンピュータに入力された形式言語の文章を解析して理解し、その結果を出力させる。データ入力部に入力された形式言語の文章と形式言語で表現された知識辞書の内容を比較しデータ入力部に入力された形式言語の文章を理解する形式言語理解手段と、データ入力部に入力された形式言語の文章を理解できたか結果を通知する手段として機能させることを特徴とする、形式言語理解処理プログラムである。
【０００９】
（２）請求項２に記載の発明は、形式言語理解手段が、形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段として機能させることを特徴とする、請求項１に記載の形式言語理解処理プログラムである。
【００１０】
（３）請求項３に記載の発明は、コンピュータに入力された自然言語の文章を解析して形式言語の文章に変換する。データ入力部に入力された自然言語の文章を自然言語ＩＤ辞書を使用して形式言語の文章に変換する形式言語への変換手段と、前記形式言語に変換された文章を処理結果として通知する手段として機能させることを特徴とする、自然言語変換処理プログラムである。
【００１１】
（４）請求項４に記載の発明は、形式言語への変換手段が、変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解手段と、形式言語理解手段が、該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段として機能させることを特徴とする、請求項３に記載の自然言語変換処理プログラムである。
【００１２】
（５）請求項５に記載の発明は、形式言語への変換手段が、自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完手段と、自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定手段として機能させることを特徴とする、請求項３または４に記載の自然言語変換処理プログラムである。
【００１３】
（６）請求項６に記載の発明は、コンピュータに入力された自然言語の文章を解析して理解し、その結果を出力する。データ入力部に入力された自然言語の文章を自然言語ＩＤ辞書を使用して形式言語の文章に変換する形式言語への変換手段と、前記形式言語に変換された文章を理解する形式言語理解手段と、データ入力部に入力された自然言語の文章を理解できたか結果を通知する手段として機能させることを特徴とする、自然言語理解処理プログラムである。
【００１４】
（７）請求項７に記載の発明は、前記形式言語理解手段が、形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、該形式言語の文章と知識辞書の形式言語の文章を、知識辞書の内容を利用して加工する形式言語加工手段として機能させることを特徴とする、請求項６に記載の自然言語理解処理プログラムである。
【００１５】
（８）請求項８に記載の発明は、前記形式言語への変換手段が、自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完手段と、自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定手段として機能させることを特徴とする、請求項６または７に記載の自然言語理解処理プログラムである。
【００１６】
（９）請求項９に記載の発明は、コンピュータに入力された自然言語の文章を解析して翻訳する。データ入力部に入力された翻訳元の自然言語の文章を翻訳元の自然言語ＩＤ辞書を使用して形式言語の文章に変換する形式言語への変換手段と、前記形式言語に変換された文章を翻訳先の自然言語ＩＤ辞書を使用して翻訳先の自然言語の文章へ変換する自然言語変換手段と、前記翻訳先の自然言語に変換された文章を処理結果として通知する手段として機能させることを特徴とする、自然言語翻訳処理プログラムである。
【００１７】
（１０）請求項１０に記載の発明は、前記形式言語への変換手段が、変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解手段と、前記形式言語理解手段が、該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化手段と、該形式言語の文章と知識辞書の形式言語の文章を知識辞書の内容を利用して加工する形式言語加工手段として機能させることを特徴とする、請求項９記載の自然言語翻訳処理プログラムである。
【００１８】
（１１）請求項１１に記載の発明は、前記形式言語への変換手段が、自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完手段と、自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定手段として機能させることを特徴とする請求項９または１０に記載の自然言語翻訳処理プログラムである。
【００１９】
（１２）請求項１２に記載の発明は、請求項１〜１１に記載されたプログラムに使用される形式言語として、特に意味言語を使用するプログラムである。前記データ入力部に入力される、または処理の過程で変換される、または知識辞書の文章に用いられる形式言語が、概念識別子と関係属性記述子という要素を備え、概念識別子は記述対象を抽象化した概念と一意に対応し、関係属性記述子は概念識別子や関係属性記述子の関係または属性を記述し、概念と概念の関係や概念の属性を記述する能力を持つ形式言語である意味言語を使用することを特徴とする請求項１〜１１のいずれか一項に記載の言語処理プログラムである。
【００２０】
（１３）請求項１３に記載の発明は、コンピュータに入力された形式言語の文章を解析して理解し、その結果を出力する。形式言語の文章データを入力するデータ入力部と、文章を理解するために必要な知識を格納した知識辞書と、形式言語の文章や途中処理内容などをを保持する記憶部と、入力された形式言語の文章と知識辞書の内容を比較することで入力された形式言語の文章を理解する形式言語理解処理部と、入力された形式言語の文章を理解できたかどうかの結果を出力する通知部を備え、データ入力部に入力された形式言語の文章を理解できたか結果を出力することを特徴とする形式言語理解処理装置である。
【００２１】
（１４）請求項１４に記載の発明は、前記形式言語理解処理部が、さらに該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部とを備える、請求項１３に記載の形式言語理解処理装置である。
【００２２】
（１５）請求項１５に記載の発明は、コンピュータに入力された自然言語の文章を解析して形式言語の文章に変換する自然言語変換処理装置である。自然言語の文章データを入力するデータ入力部と、形式言語の要素と自然言語の表記を紐付けする単語ＩＤを記録した自然言語ＩＤ辞書と、形式言語の文章や途中処理内容などを保持する記憶部と、入力された自然言語の文章を形式言語の文章へ変換する形式言語への変換処理部と、変換された形式言語の文章を出力する通知部とを備え、前記形式言語への変換処理部は自然言語の文章を解析し自然言語の構成要素を自然言語ＩＤ辞書のＩＤに変換し形式言語の文法構造へ変換することを特徴とする自然言語変換処理装置である。
【００２３】
（１６）請求項１６に記載の発明は、前記形式言語への変換処理部が、さらに文章を理解するために必要な知識を格納した知識辞書と、変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解処理部とを備え、前記形式言語の理解処理部が、さらに該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部とを備えることを特徴とする、請求項１５に記載の自然言語変換処理装置である。
【００２４】
（１７）請求項１７に記載の発明は、前記形式言語への変換処理部が、さらに自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完処理部と、自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定処理部とを備えることを特徴とする、請求項１５または１６に記載の自然言語変換処理装置である。
【００２５】
（１８）請求項１８に記載の発明は、コンピュータに入力された自然言語の文章を解析して理解する自然言語理解処理装置である。自然言語の文章データを入力するデータ入力部と、形式言語の要素と自然言語の表記を紐付けする単語ＩＤを記録した自然言語ＩＤ辞書と、文章を理解するために必要な知識を格納した知識辞書と、変換された形式言語の文章と形式言語で表現された知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解処理部と、入力された自然言語の文章を形式言語の文章へ変換する形式言語への変換処理部と、形式言語の文章や途中処理内容などを保持する記憶部と、入力された自然言語の文章を理解できたか結果を出力する通知部とを備え、前記形式言語への変換処理部は自然言語の文章を解析し自然言語の構成要素を自然言語ＩＤ辞書のＩＤに変換し形式言語の文法構造へ変換することを特徴とする自然言語理解処理装置である。
【００２６】
（１９）請求項１９に記載の発明は、前記形式言語理解処理部が、さらに該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部とを備えることを特徴とする、請求項１８に記載の自然言語理解処理装置である。
【００２７】
（２０）請求項２０に記載の発明は、前記形式言語への変換処理部が、さらに自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完処理部と、自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定処理部とを備えることを特徴とする、請求項１８または１９に記載の自然言語理解処理装置である。
【００２８】
（２１）請求項２１に記載の発明は、コンピュータに入力された自然言語の文章を解析して翻訳する自然言語翻訳処理装置である。自然言語の文章データを入力するデータ入力部と、形式言語の要素と翻訳元の自然言語の表記を紐付けする単語ＩＤを記録した翻訳元言語用の自然言語ＩＤ辞書と、形式言語の要素と翻訳先の自然言語の表記を紐付けする単語ＩＤを記録した翻訳先言語用の自然言語ＩＤ辞書と、入力された翻訳元の自然言語の文章を形式言語の文章へ変換する形式言語への変換処理部と、変換された形式言語の文章を翻訳先の自然言語の文章へ変換する自然言語への変換処理部と、形式言語の文章や途中処理内容などを保持する記憶部と、変換された自然言語の文章を出力する通知部とを備え、前記形式言語への変換処理部は自然言語の文章を解析し自然言語の構成要素を自然言語ＩＤ辞書の単語ＩＤに変換し形式言語の文法構造へ変換する、前記自然言語への変換処理部は自然言語ＩＤ辞書から自然言語の表記を得て形式言語から翻訳先の文法構造へ変換することを特徴とする、自然言語翻訳処理装置である。
【００２９】
（２２）請求項２２に記載の発明は、前記形式言語への変換処理部が、さらに文章を理解するために必要な知識を格納した知識辞書と、変換された形式言語の文章と知識辞書の内容を比較することで該形式言語の文章を理解する形式言語理解処理部とを備え、前記形式言語理解処理部が、さらに該形式言語の文章と知識辞書の形式言語の文章を正規化する形式言語正規化処理部と、該形式言語の文章と知識辞書の形式言語の文章の内容を知識辞書の内容を利用して加工する形式言語加工処理部とを備えることを特徴とする、請求項２１に記載の自然言語翻訳処理装置である。
【００３０】
（２３）請求項２３に記載の発明は、前記形式言語への変換処理部が、さらに自然言語の文章において省略されている要素を推測して補完する形式言語不足語補完処理部と、自然言語の文章において解釈が複数存在する多義語の意味を推定する形式言語多義語推定処理部とを備えることを特徴とする、請求項２１または２２に記載の自然言語翻訳処理装置である。
【００３１】
（２４）請求項２４に記載の発明は、請求項１３〜２３に記載された装置内で処理に使用される形式言語として、特に意味言語を使用する言語処理装置である。前記データ入力部に入力される、または処理の過程で変換される、または知識辞書の文章に用いられる形式言語が、概念識別子と関係属性記述子という要素を備え、概念識別子は記述対象を抽象化した概念と一意に対応し、関係属性記述子は概念識別子や関係属性記述子の関係または属性を記述し、概念と概念の関係や概念の属性を記述する能力を持つ形式言語である意味言語を使用することを特徴とする請求項１３〜２３のいずれか一項に記載の言語処理装置である。
【発明の効果】
【００３２】
本発明では、文章と知識の比較と文章と知識の加工に焦点をおき、文章を理解するために必要な手続きを定義した。これらの処理は人工知能分野で研究されてきた「形式言語」を用いることで可能となるが、本発明で定義した形式言語の一種「意味言語」を用いれば、開発・実装が容易となると考えられる。意味言語を用いて「人間の頭の中の知識」と「自然言語の会話や文章」を全く同じ形式（意味言語）で表現し、「会話や文章の比較・理解」をコンピュータプログラムの手続きとし実行できる。形式言語はもともと知識の記述や意味の記述を一つの目的として発明されているが、意味言語は形式言語として特に徹底した「概念の抽象化」を行い、品詞の差異を概念と分離し、必要な概念を新たに定義した。実質的に、意味言語が必要とする品詞は「概念識別子」と「関係属性記述子」の２種類である。意味言語をこのように定義することで、意味言語は自然言語ごとの違い（特に言語ごとの品詞体系や活用の差異）を吸収できる。自然言語における品詞の種類と扱いは異なり、異なる自然言語同士の相互変換は難しいが、品詞の種類や文法規則を最小限に抑えた言語を仲介すれば、自然言語の複雑さに対応するコストを抑えられる。そして、日本語や英語、古代エジプト語などの自然言語に依存する処理を最小限に抑え、システムの大部分を共有できる。翻訳等の言語処理において、最も開発コストが大きい「特定の語の意味を扱う処理」や、「意味を理解する処理」や「知識を使う処理」は、明確に定義され、かつ意味言語を内部形式として使うことで特定の自然言語に依存する部分を最小限にとどめ、大部分を共通化することができる。これにより、開発コストを小さくできる。
【００３３】
また、本発明の手法で知識を記述、処理系を開発していく利点はもうひとつある。それは、文章を理解する処理ができなかった場合の原因の特定がしやすいという点である。実際の開発手法として一例を挙げれば、まず正しいと考えられる事実のみを記述した書籍等のサンプルデータを読み込ませ、理解できた文章と理解できなかった文章を得る。理解できた文章のうち、新しい知識はチェックの後、知識辞書に取り込むことができる。理解できなかった文章については、具体的にどの語についての知識不足が原因かを調べ、関連する知識を知識辞書に追加する作業を、理解できるまで続ける。この作業は、最初は大変であるが、知識を蓄えるに従って作業量は知識量に反比例して減っていく。このように、明らかに有限かつ作業可能で先行きの見通しが立つ程度のステップでもって、知識辞書と処理系を構築していくことができるのも利点である。
【００３４】
上述した本発明によれば、以下に述べるような効果を得ることができる。
（１）請求項１記載の発明によれば、形式言語で表現された文章を受け取り、知識辞書の内容と比較することで理解できるかどうかを判定し、その結果を出力できる。文章を理解するということを、既にある知識との無矛盾の確認という形で実現する。理解する処理の最も基本的なアルゴリズムであり、入力される形式言語の文章が極めて単純で、知識辞書の内容が十分に網羅的であれば文章を理解できる可能性が高い。一方で、この構成だけでは、知識辞書の内容が入力された文章と語順まできっちりと同じでないと判定できず、また派生的な処理（人工知能分野でいうところの推論）はできない。
【００３５】
（２）請求項２記載の発明によれば、請求項１の動作に２つの処理が追加されて文章理解の精度が高まる。１つ目の処理は正規化処理である。文章を正規化して意味を損なわないよう語順を整える（木構造であれば枝を入れかえ、組み替える）処理を行うことで、語順による文章の表記ゆれを解消する。２つめの処理は知識辞書の内容を使って新たな知識を生み出す（人工知能分野でいうところの推論）処理である。この処理により、全ての事例について知らなくても、推論により知識を生み出し、理解に役立てることができる。形式言語理解プログラムを請求項１、２の機能を全て備えて実装することで、以下の応用も可能である。第一に、ＡＩに最低限のルール、例えば「ロボット憲法」のようなものを与え、知識辞書から推論することでＡＩに判断させる処理が行える。従来のビッグデータを用いた学習型のアルゴリズムでは、判断の根拠を得ることが難しく、メンテナンスも難しかった。また、差別的であったり不適切な知識を入力された場合に対する対処も難しかった。本発明では、判断の根拠は全て知識辞書に依存させるよう設計でき、従来技術よりはメンテナンスしやすい。また、自然言語に依存しない部分だけでＡＩの人格に当たるものを構築でき、必要なら追加の知識辞書を国や文化に応じて導入しても良い。そして、学習型アルゴリズムよりも決定的な型にはまった判断ができる。ＡＩを過度に人間的に柔軟に構築する事にあまりメリットはなく、暴走の懸念が大きい。本発明でももちろん実装が悪ければ暴走するが、少なくとも学習型アルゴリズムよりは安全に設計できる。
【００３６】
（３）請求項３記載の発明によれば、自然言語で表現された文章を受け取り、解析して形式言語の文章に変換し、その結果を出力できる。このプログラムは、形式言語の知識辞書を作成したり自然言語の文章を評価するために使うことができる。より重要なのは出力した形式言語の文章を他の発明の入力とすることで自然言語理解や翻訳に転用できる点であり、これらの処理の前処理システムとして使用できる。
【００３７】
（４）請求項４記載の発明によれば、請求項３の動作に３つの処理が追加されて形式言語への変換精度が高まる。１つ目の処理は、変換された形式言語を理解する処理である。２つ目の処理は、変換された形式言語の文章と知識辞書の形式言語の内容である形式言語の文章を正規化する処理である。３つ目の処理は、変換された形式言語の文章と知識辞書の内容である形式言語の文章を、知識辞書の知識を使って加工する処理である。これらの処理を加えることで、自然言語側に曖昧な部分があって正確な変換ができていない疑いがある場合をチェックでき、正確な変換の助けとなる。
【００３８】
（５）請求項５記載の発明によれば、請求項３または４の動作にさらに２つの処理が追加されて形式言語への変換精度が高まる。１つ目の処理は、形式言語への変換の際に自然言語において省略されていると考えられる要素を推測して補完する処理である。これは人工知能分野では省略補完などと呼ばれる処理に類する処理である。また、２つ目の処理は、形式言語への変換の際に自然言語において複数の意味がある同音異義語や多義語を推定する処理である。この２つを組み合わせることで、自然言語表現における照応も推測できる。
【００３９】
（６）請求項６記載の発明によれば、自然言語で表現された文章を受け取り、知識辞書の内容と比較することで理解できるかどうかを判定し、その結果を出力できる。この処理は、本質的には請求項３の形式言語の文章の出力を、請求項１の形式言語の文章の入力とする形で実現している。いったん理解できると判定された形式言語の文章は記憶され必要であればさらに処理を待つことができる。例えば、平叙文であればその内容、疑問文であれば問いの内容、命令（希望）文であれば要請の内容、といった必要な部分を得ることができる。
【００４０】
（７）請求項７記載の発明によれば、請求項６の動作に２つの処理を追加されて、理解する処理の精度が高まる。その効果は請求項４と同じである（請求項６は基本構成に理解する処理を含むため、請求項７は請求項４と異なり形式言語理解手段は記載していない）。
【００４１】
（８）請求項８記載の発明によれば、請求項６または７の動作に２つの処理を追加されて、形式言語への変換精度が高まる。その効果は請求項５と同じである。
【００４２】
（９）請求項９記載の発明によれば、自然言語で表現された文章を受け取り、別の種類の自然言語の文章へと翻訳し、その結果を出力できる。
【００４３】
（１０）請求項１０記載の発明によれば、請求項９の動作に３つの処理が追加されて、翻訳精度が高まる。その効果は請求項４と同じである。
【００４４】
（１１）請求項１１記載の発明によれば、請求項９または１０の動作に２つの処理が追加されて（形式言語への変換精度が高まることで）翻訳精度が高まる。その効果は請求項５と同じである。自然言語翻訳プログラムを請求項９、１０、１１の機能を全て備えて実装すれば、従来の翻訳システムと比較して以下の点で優れる。第一に、統計的な翻訳アルゴリズムに比較して翻訳の根拠が得やすく、誤訳の原因を特定しやすいためメンテナンスが容易である。第二に、翻訳品質は変換処理と知識処理と知識辞書の品質にのみ依存し、それぞれの機能と構造の独立性が高いため、メンテナンスしやすく開発も並行して行える。第三に、自然言語への対応は完全に言語ごとに独立しているため、例えば日本語担当者は日本語と形式言語（意味言語）だけ扱っていれば良く、開発やメンテナンスもそれぞれの自然言語ごとに独立して実行できる。つまり、１００個の自然言語を相互翻訳するためには、２００個のプログラムで事足りる。もしも形式言語を介さないなら、１００×９９の９９００個のプログラムを、それぞれ２種類の言語に精通したプログラマが開発する必要がある。第四に、知識処理や知識辞書は自然言語に非依存に構築でき、全ての言語で共有できるためメンテナンスしやすく、省コストでアップデートでき、かつアップデートすれば全ての言語ですぐに恩恵を受けられる。第五に、理解する処理を使うことで、より人間の考えや意図に即した翻訳を行える。
【００４５】
（１２）請求項１２記載の発明によれば、請求項１〜１１までの処理に使用する形式言語のすべてまたは一部を本発明で定義した意味言語で処理でき、実装が単純化する。
【００４６】
（１３）請求項１３記載の発明によれば、形式言語で表現された文章を受け取り、知識辞書の内容と比較することで理解できるかどうかを判定し、その結果を出力できる、装置を構築できる。処理の内容は、請求項１に記載のプログラムと同様である。
【００４７】
（１４）請求項１４記載の発明によれば、請求項１３の動作に２つの処理が追加されて文章理解の精度が高まる。処理の内容は、請求項２に記載のプログラムと同様である。
【００４８】
（１５）請求項１５記載の発明によれば、自然言語で表現された文章を受け取り、解析して形式言語の文章に変換し、その結果を出力できる、装置を構築できる。処理の内容は、請求項３に記載のプログラムと同様である。
【００４９】
（１６）請求項１６記載の発明によれば、請求項１５の動作に３つの処理が追加されて形式言語への変換精度が高まる。処理の内容は、請求項４に記載のプログラムと同様である。
【００５０】
（１７）請求項１７記載の発明によれば、請求項１５または１６の動作にさらに２つの処理が追加されて形式言語への変換精度が高まる。処理の内容は、請求項５に記載のプログラムと同様である。
【００５１】
（１８）請求項１８記載の発明によれば、自然言語で表現された文章を受け取り、知識辞書の内容と比較することで理解できるかどうかを判定し、その結果を出力できる、装置を構築できる。処理の内容は、請求項６に記載のプログラムと同様である。
【００５２】
（１９）請求項１９記載の発明によれば、請求項１８の動作に２つの処理を追加されて、理解する処理の精度が高まる。処理の内容は、請求項７に記載のプログラムと同様である。
【００５３】
（２０）請求項２０記載の発明によれば、請求項６または７の動作に２つの処理を追加されて、形式言語への変換精度が高まる。処理の内容は、請求項８に記載のプログラムと同様である。
【００５４】
（２１）請求項２１記載の発明によれば、自然言語で表現された文章を受け取り、別の種類の自然言語の文章へと翻訳し、その結果を出力できる、装置を構築できる。処理の内容は、請求項９に記載のプログラムと同様である。
【００５５】
（２２）請求項２２記載の発明によれば、請求項９の動作に３つの処理が追加されて、翻訳精度が高まる。処理の内容は、請求項１０に記載のプログラムと同様である。
【００５６】
（２３）請求項２３記載の発明によれば、請求項９または１０の動作に２つの処理が追加されて翻訳精度が高まる。処理の内容は、請求項１１に記載のプログラムと同様である。
【００５７】
（２４）請求項２４記載の発明によれば、請求項１〜１１までの処理に使用する形式言語のすべてまたは一部を本発明で定義した意味言語で処理でき、実装が単純化した、装置を構築できる。
【図面の簡単な説明】
【００５８】
【図１】意味言語情報処理システムの全機能ブロック図
【図２】日本語用にカスタマイズした場合の「意味言語への変換処理部」「自然言語への変換処理部」「自然言語ＩＤ辞書」の例を示す図
【図３】意味言語操作処理部のより具体的な機能の例のブロック図
【図４】古代エジプト語用にカスタマイズした場合の「意味言語への変換処理部」「自然言語への変換処理部」「自然言語ＩＤ辞書」の例を示す図
【図５】意味言語情報処理システムのハードウェアブロック図
【図６】意味言語情報処理システムの基本の５つの効果
【図７】第１の実施形態の意味言語理解処理のソフトウェア構成の例を示す図とフローチャート
【図８】第２の実施形態の自然言語の意味言語への変換処理のソフトウェア構成の例を示す図とフローチャート
【図９】第３の実施形態の自然言語変換処理のソフトウェア構成の例を示す図とフローチャート
【図１０】第４の実施形態の自然言語翻訳処理のソフトウェア構成の例を示す図とフローチャート
【図１１】請求項に記載の効果を示す図
【図１２】意味言語の構成要素
【図１３】意味言語の構造の例を示す図
【図１４】概念識別子と関係属性記述子と単語ＩＤの例を示す図
【図１５】自然言語と概念識別子の対応関係の例を示す図
【図１６】活用がある語の扱い
【図１７】処理に用いた関係属性記述子の定義例
【図１８】意味言語の情報格納形式の例を示す図
【図１９】意味言語の表記例
【図２０】概念識別子と関係属性記述子のデータ構造例
【図２１】概念識別子と関係属性記述子の実際のデータ構造例
【図２２】意味言語文章の実際のデータ構造
【図２３】自然言語から意味言語表記に変換する処理のフローチャートの一例と処理例を示す図
【図２４】活用単位の説明を示す図
【図２５】活用単位か判定する処理のフローチャートの一例を示す図
【図２６】活用単位に対応した活用文字列を得る処理のフローチャートの一例を示す図
【図２７】意味言語から自然言語表記に変換する処理のフローチャートの一例を示す図
【図２８】意味言語から自然言語表記に変換する処理のフローチャートのサブルーチンのフローチャートの一例を示す図
【図２９】意味言語から自然言語に変換する処理例
【図３０】自然言語ＩＤ辞書の情報の例を示す図
【図３１】知識辞書の構造の例を示す図
【図３２】意味言語の木構造処理
【図３３】並べ替え可能な関係属性記述子の定義の例
【図３４】意味言語の文章の正規化の処理のフローチャートの一例を示す図
【図３５】意味言語文章の加工（知識の加工）の処理方法
【図３６】意味言語文章の加工（知識の加工）の処理条件
【図３７】意味言語の加工処理のフローチャートの一例を示す図
【図３８】意味言語の木構造に対するアルゴリズム
【図３９】意味言語の文章を理解する処理のフローチャートの一例を示す図
【図４０】意味言語の文章の比較により理解する処理の具体的な例
【図４１】不完全な文章の例
【図４２】不足語がないか判定し、不足語の位置を推定する処理のフローチャートの一例を示す図
【図４３】不足語を推定する処理のフローチャートの一例と処理例を示す図
【図４４】非自明な語句（多義語）を推定する処理のフローチャートの一例と処理例を示す図
【図４５】処理に用いた動詞辞書の生成例
【図４６】処理に用いた形容詞辞書の生成例
【図４７】処理に用いた動詞テーブルの構造体宣言
【図４８】処理に用いた形容詞テーブルの構造体宣言
【図４９】意味言語から自然言語表記（古代エジプト語）に変換する処理のフローチャートの一例を示す図
【図５０】意味言語の関係属性記述子のバリエーション
【図５１】意味言語の構造のバリエーション
【図５２】意味言語で感覚を取り扱う方法の概念図
【図５３】単語ＩＤ辞書のバリエーション
【図５４】試験実装したプログラム
【図５５】試験実装したプログラムとライブラリの一覧
【図５６】意味言語を読み込んで理解できるかどうか判定する処理の実行例
【図５７】日本語から意味言語を介した古代エジプト語への変換例
【発明を実施するための形態】
【００５９】
以下、本発明の好ましい実施の形態を図面に基づいて説明する。各図において、同一の構成については原則として同一の参照番号を振り、重複する説明は省略する。なお、発明者独自の概念や名称、考え方が多いため、各機能の意図や考えについて説明が必要と思われる場合は適宜これを加えている。また、説明を具体的にするために使用する数値等は、特に言及しない限りはこれに限定するものではない。また、本発明は以下の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で適宜変更できる。具体例の詳細や図面により限定されるものではない。例えば、本発明が適用される装置やシステムにおいて、処理の適用順序や構成が適宜修正または変更されてもよい。また、各機能はライブラリとしてまとめて提供されてもよいし、個別の実行プログラムとしてもよいし、組込チップとしてもよいし、専用ＲＯＭ、実行環境のメソッドやＡＰＩのように提供されてもよい。また、プログラム機能やデータは、全て単一のシステムにおくこともできるが、サーバーや分散システムに分けてもよいし、一部を適宜ダウンロードする形式でも実施できる。
【００６０】
実施形態では、各機能をＣ言語のライブラリとして開発された機能ごとのモジュールとして開発しているため、各機能をモジュールとして説明する。そして、モジュールを適切に呼び出すプログラムによって適切な出力結果を得るものとして説明する。
【００６１】
本発明の実装の説明は長くなるため、まず各機能の関係について実施形態１〜４までを説明する。つまり、発明の表面的な構成をまとめて説明する。その後、意味言語情報処理システムの各機能１１〜１９までの実装について図を参照しながら順に説明する。説明中で出てくる「意味言語」とは形式言語の一種で、本発明用に定義されたものであり、文章の意味を明確に単純に記述するために使用している。意味言語については、後述する図１２を使って説明している。
【００６２】
（本発明の主たる機能の一覧）
図１は、本発明の実施に必要な、主たる機能のブロック図である。これらの機能やデータを適切に呼び出し、作用させることで本発明の実施形態１〜４が実行される。これら機能の集まりを本発明では「意味言語情報処理システム」と呼ぶ。また、意味言語への変換処理部１２、自然言語への変換処理部１４、自然言語ＩＤ辞書１６は対応する自然言語ごとに開発・作成する必要があるので後述する（図２）。また、意味言語操作処理部１３は、さらにいくつかの機能があり、必要に応じて処理を提供する（図３）。以降の実施形態は、個々の機能やデータを個別に作成することもできる。しかし、実施形態１〜４は機能や使用するデータに共通する部分が多いため、まとめて意味言語情報処理システムとして構築し、それぞれの実施形態をサービスの一つとして提供することも可能である。意味言語情報処理システム１は、文章データをデータ入力部１１から受け取り、意味言語への変換処理部１２、意味言語操作処理部１３、自然言語への変換処理部１４、意味言語理解処理部１５、自然言語ＩＤ辞書１６、知識辞書１７、記憶部１８、をコンピュータプログラムと記憶部とデータによって各機能を実行し、目的の結果を得て、通知部１９で結果を出力する。データ入力部１１は文章データを受け取る部分であり、その実施態様に応じてテキストデータ読み込みプログラムとしてもよいし、人間が直接入力できるデバイスでもよいし、マイクやカメラ等のセンサーでもよい。今回の実施例では、テキストデータ読み込み機能として実装した。同様に、通知部１９は結果をデバイスに出力してもよいし、他のシステムへの結果通知として情報を送信してもよいし、データとして出力してもよい。今回の実施例では、コマンドプロンプトに結果を出力するとともに、テキストデータとして出力し、またプログラムの終了ステータスとしても出力するよう実装した。意味言語への変換処理部１２は、自然言語を意味言語に変換する機能を有する。この機能は自然言語ごとに開発する必要がある。１２は、データ入力部１１が受け取ったデータが意味言語であった場合には必要ない。意味言語操作処理部１３は、自然言語を意味言語に変換する過程で必要な意味言語の加工や知識の処理機能を有する。この機能は特定の自然言語には依存せず、万国共通に使用できる。自然言語への変換処理部１４は意味言語の文章を特定の自然言語に変換する機能を有する。自然言語への変換処理部１４は自然言語ごとに作成する必要がある。意味言語理解処理部１５は、意味言語の文章を入力とし、その意味を理解する処理を実行する。自然言語ＩＤ辞書１６は、意味言語を扱う際に、一意の識別子と自然言語の語を対応させる情報を有したデータである。ここでいう語とは、単語そのものではなく、意味言語の概念に対応する言語の構成素のようなものである。日本語においては、文章を処理する前に形態素解析し、その形態素を処理対象とすることが多いが、形態素と単語ＩＤは必ずしも１対１では対応しない。本発明では、意味言語（形式言語）の要素と対応する最小要素として構成要素という呼称を使う。自然言語ＩＤ辞書１６は、自然言語ごとに作成する必要がある。知識辞書１７は、意味言語で書かれた知識を有したデータである。知識辞書の一部は処理に伴って更新されていくため可変なデータである。知識辞書１７は特定の自然言語には依存せず、万国共通に使用できる。ただし、必要に応じて、特定の国、特定の時代、特定の文化圏、特定の世代用に一部をカスタマイズすることもできる。記憶部１８は、入力されたデータを保持し、理解する処理機能の実現に必要である。
【００６３】
（日本語処理のソフトウェア構成）
日本語を処理する際に必要な具体的処理機能の例を図２に示す。意味言語自体は、特定の自然言語に依存しないが、意味言語情報処理において自然言語を扱う上で１２、１４、１６の部分を自然言語ごとに開発、作成する必要がある。今回の実施例では、「意味言語への変換処理部１２」のモジュールとして、形態素解析部１２０１、活用処理部１２０２、助詞処理部１２０３、自然言語ＩＤ処理部１２０４、意味言語への変換処理部１２０５を開発し、活用辞書１２０６を作成した。「自然言語への変換処理部１４」のモジュールとして、活用処理部１４０１、助詞処理部１４０２、自然言語ＩＤ処理部１４０３、自然言語変換処理部１４０４、を開発し、活用辞書１２０６を作成した。また、自然言語ＩＤ辞書１６として日本語ＩＤ辞書１６０１を作成した。なお、自然言語ＩＤ辞書は特定の自然言語ごとに一つずつ作成されるものであり、以降の表記では特に記載がなければ実施例における自然言語ＩＤ辞書とは日本語ＩＤ辞書として作成された辞書のことである。また、活用処理部１２０２、１４０１、助詞処理部１２０３、１４０２、自然言語ＩＤ処理部１２０４、１４０３、は名前が重複しているが番号を変えている。これは、実際に行う処理の多くが「意味言語への変換処理部１２」と「自然言語への変換処理部」で共通するか、逆関数のように処理を反転させただけのものが多いためである。つまり、モジュールとしての実体は同じライブラリで提供されることを想定して説明しているが、行う処理が少し違うため、説明の明瞭化を図るために違う番号を振っている。
【００６４】
意味言語操作処理１３の具体的な機能例を、図３に示す。意味言語操作処理部では、意味言語で表現された文章データを操作、加工、または特定のアルゴリズムを適用して目的の結果を得る機能を有する。意味言語正規化処理部１３０１は、意味言語の文章を入力とし、意味を損なわない形で加工し、データ形式を統一する処理を実行する。意味言語加工処理部１３０２は、意味言語文章を木構造として、木構造に対するアルゴリズムを適用し、木構造を加工する処理を実行する。意味言語不足語補完処理部１３０３は、自然言語から意味言語へ変換する際などに必要な語が不足している不完全な文章（図４１）に対する処理を実行する。意味言語多義語推定処理部１３０４は、自然言語において同一表記、同一発音でありながら文脈等で意味が変わるいわゆる同音異義語や多義語がある文章に対する処理を実行する。意味言語木の操作処理部１３０５は、意味言語の木構造に対する様々なアルゴリズムを適用し、目的の結果を得る処理を実行する。
【００６５】
（別の自然言語のソフトウェア構成例）
別の自然言語に対応する場合の機能の実装の例を図４に示す。この説明は、色々な自然言語にどのように対応するかを例示するために記述する。この通りに実装することを限定するわけではない。ここでは、例として古代エジプト語の中期エジプト語に対応する場合を挙げる。後述する実施例では、試験的に自然言語への変換処理の一部だけを実装し、女性詞処理などは実装していない。つまり、意味言語の文章から、ヒエログリフ表記の古代エジプト語文章へ変換する簡素な処理のみを実装している（ＵＴＦ−１６コードは、基本的なヒエログリフを含んでいるため、テキストで出力できる）。日本語に対応する場合と比較して、女性詞の対応や決定詞の処理などが必要だが、逆に動詞の活用形等は不要である。意味言語への変換処理部１２に必要な処理は図４の通りである。ヒエログリフは分かち書きされないので、形態素解析部１２１１は必要である。日本語と異なる文法を持つため、いくつか特殊な処理が必要である。まず、文章に男性女性の区別があり、男性では特殊な処理はないが、女性の場合女性詞が必要であるため、女性詞処理部１２１２が必要である。また、同音異義語を明確化するために決定詞が多用されるため、決定詞処理部１２１３が必要である。また、接続詞が省略されることが多く、慣習から推測する必要があるため、接続詞推測処理部１２１４が必要である。また、前置詞が多用されるため前置詞処理部１２１５が必要である。自然言語ＩＤ処理部１２１６が必要なのは日本語同様である。意味言語変換処理部１２１７は以上の機能を呼び出しながら、意味言語へ変換する。自然言語への変換処理部１４でも、上記理由から女性詞処理部１４１１、決定詞処理部１４１２、前置詞処理部１４１４、自然言語ＩＤ処理部１４１５、自然言語変換処理部１４１６が必要である。接続詞に関しては、意味言語の状態では接続詞にあたる関係属性記述子は明確化されており、推測の必要はない（むしろ古代エジプト語に変換すると関係属性記述子の情報が減る）ため、接続詞処理部１４１３が必要である。また、古代エジプト言語の語彙とＩＤの対応をつける中期エジプト語ＩＤ辞書１６１１を作成する必要がある。複数の自然言語を取り扱う場合、自然言語ＩＤ辞書は、ＩＤを索引としたデータベースのように実装することもでき、必要なら、複数の言語体系への共有データとすることもできる。本実施例では、日本語用と古代エジプト語ヒエログリフ用の元データを、表計算ソフトでＩＤを共有した単一のシートとして作成している。その上で、辞書データとしてのテキスト形式で別々にエクスポートしている。
【００６６】
（ハードウェア構成）
本発明は、例えば図５のようなハードウェア構成で実施できる。これは一般的な情報処理装置（コンピュータ）の構成を有しており、パソコン等の現実に存在するコンピュータで実施可能である。１００１は一般的なＰＣの本体に相当するハードウェアである。これはあくまで一般例であり、内部の各ハードウェアが必ず収まっている必要はなく、実施状況に応じて適宜変更可能である。例えば、プログラムをあらかじめ記憶装置に記憶する代わりに、スマフォのダウンロードアプリのように必要なときにダウンロードする形式でも実施可能である。また、データを分割して格納したり、複数のシステムに分散することもできる。１００１は、バス１０１０を介して相互に接続されたＣＰＵ（演算装置）１００２、ＲＯＭ１００３、ＲＡＭ１００４、外部記憶装置１００５、入力Ｉ／Ｆ１００６、出力Ｉ／Ｆ１００７を備えている。入力Ｉ／Ｆ１００６は、例えばキーボード１００８等の入力装置を接続する。出力Ｉ／Ｆ１００７は、例えばディスプレイ１００９等の表示装置を接続する。
【００６７】
ＣＰＵ１００２は、ＲＡＭ１００４をワークエリアとして、ＲＯＭ１００３または外部記憶装置１００５などに格納されたプログラムを実行することで、意味言語処理システム全体の動作を統括的に制御する。ＣＰＵ１００２は単一でも実行可能であるが、複数設置することもでき、また、一部の処理を外部のＣＰＵに分散するクラウド形式にしたり、処理を別の環境で行い、結果を取得する形式にすることもできる。
【００６８】
＜各処理の機能＞
（意味言語への変換処理部）
「意味言語への変換処理部１２」の具体的な機能を説明する。本実施例では、自然言語としてまず日本語を選択し、日本語処理用にライブラリを開発した。意味言語への変換処理部１２のモジュールとしては、形態素解析部１２０１、活用処理部１２０２、助詞処理部１２０３、自然言語ＩＤ処理部１２０４、意味言語への変換処理部１２０５を開発した。また、活用処理部のデータとして、活用辞書１２０６を作成した。また、日本語用の自然言語ＩＤ辞書を作成した。形態素解析部１２０１は、受け取ったデータを形態素解析する機能をもつ。活用処理部１２０２は、日本語特有の動詞や形容詞などの活用を認識し、概念識別子として認識するとともに、必要に応じて関係属性記述子を認識する機能を持つ。活用処理部は、他に活用データとして活用辞書を必要とする。活用辞書１２０６は、活用の種類に応じて適切な関係属性記述子の特定を行うための情報を持つ。助詞処理部１２０３は、日本語のいわゆる助詞とともに、概念識別子に当てはまらない、接続詞などを認識し、関係属性記述子に対応付ける機能を持つ。自然言語ＩＤ処理部１２０４は、自然言語の単語を認識して、単語ＩＤを対応付ける機能を持つ。意味言語変換処理部１２０５は、単語ＩＤが割り振られたデータを元に、意味言語の文章構造へ変換する機能を持つ。より正確な「意味言語への変換処理部」の処理には知識辞書を使うのが好適である。自然言語では自明な主語が省かれることもあり、また、様々な前提を置いているからである。さらに、文脈で意味が変わる単語（同音異義語や多義語）も多い。また、日本語以外で「意味言語への変換処理部１２」を実装する場合も、それぞれの言語特有の文法も対応する必要がある。古代エジプトの言語など古い言語では、格助詞が明確にある場合もあれば、格助詞が省略されて単語の中に格助詞が埋め込まれていると見なすことができる場合もある、という風に文法に一貫性を欠く場合が多い。このほか、分詞によって時制を表現する言語など様々である。このように意味言語への変換処理は、自然言語ごとに違う文法に対応した実装をする。
【００６９】
（自然言語への変換処理部）
「自然言語への変換処理部」１４の具体的な機能を説明する。自然言語への変換処理部のモジュールとしては、活用処理部１４０１、助詞処理部１４０２、自然言語ＩＤ処理部１４０３、自然言語変換処理部１４０４を開発した。活用辞書１２０６と自然言語ＩＤ辞書１６０１は「意味言語への変換処理部１２」のものと同じ辞書を使用できる。活用処理部１４０１は、自然言語（日本語）として出力する際に、動詞等の活用を持つ単語の、時制などの適切な活用を考慮した活用文字列を得る機能を持つ。助詞処理部１４０２は、関係属性記述子に対応する助詞を選び、適切な位置に出力するとともに、１値性関係属性記述子などの適切な処理（例えば、希望を表す記述子に応じて、動詞の活用を問い合わせる処理の補助など）を行う機能を持つ。自然言語ＩＤ処理部１４０３は、単語ＩＤに応じて日本語表記の文字列を得たり、ＩＤの問い合わせに対して単語の種別（名詞、固有名詞、動詞、形容詞、副詞・・など）を返す機能を持つ。自然言語変換処理部１４０４は、意味言語の文章から、自然言語に変換する際に必要な文法を適用し（例えば、１値性文全体関係属性記述子をどこに出力するか等）、各他機能を呼び出しながら適切な自然言語文章を出力する機能を持つ。意味言語は理論上、同音異義語などの曖昧さを排除しているため、単語の活用、時制、語順などを整理して、単語ＩＤに対応した単語を順に出力するのが基本的な処理である。日本語以外の言語への変換処理を実装する場合、日本語と違って、話者によって男性形女性形などの活用を持つ場合など独特の文法がある。そのような場合は前提知識とそれまで処理した文章の履歴を参照し、主語の性別等を判断する処理等も別途必要になる。
【００７０】
（自然言語ＩＤ辞書）
「自然言語ＩＤ辞書」１６は、日本語を扱う際には「日本語ＩＤ辞書」１６０１として作成する必要がある。
【００７１】
意味言語情報処理における処理プログラム１２、１３、１４、１５等は、ＣＰＵ１００２において実行されることで機能を実現される。プログラム自体は、外部記憶装置に記憶しておくのが簡易であるが、記録媒体を経由して取得されるものでもよいし、ネットワークを経由して取得されるものでもよいし、ＲＯＭ組込でもよいし、専用チップに組みこむものでもよいし、起動時にＲＡＭなどに展開しておくものでもよい。また、意味言語情報処理に使用されるデータ１６、１７等も、外部記憶装置に記憶しておくのが簡易であるが、記録媒体を経由して取得されるものでもよいし、ネットワークを経由して取得されるものでもよいし、ＲＯＭ組込でもよいし、専用チップに組みこむものでもよいし、起動時にＲＡＭなどに展開しておくものでもよい。また、データの提供は、データ全体を一気に取得してもよいし、必要なデータを分割して取得してもよい。
【００７２】
入力Ｉ／Ｆ１００６は、処理の対象となる入力データを、外部から入力するためのＩ／Ｆ（インターフェース）である。本発明では、何らかの言語によって表現された文章データ、会話データを処理対象としている。そのため、最終的に文章として表現できる入力ならどんな入力でもよい。最も簡易な入力はテキストデータであり、キーボードから入力されてもよいし、テキストデータとしてファイルや電子データとして入力されてもよいし、あるいはマイク等から入力された音声データでもよいし、他の電子データでもよい。あるいはＯＣＲ技術等を適用することで、画像データも対応可能である。
【００７３】
出力Ｉ／Ｆ１００７は、処理の結果を外部に出力するためのＩ／Ｆである。本発明では、入力された文章を処理し、理解できるかどうかを通知したり、あるいは指定された自然言語に変換して表示することができる。最も簡易な出力はディスプレイに対する出力である。このほか、人間が理解できるよう音声データ（人工音声や録音音声など）として出力することもできるし、プリンタ等で印刷として出力することもできる。また、別の装置の判断に使うために、出力をデータとしてＬＡＮケーブルやバスケーブル経由で送信することもできる。例えば、人間からの入力を受けて本システムで処理を行い、その結果を別のコンピュータに送ることができる。また、その他適宜電子データとして出力し、他のシステムや人間等への出力とすることもできる。
【００７４】
（基本的な５効果）
本発明の各手段を組み合わせることで、図６に示す５つの基本的な効果が得られる。まず、意味言語の文章を入力とし、文章が理解できたかどうかを判定、出力できる（図６Ａ）。ステップＳ１０１１は意味言語文章入力である。ステップＳ１０１２は意味言語を理解する処理として意味言語理解処理部１５の機能を呼び出すことで実現する。ステップＳ１０１３はステップＳ１０１２の処理結果を出力する処理である。図６Ａの理解する処理は、ＡＩが意思決定や判断を行ううえで不可欠な処理である。
【００７５】
また、自然言語文章を入力とし、意味言語に変換して出力することができる（図６Ｂ）。ステップＳ１０１４は自然言語の文章入力である。ステップＳ１０１５は、自然言語を意味言語に変換する処理であり、意味言語への変換処理部１２の機能を呼び出すことで実現する。ステップＳ１０１６は、変換された意味言語文章を出力する処理である。
【００７６】
また、意味言語文章を入力とし、自然言語文章に変換して出力することができる（図６Ｃ）。ステップＳ１０１７は意味言語文章入力である。ステップＳ１０１８は意味言語を自然言語に変換する処理として、自然言語への変換処理部１４の機能を呼び出すことで実現する。ステップＳ１０１９は変換された自然言語文章を出力する処理である。
【００７７】
また、特定の自然言語を入力とし、その自然言語を理解できたかどうか判定、出力できる（図６Ｄ）。図６Ｄは、実質的には図６Ｂの出力を図６Ａの入力としたものとして開発できる。つまり、図６Ｂ＋図６Ａ＝図６Ｄである。ステップＳ１０２０は自然言語文章の入力である。ステップＳ１０２１は自然言語を意味言語に変換する処理として、意味言語への変換処理部１２の機能を呼び出すことで実現する。ステップＳ１０２２は意味言語を理解する処理として、意味言語理解処理部１５の機能を呼び出すことで実現する。ステップＳ１０２３は、ステップＳ１０２２の結果結果を出力する処理である。
【００７８】
また、特定の自然言語Ａの文章を入力とし、意味言語文章に変換後、別の自然言語Ｂの文章として出力できる（図６Ｅ）。図６Ｅは、実質的には図６Ｂの出力を図６Ｃの入力としたものとして開発できる。つまり、図６Ｂ＋図６Ｃ＝図６Ｅである。ステップＳ１０２４は特定の自然言語Ａの文章入力である。ステップＳ１０２５は自然言語Ａから意味言語に変換する処理として、１２（言語Ａ用に開発されたもの）の機能を呼び出すことで実現する。ステップＳ１０２６は意味言語文章を自然言語Ｂに変換する処理として、１４（言語Ｂ用に開発されたもの）の機能を呼び出すことで実現する。ステップＳ１０２７は、ステップＳ１０２６の処理結果を出力する処理である。
【００７９】
これらの処理のうち、意味言語を自然言語に変換する処理図６Ｃは、形式言語としての意味言語を自然言語に変換する処理として特段の発明要素がない（形式言語を自然言語に変換する処理は既に一般に存在し、かつこの処理に新規性を持たせるような発明要素がない）と判断した。よって、意味言語を自然言語に変換する処理図６Ｃは請求項には記載していない（自然言語の翻訳処理として実行できる図６Ｅの後半の処理としては必要ではある）。
【００８０】
＜第１の実施形態＞
（意味言語理解処理２１のソフトウェア構成）
図７は、第１の実施形態のソフトウェア構成を示すブロック図である。意味言語理解処理２１は、意味言語の文章を入力として、入力された文章と記録されている知識と比較することで文章の意味を理解する一連の機能を提供する。意味言語理解処理２１は、コンピュータやＯＳ等を利用し、機能を実現するために必要なコンピュータプログラムとデータを用意して目的の結果を得る。データ入力部１１は、意味言語の文章を入力するために使用される。入力された意味言語の文章は、意味言語理解処理部１５で知識辞書１７の内容と比較され、その意味が理解できるかどうかの判定を行う。次に、必要に応じて入力された文章を記憶部１８に記憶する。最後に理解できたかどうかの結果を通知部１９で出力する。最も単純な処理であれば意味言語操作処理部１３の機能は必要ない。
【００８１】
しかし、知識辞書の知識文章を加工して新たな知識を作成したり、意味言語の文章を操作するためには意味言語操作処理部１３の機能も必要である。
【００８２】
＜第２の実施形態＞
（自然言語の意味言語への変換処理２２のソフトウェア構成）
図８は、第２の実施形態のソフトウェア構成を示すブロック図である。自然言語の意味言語への変換処理２２は、自然言語の文章を入力として、入力された文章を、形式言語の一種である意味言語の文章へ変換する一連の機能を提供する。自然言語の意味言語への変換処理２２は、コンピュータやＯＳ等を利用し、機能を実現するために必要なコンピュータプログラムとデータを用意して目的の結果を得る。データ入力部１１は、自然言語の文章を入力されるために使用される。入力された自然言語の文章は、意味言語への変換処理部１２で形態素解析後に自然言語ＩＤ辞書１６の情報を使って単語ＩＤと対応付けられ、意味言語の文章に変換され、記憶部１８に記憶される。最後に、変換された意味言語の文章を通知部１９で出力する。知識等を使わず、単純に意味言語へと変換するだけならば、意味言語理解処理部１５、意味言語操作処理部１３、知識辞書１７は必要ない。
【００８３】
しかし、意味言語操作処理部１３、意味言語理解処理部１５、知識辞書１７は、以下の３つの機能を使う場合は必要である。１つめは、自然言語の文章で省略された語を推定し意味言語の文章へ補足する処理である意味言語不足語補完処理部１３０３である。２つめは、自然言語の多義語を意味言語のひとつの要素に特定する意味言語多義語推定処理部１３０４である。３つめは、前２つの処理と関係して、知識辞書１７にあらかじめ登録された一般的な知識や、それまでの文脈から得た一時的な知識（文脈の知識）を使い、より自然な解釈を行う処理を行う意味言語理解処理部１５である。意味言語操作処理部１３は、意味言語不足語補完処理部１３０３と意味言語多義語推定処理部１３０４を機能として含む。これらの機能を使うことで、より自然な、人間が処理する方法に近い形で文章を処理できる。
【００８４】
＜第３の実施形態＞
（自然言語理解処理２３のソフトウェア構成）
図９は、第３の実施形態のソフトウェア構成を示すブロック図である。自然言語理解処理２３は、自然言語の文章を入力として、入力された文章を理解する一連の機能を提供する。自然言語理解処理２３は、コンピュータやＯＳ等を利用し、機能を実現するために必要なコンピュータプログラムとデータを用意して目的の結果を得る。データ入力部１１は、自然言語の文章を入力されるために使用される。入力された自然言語の文章は、意味言語への変換処理部１２で自然言語ＩＤ辞書１６の情報を使って自然言語ＩＤと対応付けられ、意味言語の文章に変換され、記憶部１８に記憶される。その後、意味言語の文章は、意味言語理解処理部１５で知識辞書１７の内容と比較され、その意味が理解できるかどうかの判定を行う。最後に理解できたかどうかの結果を通知部１９で出力する。
【００８５】
最も単純な処理であれば意味言語操作処理部１３の機能は必要ない。また、意味言語への変換処理部１２で意味言語理解処理１５や知識辞書１７を使用しない実装も可能ではある（本処理の要が「理解する処理」なのに、変換処理にだけ「理解する処理」を使わないのはナンセンスではある）。しかし、意味言語操作処理部１３、意味言語理解処理部１５、知識辞書１７は、以下の３つの機能を使う場合は必要である。１つめは、自然言語の文章で省略された語を推定し意味言語の文章へ補足する処理である意味言語不足語補完処理部１３０３である。２つめは、自然言語の多義語を意味言語のひとつの要素に特定する意味言語多義語推定処理部１３０４である。３つめは、前２つの処理と関係して、知識辞書１７にあらかじめ登録された一般的な知識や、それまでの文脈から得た一時的な知識（文脈の知識）を使い、より自然な解釈を行う処理を行う意味言語理解処理部１５である。意味言語操作処理部１３は、意味言語不足語補完処理部１３０３と意味言語多義語推定処理部１３０４を機能として含む。これらの機能を使うことで、より自然な、人間が処理する方法に近い形で文章を処理できる。
【００８６】
＜第４の実施形態＞
（自然言語翻訳処理２４のソフトウェア構成）
図１０は、第４の実施形態のソフトウェア構成を示すブロック図である。自然言語翻訳処理２４は、自然言語の文章を入力として、指定された自然言語の文章として出力する一連の機能を提供する。入力された自然言語と出力される自然言語が別種であれば、これは翻訳機能である。また、同じ日本語であっても、古文のような文法形態や語彙が異なる言語に対応することもできる。古文のような、時代背景に関する知識が異なる文章を処理する場合は、年代・時代に応じて知識辞書の内容の一部の情報を置き換えることで対応できる。自然言語翻訳処理２４は、コンピュータやＯＳ等を利用し、機能を実現するために必要なコンピュータプログラムとデータを用意して目的の結果を得る。データ入力部１１は、自然言語の文章を入力されるために使用される。本処理では自然言語の文章が２つあるため、入力された自然言語（翻訳元になる言語）の文章を自然言語Ａ文章とする。入力された自然言語Ａの文章は、（自然言語Ａ用に開発された）意味言語への変換処理部１２で自然言語ＩＤ辞書１６の情報を使って自然言語ＩＤと対応付けられ、意味言語の文章に変換され、記憶部１８に記憶される。変換された意味言語の文章は、さらに（自然言語Ｂ用に開発された）自然言語への変換処理部１４と、自然言語ＩＤ辞書１６によって、単語ＩＤから自然言語Ｂの表記に対応付けられ、自然言語Ｂの文章へと変換される。最後に、変換された自然言語Ｂの文章を通知部１９で出力する。翻訳処理の場合、複数の自然言語用ＩＤ辞書を持つことになるが、前述の通り共有のデータとしてまとめることもできる。
【００８７】
最も単純な処理であれば意味言語操作処理部１３の機能は必要ない。また、意味言語への変換処理部１２で意味言語理解処理１５や知識辞書１７を使用しない実装も可能である。しかし、意味言語操作処理部１３、意味言語理解処理部１５、知識辞書１７は、以下の３つの機能を使う場合は必要である。１つめは、自然言語の文章で省略された語を推定し意味言語の文章へ補足する処理である意味言語不足語補完処理部１３０３である。２つめは、自然言語の多義語を意味言語のひとつの要素に特定する意味言語多義語推定処理部１３０４である。３つめは、前２つの処理と関係して、知識辞書１７にあらかじめ登録された一般的な知識や、それまでの文脈から得た一時的な知識（文脈の知識）を使い、より自然な解釈のための処理を行う意味言語理解処理部１５である。意味言語操作処理部１３は、意味言語不足語補完処理部１３０３と意味言語多義語推定処理部１３０４を機能として含む。これらの機能を使うことで、より自然な、人間が処理する方法に近い形で文章を処理できる。
【００８８】
（請求項に記載の効果）
本発明の効果のうち、請求項に記載の効果について図１１に基づいて具体的に説明する。本発明の実装の例においては「意味言語」という言語を主に内部表現として使用している。意味言語は（意味言語の構造と文法）で後述するように形式言語の一種として定義している。意味言語は、本発明に適合するよう言語仕様をカスタマイズしている。しかし、本発明において意味言語に対して適用される処理やアルゴリズムは、木構造に対して行える処理に追加ルールを与えたものであるため、木構造で表現できる言語であれば（難易度はともかくとして）同様の処理が行えることは自明である。そこで、以下の説明では、意味言語に対して実装された処理を、形式言語に対して行えるものとして説明している。前述の通り、形式言語を自然言語に変換する処理図６Ｃは、曖昧性の解消や意味の解釈等をする必要がないため、単体では請求項に入れていない。以降の図１１Ａ〜図１１Ｄは、図６Ａ、図６Ｂ、図６Ｄ、図６Ｅを形式言語へと拡張したものである。
【００８９】
図１１Ａでは形式言語を理解する処理を説明している。まず、形式言語で表現された文章を入力として受け取る（ステップＳ１０３１）。次に、入力された形式言語の文章と、形式言語で表現された知識を比較することで、入力された形式言語の文章を理解する処理を実行する（ステップＳ１０３２）。最後に、入力された形式言語の文章を理解できたかどうかを出力する（ステップＳ１０３３）。
【００９０】
図１１Ｂでは自然言語の文章を形式言語に変換する処理を説明している。まず、自然言語で表現された文章を入力として受け取る（ステップＳ１０３４）。次に、自然言語の文章を形式言語に変換する処理を実行する（ステップＳ１０３５）。このとき、形式言語変換処理の内部において「意味言語操作処理部１３」にあるような不足語（省略された語）の補完や多義語の意味を推定する処理を実行することで、変換の精度を高めることができる。これらの処理は、いずれも形式言語を理解する処理を内部的に使用している。最後に、形式言語に変換された文章を結果として出力する（ステップＳ１０３６）。
【００９１】
図１１Ｃでは自然言語の文章を理解する処理を説明している。まず、自然言語で表現された文章を入力として受け取る（ステップＳ１０３７）。次に、自然言語の文章を形式言語の文章に変換する（ステップＳ１０３８）。そして、変換された形式言語の文章を理解する処理を実行する（ステップＳ１０３９）。最後に、変換された形式言語の文章を理解できたかどうかの結果を出力する（ステップＳ１０４０）。この一連の処理により、入力された自然言語が理解できたかどうかを判定できる。
【００９２】
図１１Ｄでは自然言語の文章を翻訳する処理を説明している。まず、翻訳元となる言語で表現された文章を入力として受け取る（ステップＳ１０４１）。次に、入力された自然言語の文章を形式言語に変換する（ステップＳ１０４２）。そして、翻訳先となる自然言語に変換する（ステップＳ１０４３）。最後に、翻訳先の自然言語の文章を結果として出力する（ステップＳ１０４４）。
【００９３】
（意味言語の構造と文法）
意味言語は、文章や会話の意味を記述するとともに、知識を記述するための言語体系である。図１２のように、意味言語は主に２つの要素「概念識別子」と「関係属性記述子」を備えている。概念識別子は、記述するべき対象に一対一で対応する、一意的な識別子である。関係属性記述子は、２つの概念識別子どうしの関係や、概念識別子の属性を記述する。図１３Ａ、図１３Ｂ、図１３Ｃのように、意味言語は関係属性記述子をノード、概念識別子を子ノードとして構成する木構造で表現でき、本実施例のプログラム中では木構造として扱っている。この木構造は、構文木そのものである。意味言語は、会話などの人間が生成する自然言語の文章を表現できると同時に、知識などの辞書的な情報も表現できる、折衷的な言語として開発したものである。言い換えれば、「人間の会話」と「頭の中の知識」を同一文法体系で表現することを目的として開発したものである。
【００９４】
なお、例として提示している木構造の「等価」の関係属性記述子は、実際には複数種類ある。例えば、人工知能分野のオントロジーにおけるｉｓ−ａ、ｐａｒｔ−ｏｆのような関係は、いずれも日本語では「は」助詞で表記されるが、形式言語で推測等を扱うときには区別する必要がある。ただし、説明の簡素化のため、説明の内容に関わらない範囲では特に区別しない。この区別については後述する。意味言語は、その構造上、木構造化された意味ネットワークに類似する。実際、後述するように、意味言語は意味ネットワークをアレンジする形でも表現できる。
【００９５】
意味言語の重要な特徴として、抽象化された概念としての「希望」「命令」「問い」などを持ち、積極的に使える点がある。また、活用のある語（日本語では動詞や形容詞など）を抽象化された概念として記述し、活用は概念になんらかの意味が融合しているとして処理する点も特徴の一つである。また、「疑問文（質問文）」「感嘆文」「仮定文」「命令文（要請文）」などを、一般の文（平叙文）と同じ文法で処理できるように言語体系を構築できる点も特徴である（それぞれの文法に特化したルールを定めても良い）。定義のバリエーションとそれぞれのメリットやデメリットについては後述する。意味言語では、「問い（質問）」を、例えば５Ｗ１Ｈとして図１３Ｂのように表現できる。つまり、「問い」との関係を記述することで問いを表現するのである。この表現の利点は、「問い」の概念の答えである概念「Ｃａｎｉｓ  ｌｕｐｕｓ」がそのまま図１３Ｂの「問い」と可換である点である。言い方を変えれば、意味言語における「質問の文章」に対応する「答えの文章」は、質問の文章の「問い」概念を適切な概念に置き換えたものである。つまり、この問いにふさわしい答えは、図１３Ｃに示した木構造（犬の学名はＣａｎｉｓ  ｌｕｐｕｓ）である。コンピュータで文章問題を解くことは現代の技術でも難しいが、自然言語の文章題を意味言語に変換し、さらに変形することで問いの形を明確にでき、かつ知識との比較も容易となる。また、図１３Ｄのように、曖昧すぎる問い「満足する死とは何か」のような問いについても、何が聞かれているのかは解釈できる（解答できるかどうかは人による）。言い方を変えれば、人間の意図なども抽象化した概念とすることで、「文章題の要求するところ」や「命令文の意図するところ」や「何かを望んでいる文章の要求するところ」などを的確に明確に表現でき、また問いに対する答えが文意に沿うかを評価できるのである。
【００９６】
また、「問い」は必要に応じてカスタマイズできる。例えば、「ルビーは赤い？」と質問されたら、暗に解答の選択肢を「赤い」か「そうでない（赤くない）」のどちらかであるよう要請している（図１３Ｅ）。解答は、問いの木構造の「問い」部分を書き換えたものである。問いに対する答えが適切かどうかの検証は、答えを図１３Ｆのいずれかのような形式にし、当発明で定義した「理解する処理」を実行することで容易に可能である。このように、意味言語は形式言語として使用されるが、記述されるべき概念を抽象化し、さらにどの概念も統一的に扱う。この性質は、「意味を理解する」処理を行ううえで好適であると考える。
【００９７】
本発明における意味言語の主たる存在意義は、形式言語としてコンピュータが扱える知識表現としての利用であり、これは人工知能工学における「オントロジー」とその意義を同じくする。本発明では、自然言語の代わりに、「形式言語」を用いた「知識表現」と「文章表現」を使用する。その具体的表現手段のひとつとして意味言語を定義した。意味言語を分類するならば、オントロジーの１類型または１つの実装という事にもなる。今回の実装においては発明者が扱いやすいよう、独自の定義を与えた「意味言語」を使用しているが、発明の骨子である「理解の処理」は、別の形式言語・オントロジーなどを使用しても可能である。意味言語とは若干文法や概念の相違があるものの、例えば「ＣＹＣ」などから意味言語や本発明に適した形式言語に変換することは当業者なら可能である（ＣＹＣはＬＩＳＰに類似した定義文を使い、概念を定義する。ＣＹＣも本質的には木構造であり、表記法は違っても意味言語と同系統の文法構造であると見ることができる）。ただし、概念の細分化にはかなりの差異があるため、本発明をＣＹＣなどのオントロジー実装を使って実装する場合、プログラム実装を手直しするか、知識辞書を一部手直しする必要がある。もしも、ＣＹＣなどの知識を流用するなら現実的には、オントロジーで記述された辞書内の概念を、細分化して概念識別子と対応付けるのが省コストであると考える。
【００９８】
（本発明における形式言語の役割）
本発明では、自然言語文章と形式言語文章を相互に変換し、変換された形式言語文章と知識の文章を比較することで文章を理解する処理を実行する。これは、イメージとしては人間の脳内で行われる処理の一部を、アルゴリズムとして明確化し、コンピュータ上で実行可能とするものである。言い換えれば、人工知能分野における「意味表象」を表現することを一つの目標としている。そして、本発明の実行のためには、自然言語の文章から変換された形式言語の文章と、知識を表現する形式言語文章が比較可能である必要がある。最も好ましいのは、どちらの形式言語の文章も全く同じ文法、全く同じ構成要素をもつことである。意味言語は、記述対象を概念識別子と関係属性記述子として抽象化することで、知識の記述と全く同じ文法に「意図」や「問い」なども組み込める形式言語である。通常の形式言語でも本発明は実施可能であるが、意味言語を用いれば処理が大幅に簡素化する。
【００９９】
意味言語では、人間の使用する言語というシステムの役割を次のように定義する。即ち言語システムの役割とは、「物事と物事の関係性を表すこと」である。「私は走る」という発言は、「私」という物（者）が、「走る」という事（運動状態）に「なる」ことを表している。つまり、「私＝走る（状態）」になるというのである。さらに我々人間は、実体のないもの「感情」「仕組み」「考え」「希望」などに名前をつけることで、言語で表すことを可能とした。実体がないものでも、名前をつける、つまり識別子を与えることによって、言語上は実体のあるものと同等に扱うことが可能となる。「私は嬉しい」という発言は、「私」、正確には「私の心」が「嬉しいという状態」になっていることを表している。もちろん、「嬉しい」とか「悲しい」といった感情に実体はない。しかし、感情も物事として名づけることで、実体はないのに人間同士で共通理解が図れる（つまり、感情の状態をある程度察してもらえる）わけである。こういった観点からいくと、我々が意味のある会話を行うとき、常に２つ以上の概念の関係性を表現していると解釈できる。会話で主題となるのは、「自分の望み」「自分の周りで起こったこと」「相手の望み」「相手の感情」「相手の周りで起こったこと」等であるが、いずれを表現するのにも常に２つ以上の名前を使い、その関係を表現している。単語一つのみを発話する場合であっても、実際には２つ以上の概念が想定されている。例えば、「自分の感情」は、「嬉しい」と概念識別子（日本語では形容詞）一つで表現されるが、これは「感情を表す言葉を発したら、それは発言者の感情である」という暗黙の了解があるからである。つまり、厳密に表現するなら、「嬉しい」という発言は「私の感情は、嬉しい状態です」という意味である。つまるところ、「私の感情」＝「嬉しい」なのだ。このように、関係性について明確に言及されていない文章でも、暗黙の了解の下で省略されているだけなのである。意味言語では、この点に着目し、言語の要素を２つ定義した。物事を表すのが概念識別子であり、関係性や属性を表すのが関係属性記述子である。
【０１００】
概念識別子は、図１４Ａのように単語ＩＤと対応付けられる。意味言語における単語ＩＤの意味は「概念の識別子となる」点を満たせばよいので、ＩＤは数値でも文字列でも何でもよい。後述する実施例では、数値をＩＤとしている。後述するが、ＩＤによってノードを並べ替える処理もあるため、何らかの序列が必要であり、数値ＩＤが好適である。意味言語では、全ての概念識別子と関係属性記述子に全世界で共通の単語ＩＤを割り振る。実装の際には、後述する「自然言語ＩＤ辞書」で一意のＩＤを割り振ると同時に、表記ゆれや単語の情報をセットで記録する。概念識別子は、記述するべき対象に一対一で対応する、一意的な識別子である。記述するべき対象とは、図１５のように、物、事、現象、感情などであり、一般的な名詞だけでなく、動詞として扱われるもの、形容詞として扱われるもの、なども包括的に含む。品詞の分類は諸説あるが、学校文法で扱われる１０品詞でいうと、活用の部分を除けば「名詞」「動詞」「形容詞」「形容動詞」「副詞」「連体詞」「感動詞」が概ね概念識別子に対応する。同様に学校文法でいうと、関係属性記述子は「助詞」「助動詞」（言語学でいう助動詞ではない）「接続詞」が概ね対応する（一部例外もある）。また、動詞や形容詞などの活用部の多くも関係属性記述子に概ね対応する。
【０１０１】
そして、関係属性記述子も図１４Ｂのように単語ＩＤと対応付けられる。表記が同じであっても、意味言語としては区別する場合、別々のＩＤを割り振る。逆に、同じ意味で使われるが表記が異なる助詞や接続詞など（走ら―ない、走ら―ず、走ら―ぬ、走ら―ん、走ら―ざる、の「ない」「ず」「ぬ」「ん」「ざる」など）は一つのＩＤに統一する。一意のＩＤを割り振る利点は３つある。１つ目の利点は、日本語のように同音異義語が多い言語でも、意味（概念）に沿って対応づけることができる点である。このようにＩＤに概念や関係性を対応付けることで、意味言語は同音異義語を持たず、全ての概念識別子を一意に扱える。一意のＩＤを用いることで、英語の単語のように文脈で大きく意味が変わる「ｌｉｇｈｔ」のような単語も、きちんと分けて記述することができる。つまり、ｌｉｇｈｔ（光＝ＩＤ６８２７）、ｌｉｇｈｔ（軽い＝ＩＤ３０１４０）、などのように全て別のＩＤを割り振る。自然言語中の「ｌｉｇｈｔ」をどの概念識別子に対応付けるかは、自然言語を意味言語に変換するプログラムの仕事であり、アルゴリズムについては後述する。一方、表記が違っても意味が同じ単語、例えば「青森、青森県」は同じＩＤを対応させる。２つ目の利点として、特定の言語にない語彙もとりあえず単語ＩＤで処理できる点がある。例えば、日本語の「もったいない」は、本実施例ではＩＤ３０２００を割り当てている。この語は、多くの自然言語にはないといわれる語彙である。もちろん、現在わかっている調査では、古代エジプト語には対応する語彙がない。これを意味言語に変換後、他言語（例えば古代エジプト語）として出力する場合、古代エジプト語には対応するスペルが存在しないという問題が生じる。この際には、ＩＤを使うことで３つの対応が考えられる。第一の方法として、古代エジプト語に出力する際に対応する語無しとしてＩＤを出力することができる。ＩＤは一意なので、後で調べることができる。第二の方法として、ＩＤに対応する他の言語表記（例えば日本語表記）で出力することができる。第三の方法として、ＩＤの語を説明する知識辞書の内容を、説明的に出力することができる。このように、ＩＤを使うことで、存在しない語彙も柔軟に取り扱える。３つ目の利点として、全ての語や文章を数値のＭ式のように扱え、Ｍ式はＬＩＳＰなどのプログラミング言語で扱いやすく、文法も単純であるため汎用性が高い点も挙げられる。
【０１０２】
そして、意味言語では、自然言語における単語の活用を「概念識別子に関係属性記述子が融合したもの」と解釈する（図１６）。例えば、「走る」という動詞を例にとると、走るという概念は、動物などの可動性の動物または物体が、地上から極端に離れることなく水平移動する物理的現象を表す。日本語においては、この動詞は五段活用され、「走りたい」「走らない」「走った」「走らされた」（図１６Ａ）などのバリエーションがある。意味言語では、こういった活用を、概念識別子に属性や関係性が融合していると解釈する。動詞や形容詞などの活用を持つ品詞は、ただの名詞と異なり「意図」「行為者と対象」「状態変化」などの要素がある。言い方を変えると、人間は、言語を日常的に使う上で便利なように、活用という形でこういった副次的な情報を与えていると解釈する。その証拠に、外国人がカタコトで「走る、したい・・・」「走る、しない・・・」「走る、おわった・・・」「走る、やらされた・・・」と話している状況を想像すれば、それぞれ活用無しでもなんとか意味が取れることがわかる。このように、意味言語では、活用のある単語は「概念識別子＋関係属性記述子」として扱う（図１６Ｂ）。ただし、後述する図５０で説明しているように、他の定義も可能である。
【０１０３】
関係属性記述子も、図１７のように、概念識別子と同様に単語ＩＤと対応付けられる。このような情報を使って、日本語における助詞などの構成要素を関係属性記述子に適切に対応付けるのが、助詞処理部１２０３である。関係属性記述子は、日本語における助詞や接続詞、また英語における助動詞や助詞や前置詞などに似ているが、完全に同じではない。また、プログラムで処理する際に、文章の先頭を決める必要があるので、文章の先頭を表す特殊な関係属性記述子（ＩＤ＿ＲＯＯＴ）も定義している。後述する実施例では値を０としている。ＩＤ＿ＲＯＯＴは、今回の実施例で木構造を扱いやすくするために定義しただけで、意味言語自体に必須ではない。よって、後述する実施例では全ての文章の先頭（木構造では根にあたる部分のさらに上）にＩＤ＿ＲＯＯＴがあるが、説明には記載しない。関係属性記述子は「〜だ」「〜ならば」のように１つの概念識別子のみにかかる「１値性」のもの、「〜で」「〜に」のように１つの概念識別子のみにかかるが、文章全体を修飾する意味を持つ「１値性文全体」のもの、「〜は〜」「〜が〜」のように、２つの概念識別子を結びつけてその関係を表す「２値性」のものなどに分けられる。また実質的に同じだが表記が違う助詞を関係属性記述子に変換する場合は、同じ関係属性記述子に統一的に変換する（例えば、ＩＤ＝６０の「か」「または」「もしくは」は実質的に同じである。「リンゴかミカン」「リンゴまたはミカン」「リンゴもしくはミカン」はニュアンス以上の違いはない）。また、言語によっては動詞や助動詞などと呼ばれる要素の一部も、関係属性記述子に対応する。本実施例では、例えば、英語のｂｅ動詞は、存在を定義する２値性関係属性記述子であるとみなしている。なお、関係属性記述子の定義は、本実装例、実施例が唯一の定義ではない。例えば、後述する実施例では「のは」は、「所属等価」というＩＤ＝８２の単一の関係属性記述子として定義している。しかし、「の（所属化）」＋「は（限定等価）」と分けて定義することもできる。一般的傾向として、関係属性記述子を「のは」のようにある程度まとめたほうが処理プログラムを開発しやすい。逆に、関係属性記述子を「の」＋「は」のように細かく分けて定義したほうが、理論的にも美しく、関係属性記述子の定義が簡素になる。どちらの定義を使うかは、実装者次第である。
【０１０４】
つまり、意味言語の概念識別子と関係属性記述子に対する、自然言語の要素は１対１では対応しない場合が多い。形態素解析した場合の構成要素「形態素」と意味言語の単語との対応関係は、日本語における名詞の場合は「犬＝概念識別子」と対応することが多い。しかし、動詞などの場合は「走りたい＝概念識別子＋関係属性記述子」のように一つの自然言語表現に対して意味言語の複数の要素が対応することが多い。この自然言語側の要素は、「形態素」や言語学における統語論の「構成素」と似ているが、同じではなく、発明中で使う形式言語の定義と直結している概念である。そのため、本発明では、自然言語側の原子にあたるようなこの要素を、単純に「構成要素」と呼ぶ。
【０１０５】
意味言語における、活用のある語（動詞や形容詞など）の考え方をもう少し説明する。例えば日本語においては、形容詞は次の語に直接かかるという暗黙のルールがある。「白い」は物体から基本三原色の波長の光がバランスよく反射される物質の光学的性質の名前である。しかし、「白い人間」のように特定の語に結合している場合は、次に続く語の物理属性であることを表す関係属性記述子が、融合して隠れていると見ることができる。つまり、分解すると「白い＋人間」ではなく、「白い＋ところの＋人間」である。これは、形容詞の意味するところと用法が明らかで、助詞や接続詞が必要ないから省略されているだけであると考えられる。意味言語の表現では、概念識別子同士の関係を過不足なく記述するために、明示されていない関係属性記述子を追加する必要がある。明示されていない関係属性記述子の追加は、古代言語を扱う際にはさらに重要なキーポイントである。一般的に、自然言語は古い時代のものほど統一性に欠け、品詞の区別も曖昧である。例えば、古代エジプト語の中期に使われていたヒエログリフ表記では、助詞としての「は」にあたる表記は「ふくろう」である。しかし、代名詞を使った「彼は」「彼の」などは代名詞に助詞が含まれ、しかも「クサリヘビ」一匹で表される。つまり、中期エジプトのヒエログリフ表記では「彼は」「彼の」の違いは文脈から読み取る必要がある。意味言語では、こういったあいまいな表記を関係属性記述子を使って厳密に表現できる。
【０１０６】
このように、概念と概念の関係に着目して文章を構築する意味言語の文法を用いれば、自然言語文章のもつ「文章の意味」を簡素な形で抽出することが可能である。そして、意味言語が十分に簡素であるがゆえに、意味言語の文章と自然言語の文章は、自然言語の種類に関わらず比較的容易に相互変換可能である。
【０１０７】
また、意味言語は論理表現を全て含めて実装できるため、そのように実装すれば１階述語論理に関して健全性と完全性を有すると考えられる。つまり、関係属性記述子に論理演算子を含めて定義し、処理系を実装することができる。推論についていえば、知識辞書が十分に正しければ、正しい演繹結果を得ることができる。ただし、帰納処理については、どのような知識にもいえることであるが、知識辞書内に検証すべき対象が全て漏れなく記述されている場合のみ、正しい帰納処理が行える。つまり、通常の自然現象や現実世界に対して、帰納法による推測はできても、辞書だけでは推測の正しさを保証できない。演繹として使える処理（新しい知識の作成、本発明における意味言語の加工処理）については後述する。
【０１０８】
（意味言語の情報格納イメージ）
本実施例では、時制や時間は図１８Ａのように、関係属性記述子の付加情報とする。自然言語においては、時制は言語ごとに様々な表現形式をとる。中国語のように、時制ではなく時間を表す副詞を使う言語もある。例えば、日本語には時制変化として過去・現在・未来があるが過去形と過去完了形は区別が曖昧である。そして、日本語では動詞や形容詞、言い切りの形の活用で時制を表す。他の言語の中には、未来と現在時制を区別しないものもあり、時制を副詞や分詞で表すもの、ｂｅ動詞の活用で表すものなどさまざまである。しかし、意味言語における時制や時間は単純に定義できる。本実施例では、意味言語における時制や時間を、物事の関係が成り立つのが何時なのか、という情報として定義している。時間に従って変化する可能性があるのは物事の関係だけである。物事につけられた名前が変化することはない（幼虫が成虫に変わると名前が変化するのは、実体は同じでも状態が変化したからである）。従って、関係属性記述子に時制・時間情報を付加できれば、どのような時制・時間も表現できる。今回の実施例では、関係属性記述子の構造体のメンバ変数（１０５１）として必要な場合にのみ設定する。また、時制・時間以外に、時間論理と呼ばれる「いつか」「ずっと」なども、同じく関係属性記述子の構造体のメンバ変数（１０５１）として必要な場合にのみ設定する。
【０１０９】
意味言語の文章を扱う場合、図１８Ｂのように文章の主題と、時間や場所など文章全体を修飾する情報は独立して格納したほうが扱いやすい。例えば、「私は東京五輪でメダルをとりたかった」という文章を考える。このとき、「私はメダルをとりたかった」を主題とし、「東京五輪で」は副次的な情報と考える。つまり、（１０５２）と（１０５３）のように、あえて分けるのである。「東京五輪で」という情報は、特定の語にかかるのではなく、文全体にかかる。他の文例で例えれば、「私は１２月で１６歳になる」という文章では、「１２月で」が明確にどの語にかかるのでもなく、「私は１６歳になる」という文章全体にかかっている。このように、文全体を修飾する「１値性文全体関係属性記述子」はどれかの要素に直接かかるのではない。そのため、なんらかの法則にしたがって木構造に規則的に組み込むか、別の木として分ける必要がある。本実施例では、補助情報として分けて格納し、かつセットで扱う方法を選択した。図１８Ｂの例でいうと、「私は東京五輪でメダルを取りたかった」という文章の「東京五輪で」の「で」が１値性文全体関係属性記述子である。また、「私は、競技場で走る」という文章の「競技場で」の「で」が１値性文全体関係属性記述子である。これは、英語での前置詞「ａｔ」「ｏｎ」「ｉｎ」などの情報に相当する。こういった情報は、文章全体にかかるため、日本語では特に語順の上での自由度が高い。さらに、言語によって扱いの異なる情報でもあり、英語のように前置詞で扱う場合もあれば、古代エジプト語のように活用の一部として特殊化する言語もある。さらに、同じ英語でも国によって「ａｔ」「ｏｎ」「ｉｎ」などは使い分けに違いがある。そのため、意味言語では独立した情報として保持しておき、自然言語に変換するときに適切なタイミングで適宜参照、出力するほうが扱いやすいのである。以降は、１０５２のような文章そのものを「意味主文」、意味主文を修飾する１０５３のような情報を「意味副文」として表記する。そして、意味副文をつくりだす「で」のような関係属性記述子を、「１値性文全体関係属性記述子」とよぶ。意味主文と意味副文は、プログラムとして実装する際に便利な要素と考えて説明しているが、意味言語に必須の要素ではない。
【０１１０】
なお、この「１値性文全体関係属性記述子」には他の実装方法もある。１値性文全体関係属性記述子は、意味副文を分けるため便宜上「１値性関係属性記述子」として分類しているが、もしも木構造の一部として導入する実装とするなら、「２値性関係属性記述子」として扱う必要がある。なぜなら、かかる部分は曖昧だが、まぎれもなく修飾対象と概念識別子の関係を修飾する（つまり、文章構造を修飾する）機能を持つからである。したがって、「意味主文」と「意味副文」に分けない実装とするなら、図１８Ｃや図１８Ｄのように「で」を２値性関係属性記述子として木にくみ込むのが自然である。一つの木として扱うと、データ構造はシンプルになるが、自然言語に直すときの語順の扱いが複雑化しやすい。
【０１１１】
（意味言語の表記）
意味言語は、図１９のように数式に類似した形で表記できる。このように、意味言語は関係属性記述子を関数、概念識別子を変数とした関数とみることができる。これは、コンピュータ科学でよく使われる「ポーランド記法」と同じである。つまり、演算子が関係属性記述子、数値が概念識別子のポーランド記法と見なすことができる。無論、「逆ポーランド記法」でも表記できる。本明細書では、図１９ＡにあるＬＩＳＰのＭ式のようなカッコで表す式として意味言語を記述する。後述する実施例では、後述する「知識辞書」の記録や、意味言語の出力の際にはこの式表記を用いる。もちろん、実装に際しては概念と概念の関係性を表すことができる表記ならどんなものでもよい。意味言語では、関係属性記述子と概念識別子に一意のＩＤを割り当てて処理するが、これは人間には見づらい。そこで、式の明確性や説明の明瞭性を損なわない場合は、関係属性記述子の日本語表記を「［」と「］」でくくり、概念識別子を日本語表記した、図１９Ｂのような可読性のある簡易表記も併用する。
【０１１２】
（意味言語のデータ構造）
本実施例では、概念識別子と関係属性記述子は、図２０のような情報を保持し、互いにリンクすることで木構造を構築する。実施例ではＣ言語の構造体として実装している。概念識別子構造体（図２０Ａ）は、自身の単語ＩＤと親ノードへのリンク（Ｃ言語ではポインタ）を持つ。イメージとしては図２０Ｂのようなデータ構造である。関係係属性記述子構造体（図２０Ｃ）は、自身の単語ＩＤ、時制、親ノードへのリンク、子ノードへのリンクとして概念識別子と関係属性記述子構造体へのリンクを２つずつ持つ。イメージとしては図２０Ｄのようなデータ構造である。このように、２値性関係属性記述子は、子ノードへのリンクを２つ使い、１値性関係属性記述子は１つだけ使う。
【０１１３】
全体としては、図２１のようになる。子ノードのリンクは最大２つでよいが、Ｃ言語では型チェックが厳しく、汎用型を使うときはキャストが必要になるため、それぞれの型ごとに最大数ずつリンクを持たせた（キャストするとデバッグが難しくなる）。つまり、後述する実施例では関係属性記述子から出る子ノードへのリンクは４つもあるが、２値性関係属性記述子の場合は２つ使い、１値性関係属性記述子のときは１つしか使わない。これは開発環境に合わせた結果である点は明記しておく。このように、図２１Ａの木構造は、例えば図２１Ｂのようなデータ構造で実現できる。他の新しいプログラミング言語（多態や汎用型などを持つＪＡＶＡ（登録商標）のようなプログラミング言語）で開発する場合は、リンクは２つでよい。以上の理由で子ノードへのリンクは計４つあるが、子ノードは両方概念識別子である場合も、両方関係属性記述子である場合もあるため、無効なリンクは全てＮＵＬＬ等で無効を明示しておく。
【０１１４】
意味言語による文章は、今回の実施例では、１個の意味主文と、０個以上の意味副文をセットで扱う。意味副文は０個の場合もあれば、１つ以上、複数ある場合もある。そこで、プログラム内部では一つのオブジェクト（Ｃ言語では構造体）として図２２Ａのようにひとまとまりにし、意味副文の格納場所は複数保持させる必要がある。格納イメージとしては図２２Ｂのようになる。つまり、意味主文と意味副文は木構造としては別にしつつ、セットで取り扱い、意味副文は複数格納できるようにする。
【０１１５】
（自然言語から意味言語への変換処理の流れ）
自然言語から意味言語への変換処理は、例えば日本語では図２３のように実施できる。この処理全体が本発明における意味言語への変換処理部１２に相当し、フローチャート後半の木構造を構築する処理が意味言語変換処理部１２０５に相当する。本実施例では、実装の簡素化のため、よく使われる「再帰解析法」などの構文解析は使わず、先頭からの逐次処理を用いた。日本語の場合、入力として文章データを受け取る（ステップＳ１２２１）。まず形態素解析し（ステップＳ１２２２）、形態素を先頭からループ処理していく（ステップＳ１２２３）。ループの条件は、形態素がある間である。形態素ごとに活用があるかどうか自然言語ＩＤ辞書に問い合わせることで調べる（ステップＳ１２２４）。活用がない場合は（ステップＳ１２２４がＮＯ）形態素に対応した概念識別子または関係属性記述子を認識し、単語ＩＤを割り当てる（ステップＳ１２２８）。活用がある場合は（ステップＳ１２２４がＹＥＳ）、まず形態素に対応する概念識別子に単語ＩＤを割り当てる（ステップＳ１２２５）。次に、活用辞書を参照して、活用の種類を特定し、時制や時間を確定し、概念識別子に融合している関係属性記述子を活用の種類から特定し、それぞれに単語ＩＤを割り当てる（ステップＳ１２２６）。時制や時間があった場合には、時制や時間を持っていた概念識別子の位置を記録する（ステップＳ１２２７）。この記録（ｐｏｉｎｔ＝ｗｏｒｄ）は、値の相対的な位置ではなく、絶対的な位置（最後にどの概念識別子かわかるような、Ｃ言語でいうところのポインタのような記録）を記録する。この値は、木構造が完成した後の時制の記録に使う。これらの処理を、全ての形態素に適用する。全ての要素（概念識別子、関係属性記述子）に単語ＩＤを割り振ったら、まずは文全体へかかる1値性関係属性記述子と、その記述子の前にある概念識別子（例では「東京五輪」「で」）をがあれば、副文木として木構造化する（ステップＳ１２２９）。ついで、残った関係属性記述子を先頭から順に処理していく（ステップＳ１２３０）。処理対象となった関係属性記述子の前にある概念識別子を子ノードとして部分木を作る（ステップＳ１２３１）。前回、一度も部分木を作る処理が行われていなければ（（ステップＳ１２３２がＮＯ）、初めて作られた木構造の部分木なので、これを木構造の根として最初の木構造とする。前回、一度でも部分木を作る処理が行われていれば（ステップＳ１２３２がＹＥＳ）、前回処理した関係属性記述子（ｇｌｕｅ２）の空きノードに、今回作成した部分木のノードであるｇｌｕｅを接続する（ステップＳ１２３３）。その後、今回処理した関係属性記述子の位置を記録する（ステップＳ１２３４）。全ての関係属性記述子を処理し終わったら、（ｐｏｉｎｔ＝ｗｏｒｄ）で記録していた概念識別子の属する親ノードに当たる関係属性記述子に時制・時間を登録する。（例では「とる」）の属する２値性関係属性記述子に付加情報として時制・時間を登録する（ステップＳ１２３５）。
【０１１６】
具体的な処理例としては、まず「私は東京五輪でメダルをとりたかった」という自然言語文章を受け取る（１２３６）。次に形態素解析し（１２３７）、活用を認識して（１２３８）、具体的な概念識別子や関係属性記述子として分解する（１２３９）。次に、文全体への１値性関係属性記述子があるので、「東京五輪で」を副文として木構造にする（１２４０）。次に、先頭から最初の関係属性記述子「は」に注目し、「は」の前の要素「私」とともに「私は」のノードを作る（１２４１）。これは最初に作られた主文の木構造のパーツなので、追加の処理はしない。次に、「メダルを」のノードを作る（１２４２）。前回処理した「は」の空きノードに「メダルを」のノードを追加する（１２４３）。次に、「とりたい」が分解された「とる＋〜したい」のノードを作る（１２４４）。前回処理した「を」の空きノードに「とる＋〜したい」のノードを追加する（１２４５）。最後に、時制を持っていた単語（この場合は「とる」）の属する２値性関係属性記述子「を」に付加情報として時制の「過去」を登録する（１２４６）。
【０１１７】
（意味言語から自然言語への変換処理の流れ）
意味言語から自然言語へ変換する処理を、順を追って説明する。この処理が、本発明における自然言語への変換処理部１４に相当する。まずは、意味言語から自然言語へ変換する処理において使う、活用単位というしくみを、図２４にて説明する。意味言語では、図２４Ａのように関係属性記述子をノードとして木構造を形成し、概念識別子の関係などを記録する。このとき、意味言語においては、単語の活用が表す意味を切り離し、「とりたい」の「とる」（１２５４）と分けて、時制や希望を表す別の関係属性記述子として記録している（１２５２、１２５３）。これを日本語として出力する際には、日本語文法に則って、１２５２、１２５３、１２５４をまとめて活用形として出力する必要がある。そのため、日本語処理においては、これらをまとめた１２５１のようなまとまりを「活用単位」とよび、まとめて処理する実装となっている。本実装では、活用単位は大きく分けて３タイプに対応している。いずれも活用辞書に格納された情報によって具体的な活用文字列を確定する。図２４Ｂは、１値性関係属性記述子に、活用のある概念識別子が接続した状態である。例えば、「希望」＋「とる」で「とりたい」といった例である。さらに図２４Ｃのように１値性関係属性記述子が複数連続する場合もある。この場合、下位（図で下方向）の概念識別子を再帰的に修飾する。例えば「希望」＋「受動」＋「とる」で「とられたい」といった例である。また、日本語においては時制を活用で表すため、図２４Ｄのように時制のある２値性関係属性記述子の下位に活用のある概念識別子がある場合は、その時制も活用単位に含まれる。例えば、「過去時制」＋「とる」で「とりたかった」といった例である。このように、活用単位は、日本語文法上ひとまとまりなので、日本語出力の際にはまとめて扱う。
【０１１８】
活用単位を扱うには、出力の前に「活用単位を認識する処理」と、「活用単位に対応した活用文字列を得る処理」が必要である。活用単位は、木構造における特定のノード以降（特定のノードから下、葉の方向）となるので、範囲を認識し、その範囲をまとめて処理する。
【０１１９】
（活用単位の処理の流れ）
「活用単位か判定する処理」を図２５に示す。この処理と、後述する図２６の処理が、本発明における活用処理部１４０１に相当する。この処理は、木構造を処理していく中で、「これから処理する関係属性記述子以降が活用単位でないか、活用単位ならどの範囲を処理すべきか」を知るために必要である。従って、入力として「意味言語文章」と「意味言語文章中の、判定する関係属性記述子の位置」が必要である。活用単位を認識する処理では、処理結果として、１つまたは２つの結果が得られる。「活用単位であるかどうか」の真偽値は必ず得られる結果である。さらに、結果が活用単位であると判定され、その範囲が２値性関係属性記述子の左右どちらである場合（図２４Ｄのような場合）のみ、左右どちらかを示す２種類の値が得られる。活用単位を認識する処理では、意味言語文章（ステップＳ１２６１）、判定する関係属性記述子の位置（ステップＳ１２６２）、を入力として受け取る。次に、処理の開始位置（木構造の走査開始位置）を、（ステップＳ１２６２の入力）を使って設定する（ステップＳ１２６３）。次に、木構造を下方向に行きがけ順に辿る（ステップＳ１２６４）。なお、このループ処理は行きがけ順で実装しているが、途中に２値性関係属性記述子があれば必ず分岐して判定結果が出る処理があるので、きちんとした文章であれば戻ることはない。処理中の関係属性記述子ｇｌｕｅが２値性でなければ（ステップＳ１２６５がＮＯ）、関係属性記述子ｇｌｕｅは１値性なので、ｇｌｕｅの子にある概念識別子が活用があるかどうか判定する（ステップＳ１２６６）。概念識別子が活用のあるものなら（ステップＳ１２６６がＹＥＳ）、指定の関係属性記述子ｐｏｓｉｔｏｎ以降（ｐｏｓｉｔｉｏｎを含む）が、活用単位であると判定する（ステップＳ１２７５）。処理中の関係属性記述子ｇｌｕｅの子が活用のある概念識別子でない（つまり活用のない概念識別子であるか、さらに関係属性記述子が接続しているかのどちらかである）のなら（ステップＳ１２６６がＮＯ）、ｇｌｕｅの子を調べる。ｇｌｕｅの子が概念識別子でないなら（ステップＳ１２６７がＮＯ）、処理対象の関係属性記述子をｇｌｕｅの子に変更する（ステップＳ１２６８）。子が存在する限り、ループは継続する（ステップＳ１２６９）。ループをそのまま終了してしまった場合は、途中で活用のある概念識別子が見つからなかったということなので、ｐｏｓｉｔｉｏｎ以降が活用単位でないと判断する（ステップＳ１２７０）。ｇｌｕｅの子が概念識別子なら（ステップＳ１２６７がＹＥＳ）、ループを抜け、ｐｏｓｉｔｉｏｎ以降が活用単位でないと判断する（ステップＳ１２７０）。処理対象の関係属性記述子ｇｌｕｅが２値性関係属性記述子である場合（ステップＳ１２６５がＹＥＳ）、ｇｌｕｅの両側の関係属性記述子を調査する。まず、ｇｌｕｅが時制を持ち、かつ左子ノードが活用のある概念識別子なら（ステップＳ１２７１がＹＥＳ）、ｐｏｓｉｔｉｏｎより左下（ｐｏｓｉｔｉｏｎを含まない）が時制のみ（１値性の関係属性記述子が介在しない）の活用単位であると判定する（ステップＳ１２７４）。ｇｌｕｅが時制を持たないか左子ノードが活用のある概念識別子なら（ステップＳ１２７１がＮＯ）、さらに右子ノードを調査する。ｇｌｕｅが時制を持ち、かつ右子ノードが活用のある概念識別子なら（ステップＳ１２７２がＹＥＳ）、ｐｏｓｉｔｉｏｎより右下（ｐｏｓｉｔｉｏｎを含まない）が時制のみ（１値性の関係属性記述子が介在しない）の活用単位であると判定する（ステップＳ１２７３）。ｇｌｕｅが時制を持たないか右子ノードが活用のある概念識別子なら（ステップＳ１２７２がＮＯ）、ｐｏｓｉｔｉｏｎ以降が活用単位でないと判断する（ステップＳ１２７０）。このように、活用単位であるかどうか判定し、その形態（ｐｏｓｉｔｉｏｎ以降か、ｐｏｓｉｔｉｏｎより左右どちらか下）が結果として得られる処理である。
【０１２０】
「活用単位に対応した活用文字列を得る処理」を図２６に示す。この処理と前述した図２５の処理が、本発明における活用処理部１４０１に相当する。この処理は、前述の「活用単位を認識する処理」によって活用単位であることを調査した上で行われる処理である。活用単位は、「１値性関係属性記述子の下に概念識別子が接続する」か、「２値性関係属性記述子の下の左右どちらかに概念識別子が接続する」のいずれかである。よって、活用単位を処理するには、意味言語文章（ステップＳ１２７６）、活用単位の先頭（活用単位の一番上の親ノード）の位置（ステップＳ１２７７）、２値性関係属性記述子の場合は、左右どちらのリンクが対象の概念識別子かの情報（ステップＳ１２７８）の３つないしは２つの入力が必要である。３つのうち、左右情報（ステップＳ１２７８）はないこともある。入力を受けて、処理の開始位置をｐｏｓｉｔｉｏｎに設定する（ステップＳ１２７９）。処理は、ノードを末尾まで辿り（葉の方向に末尾に至るまで辿る）、見つけた順にｇｌｕｅを処理していく（ステップＳ１２８０）。ｇｌｕｅが１値性関係属性記述子でないなら（ステップＳ１２８１がＮＯ）、次の判定に移る。ｇｌｕｅが２値性関係属性記述子でないか、時制を持つのでないなら（ステップＳ１２８２がＮＯ）、次の判定に移る。ｇｌｕｅのＬＲ側の子ノード（ＬＲは左か右かを指定する値で、ｐｏｓｉｔｉｏｎに２値性の関係属性記述子が指定された場合は必ず設定される）に活用のある概念識別子があれば（ステップＳ１２８３がＹＥＳ）、検索条件に概念識別子の単語ＩＤを追加してループを抜ける（ステップＳ１２８８）。ループは木構造の末尾でない限り継続する（ステップＳ１２８４）。ｇｌｕｅが２値性関係属性記述子で、かつ時制を持つなら（ステップＳ１２８２がＹＥＳ）、検索条件に時制のＩＤを追加する（ステップＳ１２８９）。ｇｌｕｅのＬＲ側の子ノードに活用のある概念識別子がなければ（ステップＳ１２８３がＮＯ）、何もせずループを続ける。ｇｌｕｅが１値性関係属性記述子であれば（ステップＳ１２８１がＹＥＳ）、検索条件にｇｌｕｅの単語ＩＤを追加する（ステップＳ１２８６）。ｇｌｕｅの子ノードが概念識別子であれば（ステップＳ１２８７がＹＥＳ）、検索条件に概念識別子の単語ＩＤを追加してループを抜け（ステップＳ１２８８）、検索条件にあう活用文字列を活用辞書から取得する（ステップＳ１２８５）。ｇｌｕｅの子ノードが概念識別子でなければ（ステップＳ１２８７がＮＯ）、次の関係属性記述子を調べるためループに戻る。全てのループ処理が終わったら、検索条件としてｋｅｙに記録された単語ＩＤを元に、活用辞書から活用文字列を取得し（ステップＳ１２８５）、処理結果とする。
【０１２１】
意味言語から自然言語への変換処理は、図２７のように実施される。この処理が、本発明における自然言語変換処理部１４０４に相当する。意味言語は木構造で記録されているため、関係属性記述子を処理単位として、再帰的な処理をする。つまり、関係属性記述子に注目し、処理しながら、その子ノードに関係属性記述子があれば、同様の処理を再帰的に適用する。そのため、自身を呼び出す再帰的な定義を持つＧｌｕｅＳｕｂサブルーチンを呼び出すことで実現する。まず、意味言語文章を入力として受け取る（１４２１）。次に、最初に処理すべき関係属性記述子として、木構造の根に当たる関係属性記述子を変数ｇｌｕｅに指定する（１４２２）。最後に、サブルーチンとして定義されたＧｌｕｅＳｕｂを、ｇｌｕｅと意味言語文章を入力として呼び出す（１４２３）。
【０１２２】
意味言語から自然言語への変換処理のサブルーチンであるＧｌｕｅＳｕｂは、図２８のように再帰的に実施される。まず、意味言語で記録された意味言語文章ｆｏｒｍ（ステップＳ１４３１）と、処理対象の関係属性記述子ｇｌｕｅ（ステップＳ１４３２）を入力として受け取る。処理するｇｌｕｅが２値性である（ステップＳ１４３３がＹＥＳ）なら、次の判定処理に進む。ｇｌｕｅの左子ノード以降が活用単位なら（ステップＳ１４３４がＹＥＳ）、活用単位の活用文字列を取得し（ステップＳ１４３５）、活用文字列を出力する（ステップＳ１４３６）。ｇｌｕｅの左子ノード以降が活用単位でないなら（ステップＳ１４３４がＮＯ）、次の判定に進む。ｇｌｕｅの左子ノードが概念識別子でなければ（ステップＳ１４３７がＮＯ）、左子ノードを指定してＧｌｕｅＳｕｂ自身を再帰的に呼び出す（ステップＳ１４３９）。ｇｌｕｅの左子ノードが概念識別子であれば（ステップＳ１４３７がＹＥＳ）、左子ノードの文字列を出力する（ステップＳ１４３８）。次に、ｇｌｕｅの文字列を出力する（ステップＳ１４４０）。ｇｌｕｅが日本語でいうところの格助詞で、かつ意味副文があれば（ステップＳ１４４１がＹＥＳ）、意味副文の子ノードの文字列を出力し（ステップＳ１４４２）、意味副文の関係属性記述子の文字列を出力する（ステップＳ１４４３）。ｇｌｕｅが格助詞でないか、または意味副文がなければ（ステップＳ１４４１がＮＯ）そのまま次の判定に移る。ｇｌｕｅの右子ノード以降が活用単位であれば（ステップＳ１４４４がＹＥＳ）、活用単位の活用文字列を取得し（ステップＳ１４４５）、活用文字列を出力する（ステップＳ１４４６）。ｇｌｕｅの右子ノード以降が活用単位でないなら（ステップＳ１４４４がＮＯ）、次の判定に進む。ｇｌｕｅの右子ノードが概念識別子でなければ（ステップＳ１４４７がＮＯ）、右子ノードを指定してＧｌｕｅＳｕｂ自身を再帰的に呼び出す（ステップＳ１４４９）。ｇｌｕｅの右子ノードが概念識別子であれば（ステップＳ１４４７がＹＥＳ）、右子ノードの文字列を出力する（ステップＳ１４４８）。一方、対象のｇｌｕｅが２値性でない（１値性である）なら（ステップＳ１４３３がＮＯ）、次の判定に移る。ｇｌｕｅの子ノード以降が活用単位であれば（ステップＳ１４５０がＹＥＳ）、活用単位の活用文字列を取得し（ステップＳ１４５１）、活用文字列を出力する（ステップＳ１４５２）。ｇｌｕｅの子ノード以降が活用単位でないなら（ステップＳ１４５０がＮＯ）、次の判定に進む。ｇｌｕｅの子ノードが概念識別子でなければ（ステップＳ１４５３がＮＯ）、子ノードを指定してＧｌｕｅＳｕｂ自身を再帰的に呼び出す（ステップＳ１４５６）。ｇｌｕｅの子ノードが概念識別子であれば（ステップＳ１４５３がＹＥＳ）、子ノードの文字列を出力する（ステップＳ１４５４）。最後に、ｇｌｕｅの文字列を出力する（ステップＳ１４５５）。
なお、単語ＩＤに対応する文字列は、全て日本語ＩＤ辞書から取得する。また、自然言語を出力する先である通知部（１９）は、発明の実施態様により、メモリであったりコンソールなど適切なものを想定している。後述する実施例では、コマンドプロンプトに表示またはファイルにテキストとして出力する機能として実装している。
【０１２３】
ステップＳ１４４１の処理についてもう少し説明する。意味副文の情報は、特に日本語においてはいろいろな位置で出力できる。例えば、「私は、東京五輪でメダルを取りたかった」「東京五輪で、私はメダルを取りたかった」「私は、メダルを取りたかった、東京五輪で」はいずれも意味が通じる。試験実装では、最も教科書的な模範的位置に出力している。
【０１２４】
（意味言語から自然言語への変換例）
図２９は、意味言語から自然言語に変換する処理の例である。図２９Ａは処理対象の意味言語文、図２９Ｂはその内部表現である木構造である。図２９Ｃは、木構造の行きがけ順の辿り方における処理順序である。左優先で、見つけた順に処理していく。この例では、まず意味主文の木構造の根である「は」関係属性記述子が最初の処理対象である。左ノードを出力し、関係属性記述子自身を出力する（１４６１）。次に、格助詞が出力されたので意味副文を出力する（１４６２）。次に、右ノード「を」を対象とする。左ノード「メダル」を出力、関係属性記述子自身を出力する（１４６３）。右ノードは活用単位なので、時制を含めて活用文字列を取得し、出力する（１４６４）。
【０１２５】
（各辞書のデータ構造）
自然言語ＩＤ辞書は、図３０Ａのような情報をもつデータとして作成する。この辞書が、本発明における自然言語ＩＤ辞書１６に相当する。今回は、ＵＴＦ−１６文字コードのテキスト形式で作成した。本実施例では、一行目に単語ＩＤ辞書の文字コード、言語の種別を記述している（１６２１）。二行目に自然言語ＩＤ辞書のバージョンを記述している（１６２２）。以降は、単語ＩＤ、単語種別数値、自然言語における表記を列挙している。自然言語ＩＤ辞書の目的は、自然言語の表記と単語ＩＤの対応付けを行い、相互変換を行なうための情報を得ることである。従って、この辞書は日本語用、古代エジプト語用、英語用・・・と自然言語ごとに別個に作成する必要があり、なおかつ単語ＩＤを共有するように作成する必要がある。例えば、今回の試験実装では「男」は６０２３という単語ＩＤが割り振られているので、英語における自然言語ＩＤ辞書の「Ｍａｎ」、ヒエログリフでの自然言語ＩＤ辞書の絵文字「男」も図３０ＢのようにおなじＩＤを割り振る。自然言語ＩＤ辞書は、少なくとも「単語ＩＤ」と「自然言語表記」が必要である。加えて、その単語の大雑把な分類情報があれば、自然言語へ変換する際に便利である。後述する実施例では、単語種別数値として、日本語ＩＤ辞書に記録し、適宜参照できるようにしている。
【０１２６】
知識辞書は、図３１のような情報をもつ。この辞書が、本発明における知識辞書１７に相当する。知識辞書は、あらかじめ用意する「一般知識辞書」と、文章等の処理中に知識を追加更新していく「一時知識辞書」の２つがある。図３１Ａは知識辞書のうち、一般常識を記録する一般知識辞書図である。図３１Ｂは知識辞書のうち、一時知識辞書である。知識辞書は意味言語で表現され、意味言語情報処理に必要なだけの網羅的な情報をもつ。この辞書の情報量と質が、意味言語情報処理の質を左右する。知識辞書の情報は、どの自然言語にも属さない共有知識であり、この辞書は一度作ってしまえばどの国の意味言語情報処理システムでもそのまま使える共有リソースである。
【０１２７】
知識辞書の保存形式は、処理の際に意味言語として解釈できればなんでもよい。本実施例ではテキスト形式で列挙しているが、独自のバイナリ形式で記録したり圧縮することもできる。他の形式については、図５１にも説明している。前述した意味主文と意味副文という形式を使用する場合は、それぞれカッコで完結しているため、１行にまとめて記録しても不都合はない。もちろん、意味主文と意味副文がセットで扱われるなら、どのような表記・記録方法でもよい。意味言語の情報の一部をまとめて、別のデータの副情報とすることもできる。特に、意味副文は、時間や場所などを限定する情報であることが多いので、意味言語を使わずに時系列データとして表したり場所データと紐付けすることもできる。意味言語の別表記については図５０、図５１に別に紹介する。
【０１２８】
人間が使う言語は主語も助詞も省けるものは省くため、これらを推定するために不可欠な知識は多い。この知識は、織田信長の生年月日のような、正に知識というものだけではない。我々人間が成長する中で常識として学んでいく、「物は支えがないと落ちる」とか「人間は跳べるが単独では飛べない」などの無意識にあるものも含む。
【０１２９】
一般知識辞書は、図３１Ａのように様々な事柄の知識を意味言語で大量に記録する。一般知識辞書は、人間に一般常識として共有される情報を格納する。例えば、「人間は跳べる」「人間は飛べない」「リンゴは植物である」などといった知識である。この辞書はシステムの一部としてあらかじめ作成する。１７０１は、意味言語として単語ＩＤのみで記述されたものであり、記録形式としてはこれで事足りる。１７０２は日本語で簡易表記したもの、１７０３は日本語で文章として大まかに表現したものである。本実施例では、テキストファイルとして作成し、一行目に文字コードとコメント等の自然言語の種類を指定している。本来、知識辞書は無国籍であり、自然言語は必要ないが、メンテナンス時には自然言語によるコメントがあったほうがやりやすいため、実施例では指定している。ただし、あくまで補足情報である。２行目には辞書のバージョンを記述している。３行目に実装レベルを記述している。４行目以降は、意味言語で記述された知識である。実装レベルについては、図５２に関連して説明している。
【０１３０】
一時知識辞書は、図３１Ｂのような話の過程や文脈で蓄積する知識である。従って、処理を通して随時追加、変更される。１７０４は、意味言語として単語ＩＤのみで記述されたものであり、記録形式としてはこれで事足りる。１７０５は日本語で簡易表記したもの、１７０６は日本語で文章として大まかに表現したものである。人間同士の会話では、既にわかっていると思われる内容は略されることがあるが、その内容は既に話した内容による。また、個人の事情が平均的な人間と異なる場合もある。人間の作った物語（ファンタジーやフィクション）では、一般常識とかけ離れた設定（物語を語るのが猫である等）もありうるが、これも既に書かれた内容による。こういった、一般常識だけではわからない、今だけの一時的な知識を保持するのが一時知識辞書である。例えば、「ハリー・ポッターは魔法使いである」「人間は走れるが、下半身麻痺の○○君は走れない」など、一般常識を上書きしたり、補足して処理する知識である。この知識は、文章や会話の処理が進むとともに追加されていく。こういった知識がなければ、「吾輩は猫である」などを読み進める上ですぐに解釈に齟齬を来たす。
【０１３１】
（意味言語の木構造に対する処理）
意味言語の知識は、図３２のような処理ができる。この処理が、本発明における意味言語木の操作処理部１３０５に相当し、これらとその他の意味言語に対する処理を適切に呼び出して適用していくのが意味言語操作処理部１３である。図３２では関係属性記述子は四角で囲んだ一桁の番号で表している。概念識別子は丸で囲んだ２桁の番号で表している。それぞれの番号は単語ＩＤの相対的な大小を表している（実際の定義とは異なる連番にしてある）。意味言語は木構造で表現でき、ノードとなっている関係属性記述子は自身の子ノードの関係性を表す。これはデータ構造としては２分木であり、２分木に対して行える処理、アルゴリズムが、同様に可能である。なお、コンピュータ科学における２分木は、一般的に左ノードと右ノードを区別する「順序木」の一種とされ、本実装でも順序木として扱う。ただし、意味言語の木構造は、特定の条件を満たした場合（後述する）は順序を入れかえることができる点が異なる。つまり条件を満たせば、「データ追加（図３２Ａ）」「データ挿入（図３２Ｂ）」「データ置換（図３２Ｃ）」「データ削除（図３２Ｄ）」「データの並べ替え（図３２Ｅ）」等が可能である。また、「データの検索」「木の複製」「木同士の比較」も可能である。ただし、一般的な木に対するアルゴリズムが全て適用可能ではあるが、木の構造自体に文章の意味があるので、文章の意味を失わない処理にするにはいくつかの制約がある。制約を加えた、意味言語へ適用する木構造への処理、アルゴリズムを以降は「意味言語操作」とよぶ。「データ追加・挿入・置換」は、元の自然言語文章を反映した、図１３や図１５等のような形を構築するために使う。または図３２Ｃで後述するように、「等価である」などの条件付きで適用される必要がある。「データ削除」は、他の処理に付随して使われることはあっても、削除してしまうと文章要素が失われるため単独では使わない。「データの検索」「木の複製」「木同士の比較」は、木構造変化を伴わないのでほとんど制約はない。「データの並べ替え」は、条件付きで可能である。データの並べ替え（後述する正規化）が必要なのは、自然言語から変換された意味言語文章と他の意味言語文章を扱うときである。自然言語では同じ内容をいくつもの形式で表現でき、見た目の構造が違っていても内容は同じ文章がありえる。「意味言語への変換処理部（１２）」では、自然言語を先頭から処理していくため、木構造は自然言語の語順をある程度反映する。つまり、「私はケーキとお茶が好きである。」と「私はお茶とケーキが好きである」などのように語順が違うと、その語順を反映した意味言語文章になる。この文章は互いに意味するところは同じなのに「木同士の比較」では同じであると判定できない。こういった場合は、意味を変更しないように制約を守りながら、一定のルール（本実装では単語ＩＤの昇順）で並べ替えることで、文意を損なわないように木の構造を統一化できる。つまり、これが意味言語の正規化の意義である。
【０１３２】
意味言語操作処理の意味言語の正規化操作をもう少し説明する。意味言語の正規化の主たる目的は、意味が同じだが木構造が違う二つの文章を規則に従って加工し、同一の木構造に揃えることである。意味言語文章の正規化の方法の一つは、ノードの並べ替えで実行できる。主要な並べ替え方は２通りあり、ひとつは１３０６のような、関係属性記述子の中での並べ替えである。これは、１３０６の１２番と１３番が属している３番の関係属性記述子が、左右の子ノードの区別を持たない場合に可能である。もう一つの並べ替えは１３０７のような、一直線に並んだ１値性関係属性記述子の親ノードと子ノードの並べ替えである。並べ替えのルールは一貫していれば何でもよいが、後述する実施例では単語ＩＤの昇順で並べ替えている。
【０１３３】
意味言語操作処理の意味言語の並べ替えによる正規化操作ができるかどうかは、後述する実施例では図３３のように定義、判定している。これは、いわゆるソースコードへの定義の直書きと呼ばれるものである。並べ替えできる関係属性記述子かどうかは関係属性記述子の定義に記録してもよいが、２つの理由で処理中に直書き（マクロ展開による直書き）している。１つ目の理由は、並べ替え可能な関係属性記述子の種類は比較的限られていることである。２つ目の理由は、並べ替え処理はかなり重い処理となり、単語ＩＤで並べ替え可能かどうか問い合わせる関数の呼び出しがボトルネックとなることである。ＩＦ文の中に展開できるマクロ定義を使ったほうが処理を高速化できるため、Ｃ言語のマクロ定義を使用した。もちろん、単語ＩＤの問い合わせで並べ替えできるかどうかを判定するよう実装してもよい。図３３Ａは、マクロ定義で、並べ替えが可能な関係属性記述子のＩＤを書き出し、それをさらに引数つきマクロに定義しなおしている。ＣＡＮ＿ＣＨＡＮＧＥ＿ＹＯＫＯで、子ノード同士の横並べ替えが可能な関係属性記述子である判定を定義している。ＣＡＮ＿ＣＨＡＮＧＥ＿ＴＡＴＥで、親子ノードの縦並べ替えが可能な関係属性記述子である判定を定義している。図３３Ｂのように記述すると、マクロの定義に基づいて図３３ＣのようにＩＦ文の中に展開される。２値性関係属性記述子の多くは方向性がある（左右の子に順序がある）。例えば、「ケーキを食べる」と「食べるをケーキ」は違う。つまり、左と右の子ノードを入れかえる処理をしてしまうと意味が変わってしまう（それどころか意味が通らない）。左と右の子の関係に方向性がない場合（例えば、「イコール、＝（ＩＤ＝３）」「かつ（ＩＤ＝２１７）」「または（ＩＤ＝６０）」「と（ＩＤ＝９）」のような関係属性記述子）では交換可能である。このうち、「イコール（＝）」は注意が必要である。
【０１３４】
「イコール（＝）」は日本語では助詞「は」で表すことが多いが、「は」は多くの場合完全な「等価」ではない。「犬は動物」という文章は、「犬＝動物」ではなく、「犬≦動物」である。「動物」のほうが上位概念であり、犬はその構成要素の一つに過ぎない。これは入れかえると「動物は犬」であり、とんでもない知識になってしまう。本実装の関係属性記述子の定義では、助詞の「は」は、ＩＤが３の完全等価と、ＩＤが１の限定等価（≦）に分けている。日本語での会話では、多くの場合ＩＤが１の限定等価しか使わない。ＩＤが３の完全等価は、知識としては必要だが、日常会話で「みかんは（＝）蜜柑だよ」などと完全に等価であることに言及することは滅多にないし、完全に等価であるという意味の発言かどうかは（知識がなければ）聞きなおさないとわからない。例えば、「犬はＣａｎｉｓｌｕｐｕｓ（カニスループス）」といわれても、犬の学名を知らなければ、「それって、犬イコールＣａｎｉｓｌｕｐｕｓってこと？」と聞きなおさなければ、Ｃａｎｉｓｌｕｐｕｓが上位概念である可能性を捨てきれない。逆にいえば、知識辞書があれば日常会話の「は」がどちらであるかは判定できるのである。従って、処理の根本である知識辞書では、完全等価の「は」と限定等価の「は」を厳密に使い分ける必要がある。このように、子ノードの交換は、ＩＤが３の等価の場合は可能であるが、ＩＤが１の場合は単純な交換はできない。
【０１３５】
一方、１値性関係属性記述子が一直線に連続している場合の多くは、互いを入れかえても意味は変わらない。１値性関係属性記述子は、自身の子ノード一つのみを修飾する。これは「活用単位」のようにその下位ノードを次々に再帰的に修飾し、まとめて検索条件となるため、処理する上で優先順位はない。従って、「させる（ＩＤ＝６）」「ｎｏｔ（ＩＤ＝１０）」「だろう（ＩＤ＝３０）」「命令（ＩＤ＝３１）」「もし（仮定）（ＩＤ＝４８）」「受動使役（ＩＤ＝５５）」「誘い（ＩＤ＝５６）」「仮定条件（ＩＤ＝５７）」「禁止（ＩＤ＝５８）」「要請（ＩＤ＝５９）」「結果として（ＩＤ＝６７）」のような１値性関係属性記述子が一直線に連続する部分では、親ノードと子ノードを自由に入れかえることができる。
【０１３６】
意味言語操作処理の意味言語の並べ替えによる正規化の操作は図３４のように行える。この処理が、本発明における意味言語正規化処理部１３０１に相当する。この例では、並べ替え可能ならＩＤを左より右を大きく、上より下を大きく揃える。つまり、右昇順、下昇順である。まず、意味言語文章を入力として受け取る（ステップＳ１３１１）。次に、関係属性記述子ｇｌｕｅを行きがけ順で辿るループ（ステップＳ１３１２）に入る。ループは、行きがけ順で全ての要素を走査し終わるまで続く。ｇｌｕｅが２値性であれば（ステップＳ１３１３がＹＥＳ）、次の判定に進む。ｇｌｕｅが子ノードの交換が可能な関係属性記述子であれば（ステップＳ１３１４がＹＥＳ）、二つの子ノードの単語ＩＤを取得する（ステップＳ１３２１）（ステップＳ１３２２）。左の値＞右の値なら（ステップＳ１３２３がＹＥＳ）、子ノードを入れ換える（ステップＳ１３２４）。左の値＞右の値でないなら（ステップＳ１３２３がＮＯ）、なにもしない。一方、ｇｌｕｅが２値性でないなら（ステップＳ１３１３がＮＯ）、次の判定に移る。ｇｌｕｅと子ノードを比較し、どちらも交換可能な１値性関係属性記述子なら（ステップＳ１３１５がＹＥＳ）、ｇｌｕｅとｇｌｕｅの子ノードの単語ＩＤを取得する（ステップＳ１３１６）（ステップＳ１３１７）。上の値＞下の値なら（ステップＳ１３１８がＹＥＳ）、ｇｌｕｅとｇｌｕｅの子ノードを入れ換える（ステップＳ１３１９）。そして、ｇｌｕｅが１値性である限り対象の関係属性記述子の位置を遡る（ステップＳ１３２０）。ｇｌｕｅと子ノードを比較し、どちらかが交換可能な１値性関係属性記述子でない（ステップＳ１３１５がＮＯ）または上の値≦下の値（ステップＳ１３１８がＮＯ）の場合は、何もせずループを継続する。一方、Ｇｇｌｕｅの子ノードが交換できないなら（ステップＳ１３１４がＮＯ）、何もせずループを継続する。（ステップＳ１３１９）（ステップＳ１３２０）については説明を補足する。この２つのステップは、バブルソートをするために用意されている。１値性関係属性記述子は、２つとは限らずいくつも連続している場合がある。その場合、全ての対象を並べ替える必要がある。バブルソートは、対象範囲を調べ、一個でも並べ替えがあれば検査を先頭からやり直す。そのために遡る処理が必要である。もちろん、ここはソートであれば何でもよい。
【０１３７】
（意味言語の加工方法）
意味言語操作処理の、置換操作をもう少し説明する。複数の知識から別の知識をつくりだすのが置換操作である。これは、人工知能分野における推測、推論の処理である。例えば、「人はいつか死ぬ」「Ｘは人である」ゆえに、「Ｘはいつか死ぬ」といった論法を、具体的に操作する。この「Ｘは人である」場合の「は」は、限定等価であり、逆にはできない（人はＸである、は正しくない）。もう少し具体的にいえば、「人」は「Ｘ」を含む上位概念である。式で書けば、「Ｘ≦人」である。置換操作は置換対象が全く同じか、少なくとも下位概念であることが条件である。つまり、ＡをＢに置換するためには、「Ｂ≦Ａ」である必要がある。
【０１３８】
意味言語の置換の主たる目的は、知識の文章に他の知識を導入し、新しい知識をつくりだすことである。意味言語の知識は、式で書けば図３５のように関数処理と似た方法で代入、加工できる。図３５Ａは、単語ＩＤで表記された知識の加工である。説明の簡便のため、同様の内容の処理を日本語表記したものを図３５Ｂに示す。意味言語の加工を使えば、知識辞書に直接記録されている知識だけでなく、基礎的な知識関係から新たな知識をつくりだすことができる。実際の構造の変化は、図３５Ｃのデータ置換である。そして、その置換が「知識に基づいた、文意を失わない置換」であるためには、元の知識の一部を別の知識からの情報で置換する必要がある。なお、本実装では、ノード一つでも木構造（部分木）として扱っている。
【０１３９】
具体的な条件を図３６で説明する。木を加工するには、「元の知識の木構造（１３３１）」と「別の知識の木構造（１３３２）」があり、「元の知識の木構造に存在する部分的な木（１３３３）」を、別の知識も部分的な木（１３３４）として持っている必要がある（木の構成要素は木であるので、単一のノードでも木として扱える）。なおかつ、別の知識の部分的な木が等価か、部分的な等価で上位概念であるなど、置換できる条件が成立している必要がある。別知識である１３３２は、「１６番は１２番である」と述べているに等しい。これは、例えば「犬は動物である」といっているのと同じ関係であり、つまり１２番が上位概念である。この上位概念が元の知識（１３３１）にも含まれているので、１２番を別知識から置き換えることができるのである。犬で例えるなら、動物全般に関して述べられている文章（元の知識）の、「動物」の部分を「犬」で置換するのと同義である。また、（１３３５）の知識と（１３３６）の知識を元に、（１３３７）と（１３３８）を上位概念として置換することも可能である。この場合、（１３３６）は単純な語ではなく、「秋田の犬」のような文章構造である。これは、動物全般について述べられている文章の「動物」の部分を「秋田の犬」で置換するのと同じである。
【０１４０】
意味言語の加工の処理方法を図３７に示す。この処理が、本発明における意味言語加工処理部１３０２に相当する。まず、入力として元となる知識の意味言語文章１を受け取る（ステップＳ１３４１）。また、もう一つの入力として、別知識として元となる知識の意味言語文章２を受け取る（ステップＳ１３４２）。次に、ｔｒｅ２が置換可能な関係属性記述子を持っているか調べる。調べ方は、図３３と同じく、マクロ定義で関係属性記述子の種類を定義し、行きがけ順で調査している（ステップＳ１３４３）。置換可能であれば（ステップＳ１３４３がＹＥＳ）、ｔｒｅ２Ｌにｔｒｅ２の左のデータを、ｔｒｅ２Ｒにｔｒｅ２の右のデータを記録する。この二つの値は、ノード一つの場合も、部分的な木構造の場合もある（ステップＳ１３４４）。次に、元知識であるｔｒｅ１に、別知識の右値ｔｒｅ２Ｒ（上位概念など）があるかどうか調べる（ステップＳ１３４５）。存在すれば（ステップＳ１３４５がＹＥＳ）、一致範囲を調べ、ｔｒｅ１ｖに記録する（ステップＳ１３４６）。次に、ｔｒｅ１ｖを、木の置換処理でｔｒｅ２Ｌに置き換える（ステップＳ１３４７）。これ以外の場合、つまりｔｒｅ２が置換可能でない場合（ステップＳ１３４３がＮＯ）、またはｔｒｅ１にｔｒｅ２Ｒがない場合（ステップＳ１３４５がＮＯ）は置換は行われない。
【０１４１】
意味言語の木構造の比較の処理方法を図３８に示す。木同士の比較は、構文木のアルゴリズムでは一般的である。しかし、本発明では木の一部分をやり取りする処理を含むため、誤解を防ぐ意図で説明する。木全体を比較するときは図３８Ａのように、二つの木を同じルールで辿り、ノードの情報を比較して全てが同じであることを確認する。後述する実施例では行きがけ順で、不整合がひとつもなく根に戻ってくればチェック完了である。次に片方の木構造にもう片方の部分木が在るかどうかのチェックである。この場合、片方の木のチェック開始地点を順にずらしていき（図３８Ｂでは行きがけ順）、もう片方の木の全てのノードが存在すれば、チェック完了で部分的な木が存在すると判定できる（図３８Ｂの３回目のチェック）。
【０１４２】
意味言語を理解する操作は、例えば図３９のように行える。この処理が、本発明における意味言語理解処理部１５に相当する。まず、入力として、理解できるかどうか判定したい文章を、意味言語文として受け取る（ステップＳ１５０１）。次に、受け取った意味言語文を正規化する（ステップＳ１５０２）。その後、判定対象の文章と知識辞書の知識を比較していく。ループ処理で知識辞書から文章を一つずつ取得する（ステップＳ１５０３）。ｆｏｒｍとｄｉｃｔ１が完全に同じであれば（ステップＳ１５０４がＹＥＳ）、理解できると判定し（ステップＳ１５０８）、ｆｏｒｍを記録媒体に記録する（ステップＳ１５０９）。つまり、知識対象の文章の知識がそのままずばり知識辞書にあれば、理解できる文章と判定できる。一方、全く同じ知識がなかった場合（ステップＳ１５０４がＮＯ）、対象文章に含まれる概念識別子の知識文章がないか検索して調べる（ステップＳ１５０５）。他知識があった場合（ステップＳ１５０６がＹＥＳ）、他知識ｄｉｃｔ２を取得し（ステップＳ１５１０）、ｄｉｃｔ１とｄｉｃｔ２の知識を使って（ｄｉｃｔ１の一部をｄｉｃｔ２の情報で置換して）、新しい知識ｄｉｃｔ３をつくる（ステップＳ１５１１）。そして、ｄｉｃｔ３を正規化する（ステップＳ１５１２）。新しい知識ｄｉｃｔ３をｄｉｃｔ１として、再度検証する（ステップＳ１５１３）。他知識がない場合（ステップＳ１５０６がＮＯ）、ループを継続する。全ての知識に関して処理しても理解できなかった場合、そのままループ（ステップＳ１５０３）から抜け、文章が理解できないと判定する（ステップＳ１５０７）。
【０１４３】
知識辞書の情報により、図４０Ａや図４０Ｂのように知識辞書と矛盾しないことを確認できれば、理解できる文章であると判定できる。図４０Ｃや図４０Ｄのように矛盾があったり知識自体が存在しなければ理解できない文章であると判定できる。人が他人の文章を読んだり、会話を聞いたときに「わかった」「理解した」という処理をプログラム手続きとして実装するのがこの手段である。このように、本発明では、文章を理解するということを、「意味言語に変換した文章と知識辞書の知識と比較して矛盾しないことを確認する」処理と「意味言語に変換した文章を記録する」処理として定義している。実際の処理では、記録した意味言語文章をさらに使うこともあるので、記憶部１８などに一時的に記憶するとしてシステムを構築している。なお、今回の実施例では知識辞書から得たｄｉｃｔ１とｄｉｃｔ２のみを加工しているが、処理対象のｆｏｒｍも加工できるし、本質的にはどちらを加工しても同じである。ｄｉｃｔを加工すれば、「ｄｉｃｔ=発言者は走ることが可能」「ｆｏｒｍ=発言者は走ることが可能」で一致する。ｆｏｒｍを加工すれば、「ｄｉｃｔ=人間は走ることが可能」「ｆｏｒｍ=人間は走ることが可能」で一致する。これは数学でいえば３つの式１「Ｙ＝Ａｘ」、式２「Ｙ＝Ｂｘ」、式３「Ａ＝Ｂ」、があったとき、式１に式３を適用するか、式２に式３を適用するかの違いである。つまり、知識辞書の情報がが適切ならば、知識辞書の文章を加工しても、処理対象の文章を加工しても比較・理解処理は行えるということである。
【０１４４】
また、意味言語を理解する操作は、処理の結果として「意味が理解できた」場合以外に、「理解できなかった」の具体的カテゴリとして「矛盾があった」、「知識が足りなかった」などの結果を返すことができる。文章を理解して処理するだけであれば、「理解できなかった」はどんな場合でもただのエラーであるが、推論や学習、情報収集する場合は、それぞれのエラーカテゴリーで処理を継続できる。例えば、ＡＩの学習中に「矛盾があった」という結果を得た場合、知識辞書か入力された文章のいずれかまたは両方に間違いや定義不足があったと考えられる。特に、知識辞書が誤っている場合は知識辞書を修正または更新する処理を行える。これは、人工知能分野における、学習操作のひとつ「知識の変容」の実装である。
【０１４５】
本発明における「文章を理解する」ことの意味、定義について、表現と例を変えて詳しく説明する。本発明では、文章・会話を理解することを定義、実装するために意味言語を用いる。一般に、人間が物事を見たり聞いたりして「理解した・わかった」という場合には二つの意味合いがある。一つは、入力された情報が、「自身の持つ現実世界の知識と矛盾しないと確認する」というものである。これは、「今まで気づかなかったけど、自身の持つ現実世界の知識と矛盾しないと確認する」ものも含む。つまり、直接的な知識ではなくても、常識的に考えて矛盾しないと考えられる場合も、理解することができる。例えば、リンゴの木を見たことがない人でも、「リンゴが植物である」と知っていたなら、「リンゴは光合成する」という文章を理解できる。もう一つは、入力された情報が、「現実世界で観測された知識、事実に基づいた知識として確認した」というものである。この２つが処理できれば、文章等を処理して「理解する処理」が可能となる。
【０１４６】
ここで重要なのが、知識である。どんな事柄であっても、知識なしには理解できない。例えば、「ランゴルーマージーンする」という文章が理解できないのは、その単語が何なのかを知らないため、「する」対象なのかどうかすら不明だからである。つまり、この文章は（知識不足による）判定不能である。逆に、「コップを飛ぶ」という文章では、人間が「コップは飛ぶ対象ではない（跳ぶ対象にはなりうる）」と知っていれば、意味不明な文章であると判断できるのである。そして、「空を飛ぶ」「コップを跳ぶ」という文章は、「空」「コップ」「飛ぶ」「跳ぶ」に関する十分な知識があれば、理解できる。つまり、理解するということは、究極的には次のように定義できる。即ち、「自己の知識と矛盾しないことを確認する」ことである。従って、本発明では、理解する処理を、「入力された意味言語文章を知識辞書と比較し、無矛盾かどうか確認する」機能として実装する。
【０１４７】
意味言語操作処理をする上で、そのままでは情報不足である自然言語文章の例を図４１に示す。これらの文章は、人間が会話する上では無意識に情報が補完されて適切に解釈されるが、コンピュータが処理する上ではこれらの曖昧さが解消されなければ適切な意味言語文が得られない。図４１ＡではＡ君が発した問いに対し、Ｂ君が主語を省いて回答している。この例での主語がＢ君であることは人間にとっては自明である。ただし、人間にとっても、もしもＡの問いがなく、何の前提もない状態で、突然Ｂが「走るよ！」といっていても、誰が走るのか完全に明確ではない（おそらくは本人が走るのだろうと推測するが、文脈によっては別の人の話題かもしれない）。このように、どんな動詞、形容詞であろうと、単独では文章の意味を持たないか、不明瞭である。必ず、「いつ」「どこで」「誰が（誰を）」「何を（何が）」「なぜ」「どのように」等の情報が必要である。
【０１４８】
また、図４１ＢではＡ君が発した問いに対し、Ｂ君は「Ｃ」と回答している。この例では、「Ｃ」「が」「走る」ということで、いわゆる述語が不足している。従って、これも不完全な文章である。尚、どの要素を省略できるかは、自然言語の文法と密接に関係しているため、各言語ごとに処理を記述する必要がある。例えば、古代エジプト語中期においては、筆記におけるｂｅ動詞にあたる語が省かれることが多い。しかし、この知識は「古代エジプトにおける公知の慣習」であるので、彼らにとっては読み書きに支障はなかったはずである。つまり、文章の省略は、相互の了解があれば成立する。そのため、この処理は普遍的ではなく時代の流れに応じてアップデートする処理であることは指摘しておきたい。大事なのは、自然言語処理プログラムがこの知識を必要なだけ実装することである。
【０１４９】
情報が不足した文章を判定する処理の例のフロー図を図４２に示す。図４１で指摘しているように、自然言語における省略の仕方は多岐にわたるので、全てを網羅することは難しい（若者言葉の略語を理解できないおじさんと同じである）。この例では、典型的な省略として「主語の省略」と「述語の省略」をの２つを発見する処理例を示している。入力として、意味言語文を受け取り（ステップＳ１３５１）、その中の概念識別子を数える（ステップＳ１３５２）。概念識別子が１つしかない場合（ステップＳ１３５３がＹＥＳ）、何らかの語が省略されていると判断する。次に、そのひとつしかない概念識別子が「人間」かどうか判定する（ステップＳ１３５４）。これは、知識辞書の情報との比較で判定する。次に、概念識別子が「人間（または人間の下位概念）」と判断された場合（ステップＳ１３５４がＹＥＳ）、これは主語があると判断し、述語に当たる語を補う必要がある。日本語において、標準的な文章では主語＋述語なので、概念識別子の後に補うべきと判断し（ステップＳ１３５７）、さらに２値性関係属性記述子「が（単語ＩＤ＝３３）」を主語の後に補う（ステップＳ１３５８）。概念識別子が人間でないと判断された場合（ステップＳ１３５４がＮＯ）、これは述語があると判断し、主語に当たる語を補う必要がある。日本語において、標準的な文章では主語＋述語なので、概念識別子の前に補うべきと判断し（ステップＳ１３５５）、さらに２値性関係属性記述子「は（単語ＩＤ＝１）」を主語の後に補う（ステップＳ１３５６）。概念識別子が１つでない場合（ステップＳ１３５３がＮＯ）、なにもしない。なお、いずれの場合も、一般的な２値性関係属性記述子としてそれぞれ「は」「が」を補ったが、この関係属性記述子の選定にはいろいろな方法があり、確定的ではない点は明記しておく（人間でも、単語のみで回答されたときに、「は」なのか「が」なのかは確定できないこともある。例えば、「走る！」と答えたときに「私は走る」なのか「私が走る」のかは、この場合はニュアンスレベルの違いである）。
【０１５０】
自然言語から意味言語に変換する処理において、省略された語句は図４３のように補う。この処理が、本発明における意味言語不足語補完処理部１３０３に相当する。この処理は、人間同士の会話では省略されがちな「当たり前」な情報を、コンピュータで取り扱うための処理である。これは、人工知能分野における「照応解析」の実装として開発した。まず、自然言語の文章を入力として受け取り（ステップＳ１３６０）、意味言語文に変換し（ステップＳ１３６１）、ｆｏｒｍとする（ステップＳ１３６２）。次に、不足語があるかどうか判定し、不足語がない場合（ステップＳ１３６３がＮＯ）、文意は明確として処理できる（ステップＳ１３６４がＹＥＳ）。不足語がある場合（ステップＳ１３６３がＹＥＳ）、不足語の位置を推定し、適切な語を知識辞書より補っていく処理に移る。まず、不足語の位置を取得する（ステップＳ１３６５）。次に、自然言語ｓｔｒを処理するまでに蓄積した一時知識を参照し、取得するループに入る（ステップＳ１３６６）。ループ処理は知識ｄｉｃｔを新しい順に取得し、知識が無くなるまで続く。この処理によって取得する知識は新しい順である。会話の前提は、新しいものほど優先されるのが自然だからである。次に、会話の履歴であるｄｉｃｔから、概念識別子を取得するループに入る（ステップＳ１３６７）。ループ処理は木構造から順に（例えば行きがけ順に）概念識別子ｗｏｒｄを取得し、取得する概念識別子が無くなるまで続く。次に、ｆｏｒｍの不明語の部分を取得したｗｏｒｄで置換したｆｏｒｍ２を得る（ステップＳ１３６８）。不足語が補われた文章ｆｏｒｍ２が一般知識辞書や一時知識辞書と比較して理解できると判断されれば（ステップＳ１３６９がＹＥＳ）、２重ループを一気に抜け、新しい文章ｆｏｒｍ２を、語句が補われた明確な文章とする（ステップＳ１３７３）。新しい、明確な文章が得られたので、文章の意味は明確として判定し処理できる（ステップＳ１３６４）。なお、図４３のフローチャートでは、不足語の判定と位置の推定を分けて記述しているが、実装の際には「不足語がないか判定し、不足語の位置を推定する処理」のように同時に行うのがよい。図４２で示したように、ほとんど同じ処理だからである。一方、文章が理解できなかった場合（ステップＳ１３６９がＮＯ）、ｗｏｒｄのループ（ステップＳ１３７０）とｄｉｃｔのループ（ステップＳ１３７１）で文章が理解できるまで試行する。ｆｏｒｍに至るまでの文章や会話の蓄積であるｄｉｃｔを全て試しても理解できる文章が得られなかった場合、文章は不明として処理する（ステップＳ１３７２）。
【０１５１】
このように、通常の人間同士の会話では、普通にわかることについては省略されることが多いが、ＡＩにとっては自明でない部分は知識によって補う。例えば、「Ｂ君は走る？」と聞いたときにB君が「走るよ！」と答えた場合（１３７４）、「Ｂ君（自分）は走るよ！」という意味であると解釈するべきである。そのためには、まず不足語の有無と不足語の位置を推測する（１３７５）。次に、過去の会話履歴からｄｉｃｔを受け取り（１３７６）、その中から人間と認められる概念識別子を抜き出す（１３７７）。この場合、Ｂ君に対応する単語ＩＤは仮に９９９９９９番としている。そして、不足語とされた部分を９９９９９９番で置換（代入）すると（１３７８）、意味を理解できる文章となる（１３７９）。このように処理すれば、もしも、夏目漱石の「吾輩は猫である」という小説の文章を処理する際であっても、最初の一文が処理された後は、「発話者（主人公）は人間」という一般常識よりも、「発話者は猫」という一時的な知識に従って、以降の省略された文章を補っていくことができる。こういった省略は、一時知識辞書に登録された情報の、新しいものから順に適切なものを探して補う必要がある。人間は、こういった処理をほとんど無意識に行っているが、プログラム手続きとしてはきちんと実装しなければならない。
【０１５２】
自然言語から意味言語に変換する処理において、非自明な語句（同音異義語や多義語）などの語は図４４のように処理され、意味が決定される。この処理が、本発明における意味言語多義語推定処理部１３０４に相当する。自然言語の処理において、文脈依存性の語はこの処理が必要である。これは、人工知能分野でいうところの「語義曖昧性解消」または「単語の多義性解消」と呼ばれる処理として実装している。日本国文法において、同音異義語や多義語の分類には違いがあるが、本処理では、同じ表記で意味が異なればまとめて「多義語」として扱っている。ＡＩにとって不明瞭な音声や文字も、意味候補が複数あるという点では多義語であり、同様に処理できる。多義語は単語ＩＤも異なるため、意味言語では全く違う語として扱われる（そもそも意味言語に国籍はない。多義語や同音異義語はそれぞれの自然言語体系でのみ生じる）。まず、自然言語文章ｓｔｒを入力として受け取る（ステップＳ１３８０）。次にｓｔｒを形態素解析する（ステップＳ１３８１）。形態素の表記をもとに全ての形態素に関してループ処理を行い（ステップＳ１３８２）、自然言語ＩＤ辞書に単語ＩＤを問い合わせる（ステップＳ１３８３）。同じ表記で意味が違う単語の場合、複数のＩＤが返される。次に、各形態素の単語ＩＤが一つずつか（つまり、単語の意味が一意的か）調べる。全ての語が単語ＩＤを一つずつのみ割り当てられていた場合は（ステップＳ１３８４がＹＥＳ）、各語にあいまいさはないのでそのまま意味言語へ変換して（ステップＳ１３８５）処理を終了する。一つの語でも単語ＩＤが複数割り当てられた場合は（ステップＳ１３８４がＮＯ）、その自然言語（ここでは日本語）において単語が多義語であるということなので、多義語の処理に入る。まず、多義語の部分以外を全て意味言語に変換する（ステップＳ１３８６）。実施例では、多義語を特殊な構造体（ＩＤ候補を複数保持できる構造体）で表している。次に、多義語に割り当てられた全てのＩＤ（つまり、多義語の意味の候補）についてのループに入る（ステップＳ１３８７）。ループは、ＩＤの候補が無くなるまで続く。ループの中では、ｆｏｒｍの多義語部分を多義語の意味候補で置換し、理解できるかどうか検証する。置換した意味言語文章が理解できれば（ステップＳ１３８８がＹＥＳ）、そのまま意味言語文章へと変換し（ステップＳ１３８９）、処理を終了する。理解できない限り（ステップＳ１３８８がＮＯ）ループを続け、一度も理解できないままループが終了した場合は、理解できないエラー（ステップＳ１３９０）として終了する。
【０１５３】
例えば、日本語において「イモ」という単語は、芋を意味すると同時に「田舎っぽい」という侮蔑の意味もあり、人間はこれを文脈によって理解を変える。「彼女はイモだ」という文章を受け取ったときには、一般常識から「イモ」が芋とすると理解できないが、侮蔑の意味であれば理解できるのでこちらの解釈を選択する。これを本発明で処理する場合、まず、入力（１３９１）を形態素解析する（１３９２）。単語ＩＤを割り当てると、「イモ」には２つのＩＤが割り当てられてしまう（１３９３、１３９４）。これは多義語（同音異義語）という事になるので、意味言語へ変換してＩＤの確定処理へ入る（１３９５）。処理対象として意味言語文をｆｏｒｍとし（１３９６）、多義語の意味候補を試していく。まず、ＩＤ＝１６９７１とすると意味言語文の意味は「彼女は芋」となり、理解不能である（１３９７）。次に、ＩＤ＝１６９７２とすると、意味言語文の意味は「彼女はイモ」となり、（悪口だが）理解はできる（１３９８）。こうして多義語の意味を確定し、終了とする（１３９９）。このように意味言語に変換された後は、単語ＩＤ１６９７２が割り当てられているので、曖昧さは排除されている。こういった技術を使えば、英語のＬＩＫＥのような文脈で意味が変わる単語も適切に推定できる。処理例では概念識別子の推定を行っているが、同じ処理フローで関係属性記述子の推定も行える。例えば、日本語における助詞「は」は、完全に等価であることを示す「完全等価（ＩＤ＝３）」と、前者が後者に含まれるという程度の意味の「限定等価（ＩＤ＝１）」がある。意味言語では、この二つはきちんと区別し、別々の関係属性記述子となる。図３６で説明しているように、完全等価の例としては、「リンゴはアップルである」、「１たす１は２である」、というふうに完全に同じであることに言及する。対して、限定等価の場合は「秋田犬は犬である」というふうに、上位概念と下位概念の関係にあることについて言及する。完全等価は語順を入れかえても大筋の意味は変わらないが、限定等価は入れかえると多くの場合間違った言及となる。どちらの関係属性記述子が正しいかは、知識がないと人間でもわからない。逆にいえば、文章に含まれる概念識別子に関する知識を十分持っていれば、この処理で適切な関係属性記述子が推定できる。
【０１５４】
本発明における知識の意味をまとめると、次のようになる。人間的な文章処理を行うためには、「一般常識」「一時的知識」のような情報が必要である。文章を理解する際、人間は大きく分けて２つの前提条件をもつ。一つは、知識辞書に書かれるような、「一般常識」である。もうひとつは、会話やそれまで読んだ文章を元にした「一時的前提知識」である。これを本発明では「一時知識」と呼ぶ。一時知識は、例えばファンタジー作品に代表される、「今の文脈でのみ有効な知識」である。あるいは、「会話の中で自明な流れ」である。これは、時には一般常識より優先しないと文章理解や会話が成立しない。また、一連の文章・会話を処理していく中で新しく加わった知識も、全ての処理が終わるまで適切に保管、参照しなければならない。そのため、図３１のような「一般常識」「一時知識」を両方保持した状態で文章を解釈していく必要がある。
【０１５５】
日本語を処理する場合の「意味言語への変換処理部１２」と「自然言語への変換処理部１４」において、本実施例では、動詞は図４５のように活用ごとにまとめた活用辞書（文字列テーブル）を用いる。図４５、図４６が、本発明における活用辞書１２０６である。意味言語では単語の活用を「概念識別子に関係属性記述子が融合したもの」と解釈する。例えば、「走らない」という活用は、「走る」という概念識別子に「ｎｏｔ（否定）」の関係属性記述子が融合していると見なす。また、「走った」という活用は、「走る」という概念識別子に「過去時制」という関係属性記述子が融合していると見なす。そこで、自然言語から意味言語に変換する際に、形態素解析後に動詞活用や形容詞活用などを分類し、その活用に対応した関係属性記述子を特定するために本辞書を用いる。尚、意味言語においては文章の語の意味を記述するため、「手が後ろにまわる」といった慣用句（成句）は一まとまりとして扱う。手が後ろにまわるとは、法を犯して身柄を拘束されることを意味し、「手」や「まわる」などの個々の単語の意味合いは薄れ、一つの動詞のようにふるまう。最後の「手がうしろにまわろうよ」とは「逮捕されようよ」という意味になるが、日常表現ではまず使われない。しかし、こういった表現は極めて不自然ながら「理解できないわけではない」ためそのまま辞書に入れている。
【０１５６】
一方、形容詞も本実施例では図４６のように活用ごとにまとめた活用辞書（文字列テーブル）を用いる。動詞同様に、活用は関係属性記述子が融合していると解釈する。意味言語では、動詞や形容詞や副詞や形容動詞なども概念として扱える要素は全て概念として統一的に扱う。日本語における形容詞と副詞と形容動詞は、修飾する対象が名詞かどうかが違うだけでその活用はほとんど同じか共通点が多いため、このテーブルは形容詞と副詞、形容動詞の兼用として実装している。日本語では「長い」「長く」のように形容詞と副詞の区別がつきにくい語もあるため、無理に区別しないほうが処理を簡素化できる。それぞれの品詞にない活用は、テーブルを作る関数がＮＵＬＬを設定し、処理の上で無視するのが簡便である。例えば、日本語形容詞において「白い」状態にすることをを表す「白く」のような活用は、「明らか」のような形容動詞については活用としては存在しない（「明らか」にするというふうに、名詞のように扱う用法はある）。この場合、「明らか」の「Ａａｄｊｖ＿ｅｘ−＞ａ＿０３−＞ｓｔｒｉｎｇ」はＮＵＬＬとなる。
【０１５７】
実際の動詞の活用辞書は、後述する実施例では図４７のような文字列テーブルで実装している。図４７の実体は、Ｃ言語の構造体として定義したＶＥＲＢ＿ＥＸである。ＶＥＲＢ＿ＥＸという構造体の中に、文字列型の構造体ＳＴＧを定義し、ＶＥＲＢ＿ＥＸという構造体１個で一つの動詞の活用文字列を全て展開している。日本語において、動詞は規則性を持って展開されるため、その活用は規則的に生成できる。今回の実装では、「言う」「書く」「あげる」「脱ぐ」「渡す」「走る」「飲む」「来る（カ変）」「する（サ変）」の９パターンに分けて、パターンごとに分けた処理で合計７９００種類の動詞活用を規則的に展開している。全ての活用を生成すれば、あとは形態素解析の後に、活用に対応した関係属性記述子を特定できる。例えば、「走らなかった」は
ｖｅｒｂ＿ｅｘ−＞ｖ＿０２＿０７−＞ｓｔｒｉｎｇ＝走らなかった
なので、「走る＋ｎｏｔ（否定）＋過去時制」という形で、「否定」と「過去時制」の２つの関係属性記述子が特定できる。形容詞も同様の構造体ＡＤＪＶ＿ＥＸで展開し、同様の処理を行う。今回のＣ言語による試験実装では、この動詞構造体であるＶＥＲＢ＿ＥＸ構造体を約７９００個、形容詞のＡＤＪＶ＿ＥＸ構造体を２０００個ほど内部で生成している。このテーブルは、ＷｉｎｄｏｗｓＰＣのメモリ上で２００ＭＢ程度になり、現代のＰＣでも十分格納できる。
【０１５８】
実際の形容詞の活用辞書は、後述する実施例では図４８のような文字列テーブルで実装している。実装は動詞と同じであり、ＡＤＪＶ＿ＥＸという構造体１個で一つの動詞の活用文字列を全て展開している。今回の実装では、「白い」「無い」「明らかだ」「明らかです」「堂々たる」の５パターンに分けて、パターンごとに分けた処理で合計２０００種類超の形容詞活用を規則的に展開している。動詞と同じく形態素解析の後に、活用に対応した関係属性記述子を特定できる。例えば、「白くなった」は
ａｄｊｖ＿ｅｘ−＞ａ＿０３＿０５−＞ｓｔｒｉｎｇ＝白くなった
なので、「白い＋（状態そのもの）＋（形容成り）＋過去時制」という形で、「状態そのもの」と「形容成り」と「過去時制」の３つの関係属性記述子が特定できる。
【０１５９】
本発明は以上のような構造が好適な実施例と考える。これを使用するときは、以上に説明した機能を、必要に応じてプログラム等適切な技術で実装すればよい。発明者の試験的実施例は後述する。
【０１６０】
＜その他の実施態様＞
他言語の対応例として、意味言語の文章を入力とし、古代エジプト語中期のヒエログリフ表記として文字列を出力する処理のフロー図を図４９に示す。日本語出力と同じく、木のノードを辿り、関係属性記述子に対して再帰的に処理を実行する。そのため、再帰処理できるサブルーチンを別途定義している。なお、この実装はあくまで他言語対応の例示とすることを目的としているため、ごく簡素な実装である点は留意されたい。それでも、古代エジプトで壁画等に実際に用いられた短文フレーズ程度は、語順も含めて正確に出力できる。日本語出力との大きな違いは、日本語のような活用を使用しない点と、日本語における格助詞のほとんどは明記されない点と、日本語における「の」助詞にあたる関係属性記述子の表記が、左右入れ替わる点である。つまり、日本語で「私のこども」は、「こども、わたしの」という表記に語順が変わる。なお、出力については、ＵＴＦ−１６文字コードか、それより上位の文字コードを使用すればヒエログリフの絵文字をそのまま表示できる。ただし、出力する端末またはシステム内に「ヒエログリフのフォント」がインストールされていることが条件である。そうでなければ、エディタであろうが端末であろうがフォント無しとして処理される。ヒエログリフに対応したフォントはあまり多くないが、例えば「Ｎｏｔｏフォント」シリーズはヒエログリフサブセットが含まれる。
【０１６１】
図４９の処理を順に説明する。まず、意味言語の文章を入力として受け取る（ステップＳ１４７１）。次に、根の関係属性記述子をｇｌｕｅとして指定し（ステップＳ１４７２）、意味言語の文章とともに引数として指定しサブルーチンＧｌｕｅＳｕｂを呼び出す（ステップＳ１４７３）。
【０１６２】
続いてサブルーチンを説明する。意味言語の文章と、処理対象となる関係属性記述子を入力として受け取る（ステップＳ１４７４）（ステップＳ１４７５）。次に、ｇｌｕｅが２値性かどうか判定する（ステップＳ１４７６）。ｇｌｕｅが２値性なら（ステップＳ１４７６がＹＥＳ）、次の判定に移る。ｇｌｕｅが「の（所属）」でなければ（ステップＳ１４７７がＮＯ）、次の判定に移る。ｇｌｕｅの左の子が概念識別子なら（ステップＳ１４７８がＹＥＳ）、左の子ノードの文字列を出力する（ステップＳ１４７９）。次に、ｇｌｕｅの右の子が概念識別子なら（ステップＳ１４８０がＹＥＳ）、右の子ノードの文字列を出力し（ステップＳ１４８１）、処理を終える（再帰呼び出し元へ処理を返す）。  ｇｌｕｅの左の子が概念識別子でなければ（ステップＳ１４７８がＮＯ）、ｇｌｕｅの左の子を引数として指定し、ＧｌｕｅＳｕｂが再帰的に呼び出される（ステップＳ１４８８）。ｇｌｕｅの右の子が概念識別子でなければ（ステップＳ１４８０がＮＯ）、ｇｌｕｅの右の子を引数として指定し、ＧｌｕｅＳｕｂが再帰的に呼び出される（ステップＳ１４８９）。
【０１６３】
ｇｌｕｅが「の（所属）」であれば（ステップＳ１４７７がＹＥＳ）、次の判定に移る。古代エジプト語においては、「私の物」のような「所属」関係にある場合、「物、私（の）」という語順となり、なおかつ「私は」なのか「私の」なのかは明示されず、読み手が文脈から判断する。そのため、この処理では右優先で、関係属性記述子は出力されない。ｇｌｕｅの右の子が概念識別子であれば（ステップＳ１４８２がＹＥＳ）、右の子のノードが出力される（ステップＳ１４８３）。続いて、ｇｌｕｅの左の子が概念識別子であれば（ステップＳ１４８４がＹＥＳ）、左の子のノードが出力される（ステップＳ１４８５）。ｇｌｕｅの右の子が概念識別子でなければ（ステップＳ１４８２がＮＯ）、ｇｌｕｅの右の子を引数として指定し、ＧｌｕｅＳｕｂが再帰的に呼び出される（ステップＳ１４８６）。ｇｌｕｅの左の子が概念識別子でなければ（ステップＳ１４８４がＮＯ）、ｇｌｕｅの左の子を引数として指定し、ＧｌｕｅＳｕｂが再帰的に呼び出される（ステップＳ１４８７）。
【０１６４】
ｇｌｕｅが２値性でなければ（ステップＳ１４７６がＮＯ）、次の判定に移る。ｇｌｕｅの子が概念識別子であれば（ステップＳ１４９０がＹＥＳ）、子のノードの文字列を出力し（ステップＳ１４９１）、ついでｇｌｕｅの文字列を出力する（ステップＳ１４９２）。ｇｌｕｅの子が概念識別子でなければ（ステップＳ１４９０がＮＯ）、ｇｌｕｅの子を引数として指定し、ＧｌｕｅＳｕｂが再帰的に呼び出される（ステップＳ１４９３）。
【０１６５】
他の実施形態として、意味言語の言語仕様は、本実施例に限定されるものではない。意味言語の基本的な考え方は、記述するべき物や概念などに識別子を与え、概念を抽象化し、その識別子の関係や属性を記述する文法を持つ言語システムというものである。そして、本発明の「文章を理解する処理」とは、形式言語同士を比較し、その整合性を調べることである。つまり、比較できる処理が存在すればよいのである。例えば、文章表現のための形式言語と、知識を表現するための形式言語は同一文法でなくてもよい。ただ、その場合は正規化処理以外に整合性を検証するためのルールを設ける必要がある。特に、人工知能分野の歴史上で初期の形式言語は文法の制約が多く、文章としての表現と知識の表現は異なった構造を持つ傾向が強かった。しかし、本発明の実装上は意味言語のように文章も知識も同一の表記法で表記でき、単純比較できる言語が望ましいことはいうまでもない。そういう意味では、意味言語の関係属性記述子や概念識別子の定義も実装に適した定義を採用することが好適である。
【０１６６】
特に、関係属性記述子に関しては色々な定義の仕方がある。例えば、図５０に示すように、同じ文章でも関係属性記述子の定義や概念識別子の定義次第で同じ内容の自然言語をいろいろな形で表現できる。それぞれの定義には一長一短あり、図５０の定義に限ったものではなく、実施するシステムの用途やプログラミング言語との相性などを勘案し、より好適なものを選択するとよい。
【０１６７】
図５０Ａは、本実施例で使用した、概念識別子と、２値性関係属性記述子と多くの１値性関係属性記述子をもつ意味言語の木構造例である。元の日本語文章は、「私は走りたい」という本人の願望を記述する文章である。図５０Ａでは、「希望」という１値性の関係属性記述子が、「走る」という概念を属性として修飾していると見る考えを反映した文法である。対して、図５０Ｂの文法定義では、「望み」を概念として新たに付け加え、「私」「の」「望み」という形で願望を記述している。図５０Ｂでは、「希望」の１値性関係属性記述子は使っていない。図５０Ｃでは、「私の望み」という新しい概念を付け加え、ひとまとめにしている。このように、概念をどう定義するかは実装者にある程度の自由度があり、一貫していればよい。よって、図１５に示した品詞の分類と対応関係も一例である。このように、いずれの文法を採用しても、例文の本人の願望をきちんと記述できている。どのような実装にするかは以下の点を考慮すべきと考える。実験の結果わかったことであるが、一般的に、図５０Ａの文法の方が構文解析や変換は実装しやすいが、木構造は複雑になりがちで意味言語操作には苦労する傾向がある。逆に、図５０Ｂの文法では、隠れている概念を補足して木構造を構築するため、木構造の構築は複雑になりがちだがいったん変換できると木構造は美しく、操作はやりやすい傾向がある。また、図５０Ｃのように概念をある程度まとめて定義すると、当たり前だが大量のＩＤが必要になる代わりに木構造はコンパクトになる傾向がある。このように、意味言語の文法定義は、構文解析に力を入れるか、意味言語そのものの処理に力を入れるかなど総合的に判断して定義するとよい。
【０１６８】
また、概念識別子については、用途によってさらに細分化する必要が出てくる場合がある。例えば、本発明においてオントロジーにおけるｉｓ−ａ、ｐａｒｔ−ｏｆ関係が重要な新しい知識の生成（推論処理）を行う場合（例えば、図３７の知識の加工や図３９の理解する処理において、より高度な知識の生成をおこなう処理を追加する場合）、は概念識別子をより注意深く定義する必要がある。例として、「運転」という概念を考える。「運転」は、「運転する」のように動詞的に扱えるが、これは厳密には「コト」の概念である。一方、「運転は難しい」という表現に使われる場合は「モノ」の概念である。「コト」の上位概念は「ｐａｒｔ−ｏｆ」で定義される。一方、「モノ」の上位概念は「ｉｓ−ａ」で定義される。この二つを区別しないと、同じ概念識別子に二つの上位概念が完全に重複してしまい、新しい知識の生成において誤った知識が生成される場合がある。対策は単純である。後述する実施例では「運転」という語に数値７２２１のみを割り当てているが、これを「モノ」と「コト」に区別し、異なる数値を割り当てるのである。自然言語からの変換の場合は、この２つは「多義語」として区別することで処理できる。もちろん、ｉｓ−ａ、ｐａｒｔ−ｏｆに対応する関係属性記述子を新たに追加する必要もある。
【０１６９】
また、平叙文（普通文）の場合はそれほど問題にならないが、疑問文、使役文、命令文、仮定文、感嘆文などは、その意味構造が複雑化しがちである。なお、図５０においては、説明の簡便化のため関係属性記述子をほとんど区別せず「＝」で統一している。意味がとりにくい構文木もあるが、あくまで構造の説明のためである。図５０Ｄ、図５０Ｅ、図５０Ｆ、図５０Ｇ、図５０Ｈ、図５０Ｉ、図５０Ｊなどのように、概念識別子と関係属性記述子は様々に定義し、記述できる。これは、多くの自然言語が自由文脈文法を採用していることに一因がある。自由文脈文法においては、それぞれの概念の結合に曖昧さがあり、また多くの場合において人間にとっては曖昧さが問題にならない。例として、「リンゴは赤い？」という文章を挙げる。人間相手に「リンゴは赤い？」と聞いた場合、その意味は明確である（と感じる）。実際にはリンゴの品種や生育状態などにより変化するため単純には答えられないが、説明のため実際のりんごについては仔細を省く。この文章は、意味としては厳密には「リンゴの色は赤い？」とリンゴの「色」についての疑問文である。疑問文を処理するためには、疑問となっている意味の塊、文章の節のようなものをを定義する必要がある。ここで、疑問の内容としては「リンゴの色が赤い」こと全体を疑問とするか、「色が赤い」ことを疑問とするか、「赤いかどうか」を疑問とするかは、自由文脈文法の文章からは確定できない。そもそも、発問者本人もそこまでは意識していないのである。そこで、図５０Ｅのような形式の意味言語（形式言語）に変換するときはある程度の前提を置き、どうしても不明瞭な場合は言語処理システム側から質問し返す必要も出てくる。
【０１７０】
本発明においては、意味言語における「疑問文」「使役文」「命令文」「仮定文」「感嘆文」などを表現するために、「疑問」「使役」「命令」「仮定」「感嘆」という１値性関係属性記述子を定義している（図５０Ｄ）。図５０Ｄの形式は、自然言語の文章から直接変換しやすく、文章の構成要素が少なくなる特徴がある。しかし、文意の解釈などは複雑化しやすいという欠点もある。対して、図５０Ｅの形式は、「疑問」「使役」「命令」「仮定」「感嘆」を概念と解釈して概念識別子として定義し、さらに必要な場合は「使役主」「命令主」などを追加して定義している。図５０Ｅは、形態素解析結果や自然言語の文章構造そのものから直接的には構築できない。文章が明確になるように、必要な要素を補う操作が必要である。図５０Ｅの欠点は生成の難しさだが、利点は解釈処理の容易さと意味の明確さである。図５０Ｅの問いの文は、「色が赤い」かどうかを問うていることが明確である。そして、この問いの答えは「色が赤い」という部分木か、その否定の部分木であることが明確にわかる。ＡＩに大学受験させるために文章題を読み取る処理を行うなら、図５０Ｅのような疑問をより明確に示す実装が適していると考えられる。このように図５０Ｄと図５０Ｅは相反する性質をもち、どちらが好適かは発明の実施目的によって選ぶべきである。
【０１７１】
その他、折衷案として図５０Ｆのように「疑問」「使役」「命令」「仮定」「感嘆」などを２値性関係属性記述子として使用する方法もある。図５０Ｇのように「疑問」「使役」「命令」「仮定」「感嘆」などを概念として、単一の関係として記述する方法もある。図５０Ｈのように「疑問」「使役」「命令」「仮定」「感嘆」などを主語のように扱い、その関係を表す方法もある。図５０Ｉのように「疑問」「使役」「命令」「仮定」「感嘆」などを２値性関係属性記述子として、さらに「状態」などの概念を補足する方法もある。図５０Ｊのように「疑問」「使役」「命令」「仮定」「感嘆」などを２値性関係属性記述子として、補足した概念を主語のように扱う方法もある。
【０１７２】
このように、用途によってその定義方法はいくらでもありうるが、本発明を実施するために大切なのは、「処理系の中で文法が一貫しており」かつ「すくなくとも文章を比較する方法があること」である。
【０１７３】
また、後述する実施例では、意味言語の表現に２分木を用いているが、必ずしも２分木を使う必要はない（図５１）。２分木を使った理由は、主に関係属性記述子の明確性の問題と、比較利便性、そして実装の簡素性によるところが大きい。（図５１Ａ）は、２分木の構文木である。しかし、意味言語では概念と概念の関係性を示すことが重要なので、多分木（図５１Ｂ）でもグラフ（図５１Ｃ）でも配列（ヒープ）（図５１Ｄ）でも文字列（図５１Ｅ）でも表現できる。このうち、図５１Ｃのように有向性グラフで表現する方法は、意味ネットワークとほぼ同義となる。そして、意味ネットワークを結合したものは格フレームと呼ばれるが、これは意味言語の処理における図３５に説明する意味言語加工処理（１３０２）に相当する。多分木は複雑な割に特段のメリットはないと考えた。グラフでも表現可能だが、比較の際や主語を決めるときに結局始点を決める必要があり、特定のノードを始点として指定できる有向グラフとなるとほとんど木と同じである。さらにグラフで表現された意味言語は、比較のアルゴリズムが複雑化しやすい。同様に配列で表現できるが、データ構造が単純な分、適用するアルゴリズムのほうが複雑になりがちである。配列を使いたいなら、よく知られたヒープ構造が好適である。文字列で表現できるのは見ての通りであるが、内部表現として使うには冗長である。
【０１７４】
また、意味言語文章の情報をすべて意味言語で記述する必要はない。例えば、知識の中の日付情報など、共通する部分をまとめたり、特定の部分だけ切り離すこともできる。例えば、年表データを参照する処理では、項目ごとにまとめてあったほうが処理しやすい場合もある。（図５１Ｆ）では、意味言語文章の一部をインデックスのようにデータベースの項目のようにまとめたものを例示する。図５１Ｆは、ＡＩに対するルールブックのように使うこともできる。意味ネットワークやフレーム表現の分野でいうと、これはフレーム表現と同義と見なすこともできる。また、意味言語文章の時間を表す部分を別項目としてまとめることができる（図５１Ｇ）。図５１Ｇは、意味言語文章で書かれた歴史年表の記載のうち、時間の副文木を独立させたものと見ることができる。このような、歴史的な年代情報を含んだ知識は重要である。古い時代の言葉の中には、既に本来の意味が失われてしまった言葉も多い。また、時代によって慣用句の意味合いが変化する場合もある。知識辞書を年代情報と紐付ければ、古文書のより正確な翻訳を可能にできる。また、今の時代の知識辞書をしっかり実装しておけば、１０００年後にもちゃんと文章のニュアンスまで伝わる文書を構築できる。
【０１７５】
また、意味を理解する際に、感覚を使うことも理論上可能である。概念識別子は、概念として特定できるならどんなものでも対象とできる。例えば、ＡＩにリンゴの色を評価させる状況を考える。ＡＩに接続されたセンサーから、木になっているリンゴの色を取得できる場合、リンゴが赤いか確認するというミッションが与えられたとする。これは、アルゴリズムとしては、「リンゴの色は赤い」という意味言語の文章を理解し、目の前の状況が条件を満たすことを確認するという処理に相当する（図５２）。図５２Ａは、検証すべき命令、ミッションである。この場合、知識辞書の「赤い」の定義の中に、センサーの値を定義しておくのである。例えば、赤いとは、（赤いという感覚には人間同士でも個人差があるものの、）波長が６５０−７８０ｎｍであると定義する。知識辞書にこの値範囲を定義しておけば、意味言語の文章の一部をセンサーで受け取る感覚として定義できる（図５２Ｃ）。そして、実際の値（図５２Ｂ）と比較し、センサーの感覚を含めて「理解」できる。つまり、適切なセンサー、または情報の入力があれば、感覚もまた理解の対象にできるのである。これを人間感覚で表現するなら、図５２Ｃは人間の頭脳の中にある感覚の定義の表象であり、図５２Ｂは実際に感覚を受け取ったときの人間の表象であると見ることができる。さらに別の表現をすれば、図５２Ｂは感覚測定のハードウェアによった意味言語表現であり、図５２Ｃは感覚を検証するＡＩ寄りの意味言語表現である。本発明の実装では、ハードウェアの用意ができなかったため、理論的な検証に留まっている。なお、この「感覚概念」は、通常の文章処理や会話の処理を行う上では使わない。ただ辞書が肥大するだけであるので、必要に応じた追加の辞書として実装すべきであろう。後述する実施例で、知識辞書（図３１Ａ）の３行目に「Ｌｖ１」として定義しているのは、こういった追加辞書、特に感覚辞書が入っているかを明示するために置いた情報である。感覚も含めた知識辞書は「Ｌｖ２」などとして明記するためのいわば予約情報として確保している。
【０１７６】
このほか、適切なセンサーがあれば、もちろん「甘い」「痛い」「臭い」などの感覚知識も含めることができる。Ｌｖ２実装では、人間の五感に対応するセンサーを勘案して値の受け取り方や解釈を定義する必要があるので今回は未実装である。
【０１７７】
また、自然言語ＩＤ辞書は、辞書形式でもよいしデータベースとしてもよい（図５３）。要は、自然言語表記とＩＤとの紐付けができればよい。ＩＤは数値でなくてもよいが、数値でないと比較アルゴリズムが複雑化するため、数値ＩＤが好適である。
【０１７８】
また、上述の実施形態の機能を実現するソフトウェアのプログラムやデータの全体または一部を、記録媒体から直接、あるいは通信を用いてプログラムを実行可能なコンピュータを有するシステムあるいは装置に供給し、そのプログラムを実行する場合も本発明に含める。また、辞書などの共有リソースを利用する場合も、記録媒体から直接、あるいは通信を用いて供給し、実行に利用する場合も本発明に含める。
【０１７９】
また、本発明の実施において、実施例に挙げている機能を全て実装する必要はなく、要求される仕事に応じて一部機能を省略または追加することができる。例えば、省略された語句を特定する処理（図４３）などは、実施用途に応じて、省略を全く認めない場合もあれば、若者言葉の特異的な省略語まで対応するような用途も考えられる。処理対象は自然言語なので、どこまで対応するかは実装者の選択による。
【０１８０】
本発明の場合、変換精度を高めるために新たなチェック項目を加えたり、また処理の簡便化のために一部処理を省略できる。例えば、より砕けた会話に対応するなら意味言語不足語補完処理１３０３において、図４２の判定ルールステップＳ１３５４に類する処理の追加、拡充で対応できる。また、入力がより厳密であると期待できる場合（例えば入力として書類のような定型文書を期待できる場合）は、不足語の補完を省略したシステムで十分である。
【０１８１】
また、本発明において、形態素解析に意味言語理解処理結果を反映できる。日本語において形態素解析する場合は、一般的に外部ライブラリを利用するのが一般的である。しかし、より正確な形態素解析を行うために、例えば形態素解析を自前で実装し、その結果に意味言語理解処理を反映することもできる。
【０１８２】
本発明は、特定の自然言語に依存する部分をなるべく減らすよう設計している。最も厄介な知識の処理は共有化できるため、各国の言語チームで自然言語依存部を開発すれば、後の部分は共有できる。例えば、日本語開発チームは日本語と意味言語のやり取りさえ開発すれば、後は他の国の開発を待っていればよい。その上で、例えばメトロポリタン美術館で古代エジプト語用のプログラムが開発されれば、日本チームは古代エジプト語など全く知らなくても、意味言語を介して古代エジプト語の翻訳システムを構築できる。
【０１８３】
（本発明の実装上の注意点）
本発明において、実装上注意したほうが良いと思われる点をいくつか指摘しておく。まず、概念識別子は大変膨大な量になると考えられる。本実施例で手作業で登録した最低限の概念識別子だけでも２５０００以上あり、ＩＤで管理する上で３２ビットでは到底足りないと考えられる。６４ビット実装にすべきである。動詞や形容詞などは、そうそう増えないのでＩＤの小さいほうへまとめて配置し、いくらでも増えていく通常名詞や固有名詞をＩＤの大きいほうへ増やしていくのが効率的である。
【実施例】
【０１８４】
図５４のように、本発明の試験的な実施例として、内部表現および知識辞書として意味言語を用いる「ＪＰＮ＿ｔｏ＿Ｋｏｔｏｄａｍａ２．ｅｘｅ」、「Ｋｏｔｏｄａｍａ＿ｔｏ＿ＪＰＮ．ｅｘｅ」、「Ｋｏｔｏｄａｍａ＿ｔｏ＿Ｈｉｅｒｏｇｌｙｐｈ．ｅｘｅ」、の３つのプログラムを開発した。これらのプログラムを開発した目的は、明細に記載したアルゴリズムおよび構成が機能することを確認するためである。本発明の実装としてこれを強いるものでも限定するものでもないが、少なくともこのような形で開発すれば、図５４の効果が得られる。プログラムの動作等は、高速化のための多少のアレンジを除けば、明細に記載したフローチャート通りの実装である。このプログラムは、図６に記載の５つの効果を、プログラムの機能として集約または分割したものである。（Ｋｏｔｏｄａｍａの名前は、２００６年の８月頃に研究開発を開始した際に内部表現の言語として命名したときの名残であり、現在は「意味言語」としているのでそのように解釈されたい）。
【０１８５】
「ＪＰＮ＿ｔｏ＿Ｋｏｔｏｄａｍａ２．ｅｘｅ」は、日本語の文章をテキストファイルとして読み込んで、意味言語の文章に変換して出力する（図５４Ａ、図５４Ｂ、図５４Ｃ）。出力は、ファイルにテキスト形式で出力すると同時にコマンドプロンプトに表示もする。内部的には「理解する処理」も使用する。主に、図６Ｂの意味言語への変換機能のプログラムである。また、自然言語の理解処理は途中経過を確認しやすくするため、本プログラムの出力である意味言語の文章を、担当のプログラムへ渡す２段階の処理で確認する。同じく、図６Ｅ自然言語から別の自然言語への変換処理（翻訳処理）は途中経過を確認しやすくするため、本プログラムの出力である意味言語の文章を、担当のプログラムへ渡す２段階の処理で実行する。
【０１８６】
「Ｋｏｔｏｄａｍａ＿ｔｏ＿ＪＰＮ．ｅｘｅ」は、意味言語の文章をテキストファイルとして読み込んで、日本語の文章に変換して出力する。同時に、読み込んだ意味言語の文章を理解し、その結果を出力する（図５４Ｄ）。出力は、ファイルにテキスト形式で出力すると同時にコマンドプロンプトに表示もする。主に、図６Ａの意味言語の理解機能と、図６Ｃの自然言語への変換機能のプログラムである。また、図６Ｄ自然言語を理解する機能は、「ＪＰＮ＿ｔｏ＿Ｋｏｔｏｄａｍａ２．ｅｘｅ」の出力を「Ｋｏｔｏｄａｍａ＿ｔｏ＿ＪＰＮ．ｅｘｅ」への入力とすることで実行する。
【０１８７】
「Ｋｏｔｏｄａｍａ＿ｔｏ＿Ｈｉｅｒｏｇｌｙｐｈ．ｅｘｅ」は、意味言語の文章をテキストファイルとして読み込んで、古代エジプト語の文章に変換して出力する（図５４Ｅ）。出力は、ファイルにテキスト形式で出力すると同時にコマンドプロンプトに表示もする。主に、図６Ｅの自然言語から別の自然言語への変換（翻訳）機能の後半を担うプログラムである。
【０１８８】
（実装の詳細）
図５５Ａは、実施にあたって試験的に開発作成したプログラムと辞書である。本発明を実施するにあたって、次のライブラリとプログラムを開発、実装し、動作を確認した。開発言語はＣ言語で、ＧＣＣ（Ｍｉｎｇｗ）とＶＣ＋＋２０１７でコンパイルした。意味言語情報処理にかかわるライブラリは「Ｌｉｂ−ｇｌｕｅ．ｃ」「Ｌｉｂ−ｋｎｏｗｌｅｄｇｅ．ｃ」「Ｌｉｂ−ｋｏｎｎｙａｋｕ２．ｃ」「Ｌｉｂ−ｖｅｒｂ．ｃ」「Ｌｉｂ−ａｄｊｅｃｔｉｖｅ．ｃ」「Ｌｉｂ−ｓｐｌｉｔ＿ｓｅｎｔｅｎｃｅ．ｃ」「Ｌｉｂ−ＤｉｃＢｏｏｋ．ｃ」の７つである。ライブラリは、別個のオブジェクトファイルとしてコンパイルし、最後にリンクして実行ファイルにコンパイルする。また、日本語ＩＤ辞書は「日本語ＩＤ辞書＿ＪＰＮ．ｄｉｃ」というファイル名でテキスト形式で作成している。知識辞書もテキスト形式で「知識辞書．ｄｉｃ」というファイル名で作成している。本実施例では、知識辞書のうちあらかじめ知っておくべき知識である「一般知識」のみをファイルとして記録し、実行時に図２２に説明している構造体配列に読み込んでいる。文章処理中にでてくる文脈上、話の流れ上の知識等を記録する「一時知識」はファイルとしては記録せず、図２２に説明している構造体配列にのみ記録している。これらを総括して、日本語→意味言語変換を行なうのが「ＪＰＮ＿ｔｏ＿Ｋｏｔｏｄａｍａ２．ｃ」であり、意味言語→日本語変換を行なうのが「Ｋｏｔｏｄａｍａ＿ｔｏ＿ＪＰＮ．ｃ」である。「Ｋｏｔｏｄａｍａ＿ｔｏ＿ＪＰＮ．ｃ」は理解する処理も同時に呼び出す。
【０１８９】
意味言語→古代エジプト語変換を行なうのが、「Ｋｏｔｏｄａｍａ＿ｔｏ＿Ｈｉｅｒｏｇｌｙｐｈ．ｃ」である。ヒエログリフＩＤ辞書「ヒエログリフＩＤ辞書＿ＨＩＥ．ｈｇｐ」もテキスト形式で作成した。前述の「Ｌｉｂ−ｋｎｏｗｌｅｄｇｅ．ｃ」と知識辞書は全世界共通で使えるが、のこりは各言語ごとに開発する必要がある。今回は、「Ｌｉｂ−ｇｌｕｅ＿Ｈｉｇｐｈ．ｃ」「Ｌｉｂ−ｋｏｎｎｙａｋｕ２＿Ｈｉｇｐｈ．ｃ」「Ｌｉｂ−ｖｅｒｂ＿Ｈｉｇｐｈ．ｃ」「Ｌｉｂ−ａｄｊｅｃｔｉｖｅ＿Ｈｉｇｐｈ．ｃ」「Ｌｉｂ−ｓｐｌｉｔ＿ｓｅｎｔｅｎｃｅ＿Ｈｉｇｐｈ．ｃ」「Ｌｉｂ−ＤｉｃＢｏｏｋ＿Ｈｉｇｐｈ．ｃ」を古代エジプト語用に開発した。ヒエログリフのフォント表示にあたっては、通常のパソコンには入っていないので、Ｇｏｏｇｌｅの提供するＮｏｔｅフォント一式のような対応フォントが別途必要である。また、ヒエログリフと英語、日本語を同時処理するためには、プログラムをＵＴＦ−１６以上に対応させる必要がある。「Ｋｏｔｏｄａｍａ＿ｔｏ＿Ｈｉｅｒｏｇｌｙｐｈ．ｃ」は、ヒエログリフ表記を扱うため、日本語と異なり動詞活用などはほとんど必要ないが、「Ｋｏｔｏｄａｍａ＿ｔｏ＿ＪＰＮ．ｃ」と動作比較するため「Ｌｉｂ−ｖｅｒｂ＿Ｈｉｇｐｈ．ｃ」等のライブラリをリンクしている。
【０１９０】
図５４Ｂには、Ｃ言語プログラマー向けに、本実施例にて使用しているプログラムのｍａｋｅｆｉｌｅの内容を付記する。ｍａｋｅにはＧＮＵＭａｋｅ３．８１を用いて、コンパイルコマンド＄（ＣＣ）にはコンパイルコマンドとオプションが展開され、「ｇｃｃ  −−ｉｎｐｕｔ−ｃｈａｒｓｅｔ＝ｃｐ９３２  −ｓｔｄ＝ｇｎｕ９９  −ＤＵＮＩＣＯＤＥ  −Ｄ＿ＵＮＩＣＯＤＥ    −Ｗａｌｌ  −Ｗｕｎｉｎｉｔｉａｌｉｚｅｄ  −ｓ  −Ｏ３  −Ｏｓ  −ｃ  −ｏ」としてコンパイルし、リンクしている。＄（ＡＣ３＿ＳＴＧ＿ＯＢＪＳ）は、安全なファイル処理や文字列処理のためのライブラリがｍａｋｅｆｉｌｅ内でマクロ定義されている。＄（ＡＣ３＿ＳＴＧ＿ＯＢＪＳ）は発明とは関連しないので割愛する。
【０１９１】
Ｌｉｂ−ｇｌｕｅ．ｃは、日本語の助詞と意味言語の関係属性記述子を主に取り扱うライブラリである。助詞と関係属性記述子は同じではないが構成要素としてよく似ているため、本ライブラリでまとめて扱う実装となっている。
【０１９２】
Ｌｉｂ−ｋｎｏｗｌｅｄｇｅ．ｃは、意味言語で書かれた知識や文章の入出力と加工、木構造の処理等を扱うライブラリである。
【０１９３】
Ｌｉｂ−ｋｏｎｎｙａｋｕ２．ｃは、他のライブラリを呼び出して総合的に処理する上位ライブラリである。
【０１９４】
Ｌｉｂ−ｖｅｒｂ．ｃは、日本語の動詞の活用テーブル生成や、融合した関係属性記述子の特定、形態素解析時の動詞マッチングを行うライブラリである。
【０１９５】
Ｌｉｂ−ａｄｊｅｃｔｉｖｅ．ｃは、日本語の形容詞や副詞などの活用テーブル生成や、融合した関係属性記述子の特定、形態素解析時の形容詞、副詞等マッチングを行うライブラリである。
【０１９６】
Ｌｉｂ−ｓｐｌｉｔ＿ｓｅｎｔｅｎｃｅ．ｃは、日本語形態素解析の総括、形態素解析後に分かち書きされた単語への単語ＩＤの割り振り、木構造への変換処理の一部を行うライブラリである。
【０１９７】
Ｌｉｂ−ＤｉｃＢｏｏｋ．ｃは、日本語ＩＤ辞書の読み込み、ＩＤ問い合わせに対する日本語表記の提供、日本語表記問い合わせに対する単語ＩＤ候補の提供、単語種別の回答などを行うライブラリである。
【０１９８】
日本語ＩＤ辞書＿ＪＰＮ．ｄｉｃは、日本語用の単語ＩＤ辞書である。実際に作る際は、単語ＩＤを古代エジプト語と共有するためにＬｉｂｒｅＯｆｆｉｃｅ  Ｃａｌｃのような表計算ソフトで一括で管理し、言語ごとにテキストファイルにコピペする形で作成した。
【０１９９】
ヒエログリフＩＤ辞書＿ＨＩＥ．ｈｇｐは、古代エジプト語用の単語ＩＤ辞書である。実際に作る際は、単語ＩＤを日本語と共有するためにＬｉｂｒｅＯｆｆｉｃｅ  Ｃａｌｃのような表計算ソフトで一括で管理し、言語ごとにテキストファイルにコピペする形で作成した。（拡張子が違うのは、ヒエログリフのフォントの視認性が悪く、１６ポイント程度ないと判別できないため、この拡張子で開いたときだけ表示フォントサイズを変更する設定にしているためで他意はない。）
【０２００】
知識辞書．ｄｉｃは、意味言語で記述された知識辞書である。表記には数値ＩＤを用いて作成している。
【０２０１】
（実行の様子）
図５６は本発明の試験実装の一つ、意味言語の文章を理解するプログラムの実行結果である。知識辞書にはあらかじめ「りんご」に関する知識が記録されている。りんごの色に関して、意味言語で記述された「りんごは赤い」という文章を入力した場合、りんごの色に関しては矛盾なく、あとの知識はりんごの種類などの色と無関係な知識であるため評価せず、全体として無矛盾であるため理解したことになる。一方、意味言語で記述された「りんごは暗い」という文章を読み込ませた場合、知識がないため理解できないと判断する。現在の知識量では、どの程度違うのか（未熟なら緑もある、品種によっても違う）の判断まではいかないが、知識辞書の知識量が増えれば、判断はいくらでも複雑に、正確に行えると考えられる。
【０２０２】
図５７は、本発明の試験実装の一つ、日本語から意味言語に変換するプログラムと、意味言語の文章を古代エジプト語に変換するプログラムの実行結果である。開発言語はＣ言語、ＧＣＣ（Ｍｉｎｇｗ）でコンパイルした。日本語側は、単語辞書は１６４００項目、表記ゆれを含めて２８０００あまりを登録し、動詞は７８００、形容詞は２０００あまりに対応している。古代エジプト語側は必要な単語のＩＤだけ実装した。出力は意味言語で、数値とカッコのみで記述できるが、読みづらいためセミコロンの後に一般的な日本語表記を追加して表示している。「彼女の子供は幸せだ」という文章を、完全に変換できた。日本語とは語順が逆であり、ヒエログリフの文を語順のまま訳すと「子供、彼女の、幸せ」であり、助詞はない。なお、本来のヒエログリフは美しさと面積の確保のため、いくつかの横長の文字は縦に並べてまとめられる場合がある。
【産業上の利用可能性】
【０２０３】
本発明技術は、会話や文章等の意味を解釈、理解することを可能とするものでり、基本機能をＣ言語で試験実装済みであるので、電子計算機上でプログラムとして作成・実行可能であることは明らかである。そのため、自然言語を取り扱う多くの電子機器に応用できる。例えば、意味問い合わせ・意味検索、言語翻訳、映像情報の台詞・状況検索、文章評価・法律評価、各種アドバイス（エキスパートシステム）、知識データベースの構築、書籍・文書のデータベース化、言語評価による犯罪防止、論争評価・裁定、学習障害の支援、精神疾患・脳障害・認知症の診断に利用可能であると考えられる。
【符号の説明】
【０２０４】
１・・・意味言語情報処理システムの全機能ブロック図
１１・・・データ入力部
１２・・・意味言語への変換処理部
１３・・・意味言語操作処理部
１４・・・自然言語への変換処理部
１５・・・意味言語理解処理部
１６・・・自然言語ＩＤ辞書
１７・・・知識辞書
１８・・・記憶部
１９・・・通知部
１００１・・・システムのハードウェア構成の一例
２１・・・意味言語を理解する処理のブロック図
２２・・・自然言語を意味言語へ変換する処理の機能ブロック図
２３・・・自然言語を理解する処理のブロック図
２４・・・自然言語を翻訳する処理のブロック図
図１１Ａ・・・形式言語を理解する処理
図１１Ｂ・・・自然言語を形式言語へ変換する処理
図１１Ｃ・・・（形式言語を使った）自然言語を理解する処理
図１１Ｄ・・・（形式言語を使った）自然言語の翻訳処理
図１３Ａ・・・基本的な意味言語の構造例
図１３Ｂ・・・「問い」を表す意味言語の構造例
図１３Ｃ・・・問いに対する「答え」の意味言語の表現例
図１３Ｄ・・・問いははっきりしているが答えがはっきり特定できない意味言語の構造例
図１３Ｅ・・・意味言語の条件つき問いの構造例
図１３Ｆ・・・意味言語の条件つき問いの回答となる構造例
図１４Ａ・・・概念識別子の単語ＩＤ例
図１４Ｂ・・・関係属性記述子の単語ＩＤ例
図１６Ａ・・・日本語における動詞の活用
図１６Ｂ・・・意味言語における動詞活用の扱い
図１８Ａ・・・意味言語における時制や時間の表現
図１８Ｂ・・・意味主文と意味副文という考え方
図１８Ｃ・・・意味副文を使わない表現例１
図１８Ｄ・・・意味副文を使わない表現例２
図１９Ａ・・・意味言語の数値表記例
図１９Ｂ・・・意味言語の簡易表記例
図２０Ａ・・・概念識別子の構造体定義例
図２０Ｂ・・・概念識別子構造体のイメージ
図２０Ｃ・・・関係属性記述子の構造体定義例
図２０Ｄ・・・関係属性記述子構造体のイメージ
図２１Ａ・・・意味言語による木構造の理論的イメージ
図２１Ｂ・・・意味言語を構造体のリンクで実装した木構造のイメージ
図２２Ａ・・・意味言語の文章を格納するために必要な構造体の定義例
図２２Ｂ・・・意味言語の文章を格納するイメージ
図２４Ａ・・・意味言語を日本語に変換する際に必要な活用単位の例１
図２４Ｂ・・・意味言語を日本語に変換する際に必要な活用単位の例２
図２４Ｃ・・・意味言語を日本語に変換する際に必要な活用単位の例３
図２４Ｄ・・・意味言語を日本語に変換する際に必要な活用単位の例４
図２９Ａ・・・意味言語としての表記例
図２９Ｂ・・・意味言語の内部表現例
図２９Ｃ・・・意味言語の内部表現の辿り方
１４６１・・・意味言語の変換ステップ１
１４６２・・・意味言語の変換ステップ２
１４６３・・・意味言語の変換ステップ３
１４６４・・・意味言語の変換ステップ４
図３０Ａ・・・自然言語ＩＤ辞書の情報例
図３０Ｂ・・・自然言語辞書の多言語への対応関係
１６２１・・・自然言語ＩＤ辞書ヘッダ情報例１
１６２２・・・自然言語ＩＤ辞書ヘッダ情報例２
図３１Ａ・・・一般的知識の知識辞書（一般知識辞書）例
図３１Ｂ・・・一時的知識の知識辞書（一時知識辞書）例
１７０１・・・一般的知識の表記例
１７０２・・・一般的知識の表記例(説明用簡易表記１）
１７０３・・・一般的知識の表記例(説明用簡易表記２）
１７０４・・・一時的知識の表記例
１７０５・・・一時的知識の表記例(説明用簡易表記１）
１７０６・・・一時的知識の表記例(説明用簡易表記２）
図３２Ａ・・・意味言語の木構造に対する処理例（データ追加）
図３２Ｂ・・・意味言語の木構造に対する処理例（データ挿入）
図３２Ｃ・・・意味言語の木構造に対する処理例（データ置換）
図３２Ｄ・・・意味言語の木構造に対する処理例（データ削除）
図３２Ｅ・・・意味言語の木構造に対する処理例（データ並べ替え）
１３０６・・・語順を並べ替えても意味が変わらない並べ替え
１３０７・・・意味言語の木構造で優先順位のない関係属性記述子の並べ替え
図３３Ａ・・・並べ替え可能な関係属性記述子の定義
図３３Ｂ・・・並べ替え可能かどうかの判定方法
図３３Ｃ・・・並べ替え可能かどうかの判定式の状態
図３５Ａ・・・意味言語の文章の知識を使った変形例
図３５Ｂ・・・意味言語の文章の知識を使った変形例（簡易表記）
図３５Ｃ・・・意味言語文章の変形の理論的イメージ図
図３６Ａ・・・意味言語の文章を変形できる条件例（元知識に上位概念があり、別知識に下位概念がある）
図３６Ｂ・・・意味言語の文章を変形できる条件例（元知識に上位概念があり、別知識に下位概念の部分木がある）
図３８Ａ・・・意味言語の木構造の比較処理
図３８Ｂ・・・意味言語の木構造の部分木の比較処理
図４０Ａ・・・意味言語の文章が理解できる場合１
図４０Ｂ・・・意味言語の文章が理解できる場合２
図４０Ｃ・・・意味言語の文章が理解できない場合１（矛盾する）
図４０Ｄ・・・意味言語の文章が理解できない場合２（不明）
図４１Ａ・・・不完全な文章の例（主語が省略されている）
図４１Ｂ・・・不完全な文章の例（主語の対象が省略されている）
図５０Ａ・・・関係属性記述子の文例（「希望」という１値性関係属性記述子を定義する）
図５０Ｂ・・・関係属性記述子の別定義例１（「希望」という概念識別子を定義する）
図５０Ｃ・・・関係属性記述子の別定義例２（概念識別子にまとめる）
図５０Ｄ・・・意味言語別文法構造１
図５０Ｅ・・・意味言語別文法構造２
図５０Ｆ・・・意味言語別文法構造３
図５０Ｇ・・・意味言語別文法構造４
図５０Ｈ・・・意味言語別文法構造５
図５０Ｉ・・・意味言語別文法構造６
図５０Ｊ・・・意味言語別文法構造７
図５１Ａ・・・意味言語の文例
図５１Ｂ・・・意味言語の別構造例１（多分木を使う）
図５１Ｃ・・・意味言語の別構造例２（意味ネットワーク様）
図５１Ｄ・・・意味言語の別構造例３（ヒープ様）
図５１Ｅ・・・意味言語の別構造例４（逆ポーランド記述）
図５１Ｆ・・・意味言語の別構造例５（共有項をくくりだす）
図５１Ｇ・・・意味言語の別構造例６（共有する副情報をくくりだす）
図５２Ａ・・・感覚を判定するための元意味言語文章
図５２Ｂ・・・センサー側で構築される感覚情報を含んだ意味言語文章
図５２Ｃ・・・ＡＩ（判定）側で構築される感覚の基準情報を含んだ意味言語文章
【図１】
2019121367.tif 000003
【図２】
2019121367.tif 000004
【図３】
2019121367.tif 000005
【図４】
2019121367.tif 000006
【図５】
2019121367.tif 000007
【図６】
2019121367.tif 000008
【図７】
2019121367.tif 000009
【図８】
2019121367.tif 000010
【図９】
2019121367.tif 000011
【図１０】
2019121367.tif 000012
【図１１】
2019121367.tif 000013
【図１２】
2019121367.tif 000014
【図１３】
2019121367.tif 000015
【図１４】
2019121367.tif 000016
【図１５】
2019121367.tif 000017
【図１６】
2019121367.tif 000018
【図１７】
2019121367.tif 000019
【図１８】
2019121367.tif 000020
【図１９】
2019121367.tif 000021
【図２０】
2019121367.tif 000022
【図２１】
2019121367.tif 000023
【図２２】
2019121367.tif 000024
【図２３】
2019121367.tif 000025
【図２４】
2019121367.tif 000026
【図２５】
2019121367.tif 000027
【図２６】
2019121367.tif 000028
【図２７】
2019121367.tif 000029
【図２８】
2019121367.tif 000030
【図２９】
2019121367.tif 000031
【図３０】
2019121367.tif 000032
【図３１】
2019121367.tif 000033
【図３２】
2019121367.tif 000034
【図３３】
2019121367.tif 000035
【図３４】
2019121367.tif 000036
【図３５】
2019121367.tif 000037
【図３６】
2019121367.tif 000038
【図３７】
2019121367.tif 000039
【図３８】
2019121367.tif 000040
【図３９】
2019121367.tif 000041
【図４０】
2019121367.tif 000042
【図４１】
2019121367.tif 000043
【図４２】
2019121367.tif 000044
【図４３】
2019121367.tif 000045
【図４４】
2019121367.tif 000046
【図４５】
2019121367.tif 000047
【図４６】
2019121367.tif 000048
【図４７】
2019121367.tif 000049
【図４８】
2019121367.tif 000050
【図４９】
2019121367.tif 000051
【図５０】
2019121367.tif 000052
【図５１】
2019121367.tif 000053
【図５２】
2019121367.tif 000054
【図５３】
2019121367.tif 000055
【図５４】
2019121367.tif 000056
【図５５】
2019121367.tif 000057
【図５６】
2019121367.tif 000058
【図５７】
2019121367.tif 000059