[実施の形態1]
図1は、検索システムのネットワーク構成の例を示す図である。検索サーバ1と検索端末3は、ネットワークを介して接続されている。ネットワークは、例えば、インターネットあるいはLAN(Local Area Network)などである。検索サーバ1は、テキスト検索のサービスを提供するサーバであり、検索端末3は、検索サーバ1を利用するユーザが使用する端末である。
検索端末3から検索サーバ1にアクセスすると、検索サーバ1は、検索端末3に検索画面の情報(例えば、HTML(Hyper Text Markup Language)文書)を送信する。検索端末3は、受信した検索画面の情報に従って検索画面を表示する。検索端末3は、例えば、ブラウザにより検索画面を表示させる。
検索画面は、検索端末3のユーザへ質問文の入力を促すメッセージと、検索端末3から質問文を一文字又は複数文字を受け付け、受け付けた文字からなる文字列を表示する領域を有する。検索画面で受け付けた一文字又は複数文字は、検索端末3から検索サーバ1へ転送される。検索画面は、更に一文字又は複数文字の受け付けに応答して、検索結果を表示し得る領域を有する。検索結果は、検索サーバ1から検索端末3へ転送されたものである。
以下で、本実施の形態の検索サーバ1の検索サービスで受け付ける質問文とそれに応答する検索結果の例について説明する。
第1例では、助詞の付いた動作主格の疑問詞を含む文節が質問文に含まれる場合について説明する。図2は、「図書館」の文字列の受け付けに続いて「で」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から名詞「図書館」と助詞「で」からなる文節を抽出し、名詞「図書館」の体言の属性を「施設」と判定し、体言の属性「施設」と助詞「で」の組み合わせから深層格は場所格であると判定する。検索サーバ1は、更に、場所格の名詞「図書館」を有する検索対象文を抽出して、検索結果として表示させる。
この例の検索結果では、場所格の名詞「図書館」を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「図書館で太郎が自転車を盗まれた。」のうち「図書館で」が該当範囲であり、第2文では、「図書館で人気のある本は韓国の本である。」のうち「図書館で」が該当範囲であり、第3文では、「1日の午後に図書館でコンサートがある。」のうち「図書館で」が該当範囲であり、第4文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「図書館で」が該当範囲であり、第5文では、「墨田の図書館で受付の仕事を募集している。」のうち「図書館で」が該当範囲であり、第6文では、「佐藤さんが金曜日に図書館でお茶を飲んだ。」のうち「図書館で」が該当範囲である。
図3は、図2の続きとして、「誰」の文字の受け付けに続いて「が」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から疑問詞「誰」と助詞「が」からなる文節を抽出し、疑問詞「誰」と助詞「が」の組み合わせから深層格は動作主格であると判定する。検索サーバ1は、更に、動作主格の任意の名詞を有する検索対象文を抽出して、抽出した検索対象文と図2の検索結果の検索対象文とにおいて重複する検索対象文を、新たな検索結果として表示させる。
この例の検索結果では、場所格の名詞「図書館」を含む文節に加えて、動作主格の任意の名詞を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「花子の娘は」と「図書館で」が該当範囲である。第2文では、「佐藤さんが金曜日に図書館でお茶を飲んだ。」のうち「佐藤さんが」と「図書館で」が該当範囲であり、第3文では、「図書館で太郎が自転車を盗まれた。」のうち「図書館で」と「太郎が」が該当範囲である。
尚、この例の第1文では、疑問詞「誰」に対応する任意の名詞「娘」について、体言修飾格の文節「花子の」も該当範囲に含めている。
図4は、図3の続きとして、「弁当」の文字列の受け付けに続いて「を」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から名詞「弁当」と助詞「を」からなる文節を抽出し、名詞「弁当」の体言の属性を「食物」と判定し、体言の属性「食物」と助詞「を」の組み合わせから深層格は対象格であると判定する。検索サーバ1は、更に、対象格の名詞「弁当」を有する検索対象文を抽出して、抽出した検索対象文と図3の検索結果の検索対象文とにおいて重複する検索対象文を、新たな検索結果として表示させる。
この例の検索結果では、場所格の名詞「図書館」を含む文節と動作主格の任意の名詞を含む文節に加えて、対象格の名詞「弁当」を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中、第1文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「花子の娘は」と「図書館で」と「弁当を」が該当範囲である。
第2例では、助詞が付かない時間格の疑問詞を含む文節が質問文に含まれる場合について説明する。図5は、「東京タワー」の文字列の受け付けに続いて、「は」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から名詞「東京タワー」と助詞「は」からなる文節を抽出し、名詞「東京タワー」の体言の属性を「施設」と判定し、体言の属性「施設」と助詞「は」の組み合わせから深層格は動作主格、対象格、あるいは場所格であると判定する。検索サーバ1は、更に、動作主格、対象格、あるいは場所格のいずれかの名詞「東京タワー」を有する検索対象文を抽出して、検索結果として表示させる。
この例の検索結果では、動作主格、対象格、あるいは場所格の名詞「東京タワー」を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「東京タワーが私の故郷だ。」のうち「東京タワーが」が該当範囲であり、第2文では、「東京タワーは東京の名所だ。」のうち「東京タワーは」が該当範囲であり、第3文では、「父は東京タワーを設計した人の一人だ。」のうち「東京タワーを」が該当範囲であり、第4文では、「1958年に東京タワーが建設された。」のうち「東京タワーが」が該当範囲であり、第5文では、「東京タワーは昭和33年に建てられました。」のうち「東京タワーは」が該当範囲である。
図6は、図5の続きとして、「いつ」の文字列を受け付けた場合の検索画面の例を示している。検索サーバ1は、質問文から助詞のない疑問詞「いつ」からなる文節を抽出し、疑問詞「いつ」と助詞無しの組み合わせから深層格は時間格であると判定する。検索サーバ1は、更に、時間格の任意の名詞を有する検索対象文を抽出して、抽出した検索対象文と図5の検索結果の検索対象文とにおいて重複する検索対象文を、新たな検索結果として表示させる。
この例の検索結果では、動作主格、対象格、あるいは場所格の名詞「東京タワー」を含む文節に加えて、時間格の任意の名詞を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「1958年に東京タワーが建設された。」のうち「1958年に」と「東京タワーが」が該当範囲であり、第2文では、「東京タワーは昭和33年に建てられました。」のうち「東京タワーは」と「昭和33年に」が該当範囲である。
第3例では、体言修飾格の疑問詞を含む文節が質問文に含まれる場合について説明する。図7は、「弁当」の文字列の受け付けに続いて、「を」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から名詞「弁当」と助詞「を」からなる文節を抽出し、名詞「弁当」の体言の属性を「食物」と判定し、体言の属性「食物」と助詞「を」の組み合わせから深層格は対象格であると判定する。検索サーバ1は、更に、対象格の名詞「弁当」を有する検索対象文を抽出して、検索結果として表示させる。
この例の検索結果では、対象格の名詞「弁当」を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「花子が弁当を買った。」のうち「弁当を」が該当範囲であり、第2文では、「太郎は弁当を自分で作る。」のうち「弁当を」が該当範囲であり、第3文では、「太郎は弁当を図書館で食べる。」のうち「弁当を」が該当範囲であり、第4文では、「宏はお母さんの作った弁当を持ってくる。」のうち「弁当を」が該当範囲であり、第5文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「弁当を」が該当範囲である。
図8は、図7の続きとして、「図書館」の文字列の受け付けに続いて「で」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から名詞「図書館」と助詞「で」からなる文節を抽出し、名詞「図書館」の体言の属性を「施設」と判定し、体言の属性「施設」と助詞「で」の組み合わせから深層格は場所格であると判定する。検索サーバ1は、更に、場所格の名詞「図書館」を有する検索対象文を抽出して、抽出した検索対象文と図7の検索結果の検索対象文とにおいて重複する検索対象文を、新たな検索結果として表示させる。
この例の検索結果では、対象格の名詞「弁当」を含む文節に加えて、場所格の名詞「図書館」を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「太郎は弁当を図書館で食べる。」のうち「弁当を」と「図書館で」が該当範囲であり、第2文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「図書館で」と「弁当を」が該当範囲である。
図9は、図8の続きとして、「食べるの」の文字列の受け付けに続いて、「は」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から述語「食べる」を含む文節を抽出し、述語「食べる」を有する検索対象文を抽出して、抽出した検索対象文と図8の検索結果の検索対象文とにおいて重複する検索対象文を、新たな検索結果として表示させる。
この例の検索結果では、対象格の名詞「弁当」を含む文節と場所格の名詞「図書館」を含む文節に加えて、述語「食べる」を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中第1文では、「太郎は弁当を図書館で食べる。」のうち「弁当を」と「図書館で」と「食べる」が該当範囲であり、第2文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「図書館で」と「弁当を」と「食べる」が該当範囲である。
図10は、図9の続きとして、「誰」の文字の受け付けに続いて「の」の文字を受け付けた場合の検索画面の例を示している。
検索サーバ1は、質問文から疑問詞「誰」と助詞「の」からなる文節を抽出し、疑問詞「誰」と助詞「の」の組み合わせから深層格は体言修飾格であると判定する。検索サーバ1は、更に、体言修飾格の任意の名詞を有する検索対象文を抽出して、抽出した検索対象文と図9の検索結果の検索対象文とにおいて重複する検索対象文を、新たな検索結果として表示させる。
この例の検索結果では、対象格の名詞「弁当」を含む文節と場所格の名詞「図書館」を含む文節と述語「食べる」を含む文節とに加えて、体言修飾格の任意の名詞を含む文節が該当範囲であり、その該当範囲に下線が付されている。図中の文では、「花子の娘は学校の図書館で弁当を食べる。」のうち「花子の」と「図書館で」と「弁当を」と「食べる」が該当範囲である。
以上で、質問文と検索結果の例の説明を終える。続いて、検索サーバ1の動作について説明する。まず、事前の処理である解析について述べる。検索サーバ1のうち解析に係る構成例を図11に示す。検索サーバ1は、文データベース11と、解析部13と、文構造格納部15とを有している。
文データベース11は、検索対象となる文を格納するデータベースである。文データベース11は、例えば、ハードディスク装置などの記憶領域に設けられる。この例では、文データベース11は、検索サーバ1内に設けられているが、検索サーバ1の外に設けてもよい。文データベース11を検索サーバ1の外に設ける場合には、文データベース11は、例えばインターネットあるいはLANなどのネットワークを介して検索サーバ1に接続してもよい。
図12に、文データベース11に格納されるデータの例を示す。文データベース11は、検索対象文毎にレコードを設け、文IDと原文と文長とを対応付けて記憶する。この例で、文長は句点を含む文字数であるが、句点を除く文字数であってもかまわない。
図11に戻って、解析部13は、文データベース11に含まれる各検索対象の原文(以下、検索対象文という。)を解析し、解析結果である文構造の情報を文構造格納部15に格納するように動作する。
検索対象文の解析は、形態素解析のステップ、文節合成のステップ、係り受け解析のステップ、意味解析のステップ、データ格納のステップの手順で行われる。以下、図12の文IDがD102である原文「花子の娘は学校の図書館で弁当を食べる。」を例に説明する。
解析部13は、最初の形態素解析のステップで、辞書を参照して文を単語単位に分割する。その結果、例えば「/花子(N)/の(P)/娘(N)/は(P)/学校(N)/の(P)/図書館(N)/で(P)/弁当(N)/を(P)/食べる(V)/」のデータ列が得られる。この例で、「/」は単語の区切りを示し、(N)と(P)と(V)は品詞の種類を表し、特に(N)は名詞を示し、(P)は助詞を示し、(V)は動詞を示している。
解析部13は、次の文節合成のステップで、原則的に名詞と助詞をつないで、前述のデータ列を文節単位のデータ列に変換する。この例では、「/花子の/娘は/学校の/図書館で/弁当を/食べる/」の文節単位のデータ列が得られる。
解析部13は、次の係り受け解析のステップで、文節相互の係り受けの関係を、規則に従って解析する。この例では、「/花子の/」の文節は「/娘は/」の文節に係り、「/娘は/」の文節は「/食べる/」の文節に係り、「/学校の/」の文節は「/図書館で/」の文節に係り、「/図書館で/」の文節は「/食べる/」の文節に係り、更に「/弁当を/」の文節は「/食べる/」の文節に係る関係が解析される
解析部13は、次の意味解析のステップで、修飾語と被修飾語の関係を、規則に従って特定する。この例では、図13に示すラベル付き有効グラフが得られる。
このラベル付き有効グラフの例では、名詞と動詞がノードとなり、ノード間の修飾関係を矢印とラベルで示している。図中、先ノード「娘」は、元ノード「食べる」に対する動作主格であり、先ノード「花子」は、元ノード「娘」に対する体言修飾格であり、先ノード「弁当」は、元ノード「食べる」に対する対象格であり、先ノード「図書館」は、元ノード「食べる」に対する場所格であり、先ノード「学校」は、元ノード「図書館」に対する体言修飾格の修飾関係であることを示している。
このような文構造は、用言テーブルと体言テーブルの形式に置き換えることができる。解析部13は、最後のデータ格納のステップで、ラベル付き有効グラフを用言テーブルと体言テーブルに変換して、図11に示した文構造格納部15に格納する。
この例で、文構造格納部15は、述語単位のレコードからなる用言テーブルと、名詞単位のレコードからなる体言テーブルとを有している。用言テーブルと体言テーブルは、ラベル付き有効グラフと同等の情報を含み、更に文節毎の検索を処理しやすくするという利点を有する。
まず、用言テーブルについて説明する。図14は、第1の実施の形態に係る用言テーブルの例を示す図である。
用言テーブルは、文データベース11に格納されている検索対象文の中に含まれている用言毎にレコードを設け、用言IDと、述語と、動作主格と、対象格と、時間格と、場所格と、方法格と、理由格と、目標格と、定義格と、文節範囲と、参照元と、深層格と、文IDと、頻度との項目を対応付けて記憶する。動作主格と、対象格と、時間格と、場所格と、方法格と、理由格と、目標格と、定義格とは、修飾における深層格の種類である。
用言IDは、述語として検索対象文に含まれる用言を識別する情報であって、用言テーブルのレコードへのポインタとしても用いられる。述語の項目は、検索対象文に含まれる述語を示している。
動作主格の項目は、この述語を動作主格で修飾する文節に含まれる名詞を特定するポインタを格納する。動作主格の項目は、具体的には体言テーブルの体言IDを格納する。但し、この述語を動作主格で修飾する文節が検索対象文の中に存在しない場合には、動作主格の項目は、ポインタを格納しない。この例では、動作主格で修飾する文節が存在しない場合に、図中「<無し>」と表記している。「<無し>」の項目は、この述語を動作主格で修飾する文節が検索対象文の中に存在しない旨を示すための特定のコードを格納していることを意味している。
同様に、対象格の項目は、この述語を対象格で修飾する文節に含まれる名詞を特定するポインタを格納する。時間格の項目は、この述語を時間格で修飾する文節に含まれる名詞を特定するポインタを格納する。場所格の項目は、この述語を場所格で修飾する文節に含まれる名詞を特定するポインタを格納する。方法格の項目は、この述語を方法格で修飾する文節に含まれる名詞を特定するポインタを格納する。理由格の項目は、この述語を理由格で修飾する文節に含まれる名詞を特定するポインタを格納する。目標格の項目は、この述語を目標格で修飾する文節に含まれる名詞を特定するポインタを格納する。定義格の項目は、この述語を定義格で修飾する文節に含まれる名詞を特定するポインタを格納する。いずれのポインタも、動作主格の項目の場合と同様に、具体的には体言テーブルの体言IDである。また、この述語をそれぞれの深層格で修飾する文節が検索対象文の中に存在しない場合には、動作主格の項目の場合と同様に、これらの項目はポインタを格納せずに、その旨を示すための特定のコードを格納する。
文節範囲の項目は、この述語を含む文節の検索対象文中における範囲を格納する。参照元の項目は、この述語を含む文節が、他の述語を含む文節を修飾する場合に、他の述語を特定するポインタを格納する。参照元の項目は、具体的には、用言テーブルの用言IDを格納する。深層格の項目は、この述語を含む文節が、他の述語を含む文節を修飾する場合に、修飾における深層格の種類を格納する。例えば、図中A205で特定される述語「溶かす」を含む文節は、A204で特定される述語「作る」を含む文節を方法格として修飾していることを示している。文IDの項目は、この述語を含む文節を含む文のIDを格納する。頻度の項目は、この文IDで特定される文が検索された頻度を格納する。
次に、体言テーブルについて説明する。図15は、第1の実施の形態に係る体言テーブルの例を示す図である。体言テーブルは、文データベース11に格納されている検索対象文の中に含まれている体言毎にレコードを設け、体言IDと、名詞と、文節範囲と、参照元と、深層格と、体言修飾格の項目を対応付けて記憶する。
体言IDは、述語として検索対象文に含まれる体言を識別する情報であって、体言テーブルのレコードへのポインタとしても用いられる。名詞の項目は、検索対象文に含まれる名詞を示している。
文節範囲の項目は、この名詞を含む文節の検索対象文中における範囲を格納する。参照元の項目は、この名詞を含む文節が、述語又は他の名詞を含む文節を修飾する場合に、述語又は他の名詞を特定するポインタを格納する。参照元の項目は、具体的には、用言テーブルの用言ID又は体言テーブルの体言IDを格納する。深層格の項目は、この名詞を含む文節が、述語を含む文節又は他の名詞を含む文節を修飾する場合に、修飾における深層格の種類を格納する。例えば、図中B301で特定される名詞「娘」を含む文節は、A201で特定される述語「勉強する」を含む文節を動作主格として修飾していることを示している。B302で特定される名詞「太郎」を含む文節は、B301で特定される名詞「娘」を含む文節を体言修飾格として修飾していることを示している。
検索サーバ1は、文の検索に先立って、文構造格納部15に予め検索対象文について用言テーブルと体言テーブルを準備しておく。
続いて、文を検索する段階における動作について説明する。図16は、検索サーバ1のうち文検索に係る構成を示す図である。検索サーバ1は、前述の文データベース11と文構造格納部15の他に、入力部21と、抽出部23と、検索部25と、辞書部27と、深層格規則記憶部29と、文節検索結果格納部31と、全体検索結果格納部33と、ソート部35と、出力部37と、更新部39とを有している。
入力部21は、検索画面で受け付けた質問文を一又は複数の文字毎に受信するように動作する。入力部21は、更に、検索結果中の文を選択する指示も受信するように動作する。抽出部23は、受信した質問文から文節を抽出するように動作する。検索部25は、抽出した文節に基づいて、検索対象文を検索するように動作する。但し、検索部25は、文構造格納部15を用いて間接的に検索対象文を検索する。辞書部27は、名詞に対する体言の属性の定義を記憶している。
深層格規則記憶部29は、体言の属性と助詞との組み合わせに対して、その組み合わせで生じうる深層格を記憶し、更に疑問詞と助詞との組み合わせに対して、その組み合わせで生じうる深層格を記憶している。
図17に、体言の属性と助詞との組み合わせに対する深層格の種類を定めたテーブルの例を示す。このテーブルは、体言の属性と助詞との組み合わせごとにレコードを設け、体言の属性と助詞と深層格とを対応付けて記憶している。図中「を用いて」と「によって」は、助詞相当語の例である。助詞相当語を、助詞と同様に扱うようにしてもよい。
助詞が複数設定されている場合には、それぞれが体言の属性と組み合わされる場合に、同様の深層格が生じうることを意味している。つまり、各助詞が、独立して体言の属性と深層格とに対応付けられていることを示している。
深層格の種類が複数設定されている場合には、いずれの深層格も生じうることを意味している。つまり、その場合に、検索部25はそれぞれの深層格をOR条件で検索することを示している。
図18に、疑問詞と助詞との組み合わせに対する深層格の種類を定めたテーブルの例を示す。このテーブルは、疑問詞と助詞との組み合わせごとにレコードを設け、疑問詞と助詞と深層格とを対応付けて記憶している。
助詞が複数設定されている場合には、それぞれが疑問詞と組み合わされる場合に、同様の深層格が生じうることを意味している。つまり、各助詞が、独立して疑問詞と深層格とに対応付けられていることを示している。助詞を伴わない疑問詞による文節については、助詞の項目で、「(助詞無し)」と設定している。例えば、「いつ」の文字列は、助詞を伴わずに時間格の文節となりうる。
深層格の種類が複数設定されている場合には、いずれの深層格も生じうることを意味している。つまり、その場合には、検索部25はそれぞれの深層格をOR条件で検索することを意味している。以上で、深層格規則記憶部29の説明を終える。
図16に戻って、文節検索結果格納部31は、新たに抽出した文節に基づいて検索した結果を格納する。検索した結果は、文の情報であって、文IDと該当範囲を含んでいる。全体検索結果格納部33は、過去に抽出した文節に基づいて検索した結果を反映して、質問文全体としての検索結果を格納する。この検索結果も、文の情報であって、文IDと該当範囲を含んでいる。この該当範囲は、複数となることがある。検索した文についての文IDと該当範囲を対応付けて格納する。つまり、全体検索結果格納部33は、新たに抽出した文節に基づいて検索された結果を反映して、絞り込んだ全体の検索結果を格納する。
ソート部35は、全体検索結果格納部33に格納されている検索結果である文の情報を順位付けするように動作する。出力部37は、全体検索結果格納部33に格納されている文の情報に基づいて、検索結果を出力するように動作する。
入力部21が、質問文の文字の受け付けの代わりに、検索結果に含まれる文のうちのいずれかの文を選択する指示を検索端末3から受け付けた場合に、更新部39は、選択された文の頻度を更新するように動作する。尚、更新部39については、第5の実施の形態で説明する。以上で、検索サーバ1の文の検索に係る構成についての説明を終える。
続いて、検索サーバ1による文検索の処理について説明する。図19に、検索サーバの文検索の全体処理フローの例を示す。
入力処理で、入力部21は、質問文を一又は複数の文字毎に受け付ける(S101)。入力部21は、原則として質問文を一文字毎に受け付けるが、仮名漢字変換の結果を受け付ける場合には、複数の文字を受け付けることもある。
S101で、入力部21が一又は複数の文字を受け付けると、入力部21は、それまでに受け付けた質問文を抽出部23へ出す。抽出部23は、入力部21による一又は複数の文字の受け付けの都度、その時点での質問文を受け、受けた質問文から文節を抽出する抽出処理を行う(S103)。
抽出部23は、新たな文節を抽出したか否かを判定する (S105)。抽出部23が、新たな文節を抽出しないと判定した場合には、入力部21による入力処理(S101)へ戻り、同様の処理を繰り返す。
一方、抽出部23が、新たな文節を抽出したと判定した場合には、検索サーバ1は、検索部25による検索処理に移行する(S107)。
以下、検索部25による検索処理(S107)について説明する。図20に、検索処理フローの例を示す。この例で、検索部25は、検索処理(S107)で2つのサブルーチン処理を行う。
検索部25は、まず、新たな文節について検索する(S201)。この処理では、新たな文節に基づき、適合する検索対象文を検索する。この検索の結果には、それまでに抽出した文節に関する検索の結果は反映されていない。
新たな文節について検索結果を受けて、検索部25は、全体の検索結果を更新する(S203)。検索部25は、全体の検索結果に含まれる文のうち、新たな文節についての検索結果に含まれる文のみを残すように処理する。
それぞれのサブルーチン処理について詳述する。まず、新たな文節について検索する(S201)について説明する。図21に、新たな文節について検索する処理フローの例を示す。
検索部25は、抽出部23で抽出された新たな文節を受けると(S301)、新たな文節に含まれる品詞を判定する(S303)。そして、検索部25は、新たな文節に含まれる品詞によって処理を分岐する。新たな文節が名詞と助詞である場合には、端子Aを介して、図22のS401の処理に移行する。新たな文節が、疑問詞と助詞である場合には、端子Bを介して、図23のS501の処理に移行する。新たな文節が、述語である場合には、端子Cを介して、図24のS601の処理に移行する。
続いて、新たな文節が名詞と助詞である場合の図22の処理と、新たな文節が疑問詞と助詞である場合の図23の処理と、新たな文節が述語である場合の図24の処理とについて順に説明する。
図22は、新たな文節が名詞と助詞である場合に、新たな文節について検索する処理フローの例を示す図である。検索部25は、新たな文節に含まれる名詞に対応する体言の属性を辞書部27から読み取ることにより、体言の属性を特定する(S401)。
検索部25は、次に、特定した体言の属性と新たな文節に含まれる助詞の組み合わせに対応する深層格を深層格規則記憶部29から読み取ることにより、深層格を特定する(S403)。そして、検索部25は、新たな文節に含まれる名詞と特定した深層格の組み合わせを検索の条件に設定する(S405)。対応する深層格が複数ある場合には、検索部25は、複数の深層格のうちのいずれかに該当することを条件として判定する。つまり、検索部25は、複数の深層格をOR条件で扱う。
検索の条件が設定されると、検索部25は、体言テーブルの体言レコード毎に以下の処理を繰り返す(S407)。検索部25は、体言レコードが条件に合致するか否かを判定する(S409)。具体的には、検索部25は、体言レコードに含まれる名詞が、検索の条件である名詞と一致し、更に体言レコードに含まれる深層格が、検索の条件である深層格のいずれかと一致する場合に、条件に合致すると判定する。条件に合致しないと判定した場合には、検索部25は、S419に処理を移す。
一方、S409で条件に合致すると判定した場合には、検索部25は、体言レコードから文節範囲を読み取り、この条件における該当範囲として用いる。これにより、検索部25は、該当範囲を特定する(S411)。更に、検索部25は、体言レコードから参照元を読み取る。参照元に用言IDが格納されている場合には、検索部25は、その用言IDによって用言レコードを特定する(S413)。参照元に体言IDが格納されている場合には、参照元に格納されている体言IDの体言レコードから改めて参照元を読み取る。その参照元に格納されている用言IDによって用言レコードを特定する。更に、検索部25は、特定した用言レコードから文IDを読み取り、文IDを特定する(S415)。そして、検索部25は、検索した文の情報として、文IDと該当範囲を文節検索結果格納部31に格納する(S417)。
検索部25は、すべてのレコードについて処理したか否かを判定する(S419)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S407〜S419までの処理を繰り返す。すべてのレコードについて処理したと判定した場合には、検索部25は、このサブルーチンの処理を終了し、図20のS203の処理へ移る。
続いて、新たな文節が疑問詞と助詞である場合の処理について説明する。図23に、新たな文節が疑問詞と助詞である場合に、新たな文節について検索する処理フローの例を示す。
検索部25は、新たな文節に含まれる疑問詞と助詞との組み合わせに対応する深層格を深層格規則記憶部29から読み取り、深層格を特定する(S501)。そして、検索部25は、任意の名詞と特定した深層格の組み合わせを条件に設定する(S503)。深層格が複数ある場合には、検索部25は、前述と同様にそれぞれの深層格のいずれかに該当することを条件とする。
検索の条件が設定されると、検索部25は、体言テーブルの体言レコード毎に以下の処理を繰り返す(S505)。検索部25は、体言レコードが条件に合致するか否かを判定する(S507)。具体的には、検索部25は、体言レコードに名詞が設定されていて、更に体言レコードに含まれる深層格が、検索の条件である深層格のいずれかと一致する場合に、条件に合致すると判定する。このとき、検索部25は、設定されている名詞の内容を問わない。図15の例では、すべてのレコードが、任意の名詞に関する条件を満たすことになる。条件に合致しないと判定した場合には、検索部25は、S517に処理を移す。
一方、S507で条件に合致すると判定した場合には、検索部25は、体言レコードから文節範囲を読み取り、この条件における該当範囲として用いる。これにより、検索部25は、該当範囲を特定する(S509)。この例では、体言レコードの名詞が修飾されている場合には、修飾する文節も該当範囲に含めるようにしている。そのため、体言テーブルの体言修飾格の項目に、体言IDが設定されている場合には、その体言IDにより体言レコードを特定し、特定した体言レコードの文節範囲も該当範囲に加える。例えば、図3の第1文の「娘」を修飾する「花子の」の箇所が、加えた文節範囲に相当する。尚、修飾する文節を該当範囲に含めないようにしてもよい。
更に、検索部25は、体言レコードから参照元を読み取る。参照元に用言IDが格納されている場合には、検索部25は、その用言IDによって用言レコードを特定する(S511)。参照元に体言IDが格納されている場合には、体言IDの体言レコードから改めて参照元を読み取る。その参照元に格納されている用言IDによって用言レコードを特定する。例えば、図15に示した名詞「花子」の体言レコード(図15の第5レコード)の場合には、参照元「B304」の名詞「娘」の体言レコード(図15の第4レコード)の参照元「A202」の用言レコードを特定する。
更に、検索部25は、特定した用言レコードから文IDを読み取り、文IDを特定する(S513)。そして、検索部25は、検索した文の情報として、文IDと該当範囲を文節検索結果格納部31に格納する(S515)。
検索部25は、すべてのレコードについて処理したか否かを判定する(S517)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S505〜S517までの処理を繰り返す。すべてのレコードについて処理したと判定した場合には、検索部25は、このサブルーチンの処理を終了し、図20のS203の処理へ移る。
続いて、新たな文節が述語である場合の処理について説明する。図24に、新たな文節が述語である場合に、新たな文節について検索する処理フローの例を示す。
検索部25は、新たな文節に含まれる述語を条件に設定し(S601)、用言テーブルの用言レコード毎に以下の処理を繰り返す(S603)。検索部25は、用言レコードが条件に合致するか否かを判定する(S605)。具体的には、検索部25は、用言レコードに含まれる述語が、検索の条件である述語と一致する場合に、条件に合致すると判定する。条件に合致しないと判定した場合には、検索部25は、S613に処理を移す。
一方、S605で条件に合致すると判定した場合には、検索部25は、用言レコードから文節範囲を読み取り、この条件における該当範囲として用いる。これにより、検索部25は、該当範囲を特定する(S607)。検索部25は、特定した用言レコードから文IDを読み取り、文IDを特定する(S609)。そして、検索部25は、検索した文の情報として、文IDと該当範囲を文節検索結果格納部31に格納する(S611)。
検索部25は、すべてのレコードについて処理したか否かを判定する(S613)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S603〜S613までの処理を繰り返す。検索部25は、すべてのレコードについて処理したと判定した場合には、このサブルーチンの処理を終了し、図20のS203の処理へ移る。
図20に戻って、新たな文節について検索する処理に続いて、検索部25は、全体の検索結果を更新する処理(S203)を行う。
図25に、全体の検索結果を更新する処理フローの例を示す。検索部25は、全体検索結果格納部33に含まれる文の情報毎に以下の処理を繰り返す(S701)。検索部25は、文節検索結果格納部31に同じ文IDを含む文の情報があるか否かを判定する(S703)。検索部25は、文節検索結果格納部31に同じ文IDを含む文の情報があると判定した場合には、全体検索結果格納部33のその文IDに対応する該当範囲に、文節検索結果格納部31のその文IDに対応する該当範囲を加える(S705)。一方、検索部25は、文節検索結果格納部31に同じ文IDを含む文の情報がないと判定した場合には、全体検索結果格納部33のその文の情報(文IDと該当範囲)を削除する(S707)。
検索部25は、すべてのレコードについて処理したか否かを判定する(S709)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S701〜S709までの処理を繰り返す。すべてのレコードについて処理したと判定すると、検索部25は処理を終える。
尚、S203の処理が初めての場合(一つ目の文節の抽出による処理の場合)には、検索部25は、S203の処理として、文節検索結果格納部31の内容をすべて全体検索結果格納部33に移して処理を終える。初回は、文節検索結果格納部31の検索結果がすべて有効だからである。
図19に戻って、検索サーバ1はこのようにして検索処理(S107)を終えると、続いてソート部35が、ソート処理(S109)を行う。
図26に、ソート処理フローの例を示す。ソート部35は、全体検索結果格納部33の文の情報毎に以下の処理を繰り返す(S801)。ソート部35は、文データベース11から文IDに対応する文長を読み取り、文長を特定する(S803)。ソート部35は、全体検索結果格納部33に格納している文の情報に含まれるすべての該当範囲の長さを合計して、該当範囲全体の長さを求める(S805)。ソート部35は、該当範囲全体の長さを文長で割って、該当範囲の占有率を求める(S807)。ソート部35は、まだすべての文の情報について処理していないと判定した場合には、S801〜S809までの処理を繰り返す。すべてのレコードについて処理したと判定すると、ソート部35は、該当範囲の占有率をキーとして、文の情報をソートする(S811)。
図19に戻って、検索サーバ1はこのようにしてソート処理(S109)を終えると、出力部37は、ソート処理の順位付けに従って、全体検索結果格納部33に格納されている文を出力する処理を行う(S111)。出力部37は 文の情報に含まれる文IDに対応する原文を文データベース11から読み取り、検索結果の表示領域に展開する。出力部37は、文の情報に含まれる該当範囲の文字に下線を付す。該当範囲の文字をその他の文字と区別する方法として、出力部37が下線を付す例を示したが、太字や斜体など文字の形態を変える方法や、文字を拡大する方法、文字の背景色を変える方法などを用いるようにしてもよい。
検索サーバ1は、入力部21で検索端末3からのイベントを受信し、入力部21は、ユーザが文を選択をしたか否かを判定する(S113)。受信したイベントが、検索結果に含まれるいずれかの文を選択する指示である場合に、入力部21は、ユーザが文を選択をしたと判定し、検索の処理を終了する。一方、受け付けたイベントが質問文の続きの文字である場合には、入力部21は、ユーザが文を選択していないと判定し、S101に戻り上述の処理を繰り返す。以上で、第1の実施の形態に係る動作の説明を終える。
第1の実施の形態によれば、検索サーバ1は、抽出された文節に従って、深層格により特定される助詞の文意を含めて検索することにより、ブーリアン検索で抽出されがちな文意の異なる的外れな文を検索結果から排除することができる。
検索サーバ1は、更に、深層格規則記憶部29を用いることによって、フルテキスト検索で対応できない助詞のゆれにも対応することができる。
検索サーバ1は、加えて、文節検索結果格納部31に格納する結果を、全体検索結果格納部33に格納する結果の絞込みに用いることによって、フルテキスト検索で対応できない文節位置の違いにも対応することができる。この方法は、文節による条件を順序を問わずにAND条件で扱うことに等しいからである。
検索サーバ1は、疑問詞を含む文節も深層格を判断し、任意の名詞を検索するので、所望の情報の文意おける位置づけを指定することができ、情報の絞込みがしやすくなる。
特に、第1の実施の形態は、体言テーブルを有するので、名詞を含む文節に基づく検索の処理が速いという利点がある。以上で、第1の実施の形態の説明を終える。
[実施の形態2]
本実施の形態では、用言テーブル内に体言の情報を含める例について説明する。図27Aと図27Bは、第2の実施の形態に係る用言テーブルの例を示す図である。
第2の実施の形態に係る用言テーブルは、第1の実施の形態に係る用言テーブル(図14)と同様に、用言毎にレコードを設け、項目を対応付けている。
図27Aの用言IDと述語の項目は、図14の用言IDと述語の項目と同様である。また、図27Bの参照元と深層格と文IDと頻度の項目は、図14の参照元と深層格と文IDと頻度の項目と同様である。また、図27Aの第3項目の文節範囲の項目には、第2項目の述語が含まれる文節の原文における範囲を設定する。つまり、図27Aの第3項目の文節範囲の項目は、図14の文節範囲の項目と同様である。
続いて、第1の実施の形態に係る用言テーブル(図14)との相違点について説明する。第2の実施の形態に係る用言テーブル(図27Aと図27B)では、動作主格と対象格と時間格と場所格と方法格と理由格と目標格と定義格の各深層格の項目には、直接その名詞を格納する。
また、第2の実施の形態に係る用言テーブルは、各名詞の文節範囲、つまりその名詞が含まれる文節の原文における範囲の項目も設けている。第2の実施の形態に係る用言テーブルは、図27Aと図27Bに示す通り、各深層格(動作主格、対象格、時間格、場所格、方法格、理由格、目標格、定義格)の項目の次に、その深層格に対応する文節範囲の項目を設けている。
更に、第2の実施の形態に係る用言テーブルは、各深層格(動作主格、対象格、時間格、場所格、方法格、理由格、目標格、定義格)の名詞を修飾する体言修飾格の項目も設けている。第2の実施の形態に係る用言テーブルは、図27Aと図27Bに示す通り、各深層格の項目の2つ後に、その深層格に対応する体言修飾格の項目を設けている。また、その次に、体言修飾格の文節範囲の項目も有している。体言修飾格の文節範囲は、体言修飾格の名詞を含む文節の原文における範囲である。
加えて、第2の実施の形態に係る用言テーブルは、述語を修飾する用言修飾格の項目とその文節範囲も、第4項目と第5項目に設けている。用言修飾格の文節範囲は、用言修飾格の品詞を含む文節の原文における範囲である。
以上のように、第2の実施の形態では、第1の実施の形態における体言テーブルの情報を、用言テーブルに取り込んでいるので、1つのテーブルで足りる。
続いて、第2の実施の形態における処理について説明する。具体的には、第1の実施の形態における、新たな文節が名詞と助詞を含む場合の処理(図22)と新たな文節が疑問詞と助詞を含む場合の処理(図23)の処理とが、第2の実施の形態では異なる。
図28に、第2の実施の形態における、新たな文節が名詞と助詞である場合に、新たな文節について検索する処理フローの例を示す。 図22の処理に代えて、図28の処理を行う。つまり、図21のS303で、新たな文節が名詞と助詞であると判定された場合に、端子Aを介して、図28のS401に移行する。
検索部25が、名詞から体言の属性を特定し(S401)、体言の属性と助詞から深層格を特定し(S403)、名詞と深層格を条件に設定する(S405)処理は、図22と同様である。
第2の実施の形態では、検索部25は、体言テーブルの体言レコード毎に処理するのではなく、用言テーブルの用言レコード毎に以下の処理を繰り返す(S421)。検索部25は、用言レコードが条件に合致するか否かを判定する(S423)。具体的には、検索部25は、条件である深層格の項目から格納されている名詞を読み取る。そして、検索部25は、読み取った名詞が条件の名詞と一致する場合に、条件に合致すると判定する。
検索部25は、条件に合致しないと判定した場合には、S431に移る。一方、検索部25は、条件に合致すると判定した場合には、該当範囲を特定する(S425)。検索部25は、条件である深層格の項目の次の項目である文節範囲を読み取り、それを該当範囲に用いる。更に、検索部25は、用言レコードから、文IDを特定する(S427)。そして、検索部25は、文IDと該当範囲を、文の情報として文節検索結果格納部31に格納する(S429)。検索部25は、すべてのレコードについて処理したか否かを判定する(S431)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S421〜S431の処理を繰り返す。検索部25は、すべてのレコードについて処理したと判定した場合には、このサブルーチンの処理を終了し、図20のS203の処理へ移る。
図29に、第2の実施の形態における、新たな文節が疑問詞と助詞である場合に、新たな文節について検索する処理フローの例を示す。 図23の処理に代えて、図29の処理を行う。つまり、図21のS303で、新たな文節が疑問詞と助詞であると判定された場合に、端子Bを介して、図29のS501に移行する。
検索部25が、疑問詞と助詞から深層格を特定し(S501)、任意の名詞と深層格を条件に設定する(S503)処理は、図23と同様である。
第2の実施の形態では、検索部25は、体言テーブルの体言レコード毎に処理するのではなく、用言テーブルの用言レコード毎に以下の処理を繰り返す(S521)。検索部25は、用言レコードが条件に合致するか否かを判定する(S523)。具体的には、検索部25は、条件である深層格の項目から格納されている名詞を読み取る。そして、検索部25は、内容を問わず名詞が格納されている場合には、条件に合致すると判定する。つまり、検索部25は、条件である深層格の項目に名詞が格納されていない場合(図中、「<無し>」)を除き、条件に合致すると判定する。
検索部25は、条件に合致しないと判定した場合には、S531に移る。一方、検索部25は、条件に合致すると判定した場合には、該当範囲を特定する(S525)。検索部25は、条件である深層格の項目の次の項目である文節範囲を読み取り、それを該当範囲に用いる。この例では、この名詞が修飾されている場合には、修飾する文節も該当範囲に含めるようにしている。そのため、動作主格、対象格などの項目の2つ後の体言修飾格の項目に、名詞が設定されている場合には、その次の文節範囲も該当範囲に加える。尚、修飾する文節を該当範囲に含めないようにしてもよい。
更に、検索部25は、用言レコードから、文IDを特定する(S527)。そして、検索部25は、文IDと該当範囲を、文の情報として文節検索結果格納部31に格納する(S529)。検索部25は、すべてのレコードについて処理したか否かを判定する(S531)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S521〜S531の処理を繰り返す。検索部25は、すべてのレコードについて処理したと判定した場合には、このサブルーチンの処理を終了し、図20のS203の処理へ移る。以上で、第2の実施の形態における動作の説明を終える。
第2の実施の形態では、体言テーブルを用いずに、用言テーブルのみで検索する例を示した。この例では、テーブルが1つであるので、テーブルの管理が容易である。
[実施の形態3]
第3の実施の形態では、深層格マーカ付き文による用言テーブルの例について説明する。第3の実施の形態では、第2の実施の形態と同様に、用言テーブルのみを用い、体言テーブルは用いない。
図30は、第3の実施の形態に係る用言テーブルの例を示す図である。第3の実施の形態に係る用言テーブルは、第1の実施の形態に係る用言テーブル(図14)と同様に、用言毎にレコードを設け、項目を対応付けている。
図30の用言IDと参照元と深層格と文IDと頻度との項目は、図14の用言IDと参照元と深層格と文IDと頻度との項目と同様である。
第3の実施の形態の用言テーブルでは、第1の実施の形態あるいは第2の実施の形態の用言テーブルで用いた述語と深層格などの項目に代えて、深層格マーカ付き文を用いる。
深層格マーカ付き文においては、文中に出現する順に文節のコード情報を連ねる。文節のコード情報には、まず、文節に含まれる名詞あるいは述語が、波括弧付きで記述される。次に、文節のコード情報には、名詞の深層格あるいは述語の識別コードを示すタグ形式のマーカが記述される。次に、文節のコード情報には、文節の原文における範囲を示すタグ形式の文節範囲が記述される。
図30の第1文の深層格マーカ付き文「{太郎の娘}<agent><1-5>{図書館}<loc><6-9>{勉強する}<pred><10-13>。」では、「{太郎の娘}<agent><1-5>」と「{図書館}<loc><6-9>」と「{勉強する}<pred><10-13>」との3つの文節の情報が連なっている。第1の文節の情報には、名詞「{太郎の娘}」とマーカ「<agent>」と文節範囲「<1-5>」とが記述されている。「agent」は、動作主格の識別コードである。第2の文節の情報には、名詞「{図書館}」とマーカ「<loc>」と文節範囲「<6-9>」とが記述されている。「loc」は、場所格の識別コードである。第3の文節の情報には、述語「{勉強する}」とマーカ「<pred>」と文節範囲「<10-13>」とが記述されている。「pred」は、述語の識別コードである。
図30の第2文の深層格マーカ付き文「{花子の娘}<agent><1-5>{学校の図書館}<loc><6-12>{弁当}<obj><13-15>{食べる}<pred><16-18>。」では、「{花子の娘}<agent><1-5>」と「{学校の図書館}<loc><6-12>」と「{弁当}<obj><13-15>」と「{食べる}<pred><16-18>」との4つの文節の情報が連なっている。第1の文節の情報には、名詞「{花子の娘}」とマーカ「<agent>」と文節範囲「<1-5>」とが記述されている。第2の文節の情報には、名詞「{学校の図書館}」とマーカ「<loc>」と文節範囲「<6-12>」とが記述されている。第3の文節の情報には、名詞「{弁当}」とマーカ「<obj>」と文節範囲「<13-15>」とが記述されている。「obj」は、対象格の識別コードである。第4の文節の情報には、述語「{食べる}」とマーカ「<pred>」と文節範囲「<16-18>」とが記述されている。この例で、第1の文節の情報と第2の文節の情報のように、名詞とともに名詞を修飾する語を含んでいる。但し、名詞は名詞を修飾する語を伴わず、名詞を修飾する文節の情報を別に記述するようにしてもよい。
図30の第3文の深層格マーカ付き文「{陽子の娘}<obj><1-5>{パーティ}<goal><6-10>{招待する}<pred><11-15>。」では、「{陽子の娘}<obj><1-5>」と「{パーティ}<goal><6-10>」と「{招待する}<pred><11-15>」との3つの文節の情報が連なっている。第1の文節の情報には、名詞「{陽子の娘}」とマーカ「<obj>」と文節範囲「<1-5>」とが記述されている。第2の文節の情報には、名詞「{パーティ}」とマーカ「<goal>」と文節範囲「<6-10>」とが記述されている。「goal」は、目標格の識別コードである。第3の文節の情報には、述語「{招待する}」とマーカ「<pred>」と文節範囲「<11-15>」とが記述されている。
続いて、第3の実施の形態における処理について説明する。具体的には、第1の実施の形態における、新たな文節が名詞と助詞を含む場合の処理(図22)と、新たな文節が疑問詞と助詞を含む場合の処理(図23)の処理と、新たな文節が述語を含む場合の処理(図24)とが、第3の実施の形態では異なる。
まず、新たな文節が名詞と助詞を含む場合の処理について、第2の実施の形態の説明で用いた図28を用いて説明する。
検索部25が、名詞から体言の属性を特定し(S401)、体言の属性と助詞から深層格を特定し(S403)、名詞と深層格を条件に設定する(S405)処理は、図22と同様である。
第3の実施の形態では、第2の実施の形態と同様に、用言テーブルの用言レコード毎に以下の処理を繰り返す(S421)。検索部25は、用言レコードが条件に合致するか否かを判定する(S423)。具体的には、検索部25は、条件である深層格の識別コードと一致するマーカを特定する。深層格の識別コードと一致するマーカがない場合は、検索部25は、条件に合致しないと判定する。深層格の識別コードと一致するマーカがある場合は、検索部25は、そのマーカの前の名詞を特定する。条件である名詞を特定した名詞と後方から比較し、条件である名詞がすべて一致する場合には、検索部25は、条件に合致すると判定する。条件である名詞が、特定した名詞の後方と一致しない場合には、検索部25は、条件に合致しないと判定する。
検索部25は、条件に合致しないと判定した場合には、S431に移る。一方、検索部25は、条件に合致すると判定した場合には、該当範囲を特定する(S425)。検索部25は、条件である深層格の識別コードと一致するマーカの次の文節範囲を読み取り、それを該当範囲に用いる。更に、検索部25は、用言レコードから、文IDを特定する(S427)。そして、検索部25は、文IDと該当範囲を、文の情報として文節検索結果格納部31に格納する(S429)。検索部25は、すべてのレコードについて処理したか否かを判定する(S431)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S421〜S431の処理を繰り返す。検索部25は、すべてのレコードについて処理したと判定した場合には、このサブルーチンの処理を終了し、図20のS203の処理へ移る。
次に、新たな文節が疑問詞と助詞を含む場合の処理について、第2の実施の形態の説明で用いた図29を用いて説明する。
検索部25が、疑問詞と助詞から深層格を特定し(S501)、任意の名詞と深層格を条件に設定する(S503)処理は、図23と同様である。
第3の実施の形態では、第2の実施の形態と同様に、用言テーブルの用言レコード毎に以下の処理を繰り返す(S521)。検索部25は、用言レコードが条件に合致するか否かを判定する(S523)。具体的には、検索部25は、条件である深層格の識別コードと一致するマーカを特定する。深層格の識別コードと一致するマーカがない場合は、検索部25は、条件に合致しないと判定する。深層格の識別コードと一致するマーカがある場合は、検索部25は、条件に合致すると判定する。
検索部25は、条件に合致しないと判定した場合には、S531に移る。一方、検索部25は、条件に合致すると判定した場合には、該当範囲を特定する(S525)。検索部25は、条件である深層格の識別コードと一致するマーカの次の文節範囲を読み取り、それを該当範囲に用いる。更に、検索部25は、用言レコードから、文IDを特定する(S527)。そして、検索部25は、文IDと該当範囲を、文の情報として文節検索結果格納部31に格納する(S529)。検索部25は、すべてのレコードについて処理したか否かを判定する(S531)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S521〜S531の処理を繰り返す。検索部25は、すべてのレコードについて処理したと判定した場合には、このサブルーチンの処理を終了し、図20のS203の処理へ移る。
次に、新たな文節が述語を含む場合の処理の処理について、第1の実施の形態の説明で用いた図24を用いて説明する。
検索部25が、述語を条件に設定する(S601)処理は、第1の実施の形態と同様である。
検索部25は、用言テーブルの用言レコード毎に以下の処理を繰り返す(S603)。検索部25は、用言レコードが条件に合致するか否かを判定する(S605)。具体的には、検索部25は、述語の識別コードと一致するマーカを特定する。そして、検索部25は、そのマーカの前の述語を特定する。特定した述語が検索の条件である述語と一致する場合に、条件に合致すると判定する。特定した述語が検索の条件である述語と一致しない場合には、検索部25は、条件に合致しないと判定する。
検索部25は、条件に合致しないと判定した場合には、S613に移る。一方、検索部25は、条件に合致すると判定した場合には、該当範囲を特定する(S607)。検索部25は、一致した述語を含む文節情報に含まれる文節範囲を読み取り、それを該当範囲に用いる。更に、検索部25は、用言レコードから、文IDを特定する(S609)。そして、検索部25は、文IDと該当範囲を、文の情報として文節検索結果格納部31に格納する(S611)。検索部25は、すべてのレコードについて処理したか否かを判定する(S613)。検索部25は、まだすべてのレコードについて処理していないと判定した場合には、S603〜S613の処理を繰り返す。検索部25は、すべてのレコードについて処理したと判定した場合には、このサブルーチンの処理を終了し、図20のS203の処理へ移る。以上で、第3の実施の形態における動作の説明を終える。
第3の実施の形態では、第2の実施の形態と同様に、体言テーブルを用いずに、用言テーブルのみで検索する例を示した。テーブルが1つであるので、テーブルの管理が容易である。
[実施の形態4]
第4の実施の形態では、検索結果に含まれる文が絞り込みによって所定数以下になった場合に文が検索された頻度を更新し、頻度を更新した文がその後に再度検索された場合にその頻度をキーとして文をソートして出力する。所定数は、有意義に検索結果が絞り込まれたことを判定するための基準として予め設定される。例えば、検索結果の文が10件以下になれば、検索対象として重要な情報を含んでいる期待が高いと想定する場合には、所定数として10を用いる。
第4の実施の形態では、第1の実施の形態で説明した図20の全体の検索結果を更新する(S203)のサブルーチンで、文が検索された頻度を更新する処理を行う。そのため、第1の実施の形態で説明した図25の処理に代えて、図31の処理を行う。
図31に、第4の実施の形態に係る全体の検索結果を更新する処理フローの例を示す。S701〜S709の処理は、図25を用いて説明した第1の実施の形態と同様である。
検索部25は、S701から始まる更新処理が行われる前に、全体検索結果格納部33に格納している文の情報の数、つまり全体の検索結果に含まれる文の数を保持しておく。検索部25は、この更新前の文数が、所定数より大きいか否かを判定する(S721)。検索部25は、この文数が所定数より大きくないと判定した場合には、処理を終了する。この場合には、すでに所定数内に検索結果の文が絞り込まれ、頻度の更新が済んでいるので、この段階では更新しないからである。
検索部25は、次に、S701〜S709の処理により全体の検索結果が更新された後に全体検索結果格納部33に格納している文の情報の数、つまり全体の検索結果に含まれる文の数を計数し、この更新後の文数が、所定数以下であるか否かを判定する(S723)。検索部25は、この文数が所定数以下ではないと判定した場合には、処理を終了する。この場合には、まだ十分に検索結果の文が絞り込まれていないからである。
検索部25は、この文数が所定数以下であると判定した場合には、検索結果に含まれる文の頻度を更新する(S725)。具体的には、検索部25は、全体検索結果格納部33に含まれる文の情報ごとに、その情報に含まれる文IDを特定し、文構造格納部15の用言テーブルで、この文IDと一致する用言レコードを特定する。そして、検索部25は、特定した用言レコードの頻度をインクリメントする。
そして、図19のS109のソート処理において、ソート部35は、図26の処理に代えて、頻度をキーとするソートを行う。具体的には、ソート部35は、全体検索結果格納部33に含まれる文の情報に含まれる文IDに対応する用言レコードを特定し、その用言レコードに含まれる頻度を読み取る。そして、ソート部35は、頻度の多い順に、全体検索結果格納部33に含まれる文の情報を並び替える。以上で、第4の実施の形態における動作の説明を終える。
所定数以下の検索結果として絞り込まれた文は、ユーザの意図に近いと文であると推測されるので、その後の検索においても有意義であると期待される。このように目的に合う期待が高い文を優先して表示することによって、意図した情報を発見しやすくなる。
[実施の形態5]
第4の実施の形態では、所定数以内まで検索結果の文が絞り込まれた段階で、これらの文の頻度を更新する例を示したが、第5の実施の形態では、最終の検索結果に残った文について、その頻度を更新する例について説明する。
図32に、第5の実施の形態に係る文検索の全体処理フローの例を示す。S101からS113までの処理は、第1の実施の形態と同様である。
検索サーバ1は、入力部21で検索端末3からのイベントを受け付け、入力部21は、ユーザが文を選択をしたか否かを判定する(S113)。受け付けたイベントが、検索結果に含まれるいずれかの文を選択する指示である場合に、入力部21は、ユーザが文を選択をしたと判定する。図16に示した更新部39は、これを受けて検索結果の文の頻度を更新する(S121)。
具体的には、更新部39は、全体検索結果格納部33に含まれる文の情報ごとに、その情報に含まれる文IDを特定し、文構造格納部15の用言テーブルで、この文IDと一致する用言レコードを特定する。そして、更新部39は、特定した用言レコードの頻度をインクリメントする。
検索サーバ1は、頻度の更新を終えると、文の検索の処理を終了する。
第5の実施の形態でも、第4の実施の形態と同様に、図19のS109のソート処理において、ソート部35は、図26の処理に代えて、頻度をキーとするソートを行う。具体的には、ソート部35は、全体検索結果格納部33に含まれる文の情報に含まれる文IDに対応する用言レコードを文構造格納部15で特定し、その用言レコードに含まれる頻度を読み取る。そして、ソート部35は、頻度の多い順に、全体検索結果格納部33に含まれる文の情報を並び替える。以上で、第5の実施の形態における動作の説明を終える。
最終の検索結果として絞り込まれた文は、ユーザの意図に近いと文であると推測されるので、その後の検索においても、有意義であると期待される。このように目的に合う期待が高い文を優先して表示することによって、意図した情報を発見しやすくなる。
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上述の機能ブロック構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
また、上で説明した各記憶領域の構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、検索サーバ1の機能は、1台のコンピュータではなく複数台のコンピュータで実現するようにしてもよい。
なお、上で述べた検索サーバ1は、コンピュータ装置であって、図33に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2525とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本技術の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る検索装置は、(A)複数の検索対象文に含まれる文節中の名詞について、当該名詞と当該名詞の深層格と当該名詞を含む検索対象文とを対応付けて格納する格納部と、(B)質問文の一又は複数の文字が入力される度に、入力された一又は複数の文字からなる文字列から文節の抽出を試みる第一の抽出部と、(C)格納部から、抽出された文節中の名詞と当該名詞の深層格とに一致する一又は複数の検索対象文を抽出する第二の抽出部と、(D)抽出された一又は複数の検索対象文を出力する出力部とを有する。
本検索装置は、抽出された文節に従って、深層格により特定される助詞の文意を含めて検索することにより、ブーリアン検索で抽出されがちな文意の異なる的外れな文を検索結果から排除することができる。
第二の抽出部は、(c1)第一の抽出部により複数の文節が抽出された場合に、抽出された複数の文節のうち各文節中の名詞と当該名詞の深層格とに一致する一又は複数の検索対象文を抽出するようにしてもよい。
これにより、フルテキスト検索で対応できない文節位置の違いにも対応することができるようになる。
第二の抽出部は、(c2)抽出された文節中の名詞と助詞に基づいて、名詞の深層格を判定するようにしてもよい。
これにより、フルテキスト検索で対応できない助詞のゆれにも対応することができるようになる。
第二の抽出部は、(c3)抽出された文節中の名詞について体言の属性を判定し、判定した体言の属性と抽出された文節中の助詞との組み合わせに基づいて、名詞の深層格を判定するようにしてもよい。
これにより、フルテキスト検索で対応できない助詞のゆれにも対応することができるようになる。
第二の抽出部は、(c4)抽出された文節中に疑問詞が含まれる場合に、格納部から、任意の名詞と当該疑問詞の深層格とを対応付ける一又は複数の検索対象文を抽出するようにしてもよい。
このように、疑問詞を、ワイルドカードのように存在のみを求めるフリーな条件として検索することにより、未知の情報を探索する場合に、文意におけるその情報の位置づけを指定することができるようになる。
第二の抽出部は、(c5)抽出された文節中の疑問詞と助詞との組み合わせに基づいて、疑問詞の深層格を判定するようにしてもよい。
これにより、疑問詞についても、助詞のゆれに対応できるようになる。
出力部は、(d1)抽出された検索対象文の文字列において、一致した名詞を含む文節の文字を、他の文字と区別して出力するようにしてもよい。
これにより、助詞のゆれや文節位置の違いについてどのように対応しているかを、わかりやすく提示できるようになる。また、その対応が適当であるかの確認を促す効果もある。
出力部は、(d2)抽出された検索対象文の文字列において、一致した名詞を含む文節の文字及び疑問詞の深層格と対応付けられている任意の名詞を含む文節の文字を、他の文字と区別して出力するようにしてもよい。
これにより、所望の情報である可能性が高い文字列を区別するので、解答候補の印象が強められるという効果がある。
出力部は、(d3)任意の名詞を修飾する文節の文字を、任意の名詞を含む文節の文字と同様に出力するようにしてもよい。
これにより、所望の情報が、修飾する文字列に含まれている場合にも、解答候補の印象を強めることができる。
検索装置は、更に、(E)抽出された複数の検索対象文の文字列において、一致した名詞を含む文節の文字数が、抽出された複数の検索対象文の全体の文字数に対して占める割合に応じて、抽出された複数の検索対象文を順位付けするソート部を有するようにしてもよい。また、出力部は、順位付けに従って、抽出された複数の検索対象文を出力するようにしてもよい。
これにより、質問文との関連が強いと想定される文を優先して出力することができるようになる。
検索装置は、更に、(e1)抽出された複数の検索対象文の文字列において、一致した名詞を含む文節の文字数及び疑問詞の深層格と対応付けられている任意の名詞を含む文節の文字数の合計が、抽出された複数の検索対象文の全体の文字数に対して占める割合に応じて、抽出された複数の検索対象文を順位付けするソート部を有するようにしてもよい。また、出力部は、順位付けに従って、抽出された複数の検索対象文を出力するようにしてもよい。
これにより、質問文との関連が強いと想定され、かつ所望の情報を含んでいる期待値が高い文を優先して出力することができるようになる。
ソート部は、(e2)任意の名詞を修飾する文節の文字数を、合計に加えるようにしてもよい。
これにより、所望の情報が修飾する文字列に含まれている場合にも、その文字列を含む文を優先して出力することができるようになる。
本実施の形態の第4の態様に係る検索装置は、更に、(F)第二の抽出部による抽出の頻度に応じて、抽出された複数の検索対象文を順位付けするソート部を有し、出力部は、順位付けに従って、抽出された複数の検索対象文を出力する。
これにより、検索実績を反映して、過去に有効であったと想定される文を優先して提示することができる。
第二の抽出部は、(c6)抽出された一又は複数の検索対象文の数が所定数以下となった場合に、抽出された一又は複数の検索対象文について第二の抽出部による抽出の頻度を更新するようにしてもよい。
これにより、過去に絞り込みの過程で所定数以下まで残った実績を、文の評価に反映することができる。
本実施の形態の第5の態様に係る検索装置は、更に、(G)抽出された複数の検索対象文のうち、いずれかを選択する操作がされた場合に、抽出された複数の検索対象文について第二の抽出部による抽出の頻度を更新する更新部を有する。
これにより、過去に絞り込みの過程で最後まで残った実績を、文の評価に反映することができる。
検索装置は、複数の検索端末と接続可能であってもよい。また、検索装置は、複数の検索端末からの操作により、第二の抽出部による抽出の頻度が更新されるようにしてもよい。
これにより、過去の絞込みの実績を多数のユーザで共有し、集合知を構築し、それを利用することができるようになる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の検索対象文に含まれる文節中の名詞について、当該名詞と当該名詞の深層格と当該名詞を含む検索対象文とを対応付けて格納する格納部と、
質問文の一又は複数の文字が入力される度に、入力された前記一又は複数の文字からなる文字列から文節の抽出を試みる第一の抽出部と、
前記格納部から、抽出された前記文節中の名詞と当該名詞の深層格とに一致する一又は複数の検索対象文を抽出する第二の抽出部と、
抽出された前記一又は複数の検索対象文を出力する出力部と、
を有する検索装置。
(付記2)
前記第二の抽出部は、前記第一の抽出部により複数の文節が抽出された場合に、抽出された前記複数の文節のうち各文節中の名詞と当該名詞の深層格とに一致する前記一又は複数の検索対象文を抽出する
付記1記載の検索装置。
(付記3)
前記第二の抽出部は、抽出された前記文節中の前記名詞と助詞に基づいて、前記名詞の前記深層格を判定する
付記1又は2記載の検索装置。
(付記4)
前記第二の抽出部は、抽出された前記文節中の前記名詞について体言の属性を判定し、判定した前記体言の属性と抽出された前記文節中の前記助詞との組み合わせに基づいて、前記名詞の前記深層格を判定する
付記3記載の検索装置。
(付記5)
前記第二の抽出部は、抽出された前記文節中に疑問詞が含まれる場合に、前記格納部から、任意の名詞と当該疑問詞の深層格とを対応付ける一又は複数の検索対象文を抽出する
1乃至4のいずれか1つ記載の検索装置。
(付記6)
前記第二の抽出部は、抽出された前記文節中の前記疑問詞と助詞との組み合わせに基づいて、前記疑問詞の前記深層格を判定する
付記5記載の検索装置。
(付記7)
前記出力部は、抽出された前記検索対象文の文字列において、一致した前記名詞を含む文節の文字を、他の文字と区別して出力する
請求項1乃至6のいずれか1つ記載の検索装置。
(付記8)
前記出力部は、抽出された前記検索対象文の文字列において、一致した前記名詞を含む文節の文字及び前記疑問詞の前記深層格と対応付けられている前記任意の名詞を含む文節の文字を、他の文字と区別して出力する
付記5又は6記載の検索装置。
(付記9)
前記出力部は、前記任意の名詞を修飾する文節の文字を、前記任意の名詞を含む前記文節の前記文字と同様に出力する
付記8記載の検索装置。
(付記10)
前記検索装置は、更に、
抽出された前記複数の検索対象文の文字列において、一致した前記名詞を含む文節の文字数が、抽出された前記複数の検索対象文の全体の文字数に対して占める割合に応じて、抽出された前記複数の検索対象文を順位付けするソート部を有し、
前記出力部は、前記順位付けに従って、抽出された前記複数の検索対象文を出力する
付記1乃至9のいずれか1つ記載の検索装置。
(付記11)
前記検索装置は、更に、
抽出された前記複数の検索対象文の文字列において、一致した前記名詞を含む文節の文字数及び前記疑問詞の前記深層格と対応付けられている前記任意の名詞を含む文節の文字数の合計が、抽出された前記複数の検索対象文の全体の文字数に対して占める割合に応じて、抽出された前記複数の検索対象文を順位付けするソート部を有し、
前記出力部は、前記順位付けに従って、抽出された前記複数の検索対象文を出力する
付記5又は6記載の検索装置。
(付記12)
前記ソート部は、前記任意の名詞を修飾する文節の文字数を、前記合計に加える
付記11記載の検索装置。
(付記13)
前記検索装置は、更に、
前記第二の抽出部による抽出の頻度に応じて、抽出された前記複数の検索対象文を順位付けするソート部を有し、
前記出力部は、前記順位付けに従って、抽出された前記複数の検索対象文を出力する
請求項1乃至9のいずれか1つ記載の検索装置。
(付記14)
前記第二の抽出部は、抽出された前記一又は複数の検索対象文の数が所定数以下となった場合に、抽出された前記一又は複数の検索対象文について前記第二の抽出部による前記抽出の頻度を更新する
付記13記載の検索装置。
(付記15)
前記検索装置は、更に、
抽出された前記複数の検索対象文のうち、いずれかを選択する操作がされた場合に、抽出された前記複数の検索対象文について前記第二の抽出部による前記抽出の頻度を更新する更新部
を有する付記13記載の検索装置。
(付記16)
前記検索装置は、複数の検索端末と接続可能であり、
前記複数の検索端末からの操作により、前記第二の抽出部による前記抽出の頻度が更新される
付記13乃至15のいずれか1つ記載の検索装置。
(付記17)
質問文の一又は複数の文字が入力される度に、入力された前記一又は複数の文字からなる文字列から文節の抽出を試みる第一の抽出処理と、
複数の検索対象文に含まれる文節中の名詞について、当該名詞と当該名詞の深層格と当該名詞を含む検索対象文とを対応付けて格納する格納部から、抽出された前記文節中の名詞と当該名詞の深層格とに一致する一又は複数の検索対象文を抽出する第二の抽出処理と、
抽出された前記一又は複数の検索対象文を出力する出力処理
をコンピュータが実行する検索方法。
(付記18)
質問文の一又は複数の文字が入力される度に、入力された前記一又は複数の文字からなる文字列から文節の抽出を試みる第一の抽出処理と、
複数の検索対象文に含まれる文節中の名詞について、当該名詞と当該名詞の深層格と当該名詞を含む検索対象文とを対応付けて格納する格納部から、抽出された前記文節中の名詞と当該名詞の深層格とに一致する一又は複数の検索対象文を抽出する第二の抽出処理と、
抽出された前記一又は複数の検索対象文を出力する出力処理
をコンピュータに実行させるためのプログラム。