(57)【要約】【課題】対象の文書の内容に特化した同義語辞書を自動的に生成する。【解決手段】情報処理装置１は、複数の単語を含む文章データを受け付け、受け付けた文章データを解析して、複数の単語に含まれる単語ごとに、該単語と、複数の単語に含まれる他の単語との関係を示す概念構造２５を生成する。情報処理装置１は、生成した概念構造２５の類似性に基づき、複数の単語間の類似性に関する判定を行い、判定の結果を第１の同義語候補一覧２６に出力する。【選択図】図１
2018018165.tif 000002
【特許請求の範囲】
【請求項１】
文章データを受け付け、
受け付けた前記文章データに含まれる複数の単語について意味解析処理を実行して、前記複数の単語の各々について、前記複数の単語のうちの他の単語との間の関係を示す情報を生成し、
生成した前記情報の類似性に基づき、前記複数の単語間の類似性に関する判定を行い、
前記判定の結果を出力する
処理をコンピュータに実行させることを特徴とする判定プログラム。
【請求項２】
前記生成する処理は、前記複数の単語に含まれる単語ごとに、該単語の有する概念を表す概念記号と、該単語と前記複数の単語に含まれる他の単語との関係を表す関係記号と当該関係の方向とを示す概念情報を生成する
ことを特徴とする請求項１に記載の判定プログラム。
【請求項３】
前記判定を行う処理は、前記概念情報に含まれる概念記号の単語に対して、前記複数の単語に含まれる他の単語が同じ関係記号および同じ関係の方向で接続されているか否かを判定することで、前記複数の単語間の類似性に関する判定を行い、
前記出力する処理は、前記判定の結果、同じ関係記号で接続されている他の単語の一覧を第１の一覧情報に出力する
ことを特徴とする請求項２に記載の判定プログラム。
【請求項４】
前記判定を行う処理は、
特定のハッシュ関数を前記単語の有する概念記号、該単語の有する関係記号および関係の方向に適用してハッシュ値を算出し、
該算出したハッシュ値に対応させて前記単語に対して接続される前記他の単語を前記第１の一覧情報に追加し、
追加した前記他の単語の数が１であるハッシュ値のエントリを前記第１の一覧情報から削除する
ことを特徴とする請求項３に記載の判定プログラム。
【請求項５】
前記第１の一覧情報から、前記他の単語から元の単語の概念記号を逆に辿る第２の一覧情報を生成し、
前記第１の一覧情報および前記第２の一覧情報を用いて、同一の前記他の単語を含む複数のエントリを１組として抽出し、
抽出した２組のエントリが共通の関係であれば、２組のエントリの他の単語同士を同義語の候補として決定する
ことを特徴とする請求項４に記載の判定プログラム。
【請求項６】
文章データを受け付ける受付部と、
前記受付部によって受け付けられた前記文章データに含まれる複数の単語について意味解析処理を実行して、前記複数の単語の各々について、前記複数の単語のうちの他の単語との間の関係を示す情報を生成する生成部と、
前記生成部によって生成された前記情報の類似性に基づき、前記複数の単語間の類似性に関する判定を行う判定部と、
前記判定部によって判定された結果を出力する出力部と、
を有することを特徴とする判定装置。
【請求項７】
コンピュータが、
文章データを受け付け、
受け付けた前記文章データに含まれる複数の単語について意味解析処理を実行して、前記複数の単語の各々について、前記複数の単語のうちの他の単語との間の関係を示す情報を生成し、
生成した前記情報の類似性に基づき、前記複数の単語間の類似性に関する判定を行い、
前記判定の結果を出力する
各処理を実行することを特徴とする判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判定プログラムなどに関する。
【背景技術】
【０００２】
マニュアル、論文、設計文書など、論理的な整合性が求められる文書においては、同じ意味を表すものには同じ表記を、別の意味を表すものには別の表記を用いることが必要である。このため、文書の推考が行われる際には、同じ意味を表す異なる表記が用いられていないか、別の意味を表す同じ表記が用いられていないかのチェックが行われる。同じ意味を表す異なる表記は、「同義語」といわれる。別の意味を表す同じ表記は、「多義語」といわれる。
【０００３】
同義語が用いられていないかのチェック処理は、同義語の一覧表を辞書（同義語辞書）として用い、例えば、２つの単語が同義語辞書に記載されている単語同士であるかをチェックする。同義語辞書には、例えば、一般的な辞書、対象の文書に記載されている分野に特化した辞書、対象の文書の内容（例えば製品）に特化した辞書が挙げられる。
【０００４】
一般的な同義語辞書や対象の文書に記載されている分野に特化した同義語辞書は、書籍や電子媒体で提供されている。ところが、提供されている同義語辞書は、対象の文書の内容に特化した辞書でないため、対象の文書の内容に特化した同義語辞書として不十分である場合がある。そこで、対象の文書の内容に特化した同義語辞書は、あらかじめ生成される必要がある。
【０００５】
ここで、文字列同士の比較処理において、文字列の意味内容を考慮して両文字列の比較を行う技術が開示されている（例えば、特許文献１参照）。かかる技術では、比較対象とする第１文字列および第２文字列間において、各単語の有する意味的な性質を表す意味属性が共通する各単語を特定して、当該意味属性が共通する各単語を夫々比較し、比較結果に基づいて、第１文字列および第２文字列の比較結果を生成する。すなわち、かかる文字列同士の比較処理は、相互に比較される文字列において、表記が異なっていても、文字列が有する意味内容が同じであれば、両文字列は一致しているものとして比較結果を生成する。なお、意味属性の一例として、所属、住所や人名などが挙げられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−７３９５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、対象の文書の内容に特化した同義語辞書を自動的に生成することは難しいという問題がある。例えば、従来の技術では、比較する各単語の意味的な性質があらかじめわかっている必要があり、意味的な性質がわかっていないと、第１文字列および第２文字列間が同義であるかを判定できない。したがって、従来の技術では、対象の文書の内容に特化した同義語辞書を生成することは難しい。
【０００８】
本発明は、１つの側面では、対象の文書の内容に特化した同義語辞書を自動的に生成することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、判定プログラムは、文章データを受け付け、受け付けた前記文章データに含まれる複数の単語について意味解析処理を実行して、前記複数の単語の各々について、前記複数の単語のうちの他の単語との間の関係を示す情報を生成し、生成した前記情報の類似性に基づき、前記複数の単語間の類似性に関する判定を行い、前記判定の結果を出力する、処理をコンピュータに実行させる。
【発明の効果】
【００１０】
１実施態様によれば、対象の文書の内容に特化した同義語辞書を自動的に生成することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例に係る情報処理装置の構成の一例を示す機能ブロック図である。
【図２Ａ】図２Ａは、概念構造の一例を示す図（１）である。
【図２Ｂ】図２Ｂは、概念構造の一例を示す図（２）である。
【図２Ｃ】図２Ｃは、概念構造の一例を示す図（３）である。
【図３】図３は、アークの記号の一例を示す図である。
【図４Ａ】図４Ａは、第１の同義語候補の一例を示す図である。
【図４Ｂ】図４Ｂは、第２の同義語候補の一例を示す図である。
【図５】図５は、実施例に係る第１の同義語候補抽出処理の流れを示す図（１）である。
【図６】図６は、実施例に係る第１の同義語候補抽出処理の流れを示す図（２）である。
【図７】図７は、実施例に係る第１の同義語候補抽出処理の流れを示す図（３）である。
【図８】図８は、実施例に係る第２の同義語候補抽出処理の流れを示す図（１）である。
【図９】図９は、実施例に係る第２の同義語候補抽出処理の流れを示す図（２）である。
【図１０】図１０は、実施例に係る第２の同義語候補抽出処理の流れを示す図（３）である。
【図１１】図１１は、実施例に係る第１の同義語候補抽出処理のフローチャートの一例を示す図（１）である。
【図１２】図１２は、実施例に係る第１の同義語候補抽出処理のフローチャートの一例を示す図（２）である。
【図１３】図１３は、実施例に係る第１の同義語候補抽出処理のフローチャートの一例を示す図（３）である。
【図１４】図１４は、実施例に係る第１の同義語候補抽出処理のフローチャートの一例を示す図（４）である。
【図１５】図１５は、ハッシュインデックスおよび同義語候補リストのデータ構造の一例を示す図である。
【図１６】図１６は、実施例に係る第１の同義語候補抽出処理のフローチャートの一例を示す図（５）である。
【図１７】図１７は、実施例に係る第２の同義語候補抽出処理のフローチャートの一例を示す図（１）である。
【図１８】図１８は、実施例に係る第２の同義語候補抽出処理のフローチャートの一例を示す図（２）である。
【図１９】図１９は、実施例に係る第２の同義語候補抽出処理のフローチャートの一例を示す図（３）である。
【図２０】図２０は、実施例に係る第２の同義語候補抽出処理のフローチャートの一例を示す図（４）である。
【図２１】図２１は、実施例に係る第２の同義語候補抽出処理のフローチャートの一例を示す図（５）である。
【図２２】図２２は、判定プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示する判定プログラム、判定装置および判定方法の実施例を図面に基づいて詳細に説明する。なお、実施例では、判定装置を情報処理装置として説明する。本発明は、実施例により限定されるものではない。
【実施例】
【００１３】
［実施例に係る情報処理装置の構成］
図１は、実施例１に係る情報処理装置の構成を示す機能ブロック図である。図１に示す情報処理装置１は、機械翻訳などで利用される自然言語の意味解析処理の結果を用いて、同じ意味を表す異なる表記同士を自動的に抽出する。同じ意味を表す異なる表記同士は、「同義語」という。また、実施例で用いられる「文書」とは、単語などの用語を統一したい文章の集まりのことを意味し、必ずしも主語および述語を含まなくても良い。「文章」とは、「文書」に含まれる処理単位を意味し、「文」と同義である。
【００１４】
情報処理装置１は、制御部１０と記憶部２０とを有する。
【００１５】
制御部１０は、ＣＰＵ（Central  Processing  Unit）などの電子回路に対応する。そして、制御部１０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１０は、形態素解析部１１、文法解析部１２および同義語候補抽出部１３を有する。
【００１６】
記憶部２０は、例えば、ＲＡＭ、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部２０は、ドキュメント２１、単語辞書２２、単語リスト２３、文法辞書２４、概念構造２５、第１の同義語候補一覧２６および第２の同義語候補一覧２７を有する。
【００１７】
ドキュメント２１は、同義語候補を抽出する対象の文書である。ドキュメント２１は、例えば、製品の内容に特化した複数の文章を有する対象の文書である。なお、ドキュメント２１は、内容に特化した文書と説明したが、これに限定されず、何らかの分野に特化した文書であっても良いし、一般的な文書であっても良い。
【００１８】
形態素解析部１１は、対象の文書に含まれる複数の文章について、形態素解析を行う。例えば、形態素解析部１１は、ドキュメント２１から対象の文書の文章データを順に読み出す。そして、形態素解析部１１は、単語辞書２２を参照して、読み出した文章データを単語単位に分割する。そして、形態素解析部１１は、分割した単語を単語リスト２３に保持する。
【００１９】
単語辞書２２は、例えば、単語に対応する表記と、単語の品詞と、単語が有する意味属性と、単語の概念記号とを対応付けた辞書である。単語リスト２３は、形態素解析部１１によって文章データが解析された結果得られる単語のリストである。
【００２０】
文法解析部１２は、文法辞書２４を参照して、ドキュメント２１の自然言語としての意味を表現する概念構造２５を生成する。すなわち、文法解析部１２は、自然言語の意味解析処理により、概念構造２５を生成する。例えば、文法解析部１２は、文法辞書２４を参照して、単語リスト２３に保持された複数の単語に含まれる単語ごとに、該単語と、複数の単語に含まれる他の単語との関係を示す概念構造２５を生成する。
【００２１】
ここで、概念構造２５の一例を、図２Ａ〜図２Ｃを参照して説明する。図２Ａ〜図２Ｃは、概念構造の一例を示す図である。図２Ａは、概念構造２５の内部表現のうちノード情報の一例を示す図であり、図２Ｂは、概念構造２５の内部表現のうちアーク情報の一例を示す図であり、図２Ｃは、その概念構造２５を図式化したものである。
【００２２】
図２Ａおよび図２Ｂに示すように、概念構造２５は、原文、ノード情報およびアーク情報を含む。原文は、同義語候補を抽出する対象の文書の１つの文章データである。ここでは、文章データが「赤いボタンを押すと、入力した値を消去できます。」であるとする。ノード情報は、ノード番号、単語、概念記号の情報を含む。ノード番号は、ノードを識別するためのユニークな識別番号である。単語は、文章データを単語に分割したときの単語の範囲を表す表記である。概念記号は、意味的な観点（概念レベル）において単語が指し示す概念を識別する記号である。例えば単語「赤」の概念記号は「ＲＥＤ＝ＡＫＡＩ」であり、単語「ボタン」の概念記号は「ＢＵＴＴＯＮ＝ＢＯＴＡＮ」である。なお、単語「紅」の概念記号は単語「赤」の概念記号と同様に「ＲＥＤ＝ＡＫＡＩ」となる。
【００２３】
アーク情報は、単語と単語との関係を示す情報である。アーク情報は、始ノード番号、始ノード概念記号、終ノード番号、終ノード概念記号および記号を含む。始ノード番号および終ノード番号は、記号で表わす関係を表す対象となる２つのノードを表す。始ノード番号および終ノード番号は、それぞれのノード概念記号とノード番号により文章データ内の単語を特定する。記号は、２つのノードの関係性を記号化したものである。また、始ノードおよび終ノードのいずれかが存在しない場合には、存在しないノードをＮＵＬＬとする。これは、対象のノードの単語に文章データの中での役割を付加する場合などに用いられ、対象のノードの「特徴」という。
【００２４】
図２Ｃに示すように、例えば、「赤」という単語は、「ＲＥＤ＝ＡＫＡＩ」という概念記号で表わされている。そして、「ＲＥＤ＝ＡＫＡＩ」という概念記号のノードは、「ボタン」という単語と、「ＯＢＪ．Ａ」という記号を持つアークで接続されている。さらに、「ＲＥＤ＝ＡＫＡＩ」という概念記号のノードには、他方のノードが存在しない２つのアークが接続されている。１つのアークは、「ＰＲＥＤ」という記号であり、もう１つのアークは、「Ｍ．ＥＲ」という記号である。すなわち、このノードは、「ＰＲＥＤ、Ｍ．ＥＲ」という特徴を持つ。また、「値」という単語は、「ＶＡＬＵＥ」という概念記号で表わされる。そして、「ＶＡＬＵＥ」という概念記号のノードは、「入力」という単語と、「消去」という単語と、「ＯＢＪ」という記号を持つアークで接続されている。さらに、「ＶＡＬＵＥ」という概念記号のノードには、他方のノードが存在しない２つのアークが接続されている。１つのアークは、「Ｊ．ＷＯ」という記号であり、もう１つのアークは、「Ｍ．ＥＥ」という記号である。すなわち、このノードは、「Ｊ．ＷＯ、Ｍ．ＥＥ」という特徴を持つ。つまり、概念構造２５は、単語と単語の意味的な関系を表す有向グラフで表される。
【００２５】
ここで、アークの記号の一例を、図３を参照して説明する。図３は、アークの記号の一例を示す図である。
【００２６】
図３に示すように、「ＯＢＪ．Ａ」というアークの記号は、「形容詞の修飾する対象」であることを示す。図２で示した「ＲＥＤ＝ＡＫＡＩ」という概念記号のノードは、「ボタン」という単語に対して、「ＯＢＪ．Ａ」が示す「形容詞の修飾する対象」であることを意味する。「ＲＥＤ＝ＡＫＡＩ」という概念記号のノードは、「ＰＲＥＤ」が示す「述語として使用されたことを示す」ことを意味する。「ＲＥＤ＝ＡＫＡＩ」という概念記号のノードは、「Ｍ．ＥＲ」が示す「連体修飾した述語を示す」ことを意味する。
【００２７】
また、「ＯＢＪ」というアークの記号は、「動作、変化の直接の対象を示す」ことを意味する。図２で示した「ＶＡＬＵＥ」という概念記号のノードは、「ＩＮＰＵＴ」という概念記号のノードから、「ＯＢＪ」が示す「動作、変化の直接の対象を示す」ことを意味する。「ＶＡＬＵＥ」という概念記号のノードは、「ＤＥＬＥＴＥ」という概念記号のノードから、「ＯＢＪ」が示す「動作、変化の直接の対象を示す」ことを意味する。「ＶＡＬＵＥ」という概念記号のノードは、「Ｊ．ＷＯ」が示す「「を」がついている」ことを意味する。「ＶＡＬＵＥ」という概念記号のノードは、「Ｍ．ＥＥ」が示す「連体修飾された名詞を示す」ことを意味する。
【００２８】
なお、文法解析部１２によって行われる文章の意味解析は、既存の機械翻訳技術を使って行われる。例えば、かかる意味解析は、例えば、特開平６−６８１６０号公報、特開昭６３−１３６２６０号公報や特開平４−３７２０６１号公報に開示されている機械翻訳技術を使って行えば良い。また、概念構造２５は、例えば、特開２０１２−７３９５１号公報に開示されている。
【００２９】
同義語候補抽出部１３は、概念構造２５の類似性に基づき、複数の単語間の類似性に関する判定を行う。すなわち、同義語候補抽出部１３は、概念構造２５を利用して、複数の単語間の同義語の候補を抽出する。同義語候補抽出部１３は、第１の同義語候補抽出部１３１および第２の同義語候補抽出部１３２を有する。
【００３０】
第１の同義語候補抽出部１３１は、１個の単語と同一の関係性を持っている２つの単語を同義語候補として抽出する。例えば、第１の同義語候補抽出部１３１は、概念構造２５を参照し、各ノードに対して特徴を抽出し、ノードの特徴一覧を生成する。第１の同義語候補抽出部１３１は、生成したノードの特徴一覧および概念構造２５を参照して、概念記号および特徴で表わされるノードに対して、記号のアークで接続されている相手のノードを第１の同義語候補一覧２６に追加する。そして、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６から、ノード一覧に１つのノードしか登録されていない行を削除する。第１の同義語候補一覧２６のノード一覧に残ったノード同士が同義語候補となる。
【００３１】
第１の同義語候補一覧２６は、第１の同義語候補抽出部１３１によって抽出された同義語候補の一覧である。第１の同義語候補一覧２６は、概念記号、特徴、アークの記号と向きおよびノード一覧を対応付けて記憶する。概念記号は、ノード一覧に相手のノードを追加する際に用いられるノードの概念記号である。特徴は、ノード一覧に相手のノードを追加する際に用いられるノードが持つ特徴である。アークの記号と向きは、ノード一覧に相手のノードを追加する際に用いられるノードへのアークの記号と向きである。ノード一覧は、概念記号が示すノードと関係するノードの一覧である。ノード一覧に含まれる複数のノード同士が同義語候補となる。
【００３２】
ここで、第１の同義語候補の一例を、図４Ａを参照して説明する。図４Ａは、第１の同義語候補の一例を示す図である。図４Ａに示すように、単語Ｘのノードが、特徴ｇ、ｈを持つ単語Ｐのノードと、記号ａを持つアークにより関係を持っている。単語Ｙのノードが、特徴ｇ、ｈを持つ単語Ｐのノードと、記号ａを持つアークにより関係を持っている。かかる場合には、単語Ｘのノードと単語Ｙのノードは、ともに、同じ概念記号、同じ特徴ｇ、ｈの単語Ｐと同じ記号ａのアークにより関係を持っているので、単語Ｘと単語Ｙは、単語Ｐとの関係において同等である。つまり、概念構造２５は、意味解析を行った結果であるため、単語Ｘと単語Ｙとは、同じ意味で使われている可能性が高いと推測される。すなわち、単語Ｘと単語Ｙとは、同義語候補として抽出される。
【００３３】
図１に戻って、第２の同義語候補抽出部１３２は、２個の単語と同一の関係性を持っている２つの単語を同義語候補として抽出する。例えば、第２の同義候補抽出部１３２は、第１の同義語候補一覧２６において、ノード一覧に登録されている各ノードから概念記号に向かって逆に辿る逆引きのインデックスを生成する。第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６および逆引きのインデックスを用いて、同じノードを含む２行を１組として抽出する。そして、第２の同義語候補抽出部１３２は、抽出した組の中で、共通の関係を有する２個の組を取り出し、取り出した２個の組にそれぞれ含まれる２つのノードを同義語候補として抽出する。共通の関係とは、同一の概念記号、同一の特徴および同一のアークの記号と向きを有する関係のことをいう。そして、第２の同義語候補抽出部１３２は、抽出したノードを第２の同義語候補一覧２７のノード一覧に保持する。
【００３４】
ここで、第２の同義語候補の一例を、図４Ｂを参照して説明する。図４Ｂは、第２の同義語候補の一例を示す図である。図４Ｂに示すように、単語Ｘのノードが、特徴ｇ、ｈを持つ単語Ｐのノードと、記号ａを持つアークにより関係を持つとともに、特徴ｉ、ｊを持つ単語Ｑのノードと、記号ｂを持つアークにより関係を持っている。単語Ｙのノードが、特徴ｇ、ｈを持つ単語Ｐのノードと、記号ａを持つアークにより関係を持つとともに、特徴ｉ、ｊを持つ単語Ｑのノードと、記号ｂを持つアークにより関係を持っている。かかる場合には、単語Ｘのノードと単語Ｙのノードは、ともに、同じ概念記号、同じ特徴ｇ、ｈの単語Ｐと同じ記号ａのアークにより関係を持つ。加えて、単語Ｘのノードと単語Ｙのノードは、同じ概念記号、同じ特徴ｉ、ｊの単語Ｑと同じ記号ｂのアークにより関係を持つ。したがって、単語Ｘと単語Ｙは、２個の単語Ｐ、Ｑとの関係において同等である。概念構造２５は、意味解析を行った結果であるため、単語Ｘと単語Ｙとは、同じ意味で使われている可能性が高いと推測される。すなわち、単語Ｘと単語Ｙとは、同義語候補として抽出される。これにより、第２の同義語候補抽出部１３２は、１個のノードと関係性を持つ同義語候補より精度の良い同義語候補を抽出することができる。
【００３５】
なお、ｋ（ｋは２より大きい自然数）個の単語と同一の関係性を持っている同義語候補を抽出するには、第１の同義語候補一覧２６から第２の同義語候補一覧２７を生成するときと同様にすれば良い。すなわち、第ｋの同義語候補抽出部は、ｋ−１の同義語候補一覧からｋの同義語候補一覧を生成すれば良い。ｋが大きくなれば大きくなる程、第ｋの同義語候補抽出部は、精度の良い同義語候補を抽出することができる。
【００３６】
図５〜図７は、実施例に係る第１の同義語候補抽出処理の一例を示す図である。
【００３７】
図５に示すように、対象の文書に含まれる２つの文章が、概念構造２５で表されている。ここでは、上段の文章が（原文１）の「赤いボタンを押すと、入力した値を消去できます。」であり、下段の文章が（原文３９）の「削除キーを使うと、記入した値をクリアできます。」である。それぞれの文章について、形態素解析部１１が、形態素解析を行って単語リスト２３に保持する。そして、文法解析部１２は、単語リスト２３に保持された複数の単語について、意味解析を行って概念構造２５を生成する。
【００３８】
図６に示すように、ノードの特徴一覧が表わされている。第１の同義語候補抽出部１３１は、概念構造２５を参照し、各ノードに対して特徴を抽出し、ノードの特徴一覧を生成する。ここでは、第１の同義語候補抽出部１３１は、例えば、ノード番号「１」に対して特徴として「Ｍ．ＥＲ，ＰＲＥＤ」を抽出し、特徴一覧に設定する。第１の同義語候補抽出部１３１は、例えば、ノード番号「２」に対して特徴として「Ｊ．ＷＯ，Ｍ．ＥＥ」を抽出し、ノードの特徴一覧に設定する。
【００３９】
図７に示すように、第１の同義語候補一覧２６が表わされている。第１の同義語候補抽出部１３１は、生成した各ノードの特徴一覧および概念構造２５を参照して、概念記号および特徴で表わされるノードに対して、記号のアークで接続されている相手のノードを第１の同義語候補一覧２６に追加する。ここでは、例えば、概念記号「ＲＥＤ＝ＡＫＡＩ」および特徴「Ｍ．ＥＲ，ＰＲＥＤ」で表わされるノードに対して、記号と向き「ＯＢＪ．Ａ（→）」のアークで接続されている相手のノードとして単語「ボタン」および概念記号「ＢＵＴＴＯＮ＝ＢＯＴＡＮ」で表わされるノードが追加される。また、概念記号「ＶＡＬＵＥ」および特徴「Ｊ．ＷＯ，Ｍ．ＥＥ」で表わされるノードに対して、記号と向き「ＯＢＪ（←）」のアークで接続されている相手のノードとして単語「入力」および概念記号「ＩＮＰＵＴ」で表わされるノードが追加される。また、概念記号「ＶＡＬＵＥ」および特徴「Ｊ．ＷＯ，Ｍ．ＥＥ」で表わされるノードに対して、記号と向き「ＯＢＪ（←）」のアークで接続されている相手のノードとして単語「消去」および概念記号「ＤＥＬＥＴＥ」で表わされるノードが追加される。この結果、図７の上部の第１の同義語候補一覧２６が生成される。
【００４０】
なお、相手のノードの追加は、ハッシュを利用しても良い。すなわち、第１の同義語候補抽出部１３１は、特定のノードと接続する相手ノードを追加する際に、特定のノードの概念記号、特徴およびアークの記号と向きから、ハッシュ関数によりハッシュ値を算出する。第１の同義語候補抽出部１３１は、算出したハッシュ値がまだ存在しない場合には、ハッシュ値に同義語候補リストを対応付け、この同義語候補リストに特定のノードの概念記号、特徴およびアークの記号を設定するとともにノード一覧に相手ノードを追加する。第１の同義語候補抽出部１３１は、算出したハッシュ値が既に存在する場合には、ハッシュ値に対応付けた同義語候補リストのノード一覧に相手ノードを追加する。これにより、第１の同義語候補抽出部１３１は、相手ノードを追加すべき位置を高速に検索でき、第１の同義語候補一覧２６を高速に生成できる。
【００４１】
そして、第１の同義語候補抽出部１３１は、生成された第１の同義語候補一覧２６から、ノード一覧に１つのノードしか登録されていない行を削除する。そして、第１の同義語候補一覧２６は、ノード一覧に残ったノード同士を同義語候補とする。ここでは、符号ｄ１で示される行、符号ｄ２で示される行、符号ｄ３で示される行が削除される。この結果、概念記号が「ＶＡＬＵＥ」、特徴が「Ｊ．ＷＯ，Ｍ．ＥＥ」において、ノード一覧に含まれるノード同士が同義語候補となる。つまり、単語「入力」のノード、単語「消去」のノード、単語「記入」のノード、単語「クリア」のノードにおけるノード同士が同義語候補となる。概念記号が「ＰＯＳＳＩＢＬＥ＃ＡＳＰ」、特徴が「Ｋ３ＭＡＳＵ」において、ノード一覧に含まれるノード同士が同義語候補となる。つまり、単語「消去」のノード、単語「クリア」のノードにおけるノード同士が同義語候補となる。すなわち、図７の下部に示す第１の同義語候補一覧２６が、生成された結果である。
【００４２】
図８〜図１０は、実施例に係る第２の同義語候補抽出処理の一例を示す図である。
【００４３】
図８に示すように、第１の同義語候補一覧２６の逆引きインデックスが表わされている。第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６において、ノード一覧に登録されている各ノードから概念記号に向かって逆に辿る逆引きのインデックスを生成する。ここでは、例えば、第１の同義語候補一覧２６のノード一覧には、単語「入力」のノード、単語「消去」のノード、単語「記入」のノード、単語「クリア」のノードが登録されている。第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６から、単語「入力」のノードに対応する行を取り出す。そして、第２の同義語候補抽出部１３２は、取り出した行の概念記号「ＶＡＬＵＥ」、特徴「Ｊ．ＷＯ，Ｍ．ＥＥ」およびアークの記号と向き「ＯＢＪ（←）」を単語「入力」のノードに対応付けて追加する。同様に、第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６から、単語「記入」のノードに対応する行を取り出す。そして、第２の同義語候補抽出部１３２は、取り出した行の概念記号「ＶＡＬＵＥ」、特徴「Ｊ．ＷＯ，Ｍ．ＥＥ」およびアークの記号と向き「ＯＢＪ（←）」を単語「記入」のノードに対応付けて追加する。
【００４４】
図９に示すように、組一覧が表わされている。第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６および第１の同義語候補一覧２６の逆引きのインデックスを用いて、同じノードを含む２行を１組として抽出する。ここでは、単語「消去」のノードは、２行含まれている。したがって、第２の同義語候補抽出部１３２は、単語「消去」のノードについて、２行を１組として抽出する。組番号を組１とする。単語「クリア」のノードは、２行含まれている。したがって、第２の同義語候補抽出部１３２は、単語「クリア」のノードについて、２行を１組として抽出する。組番号を組２とする。
【００４５】
図１０に示すように、第２の同義語候補一覧２７が表わされている。第２の同義語候補抽出部１３２は、抽出した組の中で、共通の関係を有する２個の組を取り出し、取り出した２個の組にそれぞれ含まれる２つのノードを同義語候補とする。ここでは、抽出された２個の組である組１と組２とは、どちらも同一の概念記号、特徴およびアークの記号と向きを含むので、共通の関係を有する。したがって、第２の同義語候補抽出部１３２は、抽出した２個の組である組１と組２とにそれぞれ含まれる２つのノードを同義語候補とする。つまり、単語「消去」のノードと単語「クリア」のノードは、同義語候補となる。すなわち、概念記号が「ＶＡＬＵＥ」と、概念記号が「ＰＯＳＳＩＢＬＥ＃ＡＳＰ」との行を組み合わせた場合に、ノード一覧に共通のノードが登録されており、この「消去」と「クリア」とが同義語候補となる。図１０に示す第２の同義語候補一覧２７が、生成された結果である。
【００４６】
［第１の同義語候補抽出処理のフローチャート］
図１１〜図１４および図１６は、実施例に係る第１の同義語候補抽出処理のフローチャートの一例を示す図である。
【００４７】
図１１に示すように、第１の同義語候補抽出部１３１は、ノードの特徴一覧を生成する（ステップＳ１１）。なお、ノードの特徴一覧の生成処理のフローチャートは、後述する。
【００４８】
第１の同義語候補抽出部１３１は、概念記号および特徴で表わされるノードに対して、同じ記号で表わされるアークで繋がっているノードの一覧を生成する（ステップＳ１２）。すなわち、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６を生成する。なお、第１の同義語候補一覧２６の生成処理のフローチャートは、後述する。
【００４９】
第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６から同義語候補を抽出する（ステップＳ１３）。なお、同義語候補抽出処理のフローチャートは、後述する。そして、同義語候補を抽出した第１の同義語候補抽出部１３１は、第１の同義語候補抽出処理を終了する。
【００５０】
［ノードの特徴一覧の生成処理のフローチャート］
図１２は、ノードの特徴一覧の生成処理のフローチャートの一例を示す図である。図１２に示すように、第１の同義語候補抽出部１３１は、概念構造２５のノード情報から、次のノード番号と概念記号を取り出す（ステップＳ２１）。
【００５１】
第１の同義語候補抽出部１３１は、概念構造２５のアーク情報から、始ノードがノード情報から取り出したノード番号と概念記号に一致し、かつ、終ノードがＮＵＬＬの行を全て取り出す（ステップＳ２２）。第１の同義語候補抽出部１３１は、概念構造２５のアーク情報から、始ノードがＮＵＬＬ、かつ、終ノードがノード情報から取り出したノード番号と概念記号に一致する行を全て取り出す（ステップＳ２３）。
【００５２】
そして、第１の同義語候補抽出部１３１は、ノード番号と概念記号ごとに、概念構造２５のアーク情報から取り出した行の記号を集めて、特徴一覧とする（ステップＳ２４）。第１の同義語候補抽出部１３１は、特徴一覧をノードの特徴一覧に登録する（ステップＳ２５）。
【００５３】
第１の同義語候補抽出部１３１は、ノード情報から全てのノード番号を取り出したか否かを判定する（ステップＳ２６）。全てのノード番号を取り出していない場合には（ステップＳ２６；Ｎｏ）、第１の同義語候補抽出部１３１は、次のノード番号を取り出すべく、ステップＳ２１に移行する。
【００５４】
一方、全てのノード番号を取り出した場合には（ステップＳ２６；Ｙｅｓ）、第１の同義語候補抽出部１３１は、ノードの特徴一覧の生成処理を終了する。
【００５５】
［第１の同義語候補一覧の生成処理のフローチャート］
図１３は、第１の同義語候補一覧の生成処理のフローチャートの一例を示す図である。図１３に示すように、第１の同義語候補抽出部１３１は、ノードの特徴一覧から、次のノードの、ノード番号、概念記号、特徴を取り出す（ステップＳ３１）。
【００５６】
第１の同義語候補抽出部１３１は、概念構造２５のアーク情報から、始ノード番号または終ノード番号とその概念記号が、取り出したノード番号と概念記号と一致するアークの情報を順に取り出す（ステップＳ３２）。
【００５７】
第１の同義語候補抽出部１３１は、相手のノードの概念記号はＮＵＬＬであるか否かを判定する（ステップＳ３３）。相手のノードの概念記号はＮＵＬＬであると判定した場合には（ステップＳ３３；Ｙｅｓ）、第１の同義語候補抽出部１３１は、ステップＳ３６に移行する。
【００５８】
一方、相手のノードの概念記号はＮＵＬＬでないと判定した場合には（ステップＳ３３；Ｎｏ）、第１の同義語候補抽出部１３１は、取り出したアークの情報から、相手ノードの概念記号を取り出す（ステップＳ３４）。第１の同義語候補抽出部１３１は、自ノードの概念記号、特徴、アークの記号、アークの向き、相手ノードの概念記号を、第１の同義語候補一覧２６に追加する（ステップＳ３５）。そして、第１の同義語候補抽出部１３１は、ステップＳ３６に移行する。なお、第１の同義語候補一覧２６への追加処理のフローチャートは、後述する。
【００５９】
ステップＳ３６において、第１の同義語候補抽出部１３１は、全てのアークの情報を処理したか否かを判定する（ステップＳ３６）。全てのアークの情報を処理していないと判定した場合には（ステップＳ３６；Ｎｏ）、第１の同義語候補抽出部１３１は、概念構造２５のアーク情報から次のアークの情報を取り出すべく、ステップＳ３２に移行する。
【００６０】
一方、全てのアークの情報を処理したと判定した場合には（ステップＳ３６；Ｙｅｓ）、第１の同義語候補抽出部１３１は、ノードの特徴一覧を全て処理したか否かを判定する（ステップＳ３７）。ノードの特徴一覧を全て処理していないと判定した場合には（ステップＳ３７；Ｎｏ）、第１の同義語候補抽出部１３１は、ノードの特徴一覧から次のノードの情報を取り出すべく、ステップＳ３１に移行する。
【００６１】
一方、ノードの特徴一覧を全て処理していたと判定した場合には（ステップＳ３７；Ｙｅｓ）、第１の同義語候補抽出部１３１は、第１の同義語候補一覧の生成処理を終了する。
【００６２】
［第１の同義語候補一覧への追加処理のフローチャート］
図１４は、第１の同義語候補一覧への追加処理のフローチャートの一例を示す図である。図１４に示すように、第１の同義語候補抽出部１３１は、自ノードの概念記号、特徴、アークの記号と向きから、ハッシュ関数によりハッシュ値を算出する（ステップＳ４１）。第１の同義語候補抽出部１３１は、ハッシュインデックスにおいて、算出したハッシュ値のエントリを特定する（ステップＳ４２）。
【００６３】
第１の同義語候補抽出部１３１は、特定したエントリの同義語候補リストの配列番号がー１（同義語候補リストに未登録）であるか否かを判定する（ステップＳ４３）。特定したエントリの同義語候補リストの配列番号が−１であると判定した場合には（ステップＳ４３；Ｙｅｓ）、第１の同義語候補抽出部１３１は、同義語候補リストの最後に、自ノードの概念記号、特徴、アークの記号、アークの向き、相手ノードの概念記号を追加する。そして、第１の同義語候補抽出部１３１は、追加した情報の同義語候補リスト上の配列番号をハッシュインデックスの同義語候補リストの配列番号に登録する（ステップＳ４４）。そして、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６への追加処理を終了する。
【００６４】
一方、特定したエントリの同義語候補リストの配列番号が−１でないと判定した場合には（ステップＳ４３；Ｎｏ）、第１の同義語候補抽出部１３１は、以下の処理を行う。すなわち、第１の同義語候補抽出部１３１は、同義語候補リストの対象の配列番号に既に登録された概念記号、特徴、アークの記号と向きは登録対象と一致するか否かを判定する（ステップＳ４５）。
【００６５】
同義語候補リストの対象の配列番号に既に登録された概念記号、特徴、アークの記号と向きは登録対象と一致すると判定した場合には（ステップＳ４５；Ｙｅｓ）、第１の同義語候補抽出部１３１は、以下の処理を行う。すなわち、第１の同義語候補抽出部１３１は、対象の配列番号のノード一覧に相手ノードの情報を追加する（ステップＳ４６）。そして、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６への追加処理を終了する。
【００６６】
一方、同義語候補リストの対象の配列番号に既に登録された概念記号、特徴、アークの記号と向きは登録対象と一致しないと判定した場合には（ステップＳ４５；Ｎｏ）、第１の同義語候補抽出部１３１は、シノニムが発生した場合であり、以下の処理を行う。すなわち、第１の同義語候補抽出部１３１は、対象の配列番号の次配列番号は−１であるか否かを判定する（ステップＳ４７）。
【００６７】
対象の配列番号の次配列番号は−１でないと判定した場合には（ステップＳ４７；Ｎｏ）、第１の同義語候補抽出部１３１は、次配列番号にある配列番号を、次の処理対象とする（ステップＳ４８）。そして、第１の同義語候補抽出部１３１は、ステップＳ４５に移行する。
【００６８】
一方、対象の配列番号の次配列番号は−１であると判定した場合には（ステップＳ４７；Ｙｅｓ）、第１の同義語候補抽出部１３１は、同義語候補リストの最後に、自ノードの概念記号、特徴、アークの記号、アークの向き、相手ノードの概念記号を追加する。そして、第１の同義語候補抽出部１３１は、追加した情報の同義語候補リスト上の配列番号を
対象の配列番号の次配列番号に登録する（ステップＳ４９）。そして、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６への追加処理を終了する。
【００６９】
なお、図１４のフローチャートで用いたハッシュインデックスおよび同義語候補リストのデータ構造を、図１５を参照して説明する。図１５は、ハッシュインデックスおよび同義語候補リストのデータ構造の一例を示す図である。
【００７０】
図１５の上段には、ハッシュインデックスが表わされている。ハッシュインデックスは、ハッシュ値をインデックスに持つ配列である。ハッシュインデックスは、ハッシュ値と同義語候補リストの配列番号とを対応付ける。同義語候補リストの配列番号は、−１でない場合には、対応するハッシュ値を持つ同義語候補リストを指す。同義語候補リストの配列番号は、−１の場合には、対応するハッシュ値を持つ同義語候補の情報が未登録であることを示す。
【００７１】
図１５の下段には、同義語候補リストが表わされている。同義語候補リストは、第１の同義語候補一覧２６に対応する。同義語候補リストは、配列番号、次配列番号、概念記号、特徴、アークの記号と向きおよびノード一覧を対応付ける。配列番号は、ハッシュインデックスの同義語候補リストの配列番号に対応付けられる。次配列番号が−１でない場合には、次配列番号は、同一のハッシュ値を持つ別の同義語候補の情報の番号を示す。すなわち、シノニムが発生した場合には、次配列番号に別の配列番号が設定される。次配列番号が−１である場合には、同一のハッシュを持つ同義語候補の情報がこれ以上ないことを示す。
【００７２】
［同義語候補抽出処理のフローチャート］
図１６は、同義語候補抽出処理のフローチャートの一例を示す図である。図１６に示すように、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６から次のエントリ（行）を取り出す（ステップＳ５１）。第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６のノード一覧に、登録されているノードの数が２個以上であるか否かを判定する（ステップＳ５２）。
【００７３】
ノード一覧に、登録されているノードの数が２個以上でないと判定した場合には（ステップＳ５２；Ｎｏ）、第１の同義語候補抽出部１３１は、当該エントリを、第１の同義語候補一覧２６から削除する（ステップＳ５３）。そして、第１の同義語候補抽出部１３１は、ステップＳ５４に移行する。
【００７４】
一方、ノード一覧に、登録されているノードの数が２個以上であると判定した場合には（ステップＳ５２；Ｙｅｓ）、第１の同義語候補抽出部１３１は、登録されているノード同士を同義語候補と判断し、ステップＳ５４に移行する。
【００７５】
ステップＳ５４において、第１の同義語候補抽出部１３１は、第１の同義語候補一覧２６の全てのエントリを処理したか否かを判定する（ステップＳ５４）。全てのエントリを処理していないと判定した場合には（ステップＳ５４；Ｎｏ）、第１の同義語候補抽出部１３１は、次のエントリを処理すべく、ステップＳ５１に移行する。
【００７６】
一方、全てのエントリを処理したと判定した場合には（ステップＳ５４；Ｙｅｓ）、第１の同義語候補抽出部１３１は、第１の同義語候補抽出処理を終了する。
【００７７】
［第２の同義語候補抽出処理のフローチャート］
図１７〜図２１は、実施例に係る第２の同義語候補抽出処理のフローチャートの一例を示す図である。
【００７８】
図１７に示すように、第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６から、ノード一覧のノードからエントリ（行）を特定する逆引きのインデックスを生成する（ステップＳ６１）。なお、逆引きのインデックス生成処理のフローチャートは、後述する。
【００７９】
第２の同義語候補抽出部１３２は、逆引きのインデックスから、同じノードを含む２個の行の組を抽出する（ステップＳ６２）。なお、同じノードを含む２個の行の組の抽出処理のフローチャートは、後述する。
【００８０】
第２の同義語候補抽出部１３２は、抽出した２個の組に、共通に含まれるノードの一覧を生成する（ステップＳ６３）。すなわち、第２の同義語候補抽出部１３２は、第２の同義語候補一覧２７を生成する。なお、共通に含まれるノードの一覧生成処理のフローチャートは、後述する。
【００８１】
第２の同義語候補抽出部１３２は、第２の同義語候補一覧２７から同義語候補を抽出する（ステップＳ６４）。なお、同義語候補抽出処理のフローチャートは、後述する。そして、第２の同義語候補抽出部１３２は、第２の同義語候補抽出処理を終了する。
【００８２】
［逆引きのインデックス生成処理のフローチャート］
図１８は、逆引きのインデックスの生成処理のフローチャートの一例を示す図である。図１８に示すように、第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６から次のエントリ（行）を取り出す（ステップＳ７１）。第２の同義語候補抽出部１３１は、取り出したエントリから概念記号、特徴、アークの記号と向きを取り出す（ステップＳ７２）。
【００８３】
そして、第２の同義語候補抽出部１３２は、エントリのノード一覧から次のノードを取り出す（ステップＳ７３）。第２の同義語候補抽出部１３２は、逆引きのインデックスに、取り出したノードの情報が登録済みであるか否かを判定する（ステップＳ７４）。取り出したノードの情報が登録済みであると判定した場合には（ステップＳ７４；Ｙｅｓ）、第２の同義語候補抽出部１３２は、ステップＳ７６に移行する。
【００８４】
一方、取り出したノードの情報が登録済みでないと判定した場合には（ステップＳ７４；Ｎｏ）、第２の同義語候補抽出部１３２は、逆引きのインデックスに、取り出したノードを登録する（ステップＳ７５）。そして、第２の同義語候補抽出部１３２は、ステップＳ７６に移行する。
【００８５】
ステップＳ７６において、第２の同義語候補抽出部１３２は、逆引きのインデックスの、取り出したノードの情報に、概念記号、特徴、アークの記号と向きを登録する（ステップＳ７６）。
【００８６】
第２の同義語候補抽出部１３２は、エントリのノード一覧にある全てのノードを処理したか否かを判定する（ステップＳ７７）。エントリのノード一覧にある全てのノードを処理していないと判定した場合には（ステップＳ７７；Ｎｏ）、第２の同義語候補抽出部１３２は、次のノードを処理すべく、ステップＳ７３に移行する。
【００８７】
一方、エントリのノード一覧にある全てのノードを処理したと判定した場合には（ステップＳ７７；Ｙｅｓ）、第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６の全てのエントリを処理したか否かを判定する（ステップＳ７８）。全てのエントリを処理していないと判定した場合には（ステップＳ７８；Ｎｏ）、第２の同義語候補抽出部１３２は、次のエントリを取り出すべく、ステップＳ７１に移行する。
【００８８】
一方、全てのエントリを処理したと判定した場合には（ステップＳ７８；Ｙｅｓ）、第２の同義語候補抽出部１３２は、逆引きのインデックスの生成処理を終了する。
【００８９】
［同じノードを含む２個の行の組の抽出処理のフローチャート］
図１９は、同じノードを含む２個の行の抽出処理のフローチャートの一例を示す図である。図１９に示すように、第２の同義語候補抽出部１３２は、第１の同義語候補一覧１３１から次のエントリを取り出す（ステップＳ８１）。第２の同義語候補抽出部１３２は、取り出したエントリから概念記号、特徴、アークの記号と向きを取り出し、取り出した情報を候補１とする（ステップＳ８２）。
【００９０】
第２の同義語候補抽出部１３２は、エントリのノード一覧から次のノードを取り出す（ステップＳ８３）。第２の同義語候補抽出部１３２は、取り出したノードを、逆引きインデックスから検索する（ステップＳ８４）。第２の同義語候補抽出部１３２は、逆引きインデックスの、取り出したノードの情報から、次の概念記号、特徴、アークの記号と向きを取り出し、取り出した情報を候補２とする（ステップＳ８５）。
【００９１】
第２の同義語候補抽出部１３２は、候補１と候補２とは同一であるか否かを判定する（ステップＳ８６）。候補１と候補２とは同一であると判定した場合には（ステップＳ８６；Ｙｅｓ）、第２の同義語候補抽出部１３２は、候補１と候補２とが組にならないので、ステップＳ９０に移行する。
【００９２】
一方、候補１と候補２とは同一でないと判定した場合には（ステップＳ８６；Ｎｏ）、第２の同義語候補抽出部１３２は、候補１と候補２とを合わせた組を生成する（ステップＳ８７）。第２の同義語候補抽出部１３２は、生成した組、もしくは、候補１と候補２とを入れ換えた組は組一覧に登録済みであるか否かを判定する（ステップＳ８８）。
【００９３】
生成した組、もしくは、候補１と候補２とを入れ換えた組は組一覧に登録済みであると判定した場合には（ステップＳ８８；Ｙｅｓ）、第２の同義語候補抽出部１３２は、既に同じ組が存在するので、ステップＳ９０に移行する。一方、生成した組、および、候補１と候補２とを入れ換えた組は組一覧に登録済みでないと判定した場合には（ステップＳ８８；Ｎｏ）、第２の同義語候補抽出部１３２は、生成した組を組一覧に登録する（ステップＳ８９）。
【００９４】
ステップＳ９０において、第２の同義語候補抽出部１３２は、全ての候補２を処理したか否かを判定する（ステップＳ９０）。全ての候補２を処理していないと判定した場合には（ステップＳ９０；Ｎｏ）、第２の同義語候補抽出部１３２は、次の候補２を処理すべく、ステップＳ８５に移行する。
【００９５】
一方、全ての候補２を処理したと判定した場合には（ステップＳ９０；Ｙｅｓ）、第２の同義語候補抽出部１３２は、全てのノードを処理したか否かを判定する（ステップＳ９１）。全てのノードを処理していないと判定した場合には（ステップＳ９１；Ｎｏ）、第２の同義語候補抽出部１３２は、次のノードを処理すべく、ステップＳ８３に移行する。
【００９６】
一方、全てのノードを処理したと判定した場合には（ステップＳ９１；Ｙｅｓ）、第２の同義語候補抽出部１３２は、全てのエントリを処理したか否かを判定する（ステップＳ９２）。全てのエントリを処理していないと判定した場合には（ステップＳ９２；Ｎｏ）、第２の同義語候補抽出部１３２は、次のエントリを処理すべく、ステップＳ８１に移行する。
【００９７】
一方、全てのエントリを処理したと判定した場合には（ステップＳ９２；Ｙｅｓ）、第２の同義語候補抽出部１３２は、同じノードを含む２個の行の組の抽出処理を終了する。
【００９８】
［共通に含まれるノードの一覧生成処理のフローチャート］
図２０は、共通に含まれるノードの一覧生成処理のフローチャートの一例を示す図である。図２０に示すように、第２の同義語候補抽出部１３２は、組一覧から次の組を取り出す（ステップＳ１０１）。第２の同義語候補抽出部１３２は、取り出した組から候補１、候補２の情報を取り出す（ステップＳ１０２）。すなわち、第２の同義語候補抽出部１３２は、候補１の概念記号、特徴、アークの記号と向きおよび候補２の概念記号、特徴、アークの記号と向きを取り出す。
【００９９】
第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６から候補１のエントリを取り出し、取り出したエントリに含まれるノード一覧を候補１ノード一覧とする（ステップＳ１０３）。第２の同義語候補抽出部１３２は、第１の同義語候補一覧２６から候補２のエントリを取り出し、取り出したエントリに含まれるノード一覧を候補２ノード一覧とする（ステップＳ１０４）。
【０１００】
第２の同義語候補抽出部１３２は、候補１ノード一覧と候補２ノード一覧の両方に共通して含まれるノードを抽出し、抽出したノードを共通ノードとする（ステップＳ１０５）。例えば、候補１の情報を持つ２個のノードと候補２の情報を持つ２個のノードとが共通であれば、この２個のノードを共通ノードとする。
【０１０１】
そして、第２の同義語候補抽出部１３２は、候補１、候補２および共通ノードを第２の同義語候補一覧２７に登録する（ステップＳ１０６）。第２の同義語候補抽出部１３２は、全ての組を処理したか否かを判定する（ステップＳ１０７）。全ての組を処理していないと判定した場合には（ステップＳ１０７；Ｎｏ）、第２の同義語候補抽出部１３２は、次の組を処理すべく、ステップＳ１０１に移行する。
【０１０２】
一方、全ての組を処理したと判定した場合には（ステップＳ１０７；Ｙｅｓ）、第２の同義語候補抽出部１３２は、共通に含まれるノードの一覧生成処理を終了する。
【０１０３】
［同義語候補抽出処理のフローチャート］
図２１は、同義語候補抽出処理のフローチャートの一例を示す図である。図２１に示すように、第２の同義語候補抽出部１３２は、第２の同義語候補一覧２７から次のエントリを取り出す（ステップＳ１１１）。第２の同義語候補抽出部１３２は、エントリに含まれるノード一覧に登録されているノードの数は２個以上であるか否かを判定する（ステップＳ１１２）。
【０１０４】
ノード一覧に登録されているノードの数は２個以上でないと判定した場合には（ステップＳ１１２；Ｎｏ）、第２の同義語候補抽出部１３２は、取り出したエントリを第２の同義語候補一覧２７から削除する（ステップＳ１１３）。そして、第２の同義語候補抽出部１３２は、ステップＳ１１４に移行する。
【０１０５】
一方、ノード一覧に登録されているノードの数は２個以上であると判定した場合には（ステップＳ１１２；Ｙｅｓ）、第２の同義語候補抽出部１３２は、ステップＳ１１４に移行する。
【０１０６】
ステップＳ１１４において、第２の同義語候補抽出部１３２は、全てのエントリを処理したか否かを判定する（ステップＳ１１４）。全てのエントリを処理していないと判定した場合には（ステップＳ１１４；Ｎｏ）、第２の同義語候補抽出部１３２は、次のエントリを処理すべく、ステップＳ１１１に移行する。
【０１０７】
一方、全てのエントリを処理したと判定した場合には（ステップＳ１１４；Ｙｅｓ）、第２の同義語候補抽出部１３２は、同義語候補抽出処理を終了する。
【０１０８】
［実施例の効果］
このようにして、情報処理装置１は、文章データを受け付け、受け付けた文章データに含まれる複数の単語について意味解析処理を実行して、複数の単語の各々について、複数の単語のうちの他の単語との関係を示す概念構造２５を生成する。情報処理装置１は、生成した概念構造２５の類似性に基づき、複数の単語間の類似性に関する判定を行う。そして、情報処理装置１は、判定の結果を出力する。かかる構成によれば、情報処理装置１は、単語間の類似性判定のための処理負荷を低減することができる。
【０１０９】
また、情報処理装置１は、複数の単語に含まれる単語ごとに、該単語の有する概念を表す概念記号と、該単語と複数の単語に含まれる他の単語との関係を表す関係記号と当該関係の方向とを示す概念構造２５を生成する。かかる構成によれば、情報処理装置１は、概念構造２５を用いることで、単語間の類似性を自動的に判定できる。
【０１１０】
また、情報処理装置１は、概念構造２５に含まれる概念記号の単語に対して、複数の単語に含まれる他の単語が同じ関係記号および同じ関係の方向で接続されているか否かを判定することで、複数の単語間の類似性に関する判定を行う。情報処理装置１は、判定の結果、同じ関係記号および同じ関係の方向で接続されている他の単語の一覧を第１の同義語候補一覧２６に出力する。かかる構成によれば、情報処理装置１は、対象の文書が内容に特化した文書であっても、この文書の同義語辞書を第１の同義語候補一覧２６として自動的に生成することが可能となる。
【０１１１】
また、情報処理装置１は、特定のハッシュ関数を単語の有する概念記号、該単語の有する関係記号および関係の方向に適用してハッシュ値を算出する。情報処理装置１は、算出したハッシュ値に対応させて単語に対して接続される他の単語を第１の同義語候補一覧２６に追加する。そして、情報処理装置１は、追加した他の単語の数が１であるハッシュ値のエントリを第１の同義語候補一覧２６から削除する。かかる構成によれば、情報処理装置１は、ハッシュを利用することで、第１の同義語候補一覧２６を高速に生成することが可能となる。
【０１１２】
また、情報処理装置１は、第１の同義語候補一覧２６から、他の単語から元の単語の概念記号を逆に辿る逆引きのインデックスを生成する。情報処理装置１は、第１の同義語候補一覧２６および逆引きのインデックスを用いて、同一の他の単語を含む複数のエントリを１組として抽出する。そして、情報処理装置１は、抽出した２組のエントリが共通の関係であれば、２組のエントリの他の単語同士を同義語の候補として決定する。かかる構成によれば、情報処理装置１は、対象の文書が内容に特化した文書であっても、この文書の同義語辞書を第２の同義語候補一覧２７として第１の同義語候補一覧２６より精度良く生成することが可能となる。
【０１１３】
［その他］
なお、図示した情報処理装置１の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、情報処理装置１の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、第１の同義語候補抽出部１３１と、第２の同義語候補抽出部１３２とを１つの部として統合しても良い。また、記憶部２０を情報処理装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【０１１４】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１に示した情報処理装置１と同様の機能を実現する判定プログラムを実行するコンピュータの一例を説明する。図２２は、判定プログラムを実行するコンピュータの一例を示す図である。
【０１１５】
図２２に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラムなどを読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【０１１６】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、判定プログラム２０５ａおよび判定処理関連情報２０５ｂを記憶する。
【０１１７】
ＣＰＵ２０３は、判定プログラム２０５ａを読み出して、メモリ２０１に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置１の各機能部に対応する。判定処理関連情報２０５ｂは、概念構造２５、第１の同義語候補一覧２６および第２の同義語候補一覧２７に対応する。そして、例えばリムーバブルディスク２１１が、判定プログラム２０５ａなどの各情報を記憶する。
【０１１８】
なお、判定プログラム２０５ａについては、必ずしも最初からＨＤＤ２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらから判定プログラム２０５ａを読み出して実行するようにしても良い。
【符号の説明】
【０１１９】
１  情報処理装置
１０  制御部
１１  形態素解析部
１２  文法解析部
１３  同義語候補抽出部
１３１  第１の同義語候補抽出部
１３２  第２の同義語候補抽出部
２０  記憶部
２１  ドキュメント
２２  単語辞書
２３  単語リスト
２４  文法辞書
２５  概念構造
２６  第１の同義語候補一覧
２７  第２の同義語候補一覧
【図１】
2018018165.tif 000003
【図２Ａ】
2018018165.tif 000004
【図２Ｂ】
2018018165.tif 000005
【図２Ｃ】
2018018165.tif 000006
【図３】
2018018165.tif 000007
【図４Ａ】
2018018165.tif 000008
【図４Ｂ】
2018018165.tif 000009
【図５】
2018018165.tif 000010
【図６】
2018018165.tif 000011
【図７】
2018018165.tif 000012
【図８】
2018018165.tif 000013
【図９】
2018018165.tif 000014
【図１０】
2018018165.tif 000015
【図１１】
2018018165.tif 000016
【図１２】
2018018165.tif 000017
【図１３】
2018018165.tif 000018
【図１４】
2018018165.tif 000019
【図１５】
2018018165.tif 000020
【図１６】
2018018165.tif 000021
【図１７】
2018018165.tif 000022
【図１８】
2018018165.tif 000023
【図１９】
2018018165.tif 000024
【図２０】
2018018165.tif 000025
【図２１】
2018018165.tif 000026
【図２２】
2018018165.tif 000027