(57)【特許請求の範囲】
【請求項１】
第１の情報処理装置と第２の情報処理装置を備える文書検索システムであって、
前記第１の情報処理装置が、
所定の文書集合に含まれる各文書に対して形態素解析を行う形態素解析手段と、
前記形態素解析手段が前記文書集合に含まれる各文書から抽出した形態素の集合を出現形態素集合として生成する第１の生成手段と、
前記文書集合に含まれる文書と前記出現形態素集合に含まれる形態素との間の関係を示す検索インデックス情報を、前記形態素解析手段による前記形態素解析の結果から生成する第２の生成手段を備え、
前記第２の情報処理装置が、
前記文書集合、前記出現形態素集合および前記検索インデックス情報を格納する格納手段と、
前記文書集合に対する検索クエリの入力を受け付ける入力手段と、
前記検索クエリに含まれる１つ以上の部分文字列を形態素候補として抽出し、抽出した前記形態素候補の各々について、前記出現形態素集合に含まれる前記形態素と一致するか否かを判断する判断手段と、
前記出現形態素集合に含まれる前記形態素と一致すると前記判断手段が判断した前記形態素候補と前記検索インデックス情報に基づいて、前記文書集合に含まれる各文書と前記検索クエリとの類似度を算出する類似度算出手段と、
前記類似度に基づいて、前記検索クエリと類似する文書を提示する提示手段を備える
ことを特徴とする文書検索システム。
【請求項２】
検索対象である文書集合を格納した情報処理装置に、
前記文書集合に対する検索クエリの入力を受け付ける入力ステップと、
前記検索クエリに含まれる１つ以上の部分文字列を形態素候補として抽出する抽出ステップと、
前記文書集合に出現する形態素の集合として予め生成された出現形態素集合を参照し、抽出した前記形態素候補の各々について、前記出現形態素集合に含まれる形態素と一致するか否かを判断する判断ステップと、
前記文書集合に含まれる文書と前記出現形態素集合に含まれる形態素との間の関係を示す情報として予め生成された検索インデックス情報を参照し、前記出現形態素集合に含まれる前記形態素と一致すると判断した前記形態素候補と前記検索インデックス情報に基づいて、前記文書集合に含まれる各文書と前記検索クエリとの類似度を算出する算出ステップと、
前記類似度に基づいて、前記検索クエリと類似する文書を提示する提示ステップ
を実行させるプログラム。
【請求項３】
前記出現形態素集合に含まれる各形態素は、当該形態素の文字列長と関連付けられており、
前記抽出ステップは、前記出現形態素集合に含まれる形態素に関連付けられた前記文字列長のいずれかに一致する長さの前記部分文字列のみを前記形態素候補として抽出するステップである
ことを特徴とする請求項２に記載のプログラム。
【請求項４】
所定の文書集合と、前記文書集合に出現する形態素の集合として予め生成された出現形態素集合と、前記文書集合に含まれる文書と前記出現形態素集合に含まれる形態素との間の関係を示す情報として予め生成された検索インデックス情報を格納する格納手段と、
前記文書集合に対する検索クエリの入力を受け付ける入力手段と、
前記検索クエリに含まれる１つ以上の部分文字列を形態素候補として抽出し、抽出した前記形態素候補の各々について、前記出現形態素集合に含まれる前記形態素と一致するか否かを判断する判断手段と、
前記出現形態素集合に含まれる前記形態素と一致すると前記判断手段が判断した前記形態素候補と前記検索インデックス情報に基づいて、前記文書集合に含まれる各文書と前記検索クエリとの類似度を算出する類似度算出手段と、
前記類似度に基づいて、前記検索クエリと類似する文書を提示する提示手段
を備えることを特徴とする情報処理装置。
【請求項５】
情報処理装置に、
所定の文書集合に含まれる各文書に対して形態素解析を行う形態素解析ステップと、
前記形態素解析ステップにおいて前記文書集合に含まれる各文書から抽出した形態素の集合を出現形態素集合として生成する第１の生成ステップと、
前記出現形態素集合に含まれる各形態素について、所定の評価基準による評価のための情報であって当該形態素の文字列長が長いほど低い評価を示す評価用情報を、当該形態素の文字列長を用いて求め、前記出現形態素集合に含まれる各形態素に前記評価用情報を対応付ける対応付けステップと、
前記出現形態素集合の大きさの上限を設定する上限設定ステップと、
前記第１の生成ステップにより生成した前記出現形態素集合の大きさが前記上限を超える場合に、前記評価用情報に基づいて評価の低い方から順に形態素を前記出現形態素集合から削除することで、前記出現形態素集合の大きさを前記上限以下に抑える削除ステップと、
前記文書集合に含まれる文書と前記出現形態素集合に含まれる形態素との間の関係を示す検索インデックス情報を、前記形態素解析ステップの結果から生成する第２の生成ステップと、
前記出現形態素集合および前記検索インデックス情報を出力する出力ステップ
を実行させるプログラム。
【請求項６】
前記出現形態素集合に含まれる各形態素について、前記文書集合に含まれる文書のうち当該形態素が出現する文書の数である出現文書数が多いほど、前記評価用情報は、低い評価を示す
ことを特徴とする請求項５に記載のプログラム。
【請求項７】
前記出現形態素集合に含まれる各形態素の前記評価用情報は、前記形態素解析ステップの結果として判定された当該形態素の品詞を含み、
品詞ごとの優先度が予め決められており、
前記優先度の低い品詞の形態素ほど評価が低い、
ことを特徴とする請求項５または６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文書検索に関する。
【背景技術】
【０００２】
近年では様々な機器の情報化が進み、自然言語処理の利用も広まっている。しかし、機器の種類によっては、搭載されているプロセッサの処理能力や搭載されているメモリの容量が、自然言語処理の実行には不十分なレベルの場合もある。そこで、ある種のシステムでは、外部装置によって何らかの処理が行われることもある。
【０００３】
例えば、ある種のモバイル端末のページャ機能は、転送表示できる文字数に制限がある。そこで、電子メール本文から重要文のみを抽出し、その要約結果をモバイル端末に転送表示するための次のような方法が知られている。
【０００４】
具体的には、この方法は、電子メールを受信し、受信した電子メールからヘッダ情報および電子メール本文を抽出し、ヘッダ情報から転送用ヘッダを作成することを含む。また、この方法は、電子メール本文を形態素解析し、形態素解析された電子メール本文を文単位に分割し、重要表現を記述した重要表現テーブルを参照して、文単位に分割された電子メール本文中から重要表現を含んだ文を重要文として抽出することも含む。さらに、この方法は、転送用ヘッダおよび重要文を端末に転送し、転送された転送用ヘッダおよび重要文を端末に表示することを含む。
【０００５】
また、情報検索装置における辞書のコストを小さくした状態で、ユーザが語彙の制約を感じずに自然言語対話で検索を行い、ユーザの意図するデータを検索するシステムとして、次のような検索システムも知られている。
【０００６】
この検索システムは、検索依頼に応じて大外部辞書を検索する辞書検索サーバと、データベースを検索する検索サーバと、サーバ側通信制御手段と、情報検索端末装置と、複数装置間の通信を行う手段を備える。そして、情報検索端末装置は、発話を受け付け検索結果を提示する入出力手段と、入力文字解析手段と、入力文字解析に用いる小内部辞書と、ユーザの意図を基に検索依頼を決定する対話制御手段と、通信制御を行う端末側通信制御手段を備える。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−３１６７６２号公報
【特許文献２】特開２０００−３３１０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
近年では様々な製品が高機能化しているが、製品の高機能化にともない、ユーザが製品の機能を把握しきれないこともある。そこで、当該製品のマニュアルやヘルプ等の所定の文書を、当該製品上で自然言語を用いて検索することが可能になれば、ユーザにとって製品の利便性が向上すると考えられる。ここで、例えば日本語のように分かち書きをしない自然言語による検索のためには形態素解析が利用されることから、当該製品上での形態素解析を可能とすることで利便性向上が実現されると考えられる。
【０００９】
しかし、プロセッサとメモリを有する情報処理装置が製品に搭載されている場合であっても、製品の種類によっては、プロセッサの処理能力やメモリ容量などのコンピューティングリソースが、形態素解析を行うには不十分なこともある。
【００１０】
そこで本発明は、形態素解析よりも簡素な処理により、自然言語による検索を実現することを目的とする。
【課題を解決するための手段】
【００１１】
一態様による文書検索システムは、第１の情報処理装置と第２の情報処理装置を備える。前記第１の情報処理装置は、形態素解析手段と第１の生成手段と第２の生成手段を備え、前記第２の情報処理装置は、格納手段と入力手段と判断手段と類似度算出手段と提示手段を備える。
【００１２】
前記形態素解析手段は、所定の文書集合に含まれる各文書に対して形態素解析を行う。また、前記第１の生成手段は、前記形態素解析手段が前記文書集合に含まれる各文書から抽出した形態素の集合を出現形態素集合として生成する。そして、前記第２の生成手段は、前記文書集合に含まれる文書と前記出現形態素集合に含まれる形態素との間の関係を示す検索インデックス情報を、前記形態素解析手段による前記形態素解析の結果から生成する。
【００１３】
また、前記格納手段は、前記文書集合、前記出現形態素集合および前記検索インデックス情報を格納し、前記入力手段は、前記文書集合に対する検索クエリの入力を受け付ける。そして、前記判断手段は、前記検索クエリに含まれる１つ以上の部分文字列を形態素候補として抽出し、抽出した前記形態素候補の各々について、前記出現形態素集合に含まれる前記形態素と一致するか否かを判断する。
【００１４】
前記類似度算出手段は、前記出現形態素集合に含まれる前記形態素と一致すると前記判断手段が判断した前記形態素候補と前記検索インデックス情報に基づいて、前記文書集合に含まれる各文書と前記検索クエリとの類似度を算出する。そして、前記提示手段は、前記類似度に基づいて、前記検索クエリと類似する文書を提示する。
【発明の効果】
【００１５】
上記の文書検索システムによれば、第２の情報処理装置は形態素解析を行っていない。しかし、形態素解析よりも簡素な処理を行う判断手段により、擬似的な形態素解析が実現されるので、第２の情報処理装置は、擬似的な形態素解析の結果を利用して、自然言語による検索を実現することができる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態のシステム構成図である。
【図２】情報処理装置のハードウェア構成図である。
【図３】比較例について説明する図である。
【図４】第１実施形態における語句リスト生成処理のフローチャートである。
【図５】第１実施形態の語句リストの例を説明する図である。
【図６】ベクトルデータの例を説明する図である。
【図７】第１実施形態におけるクエリ語句抽出処理のフローチャートである。
【図８】検索結果を表示する処理のフローチャートである。
【図９】第２〜第４実施形態に共通するシステム構成図である。
【図１０】第２実施形態における語句リスト生成処理のフローチャートである。
【図１１】第２実施形態の一次語句リストの例を説明する図である。
【図１２】第２実施形態の語句リストの例を説明する図である。
【図１３】第３実施形態における語句リスト生成処理のフローチャートである。
【図１４】第３実施形態の一次語句リストの例を説明する図である。
【図１５】第３実施形態の語句リストの例を説明する図である。
【図１６】第４実施形態における語句リスト生成処理のフローチャートである。
【図１７】第４実施形態の一次語句リストの例を説明する図である。
【図１８】第４実施形態で使われる品詞優先度情報の例を説明する図である。
【図１９】第４実施形態の語句リストの例を説明する図である。
【図２０】第５実施形態の語句リストの例を説明する図である。
【図２１】第５実施形態におけるクエリ語句抽出処理のフローチャートである。
【発明を実施するための形態】
【００１７】
以下、実施形態について、図面を参照しながら詳細に説明する。具体的には、まず図１〜８を参照して第１実施形態について説明する。その後、図９を参照して第２〜第４実施形態の共通点について説明し、図１０〜１２を参照して第２実施形態について説明し、図１３〜１５を参照して第３実施形態について説明し、図１６〜１９を参照して第４実施形態について説明する。さらに、図２０〜２１を参照して第５実施形態について説明し、最後にその他の実施形態についても説明する。
【００１８】
図１は、第１実施形態のシステム構成図である。文書検索システム１００は、検索のための事前処理を行うサーバ１１０と、検索クエリの入力を受け付けて検索結果を表示する携帯電話１３０を含む。
【００１９】
サーバ１１０は、形態素解析を行うのに十分な処理能力を有するプロセッサと形態素解析を行うのに十分な容量のメモリを有する情報処理装置の一例である。具体的には、サーバ１１０は、例えばハードディスク装置などの不揮発性記憶装置により実現される記憶部１１１を有し、記憶部１１１は、文書集合１１２と辞書１１３と接続表１１４を格納する。サーバ１１０はさらに、形態素解析部１１５と文書語句抽出部１１６と語句リスト生成部１１７とインデックス生成部１１８を備える。
【００２０】
携帯電話１３０も情報処理装置の一例であるが、携帯電話１３０のプロセッサの処理能力はサーバ１１０より低くてもよく、携帯電話１３０のメモリ容量はサーバ１１０よりも少なくてもよい。また、携帯電話１３０も、ハードディスク装置やフラッシュメモリなどの不揮発性記憶装置により実現される記憶部１３１を有し、記憶部１３１は、文書集合１１２と同じ文書集合１３２と、語句リスト１３３と、インデックス１３４を格納する。携帯電話１３０はさらに、入力部１３５、部分文字列処理部１３６、語句一致判定部１３７、クエリ語句抽出部１３８、ベクトル化処理部１３９、類似度算出部１４０、文書ソート部１４１、表示部１４２、および文書選択部１４３を備える。
【００２１】
第１実施形態における検索対象の文書集合は、文書集合１１２および文書集合１３２として、記憶部１１１および記憶部１３１にそれぞれ格納される。上記のとおり、文書集合１１２と文書集合１３２は同内容である。
【００２２】
検索対象である文書集合１１２と文書集合１３２は、具体的には、携帯電話１３０に関するマニュアル、ヘルプ、ＦＡＱ（Frequently Asked Questions）など（以下これらを総称して「マニュアル類」という）を含む。なお、マニュアル類は一般に多岐のトピックに渡って書かれているが、以下では、１つのトピックに対応する１つのセクションのことを１つの「文書」という。
【００２３】
また、各文書には、文書集合１１２内で一意な（したがって文書集合１３２内でも一意な）識別情報が予め割り当てられている。以下では各文書の識別情報を「文書ＩＤ（identifier）」といい、例えば文書ＩＤが「Ｄ」の文書を「文書Ｄ」のように参照する。
【００２４】
第１実施形態では、「マニュアル類は内容が常時動的に変更されるものではなく、基本的には静的に固定された文書である」という性質を利用して、サーバ１１０が事前に処理を行う。例えば、マニュアル類が作成された時点でサーバ１１０は事前処理を行うことができる。
【００２５】
すると、詳しくは後述するが、携帯電話１３０は、サーバ１１０による事前処理の結果を利用することで、形態素解析を行うことなく、簡易な処理を行うだけで、擬似的な形態素解析を実現することができる。したがって、携帯電話１３０は、擬似的な形態素解析を使って、分かち書きをしない自然言語（例えば日本語や中国語など）による検索クエリにしたがって文書集合１３２から文書を検索し、検索結果をユーザに提示することができる。
【００２６】
携帯電話１３０の高機能化にともない、ユーザが携帯電話１３０の機能を把握しきれないことも想定されるが、第１実施形態によれば、携帯電話１３０での擬似的な形態素解析とその擬似的な形態素解析の結果を用いた文書集合１３２の検索が可能となる。したがって、第１実施形態によれば、たとえ形態素解析には不十分なプロセッサとメモリしか携帯電話１３０に搭載されていなくても、携帯電話１３０において自然言語による文書集合１３２の検索が可能となる。したがって、第１実施形態には、ユーザの利便性を向上させる効果がある。
【００２７】
具体的なサーバ１１０と携帯電話１３０の動作は次のとおりである。
まず、形態素解析部１１５が、辞書１１３と接続表１１４を用いて文書集合１１２内の各文書に対して形態素解析を行う。形態素解析のアルゴリズムは任意である。一例として、図１には接続表１１４を用いたアルゴリズムの場合を例示してある。
【００２８】
ここで、辞書１１３は、個々の形態素をそれぞれ品詞と対応付けるデータである。辞書１１３は、例えば数十万語にも及ぶ形態素についてのエントリを含むこともあり、辞書１１３のデータ量は、約十ＭＢ（メガバイト）になることもあり、時には数十ＭＢに達することもある。なお、辞書１１３で使われる品詞の体系は実施形態に応じて任意である。例えば、「動詞」のような品詞が使われることもあり、「か行５段活用動詞語幹」のように細分化された品詞が使われることもある。
【００２９】
接続表１１４は、品詞間が接続可能であるか否かを示すデータである。接続表１１４は、例えば、「名詞の直後に助詞が接続することは可能である」、「名詞の直後に助動詞が接続することはない」などの規則を表す。
【００３０】
形態素解析部１１５は、任意の形態素解析アルゴリズムにしたがい、辞書１１３と接続表１１４を用いて文書集合１１２内の各文書を形態素解析し、形態素解析の結果を文書語句抽出部１１６に出力する。形態素解析の結果の形式は任意であるが、例えば、文書の先頭から順に、解析の結果として得られた形態素と当該形態素の品詞とを対応付けて並べた形式でもよい。
【００３１】
文書語句抽出部１１６は、形態素解析部１１５から入力された形態素解析の結果から語句のみを抽出し、語句リスト生成部１１７とインデックス生成部１１８に出力する。なお、以下の説明において「語句」とは、形態素解析の結果として得られた形態素のことである。
【００３２】
語句リスト生成部１１７は、文書語句抽出部１１６から受け取った語句から、語句リスト１３３を作成する。なお、語句リスト１３３は、完成した後に携帯電話１３０の記憶部１３１に格納されるが、語句リスト生成部１１７は、生成した語句リスト１３３を一時的に記憶部１１１に出力して格納しておいてもよい。
【００３３】
語句リスト１３３は、文書集合１１２中に出現する語句の集合を表すデータである。すなわち、各文書から抽出された形態素の集合を出現形態素集合として生成する第１の生成手段は、第１実施形態においては、文書語句抽出部１１６と語句リスト生成部１１７により実現される。
【００３４】
なお、詳しくは図５とともに後述するが、語句リスト１３３を実現するための具体的なデータ構造は任意である。「語句リスト」という名称は、データ構造をリスト構造に限定する意図ではない。
【００３５】
文書集合１１２の内容にもよるが、例えば文書集合１１２が携帯電話１３０に関するマニュアル類である場合、語句リスト１３３に含まれる語句は、数千語程度のこともあり、語句リスト１３３のデータ量は数百ＫＢ（キロバイト）程度に収まることもある。つまり、未知語を減らして解析精度を上げるために辞書１１３には非常に多くの形態素が登録されているのが通例だが、特定の文書集合１１２に出現する形態素はそのうちのごく一部に過ぎない。
【００３６】
そのため、語句リスト１３３の容量は辞書１１３に比べて遥かに小さい（例えば数百分の一程度になることもある）。よって、たとえ携帯電話１３０の記憶部１３１が、辞書１１３を格納するには困難な小容量のものであったとしても、少量化された語句リスト１３３ならば記憶部１３１でも十分に格納可能である。
【００３７】
さて、上記のようにして語句リスト生成部１１７が語句リスト１３３を生成する一方で、インデックス生成部１１８は、文書語句抽出部１１６から受け取った語句からインデックス１３４を生成する。なお、インデックス１３４は、完成した後に携帯電話１３０の記憶部１３１に格納されるが、インデックス生成部１１８は、生成したインデックス１３４を一時的に記憶部１１１に出力して格納しておいてもよい。
【００３８】
第１実施形態では、自然言語による検索としてベクトル検索が行われ、インデックス１３４は文書集合１１２内の各文書に対応するベクトルを表すデータである。なお、自然言語を利用した検索アルゴリズムには様々なものがあるが、ベクトル検索は、文書内の語句とユーザから入力された検索クエリ内の語句の重要度を数値化して重み付けを行うことで、スコアに基づき検索結果を順位付けることが可能なアルゴリズムである。
【００３９】
詳しくは図６とともに後述するが、インデックス生成部１１８は、文書語句抽出部１１６からの出力にしたがって、文書集合１１２内の各文書について、当該文書内での個々の語句の出現頻度を数える。そして、インデックス生成部１１８は、数えた出現頻度に基づいて、例えばＴＦ（Term Frequency）・ＩＤＦ（Inverse Document Frequency）法などの所定のアルゴリズムにより、文書集合１１２内の各文書の特徴を示すベクトルを算出する。インデックス生成部１１８は、各文書の文書ＩＤと当該文書に対応して算出したベクトルとを対応付けたデータを、インデックス１３４として生成する。
【００４０】
すなわち、インデックス１３４は、文書集合に含まれる文書と出現形態素集合に含まれる形態素との間の関係を示す検索インデックス情報の一例である。そして、第１実施形態では、検索インデックス情報を生成する第２の生成手段が、文書語句抽出部１１６とインデックス生成部１１８により実現される。
【００４１】
以上のようにしてサーバ１１０により生成された語句リスト１３３とインデックス１３４は、携帯電話１３０の記憶部１３１に格納される。また、記憶部１３１には文書集合１１２と同じ文書集合１３２も格納される。そして、検索時の携帯電話１３０の動作は次のとおりである。
【００４２】
入力部１３５は、例えば携帯電話１３０のボタンやタッチスクリーンを含んでもよいし、接続インタフェースと当該接続インタフェースを介して携帯電話１３０に接続されたキーボードやマウス等を含んでもよい。入力部１３５は、ユーザから検索クエリの文字列の入力を受け付け、部分文字列処理部１３６に出力する。
【００４３】
検索クエリは、例えば、「カメラで写真を撮影してメールで送る」のような自然言語文である。部分文字列処理部１３６は、検索クエリの文字列から部分文字列を抽出し、語句一致判定部１３７に出力する。例えば、上記の検索クエリの例の場合、部分文字列処理部１３６は、「カメ」や「カメラ」などの部分文字列を抽出して語句一致判定部１３７に出力する。
【００４４】
語句一致判定部１３７は、部分文字列処理部１３６から受け取った部分文字列が語句リスト１３３中の語句と一致するか否かを判断し、判断結果をクエリ語句抽出部１３８に通知する。つまり、検索クエリに含まれる1つ以上の部分文字列を形態素候補として抽出し、各形態素候補について出現形態素集合に含まれる形態素と一致するか否かを判断する判断手段が、第１実施形態では部分文字列処理部１３６と語句一致判定部１３７により実現される。
【００４５】
クエリ語句抽出部１３８は、「語句リスト１３３中の語句と一致する」と判定された部分文字列を、検索クエリ中に出現する形態素（以下「クエリ語句」という）として抽出する。クエリ語句抽出部１３８は、検索クエリから抽出した各クエリ語句を、当該クエリ語句の頻度とともにベクトル化処理部１３９に出力する。
【００４６】
ベクトル化処理部１３９は、クエリ語句抽出部１３８からの出力に基づいて、検索クエリを特徴づけるベクトルを算出し、算出結果を類似度算出部１４０に出力する。詳しくは図６とともに後述するが、インデックス生成部１１８と同様にベクトル化処理部１３９も、例えばＴＦ・ＩＤＦ法によりベクトルを算出する。
【００４７】
類似度算出部１４０は、インデックス１３４を読み出し、ベクトル化処理部１３９から出力されたベクトルと、文書集合１３２中の各文書のベクトルとに基づいて、検索クエリと各文書との類似度を算出する。以上のように第１実施形態では、文書集合１３２に含まれる各文書と検索クエリとの類似度を算出する類似度算出手段が、クエリ語句抽出部１３８とベクトル化処理部１３９と類似度算出部１４０によって実現される。
【００４８】
また、類似度算出部１４０は、各文書の文書ＩＤと、当該文書と検索クエリとの類似度を対応付けて、文書ソート部１４１に出力する。すると、文書ソート部１４１は、類似度の降順に文書集合１３２内の文書をソートし、ソート結果を表示するよう表示部１４２に命令する。表示部１４２は、例えば、携帯電話１３０が備える液晶ディスプレイである。
【００４９】
例えば、文書集合１３２中の各文書にタイトルが付けられている場合、文書ソート部１４１は、類似度の降順に文書のタイトルを表示部１４２に表示させてもよい。文書ソート部１４１は、さらに各文書について類似度の値を表示部１４２に表示させてもよい。
【００５０】
以上のように、第１実施形態では、文書ソート部１４１と表示部１４２により、類似度に基づいて検索クエリと類似する文書を提示する提示手段が実現される。換言すれば、ソートされた順序によって、検索クエリとの類似度の高さが提示される。
【００５１】
なお、文書ソート部１４１は、類似度の高い一部の文書のみを選択して、選択した文書に関する情報（例えば文書のタイトル）のみを類似度の降順に表示部１４２に表示させてもよい。例えば、閾値Ａ、Ｂ、またはＣを利用して、文書ソート部１４１は、類似度が上位Ａ％の文書のみ、類似度が上位Ｂ位までの文書のみ、または類似度が閾値Ｃ以上の文書のみを選択してもよい。閾値Ａ〜Ｃは、所定の値であってもよく、類似度の分布に基づいて文書ソート部１４１が動的に決定する値であってもよい。
【００５２】
いずれにせよ、携帯電話１３０のユーザは、表示部１４２に表示された内容を見て、所望の文書を選択するための入力を行うことができる。入力部１３５はその入力を受け付けて、入力内容を文書選択部１４３に通知する。
【００５３】
すると、文書選択部１４３は、入力部１３５を介した入力で指定された文書の文書ＩＤを認識して当該文書を文書集合１３２の中から選択し、選択した当該文書を表示部１４２に表示させる。
【００５４】
例えば、上記のように類似度の降順に文書のタイトルを表示部１４２が表示している場合、ボタン操作により１つのタイトルが選択されると、文書選択部１４３は選択されたタイトルに対応する文書ＩＤをキーにして文書集合１３２から文書を読み出す。そして、文書選択部１４３は、読み出した文書を表示部１４２に表示させる。
【００５５】
このように、携帯電話１３０では形態素解析が行われない。しかし、例えば「カメラで写真を撮影してメールで送る」のような自然言語文が検索クエリとして入力部１３５から入力された場合、「カメラ」、「写真」、「撮影」、「メール」などの部分文字列がクエリ語句として抽出される。したがって、形態素解析を行うのに十分な能力のプロセッサを携帯電話１３０が備えていなくても、擬似的な形態素解析が実現され、その結果、検索クエリと類似する文書がユーザに対して提示される。
【００５６】
ところで、図１のサーバ１１０と携帯電話１３０はいずれも、図２にハードウェア構成を例示する情報処理装置２００の一例である。
情報処理装置２００は、入力装置２０１と出力装置２０２と記憶装置２０３とＣＰＵ（Central Processing Unit）２０４とメモリ２０５を有し、これら各部はバス２０６により互いに接続されている。
【００５７】
入力装置２０１は、例えば、ボタン、キーボード、マウスやタッチパッドなどのポインティングデバイスなどである。出力装置２０２は、例えばディスプレイである。記憶装置２０３は、例えばハードディスク装置やフラッシュメモリなどの不揮発性記憶装置であり、各種データやプログラムを格納する。メモリ２０５は、ＲＡＭ（Random Access Memory）などの書き換え可能なメモリである。
【００５８】
情報処理装置２００がサーバ１１０である場合、図１の記憶部１１１は記憶装置２０３により実現される。また、形態素解析部１１５、文書語句抽出部１１６、語句リスト生成部１１７、およびインデックス生成部１１８の各部は、ＣＰＵ２０４により実現される。すなわち、これら各部は、ＣＰＵ２０４が、記憶装置２０３からプログラムをメモリ２０５にロードし、メモリ２０５をワークエリアとして利用しながらプログラムを実行することにより実現される。
【００５９】
情報処理装置２００が携帯電話１３０である場合、図１の記憶部１３１は記憶装置２０３により実現され、入力部１３５は入力装置２０１により実現され、表示部１４２は出力装置２０２により実現される。また、部分文字列処理部１３６、語句一致判定部１３７、クエリ語句抽出部１３８、ベクトル化処理部１３９、類似度算出部１４０、文書ソート部１４１、および文書選択部１４３の各部は、ＣＰＵ２０４により実現される。すなわち、これら各部は、ＣＰＵ２０４が、記憶装置２０３からプログラムをメモリ２０５にロードし、メモリ２０５をワークエリアとして利用しながらプログラムを実行することにより実現される。
【００６０】
なお、サーバ１１０と携帯電話１３０に関して上述したプログラムは、予め記憶装置２０３に記憶されていてもよいし、情報処理装置２００が備える不図示の通信インタフェースを介してネットワークからダウンロードされ、記憶装置２０３に格納されてもよい。
【００６１】
あるいは、プログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、サーバ１１０または携帯電話１３０としての情報処理装置２００にインストールされてもよい。記憶媒体としては、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの半導体メモリなどが利用可能である。
【００６２】
なお、実施形態によっては、サーバ１１０または携帯電話１３０において、ＣＰＵ２０４がプログラムを実行することで実現可能な上記各部は、その一部または全部が専用のハードウェア回路により実現されてもよい。
【００６３】
続いて、以上に概要を説明した第１実施形態の利点の理解を助けるため、比較例について説明する。図３は、比較例について説明する図である。図３の比較例は、検索時にも形態素解析が行われる例である。
【００６４】
図１を参照して説明したように、第１実施形態では、検索時には形態素解析は行われず、より簡便な処理により擬似的な形態素解析が実現される。したがって、第１実施形態によれば、検索を行う携帯電話１３０が搭載している図２の記憶装置２０３およびメモリ２０５の容量とＣＰＵ２０４の処理能力は、形態素解析を行うのには不十分なレベルであってもよい。それに対し、図３の比較例では、検索を行う機器が、形態素解析を行うのに十分な容量の記憶装置およびメモリを備えるとともに、十分な処理能力を持ったＣＰＵを備える必要がある。
【００６５】
具体的には、図３の比較例では、検索対象文書集合３０１に対して辞書３０２を用いた形態素解析が事前処理として行われ、形態素解析結果３０３から、検索対象文書集合３０１中の各文書を特徴づけるベクトルのデータが生成される。なお、図３に示した形態素解析結果３０３は、「文書Ｄ１は、形態素Ｔ１、Ｔ３、Ｔ５、Ｔ１０、……が順に並んでいる文書である」といったことを示している。
【００６６】
そして、実際の検索時には、例えば「カメラで写真を撮影してメールで送る」のような自然言語文が検索クエリ３０４として与えられると、同じ辞書３０２を用いた形態素解析が行われる。その結果、例えば「カメラ／で／写真／を／撮影／し／て／メール／で／送／る」のように区切られた形態素列が、形態素解析結果３０５として得られる。そして、形態素解析結果３０５からベクトルが計算され、形態素解析結果３０３から得られた各ベクトルとの間で類似度が計算される。
【００６７】
このように、図３の比較例では、検索時にも形態素解析が行われる。よって、比較例では、検索を行う機器（例えば携帯電話や家電製品など）が、大容量の辞書３０２を格納するのに十分な記憶装置と、形態素解析を行うのに十分な処理能力のＣＰＵと、形態素解析を行うのに十分な容量のメモリを備える必要がある。
【００６８】
以上のとおり、第１実施形態は、自然言語文の検索クエリを受け付ける検索の実現において、検索を行う機器のハードウェア構成に対する制約が比較例よりも緩い。したがって、第１実施形態は、比較例よりも多くの機器において、自然言語文の検索クエリを受け付ける検索を可能とするものであり、各種機器のユーザの利便性向上に役立つ。
【００６９】
続いて、図４〜８を参照して、第１実施形態についてさらに詳細に説明する。
図４は、第１実施形態における語句リスト生成処理のフローチャートである。
ステップＳ１０１で形態素解析部１１５は、文書集合１１２内の１番目の文書のテキストを取得する。
【００７０】
そして、ステップＳ１０２で形態素解析部１１５は、ステップＳ１０１（または後述のステップＳ１０９）で取得したテキストの形態素解析を、辞書１１３と接続表１１４を用いて行い、形態素解析の結果を文書語句抽出部１１６に出力する。ステップＳ１０２ではさらに、文書語句抽出部１１６が、例えば品詞に関する情報も含んでいる形態素解析の結果から語句のみを抽出する。
【００７１】
そして、文書語句抽出部１１６は、抽出した語句を語句リスト生成部１１７とインデックス生成部１１８に出力する。なお、その後のインデックス生成部１１８の動作の説明は図４では割愛し、図６とともに後述する。
【００７２】
続くステップＳ１０３で語句リスト生成部１１７は、ステップＳ１０２で文書語句抽出部１１６から受け取った一群の語句のうち、１番目の語句を取得する。例えば、ステップＳ１０２で形態素解析された文書が１００個の形態素からなる場合、ステップＳ１０３では１００個のうちの１番目の語句が取得される。
【００７３】
そして、ステップＳ１０４で語句リスト生成部１１７は、ステップＳ１０３（または後述のステップＳ１０７）で取得した語句が、語句リスト１３３に未登録の語句であるか否かを判断する。
【００７４】
なお、第１実施形態では、語句リスト生成部１１７が語句リスト１３３の生成にあたって、生成途中の語句リスト１３３のデータをメモリ２０５上に一時的に記憶する。また、図４の語句リスト生成処理の開始時に、語句リスト生成部１１７は語句リスト１３３を空に初期化するものとする。
【００７５】
したがって、ステップＳ１０４における判断は、具体的には語句リスト生成部１１７が、ステップＳ１０３（またはステップＳ１０７）で取得した語句を検索キーとして、メモリ２０５上に記憶された生成途中の語句リスト１３３を検索する処理を含む。検索の結果、当該語句が語句リスト１３３中に見つからなければ、語句リスト生成部１１７は、当該語句を、語句リスト１３３に未登録の語句であると判断し、処理はステップＳ１０５に移行する。他方、当該語句が語句リスト１３３中に見つかれば、語句リスト生成部１１７は、当該語句は語句リスト１３３に登録済みであると判断し、処理はステップＳ１０６に移行する。
【００７６】
ステップＳ１０５で語句リスト生成部１１７は、未登録であると判断した語句を語句リスト１３３に追加する。そして処理はステップＳ１０６に移行する。
ステップＳ１０６で語句リスト生成部１１７は、ステップＳ１０２で文書語句抽出部１１６から受け取った語句のうち最後の語句までステップＳ１０４〜Ｓ１０５の処理が済んだのか、それとも未処理の語句が残っているのかを判断する。未処理の語句が残っている場合、処理はステップＳ１０７に移行する。逆に、ステップＳ１０２で受け取ったすべての語句について処理済みの場合は、処理はステップＳ１０８に移行する。
【００７７】
ステップＳ１０７で語句リスト生成部１１７は、未処理の語句のうち次の語句を選択し、取得する。そして処理はステップＳ１０４に戻る。
また、ステップＳ１０２で受け取ったすべての語句について語句リスト生成部１１７によるステップＳ１０４〜Ｓ１０５の処理が済むと、続くステップＳ１０８で形態素解析部１１５は、文書集合１１２中の最後の文書まで形態素解析を終えたか否かを判断する。最後の文書まで形態素解析が終了していれば、図４の語句リスト生成処理も終了する。他方、まだ形態素解析を行っていない文書が文書集合１１２中に残っていれば、処理はステップＳ１０９に移行する。
【００７８】
そして、ステップＳ１０９で形態素解析部１１５は、まだ形態素解析を行っていない、文書集合１１２中の次の文書を選択し、選択した文書のテキストを取得する。そして、処理はステップＳ１０２に戻る。
【００７９】
以上の語句リスト生成処理によれば、文書集合１１２中に出現するすべての形態素が語句リスト１３３に登録され、かつ、文書集合１１２中に出現しない形態素は語句リスト１３３に登録されない。したがって、辞書１１３と比べて大幅に容量を削減しつつも、文書集合１１２の検索に有効な語句は漏れなく登録した、効率的な語句リスト１３３が生成される。
【００８０】
図５は、第１実施形態の語句リストの例を説明する図である。図５に例示する語句リスト１３３は、文書集合１１２内の文書から形態素解析により抽出された語句Ｔ１、Ｔ２、Ｔ３、Ｔ４、Ｔ５、……を含む。
【００８１】
なお、図５では説明の便宜上、語句リスト１３３をテーブル形式で図示しているが、語句リスト１３３を実装するための具体的なデータ構造は、実施形態に応じて任意である。
例えば、語句リスト１３３は、改行コードやカンマなどの特定の区切り文字によって各語句の間を区切って単に各語句を並べただけのテキストファイルとして実装されてもよい。語句リスト１３３中の各語句は、例えば文字コードによる辞書式順序など、所定のソート順でソートされていてもよいし、ソートされていなくてもよい。
【００８２】
あるいは、語句リスト１３３は、所定のハッシュ関数ｈを使って語句Ｔｊから得られるハッシュ値Ｈj＝ｈ（Ｔｊ）に対応するエントリに語句Ｔｊを登録したハッシュテーブルによって実装されていてもよい。ハッシュ関数ｈの具体的定義は、任意に定めることができる。
【００８３】
または、語句リスト１３３は、平衡２分探索木、トライ（trie）、パトリシア木などの木構造を用いて実装されてもよいし、その他のデータ構造を用いて実装されていてもよい。語句リスト１３３の具体的なデータ構造に応じて、図４のステップＳ１０４における具体的な検索アルゴリズムおよびステップＳ１０５における具体的な追加操作も異なる。
【００８４】
図６は、ベクトルデータの例を説明する図である。第１実施形態ではベクトル検索が行われ、各文書と検索クエリはベクトルにより特徴づけられる。なお、各ベクトルの次数をＮとすると、Ｎは語句リスト１３３に登録されている語句の数に一致する。
【００８５】
図６では模式的に各ベクトルをテーブルの１行として表現している。図６の例では、インデックス１３４に含まれる各ベクトルは次のとおりである。すなわち、文書Ｄ１のベクトルは（０．２３，０，０．５６，０，……）であり、文書Ｄ２のベクトルは（０，０．４１，０．４９，０，……）であり、文書Ｄ３のベクトルは（０，０，０．７８，０．２１，……）である。また、検索クエリを特徴づけるベクトル１４４は（０．２９，０，０．６７，０．３２，……）である。
【００８６】
インデックス生成部１１８はインデックス１３４を生成するために、文書集合１１２中の各文書Ｄｉ（１≦ｉ≦Ｍ、Ｍは文書集合１１２の文書数）について、例えば次のような処理を行う。
【００８７】
すなわち、インデックス生成部１１８は、文書Ｄｉを形態素解析部１１５が形態素解析した結果から文書語句抽出部１１６が抽出した一群の語句を受け取り、語句ごとに文書Ｄｉ中の出現回数を数える。また、インデックス生成部１１８は、語句ごとに、当該語句が出現した文書数を数える。
【００８８】
ここで、ある文書Ｄｉと語句Ｔｊの組に対して定義されるＴＦを「ＴＦ（Ｄｉ，Ｔｊ）」と表記することにすると、ＴＦ（Ｄｉ，Ｔｊ）は、文書Ｄｉに語句Ｔｊが出現した回数（または、その回数に基づいて正規化などの操作により算出される値）である。ＴＦ（Ｄｉ，Ｔｊ）は、値が大きいほど、文書Ｄｉに語句Ｔｊが頻出することを示し、文書Ｄｉにとって語句Ｔｊが重要であることを示唆する。なお、正規化の例は、文書Ｄｉに出現する語句の総数（延べ数）による除算や、対数をとることである。
【００８９】
また、ある語句Ｔｊに対して定義されるＩＤＦを「ＩＤＦ（Ｔｊ）」と表記することにすると、ＩＤＦ（Ｔｊ）は、語句Ｔｊが出現する文書の数の逆数（または、その数に基づいて正規化などの操作により算出される値）である。ＩＤＦ（Ｔｊ）は、値が大きいほど、語句Ｔｊが特殊であり、文書の特徴づけにとって重要な役割を果たすことを示す。なお、上記の正規化は、文書集合中の文書数Ｍによる正規化でもよいし、対数をとる操作を含んでもよい。
【００９０】
よって、文書Ｄｉと語句Ｔｊの組に関して、ＴＦ（Ｄｉ，Ｔｊ）・ＩＤＦ（Ｔｊ）が大きいほど、語句Ｔｊが文書Ｄｉにとって重要であることを示す。
インデックス生成部１１８は、各文書Ｄｉと語句Ｔｊの組に対して定義されるＴＦ（Ｄｉ，Ｔｊ）および各語句Ｔｊに対して定義されるＩＤＦ（Ｔｊ）を、上記のようにして数えた結果から算出する。
【００９１】
そして、インデックス生成部１１８は、算出したＴＦ（Ｄｉ，Ｔｊ）とＩＤＦ（Ｔｊ）を使って、文書ＤｉのベクトルＶｉを算出する。すなわち、インデックス生成部１１８は、各１≦ｊ≦ＮについてベクトルＶｉの第ｊ成分（換言すれば文書Ｄｉに関する語句Ｔｊの重み）としてＴＦ（Ｄｉ，Ｔｊ）・ＩＤＦ（Ｔｊ）を算出することで、ベクトルＶｉを算出する。さらに、第１実施形態では、インデックス生成部１１８は、算出したベクトルＶｉを、大きさが１になるように正規化する。
【００９２】
インデックス生成部１１８は以上のようにして、文書集合１１２の各文書Ｄｉ（１≦ｉ≦Ｍ）について当該文書ＤｉのベクトルＶｉを算出することで、ベクトルＶｉの集合体であるインデックス１３４を生成する。
【００９３】
また、以下では説明の便宜上、入力部１３５から入力された検索クエリを「Ｑ」と表記することにすると、ベクトル化処理部１３９もインデックス生成部１１８と同様の方法でベクトル１４４を算出する。
【００９４】
すなわち、ベクトル化処理部１３９は、クエリ語句抽出部１３８からの出力にしたがって、検索クエリＱと語句Ｔｊの組に対して定義されるＴＦ（Ｑ，Ｔｊ）を算出する。具体的には、ＴＦ（Ｑ，Ｔｊ）は、検索クエリＱが入力部１３５から入力されたときにクエリ語句抽出部１３８が語句Ｔｊをクエリ語句として抽出した回数（または、その回数に基づいて正規化などの操作により算出される値）である。
【００９５】
また、第１実施形態では、図示は省略したが、文書集合１１２に対応して予め計算された各語句Ｔｊ（１≦ｊ≦Ｎ）のＩＤＦ（Ｔｊ）の値を含むデータが、ベクトル化処理部１３９用の内部データとして、例えば記憶部１３１に予め記憶されている。例えば、図５の語句リスト１３３が、各語句ＴｊにＩＤＦ（Ｔｊ）の値を対応付けた形式であってもよい。
【００９６】
したがって、ベクトル化処理部１３９は、算出したＴＦ（Ｑ，Ｔｊ）の値と予め記憶されているＩＤＦ（Ｔｊ）の値の積を、検索クエリＱのベクトル１４４の第ｊ成分として算出することができる。第１実施形態ではその後さらに、ベクトル化処理部１３９は、大きさが１になるようにベクトル１４４を正規化する。
【００９７】
さて、続いて図７と図８を参照して、携帯電話１３０における処理の詳細について説明する。
図７は、第１実施形態におけるクエリ語句抽出処理のフローチャートである。クエリ語句抽出処理は、入力部１３５が検索クエリの入力を受けたことを契機として開始される。
【００９８】
ステップＳ２０１で部分文字列処理部１３６は、入力部１３５から検索クエリを取得する。
次のステップＳ２０２で部分文字列処理部１３６は、切り出し文字数に初期値を設定する。なお、初期値は１以上の任意の値でよい。また、初期値は予め設定された値だが、固定の定数でもよいし、入力部１３５などのユーザインタフェースを介して可変的に設定可能な値でもよい。例えば、初期値が２のとき、切り出し文字数として２が設定される。
【００９９】
続いて、ステップＳ２０３で部分文字列処理部１３６は、切り出し位置を検索クエリの１番目の文字に設定する。
そして、ステップＳ２０４で部分文字列処理部１３６は、ステップＳ２０３（または後述のステップＳ２０８）で設定した切り出し位置から、ステップＳ２０２（または後述のステップＳ２１０）で設定した切り出し文字数の分だけ文字列を切り出して取得する。そして、部分文字列処理部１３６は、切り出した文字列を形態素候補として語句一致判定部１３７に出力する。
【０１００】
例えば、ステップＳ２０１で取得した検索クエリが「カメラで写真を撮影してメールで送る」の場合、切り出し文字数が２で切り出し位置が１なら「カメ」という文字列が、切り出し文字数が２で切り出し位置が２なら「メラ」という文字列が、切り出される。また、切り出し文字数が３で切り出し位置が１なら「カメラ」という文字列が切り出される。
【０１０１】
続くステップＳ２０５で語句一致判定部１３７は、部分文字列処理部１３６がステップＳ２０４で切り出した文字列と語句リスト１３３内の語句が一致するか否かを判断する。すなわち、語句一致判定部１３７は、ステップＳ２０４で切り出された文字列を検索キーとして語句リスト１３３を検索し、切り出された文字列と完全に一致する語句が語句リスト１３３中にあるか否かを判断し、判断結果をクエリ語句抽出部１３８に通知する。
【０１０２】
もし、切り出された文字列と一致する語句が語句リスト１３３中にあれば、処理はステップＳ２０６に移行する。逆に、切り出された文字列と一致する語句が語句リスト１３３中になければ、処理はステップＳ２０７に移行する。
【０１０３】
ステップＳ２０６でクエリ語句抽出部１３８は、語句一致判定部１３７からの通知にしたがい、語句リスト１３３中に一致する語句があると判断された文字列をクエリ語句として抽出する。
【０１０４】
例えば、語句リスト１３３中に「カメ」や「メラ」という語句がなく、「カメラ」という語句があるとする。すると、ステップＳ２０４で「カメ」または「メラ」が切り出された場合には、ステップＳ２０６は行われない。逆に、ステップＳ２０４で「カメラ」が切り出された場合には、ステップＳ２０６でクエリ語句抽出部１３８が「カメラ」をクエリ語句として抽出する。
【０１０５】
ステップＳ２０７で部分文字列処理部１３６は、ステップＳ２０４で切り出した文字列の末尾が検索クエリの末尾であるか否かを判断する。切り出した文字列の末尾が検索クエリの末尾のとき、現在の切り出し文字数での切り出し方は既に網羅されたということなので、処理はステップＳ２０９に移行する。逆に、切り出した文字列の末尾が検索クエリの末尾ではないとき、現在の切り出し文字数での切り出し方はまだ網羅されていないので、処理はステップＳ２０８に移行する。
【０１０６】
ステップＳ２０８で部分文字列処理部１３６は、切り出し位置を１文字後方へ移動する。そして、処理はステップＳ２０４に戻る。
また、ステップＳ２０９で部分文字列処理部１３６は、現在の切り出し文字数が設定最大値と等しいか否かを判断する。なお、設定最大値は実施形態に応じて任意である。また、設定最大値は予め設定された値だが、固定の定数でもよいし、入力部１３５などのユーザインタフェースを介して可変的に設定可能な値でもよい。
【０１０７】
現在の切り出し文字数が設定最大値と等しいとき、初期値と設定最大値で規定される範囲内での部分文字列の切り出し方は既に網羅されたということなので、図７のクエリ語句抽出処理は終了する。他方、現在の切り出し文字数が設定最大値より小さいとき、他の切り出し方を試すため、処理はステップＳ２１０に移行する。
【０１０８】
ステップＳ２１０で部分文字列処理部１３６は、切り出し文字数を１文字増加させる。そして、処理はステップＳ２０３に戻る。
例えば、ステップＳ２０１で取得した検索クエリが「カメラで写真を撮影してメールで送る」で、初期値が２で、設定最大値が５とする。そして、語句リスト１３３には「カメラ」、「写真」、「撮影」、「メール」などの語句が登録されているとする。すると、図７のクエリ語句抽出処理の結果として、少なくとも「カメラ」、「写真」、「撮影」、「メール」という４つの語句がクエリ語句として抽出される。また、この例では、これら４つの語句の検索クエリ中の出現回数はいずれも１である。
【０１０９】
もちろん、語句リスト１３３の内容によっては、上記に例示した４つの語句以外の語句がクエリ語句として抽出されることもあるが、いずれにせよ、高負荷な形態素解析よりも遥かに単純なクエリ語句抽出処理により、擬似的な形態素解析が実現される。すなわち、検索クエリを形態素解析した場合と同じ（または、ほぼ同じ）結果が、クエリ語句として得られる。さらに、クエリ語句抽出処理は単純な処理なので、ハードウェアリソースが限られている（例えばＣＰＵ２０４の処理能力が低かったり、記憶装置２０３やメモリ２０５の容量が小さかったりする）場合にも、現実的な時間で実行可能である。
【０１１０】
なお、図７の例では、切り出し文字数に関するループの中に切り出し位置に関するループが含まれているが、実施形態によっては、逆に、切り出し位置に関するループの中に切り出し文字数に関するループが含まれていてもよい。つまり、初期値と設定最大値で規定される範囲内での部分文字列の切り出し方が網羅されれば、ステップの順序は図７と異なっていてもよい。
【０１１１】
図８は、検索結果を表示する処理のフローチャートである。図８の処理は、ベクトル化処理部１３９が、図７の処理の結果を使って、図６に関して説明したようにしてベクトル１４４を求めた後に、開始される。
【０１１２】
ステップＳ３０１で類似度算出部１４０は、ベクトル化処理部１３９から検索クエリのベクトル１４４を取得する。
次に、ステップＳ３０２で類似度算出部１４０は、インデックス１３４の中から、文書集合１３２中の１番目の文書のベクトルを取得する。
【０１１３】
そして、ステップＳ３０３で類似度算出部１４０は、検索クエリのベクトル１４４と、ステップＳ３０２（または後述のステップＳ３０５）で取得した文書のベクトルから、検索クエリと当該文書の類似度を算出する。類似度算出部１４０は、算出した類似度を当該文書の文書ＩＤと対応付けてメモリ２０５上に記憶する。
【０１１４】
なお、第１実施形態では、ベクトルの大きさが１に正規化されているので、ベクトルの内積が類似度として利用される。実施形態によっては、ベクトル同士がなす角度などが類似度として利用されてもよい。
【０１１５】
また、類似度の定義から明らかに、文書集合１１２中（すなわち文書集合１３２中）に出現しない語句は、類似度の算出において無視しても構わないものであり、検索に不要である。だからこそ、擬似的な形態素解析のための適切な語句集合として、大規模な辞書１１３に出現するすべての語句の集合ではなく、そこから絞り込まれた語句リスト１３３が利用可能なのである。
【０１１６】
さて、次のステップＳ３０４で類似度算出部１４０は、文書集合１３２中の最後の文書まで（つまり、インデックス１３４中のすべてのベクトルについて）類似度の算出を終えたか否かを判断する。まだ類似度を算出していない文書が残っている場合、処理はステップＳ３０５に移行し、最後の文書まで類似度を算出済みの場合、処理はステップＳ３０６に移行する。
【０１１７】
ステップＳ３０５で類似度算出部１４０は、次の文書を選択して当該文書のベクトルをインデックス１３４の中から取得する。そして処理はステップＳ３０３に戻る。
ステップＳ３０６で文書ソート部１４１は、類似度の高い文書から順に適合文書として検索結果を表示部１４２に表示させる。すなわち、文書ソート部１４１は、ステップＳ３０３でメモリ２０５に記憶された文書ＩＤと類似度の組を、類似度をソートキーにして降順にソートし、ソートした結果の順序にしたがって、１つまたは複数の文書に関する情報を表示部１４２に表示させる。
【０１１８】
具体的には、文書ソート部１４１は、文書の全部を表示部１４２に表示させてもよいし、タイトルや冒頭部分など文書の一部のみを表示部１４２に表示させてもよい。また、文書ソート部１４１は、例えば、類似度が閾値以上の文書のみを選択したり、あるいは類似度順に上位から所定の件数の文書のみを選択したりして、選択により絞り込んだ文書のみを表示部１４２に表示させてもよい。
【０１１９】
以上説明した第１実施形態によれば、たとえ形態素解析を行うには携帯電話１３０のリソースが貧弱であったとしても、携帯電話１３０において簡素な処理により擬似的な形態素解析が実現される。したがって、携帯電話１３０において所定の文書集合１３２に対する自然言語による検索が可能となり、例えば文書集合１３２がマニュアル類の文書集合であれば、ユーザの利便性が向上する。
【０１２０】
なお、図１には１台の携帯電話１３０しか図示していないが、サーバ１１０が語句リスト１３３とインデックス１３４を１回生成するだけで、任意の台数の携帯電話１３０において、自然言語による検索が可能となる。例えば、サーバ１１０が生成した語句リスト１３３とインデックス１３４は、一旦サーバ１１０内に格納され、携帯電話１３０の生産工場において各携帯電話１３０の記憶部１３１にコピーされてもよい。
【０１２１】
また、マニュアル類は、常時動的に内容が変更されるものではないが、時には訂正や追加のために内容が変更される可能性もある。第１実施形態は、文書集合１１２（つまり文書集合１３２）の内容が変更される場合にも対応可能である。
【０１２２】
すなわち、サーバ１１０は、変更後の文書集合１１２から再度語句リスト１３３とインデックス１３４を生成しなおせばよい。そして、携帯電話１３０は、変更後の文書集合１３２と、新たに生成された語句リスト１３３とインデックス１３４を、サーバ１１０からダウンロードして記憶部１３１に格納すればよい。すると、内容が変更された文書集合１３２に対しても、携帯電話１３０において自然言語による検索が可能となる。
【０１２３】
続いて、他のいくつかの実施形態について、第１実施形態との違いを中心に説明する。
図９は、第２〜第４実施形態に共通するシステム構成図である。図９の文書検索システム１００ａは、サーバ１１０ａと携帯電話１３０を含む。携帯電話１３０の構成は図１に示した第１実施形態と同様なので説明を省略する。
【０１２４】
サーバ１１０ａは、語句リスト生成部１１７の代わりに語句リスト生成部１１７ａを有し、容量設定部１１９が追加されている点において、図１のサーバ１１０と異なる。
容量設定部１１９は、語句リスト１３３の容量の上限を語句リスト生成部１１７ａに対して指定する。なお、上限は、例えば第５実施形態ではバイト数で表現されるが、語句の数で表現されてもよい。
【０１２５】
また、例えば、容量設定部１１９は、所定の定数を語句リスト１３３の容量の上限として語句リスト生成部１１７ａに通知してもよい。あるいは、キーボードやマウス等の入力装置を容量設定部１１９が備え、入力装置から入力された値を容量設定部１１９が語句リスト１３３の容量の上限として語句リスト生成部１１７ａに通知してもよい。
【０１２６】
語句リスト生成部１１７ａは、語句リスト生成部１１７と類似の方法で語句リスト１３３を生成するが、その際に、容量設定部１１９により設定された上限以下になるように語句リスト１３３の容量を抑える。
【０１２７】
なお、第２および第３実施形態における文書語句抽出部１１６は第１実施形態と同様だが、第４実施形態では文書語句抽出部１１６の動作が第１実施形態と多少異なる。また、第２実施形態では、インデックス生成部１１８から語句リスト生成部１１７ａへの出力がある。第２〜第４実施形態の間でのこれらの差異の詳細は後述する。
【０１２８】
以下、第２〜第４実施形態について、具体的に説明してゆく。
図１０は、第２実施形態における語句リスト生成処理のフローチャートである。
ステップＳ４０１において、形態素解析部１１５、文書語句抽出部１１６、語句リスト生成部１１７ａが協働して、図４の語句リスト生成処理と類似の処理により文書集合１１２から語句を抽出する。ステップＳ４０１は図４の語句リスト生成処理と類似の処理だが、次の（ａ１）〜（ａ４）の点で図４の語句リスト生成処理とは異なる。
【０１２９】
（ａ１）第２実施形態では、ステップＳ４０１の結果として得られるデータは、語句リスト１３３ａそのものとしてではなく、語句リスト１３３ａを作るための暫定的なデータ（以下、「一次語句リスト」という）として使われる。したがって、図４に関する説明中の語句リスト１３３は、ステップＳ４０１の処理中では、一次語句リスト１２０ａに置き換えられる。
【０１３０】
（ａ２）図４に関する説明中の語句リスト生成部１１７は、ステップＳ４０１の処理中では、語句リスト生成部１１７ａに置き換えられる。
【０１３１】
（ａ３）一次語句リスト１２０ａの形式は、図５に示した第１実施形態の語句リスト１３３の形式とは異なる。すなわち、図１１に例示するように一次語句リスト１２０ａは、語句とＤＦ値（すなわち当該語句が出現する文書の数）を対応付けて記憶するデータである。図１１では、例えば、語句Ｔ１〜Ｔ５のＤＦ値がそれぞれ、２１、１８、１３、８、５であることが示されている。
【０１３２】
（ａ４）このような形式の一次語句リスト１２０ａを生成するために、第２実施形態では語句リスト生成部１１７ａとインデックス生成部１１８が協調して動作する。
具体的には、インデックス生成部１１８は、各語句Ｔｊに関するＩＤＦ（Ｔｊ）を算出するための準備として、語句Ｔｊが出現する文書の数であるＤＦ（Ｔｊ）を計数している。そこで、インデックス生成部１１８は、例えば語句リスト生成部１１７ａが図１１の一次語句リスト１２０ａに図４と同様にして各語句を登録し終わった後に、次のように動作してもよい。すなわち、インデックス生成部１１８は、ＤＦ（Ｔｊ）を計数した各語句Ｔｊについて、図１１の一次語句リスト１２０ａにおいて当該語句Ｔｊを検索キーにしてエントリを検索し、見つかったエントリのＤＦ値として、算出済みのＤＦ（Ｔｊ）の値を設定してもよい。
【０１３３】
または、実施形態によっては、インデックス生成部１１８は、語句リスト生成部１１７ａによる一次語句リスト１２０ａの生成と並行しながら、一次語句リスト１２０ａ中のＤＦ値を設定してもよい。
【０１３４】
例えば、語句リスト生成部１１７ａは、図４のステップＳ１０５で語句リストに新たな語句のエントリを追加する際には、当該エントリのＤＦ値を０に初期化する。そして、語句リスト生成部１１７ａが図４のステップＳ１０３〜Ｓ１０７を実行するのと並行して、インデックス生成部１１８は、現在処理中の文書中に出現する語句を、重なりを除いて、ＲＡＭなどに記憶していく。インデックス生成部１１８は、文書の最後の語句まで処理し終えたら、現在処理中の文書中に出現する各語句について、図１１の一次語句リスト１２０ａ中の当該語句のエントリにおけるＤＦ値を、１だけインクリメントする。
【０１３５】
さて、上記のようにしてステップＳ４０１で一次語句リスト１２０ａが作成されると、次のステップＳ４０２で語句リスト生成部１１７ａは、語句優先度処理として、ＤＦ値の降順に一次語句リスト１２０ａをソートする処理を行う。図１１の一次語句リスト１２０ａは、正確には、こうしてソートされた後の状態を示している。
【０１３６】
続くステップＳ４０３で語句リスト生成部１１７ａは、容量設定部１１９から容量設定値１２１の入力を受け、語句削減処理を行う。すなわち、語句リスト生成部１１７ａは、一次語句リスト１２０ａの容量が容量設定値１２１以下になるまで、ＤＦ値が高い順に一次語句リスト１２０ａからエントリを削除していく。語句削減処理の結果得られたデータが、第２実施形態における語句リスト１３３ａである。語句リスト１３３ａが得られると図１０の語句リスト生成処理も終了する。
【０１３７】
図１２は、第２実施形態の語句リストの例を説明する図である。図１１と図１２の例は、ＤＦ値が２番目に高い語句Ｔ２のエントリまでを削除したところで語句リスト１３３ａが容量設定値１２１以下の容量になった例を示している。
【０１３８】
なお、第２実施形態についての理解の助けとするために、図１２にはＤＦ値も示してあるが、携帯電話１３０は検索時にＤＦ値そのものは利用しないので、語句リスト１３３ａはＤＦ値のフィールドを含まなくてよい。
【０１３９】
すなわち、図１０のステップＳ４０３において語句リスト生成部１１７ａは、語句のフィールドのみの容量を計算して容量設定値１２１以下になるまで一次語句リスト１２０ａから順次エントリを削除してもよい。そして、語句のフィールドのみの容量が容量設定値１２１以下になったら、語句リスト生成部１１７ａは、ＤＦ値のフィールドを一次語句リスト１２０ａから削除することで最終的な語句リスト１３３ａを得ることができる。
【０１４０】
第２実施形態によれば、文書集合１１２中に出現する語句の中で相対的にＤＦ値の高い語句（換言すればＩＤＦの値が小さい語句）は一次語句リスト１２０ａから削除され、語句リスト１３３ａに含まれない。つまり、文書集合１１２に現れる語句のうち、ありふれていて文書の特徴にはなり難い語句から順に、一次語句リスト１２０ａから削除される。
【０１４１】
したがって、語句リスト１３３ａは、容量設定値１２１による制限のもとで、文書の特徴づけに役立つ度合の高い重要な語句（換言すれば、相対的にＤＦ値の低い語句）を効率的に登録したデータである。容量設定値１２１は携帯電話１３０の記憶部１３１の容量に応じて適宜定めることができるので、第２実施形態によれば、サーバ１１０は、検索に有効な語句を、記憶部１３１の容量に合わせて効率的に、語句リスト１３３ａとして生成することができる。
【０１４２】
続いて、図１３〜１５を参照して第３実施形態について説明する。
図１３は、第３実施形態における語句リスト生成処理のフローチャートである。
ステップＳ５０１において、形態素解析部１１５、文書語句抽出部１１６、語句リスト生成部１１７ａが協働して、図４の語句リスト生成処理と類似の処理により文書集合１１２から語句を抽出する。ステップＳ５０１は図４の語句リスト生成処理と類似の処理だが、次の（ｂ１）〜（ｂ４）の点で図４の語句リスト生成処理とは異なる。
【０１４３】
（ｂ１）第３実施形態では、ステップＳ５０１の結果として得られるデータは、語句リスト１３３ｂそのものとしてではなく、語句リスト１３３ｂを作るための一次語句リスト１２０ｂとして使われる。したがって、図４に関する説明中の語句リスト１３３は、ステップＳ５０１の処理中では、一次語句リスト１２０ｂに置き換えられる。
【０１４４】
（ｂ２）図４に関する説明中の語句リスト生成部１１７は、ステップＳ５０１の処理中では、語句リスト生成部１１７ａに置き換えられる。
【０１４５】
（ｂ３）一次語句リスト１２０ｂの形式は、図５に示した第１実施形態の語句リスト１３３の形式とは異なる。すなわち、図１４に例示するように一次語句リスト１２０ｂは、語句と当該語句の文字列長を対応付けて記憶するデータである。図１４では、例えば、語句Ｔ１〜Ｔ５の文字列長が、それぞれ１３、１２、１０、５、３であることが示されている。
【０１４６】
（ｂ４）このような形式の一次語句リスト１２０ｂを生成するために、第３実施形態では図４のステップＳ１０５が次のように変形される。すなわち、語句リスト生成部１１７ａは、ステップＳ１０５で、未登録の語句の文字列長を求め、当該語句と求めた文字列長とを対応付けて一次語句リスト１２０ｂに登録する。
【０１４７】
さて、上記のようにしてステップＳ５０１で一次語句リスト１２０ｂが作成されると、次のステップＳ５０２で語句リスト生成部１１７ａは、語句優先度処理として、文字列長の降順に一次語句リスト１２０ｂをソートする処理を行う。図１４の一次語句リスト１２０ｂは、正確には、こうしてソートされた後の状態を示している。
【０１４８】
続くステップＳ５０３で語句リスト生成部１１７ａは、容量設定部１１９から容量設定値１２１の入力を受け、語句削減処理を行う。すなわち、語句リスト生成部１１７ａは、一次語句リスト１２０ａの容量が容量設定値１２１以下になるまで、文字列長が長い順に一次語句リスト１２０ｂからエントリを削除していく。語句削減処理の結果得られたデータが、第３実施形態における語句リスト１３３ｂである。語句リスト１３３ｂが得られると図１３の語句リスト生成処理も終了する。
【０１４９】
図１５は、第３実施形態の語句リストの例を説明する図である。図１４と図１５の例は、文字列長が２番目に長い語句Ｔ２のエントリまでを削除したところで語句リスト１３３ｂが容量設定値１２１以下の容量になった例を示している。
【０１５０】
なお、第３実施形態についての理解の助けとするために、図１５には文字列長も示してあるが、携帯電話１３０は検索時に文字列長を利用しないので、語句リスト１３３ｂは文字列長のフィールドを含まなくてよい。
【０１５１】
すなわち、図１３のステップＳ５０３において語句リスト生成部１１７ａは、語句のフィールドのみの容量を計算して容量設定値１２１以下になるまで一次語句リスト１２０ｂから順次エントリを削除してもよい。そして、語句のフィールドのみの容量が容量設定値１２１以下になったら、語句リスト生成部１１７ａは、文字列長のフィールドを一次語句リスト１２０ｂから削除することで最終的な語句リスト１３３ｂを得ることができる。
【０１５２】
第３実施形態では、容量設定値１２１以下になるまで一次語句リスト１２０ｂから何らかの順でエントリを順次削除していく場合に、最終的に残るエントリの数をなるべく多くする方法で削除が行われる。すなわち、単純化した例を用いて説明すれば、１０文字の語句を１つ記憶するよりも２文字の語句を５つ記憶する方が、語句リスト１３３ｂは同じ容量設定値１２１の範囲内でより多くの語句を記憶することができるということである。したがって、第３実施形態によれば、同じ容量設定値１２１の範囲内で、携帯電話１３０が、なるべく多様な検索キーワードに対処することができる。
【０１５３】
もちろん、語句リスト１３３ｂを実装するデータ構造の違いによって、必ずしも１つの語句の文字列長は、語句リスト１３３ｂ中で当該語句のために使われる容量に厳密に比例するとは限らない。しかし、語句の文字列長が長いほど、当該語句のために使われる容量も多くなることに変わりはないので、上記の議論は同様に成り立つ。つまり、第３実施形態によれば、語句リスト１３３ｂを実装するデータ構造の違いによらず、同じ容量設定値１２１の範囲内で、より多くのエントリを語句リスト１３３ｂに残すことができる。
【０１５４】
続いて、図１６〜１９を参照して第４実施形態について説明する。
図１６は、第４実施形態における語句リスト生成処理のフローチャートである。
ステップＳ６０１において、形態素解析部１１５、文書語句抽出部１１６、語句リスト生成部１１７ａが協働して、図４の語句リスト生成処理と類似の処理により文書集合１１２から語句を抽出する。ステップＳ６０１は図４の語句リスト生成処理と類似の処理だが、次の（ｃ１）〜（ｃ４）の点で図４の語句リスト生成処理とは異なる。
【０１５５】
（ｃ１）第４実施形態では、ステップＳ６０１の結果として得られるデータは、語句リスト１３３ｃそのものとしてではなく、語句リスト１３３ｃを作るための一次語句リスト１２０ｃとして使われる。したがって、図４に関する説明中の語句リスト１３３は、ステップＳ６０１の処理中では、一次語句リスト１２０ｃに置き換えられる。
【０１５６】
（ｃ２）図４に関する説明中の語句リスト生成部１１７は、ステップＳ６０１の処理中では、語句リスト生成部１１７ａに置き換えられる。
【０１５７】
（ｃ３）一次語句リスト１２０ｃの形式は、図５に示した第１実施形態の語句リスト１３３の形式とは異なる。すなわち、図１７に例示するように一次語句リスト１２０ｃは、語句と当該語句の品詞を対応付けて記憶するデータである。図１７では、例えば、語句Ｔ１〜Ｔ５の品詞が、それぞれ名詞、形容詞、接続詞、動詞、助動詞であることが示されている。
【０１５８】
（ｃ４）このような形式の一次語句リスト１２０ｃを生成するために、第４実施形態では図４のステップＳ１０２〜Ｓ１０７が次のように変形される。
すなわち、ステップＳ１０２において文書語句抽出部１１６は、形態素解析部１１５による形態素解析の結果から語句と当該語句の品詞の組を得て語句リスト生成部１１７ａに出力するとともに、語句のみを抽出してインデックス生成部１１８に出力する。また、図４のステップＳ１０３〜Ｓ１０７に関する説明中の「語句」は、第４実施形態では「語句と品詞の組」に置き換えられる。すなわち、第４実施形態では、同形異品詞の語句は別のエントリとして一次語句リスト１２０ｃに登録される。
【０１５９】
さて、上記のようにしてステップＳ６０１で一次語句リスト１２０ｃが作成されると、次のステップＳ６０２で語句リスト生成部１１７ａは、語句優先度処理として、品詞優先度情報１２２により規定される優先度の順に一次語句リスト１２０ｃをソートする処理を行う。品詞優先度情報１２２は、図９では省略されているが、例えば記憶部１１１に格納されている。
【０１６０】
図１８は、第４実施形態で使われる品詞優先度情報の例を説明する図である。品詞優先度情報１２２は、優先度と品詞を対応付けて記憶するデータである。例えば、図１８の例では、１〜６という数値で表された優先度に、それぞれ名詞、動詞、形容詞、副詞、接続詞、助動詞が対応付けられている。なお、品詞優先度情報１２２の品詞のフィールドに指定されるのは、辞書１１３が利用する品詞体系で使われる品詞である。
【０１６１】
なお、第４実施形態では数値が小さいほど優先度が高い。また、図１８に例示するように、内容語の優先度を相対的に高くし、機能語の優先度を相対的に低くすることが好ましい。なぜなら、内容語は文書の特徴を表しやすく、機能語は文書の特徴を表しにくいことが経験的に分かっているからである。もちろん、実施形態に応じて、優先度は任意に設定可能である。
【０１６２】
さて、図１６の説明に戻ると、続くステップＳ６０３で語句リスト生成部１１７ａは、容量設定部１１９から容量設定値１２１の入力を受け、語句削減処理を行う。すなわち、語句リスト生成部１１７ａは、一次語句リスト１２０ｃの容量が容量設定値１２１以下になるまで、品詞優先度情報１２２で規定される優先度が低いものから順に、一次語句リスト１２０ｃからエントリを削除していく。語句削減処理の結果得られたデータが、第４実施形態における語句リスト１３３ｃである。語句リスト１３３ｃが得られると図１６の語句リスト生成処理も終了する。
【０１６３】
図１９は、第４実施形態の語句リストの例を説明する図である。例えば、語句Ｔ１は、図１８の品詞優先度情報１２２によれば１番優先度の高い名詞であるから語句リスト１３３ｃに残っている。同様に、動詞である語句Ｔ４と形容詞である語句Ｔ２も語句リスト１３３ｃに残っている。しかし、例えば、優先度が低い助動詞である語句Ｔ５は、一次語句リスト１２０ｃから削除され、語句リスト１３３ｃには含まれない。
【０１６４】
なお、第４実施形態についての理解の助けとするために、図１９には品詞も示してあるが、携帯電話１３０は検索時に品詞を利用しないので、語句リスト１３３ｃは品詞のフィールドを含まなくてよい。
【０１６５】
すなわち、図１６のステップＳ６０３において語句リスト生成部１１７ａは、語句のフィールドのみの容量を計算して容量設定値１２１以下になるまで一次語句リスト１２０ｃから順次エントリを削除してもよい。そして、語句のフィールドのみの容量が容量設定値１２１以下になったら、語句リスト生成部１１７ａは、品詞のフィールドを一次語句リスト１２０ｃから削除することで最終的な語句リスト１３３ｃを得ることができる。
【０１６６】
第４実施形態では、適切に設定された品詞優先度情報１２２を利用することで、文書の特徴を表しにくい語句を一次語句リスト１２０ｃから取り除くことが可能となる。換言すれば、第４実施形態では、検索にとってより有用な品詞の語句を効率的に語句リスト１３３ｃに登録することが可能となる。したがって、第４実施形態は、携帯電話１３０における検索精度の向上という効果を奏する。
【０１６７】
なお、以上説明した第２〜第４実施形態に関して、一次語句リスト１２０ａ〜１２０ｃおよび語句リスト１３３ａ〜１３３ｃを実装する具体的なデータ構造は任意である。
続いて、図２０〜２１を参照して第５実施形態について説明する。第５実施形態では、第１実施形態に関して図７を参照して説明したクエリ語句抽出処理が高速化され、具体的には図２１のように変形される。そのため、第５実施形態では、図５の語句リスト１３３の代わりに図２０の語句リスト１３３ｄが利用される。
【０１６８】
図２０は、第５実施形態の語句リストの例を説明する図である。第５実施形態における語句リスト１３３ｄは、文書集合１１２から抽出された語句の集合を示すだけでなく、文書集合１１２から抽出された語句の文字列長の集合を示すデータである。なお、以下では説明の便宜上、文書集合１１２からは語句Ｔ１〜Ｔ１３のみが抽出されたものとする。
【０１６９】
語句リスト１３３ｄを実装するデータ構造は任意だが、図２０では、第５実施形態の理解を助けるために語句と当該語句の文字列長を対応付けたエントリを含むテーブル形式で語句リスト１３３ｄを示している。
【０１７０】
図２０の例では、語句リスト１３３ｄが、語句Ｔ１〜Ｔ１３に対応するエントリを含む。そして、語句Ｔ１〜Ｔ３の文字列長は２、語句Ｔ４〜Ｔ５の文字列長は３、語句Ｔ６〜Ｔ９の文字列長は５、語句Ｔ１０の文字列長は７、語句Ｔ１１〜Ｔ１２の文字列長は８、語句Ｔ１３の文字列長は１０である。また、図２０に示すように、語句リスト１３３ｄは文字列長の昇順にソートされている。
【０１７１】
しかし、上記のとおり、語句リスト１３３ｄを実装するデータ構造は任意である。例えば、図２０と逆順に語句リスト１３３ｄがソートされていてもよいし、テーブル以外のデータ構造が利用されてもよい。
【０１７２】
例えば、語句リスト１３３ｄは、１つのテキストファイルとして実装され、テキストファイルの１行につき図２０の１つのエントリが記録されていてもよい。
あるいは、語句リスト１３３ｄを実装するデータ構造によっては、図２０のように個々の語句がそれぞれ文字列長と対応付けられていなくてもよい。例えば、語句リスト１３３ｄは、文字列長ごとに分けられた複数のテキストファイルと、文書集合１１２から抽出された語句の文字列長の集合を示す別のファイルにより実装されてもよい。つまり、語句リスト１３３ｄは以下の（ｄ１）〜（ｄ７）のファイル群によって実装されてもよい。
【０１７３】
（ｄ１）語句Ｔ１〜Ｔ３を含み、文字列長２に対応するテキストファイル
（ｄ２）語句Ｔ４〜Ｔ５を含み、文字列長３に対応するテキストファイル
（ｄ３）語句Ｔ６〜Ｔ９を含み、文字列長５に対応するテキストファイル
（ｄ４）語句Ｔ１０を含み、文字列長７に対応するテキストファイル
（ｄ５）語句Ｔ１１〜Ｔ１２を含み、文字列長８に対応するテキストファイル
（ｄ６）語句Ｔ１３を含み、文字列長１０に対応するテキストファイル
（ｄ７）文書集合１１２から抽出された語句の文字列長の集合が｛２，３，５，７，８，１０｝であることを示すファイル
あるいは、語句リスト１３３ｄは、上記（ｄ７）のファイルと以下の（ｄ８）のファイルにより実装されてもよい。
（ｄ８）文書集合１１２から抽出された語句の集合｛Ｔ１，……，Ｔ１３｝を、ハッシュテーブル、平衡２分探索木、トライ、パトリシア木などの適宜のデータ構造で表すためのファイル（例えば、これらのデータ構造がＲＡＭ上に展開されるときのメモリイメージをダンプしたバイナリファイルや、データ構造をシリアル化して出力したテキストファイルなど）
【０１７４】
また、語句リスト１３３ｄは、文字列長を明示するデータを持たなくても、文書集合１１２から抽出された語句の文字列長の集合を暗黙的に示すことができる。例えば、語句が文字列長の昇順にソートされて区切り文字で区切られて並べられたテキストファイルは、文字列長の集合を暗黙的に示す。
【０１７５】
つまり、このテキストファイルを先頭から順に部分文字列処理部１３６が読み込んだとき、部分文字列処理部１３６は、語句Ｔ１から文字列長２を得ることができ、隣り合う語句Ｔ３とＴ４の間で文字列長が変化することから次の文字列長３を得ることもできる。以下同様にして部分文字列処理部１３６は、文書集合１１２から抽出された語句の文字列長としては５、７、８、１０があることを認識することができる。
【０１７６】
以上のように、語句リスト１３３ｄを実装するデータ構造やファイル構成は任意であるが、いずれにしろ、語句リスト１３３ｄは、文書集合１１２から抽出された語句の集合と、文書集合１１２から抽出された語句の文字列長の集合を表すデータである。換言すれば、語句リスト１３３ｄは、出現形態素集合に含まれる各形態素に当該形態素の文字列長を関連付けるデータである。このような語句リスト１３３ｄを生成するために、第５実施形態では、第１実施形態に関して図４を参照して説明したステップＳ１０５が次のように変形される。
【０１７７】
すなわち、ステップＳ１０５で語句リスト生成部１１７は、生成途中の語句リスト１３３ｄに未登録の語句を追加するだけでなく、当該語句の文字列長を求め、求めた文字列長の情報も語句リスト１３３ｄの一部として記録する。
【０１７８】
例えば、図２０のようなテーブル形式で語句リスト１３３ｄが実現される場合は、語句リスト生成部１１７は、未登録の語句を文字列長と対応付けたエントリをテーブルに追加することで、文字列長の情報を語句リスト１３３ｄの一部として記録する。あるいは、語句リスト生成部１１７は、求めた文字列長が上記（ｄ７）のファイルに登録済みか否かを調べ、未登録であれば、求めた文字列長を（ｄ７）のファイルに追加することで、文字列長の情報を語句リスト１３３ｄの一部として記録してもよい。
【０１７９】
また、語句リスト１３３ｄの実装に応じて（例えば、図２０のようなテーブル形式で語句リスト１３３ｄが実現される場合などに）語句リスト生成部１１７は、図４の処理の終了後、文字列長の降順に語句リスト１３３ｄをソートしてもよい。
【０１８０】
図２１は、第５実施形態におけるクエリ語句抽出処理のフローチャートである。
ステップＳ７０１で部分文字列処理部１３６は、入力部１３５から検索クエリを取得する。
【０１８１】
次のステップＳ７０２で部分文字列処理部１３６は、語句リスト１３３ｄを参照し、最初の切り出し文字数を取得する。例えば、図２０の例では、最初の切り出し文字数は２である。
【０１８２】
続いて、ステップＳ７０３で部分文字列処理部１３６は、切り出し位置を検索クエリの１番目の文字に設定する。
そして、ステップＳ７０４で部分文字列処理部１３６は、ステップＳ７０３（または後述のステップＳ７０９）で設定した切り出し位置から、ステップＳ７０２（または後述のステップＳ７１１）で取得した切り出し文字数の分だけ文字列を切り出して取得する。そして、部分文字列処理部１３６は、切り出した文字列を語句一致判定部１３７に出力する。
【０１８３】
続くステップＳ７０５で語句一致判定部１３７は、語句リスト１３３ｄを参照し、ステップＳ７０２（または後述のステップＳ７１１）で取得した切り出し文字数と同じ長さの語句が含まれる範囲を探索範囲として取得する。例えば、切り出し文字数が２のとき、図２０の語句リスト１３３ｄの１つ目から３つ目のエントリの範囲を、語句一致判定部１３７は探索範囲として取得する。
【０１８４】
そして、ステップＳ７０６で語句一致判定部１３７は、部分文字列処理部１３６がステップＳ７０４で切り出した文字列と、探索範囲の語句リスト１３３ｄ内の語句が一致するか否かを判断する。すなわち、語句一致判定部１３７は、ステップＳ７０４で切り出された文字列を検索キーとして、ステップＳ７０５で取得した探索範囲に範囲を絞って語句リスト１３３を検索する。そして、語句一致判定部１３７は、切り出された文字列と完全に一致する語句が探索範囲内にあるか否かを判断し、判断結果をクエリ語句抽出部１３８に通知する。
【０１８５】
もし、切り出された文字列と一致する語句が探索範囲内で見つかれば、処理はステップＳ７０７に移行する。逆に、切り出された文字列と一致する語句が探索範囲内になければ、処理はステップＳ７０８に移行する。
【０１８６】
ステップＳ７０７でクエリ語句抽出部１３８は、語句一致判定部１３７からの通知にしたがい、探索範囲内において一致する語句があると判断された文字列をクエリ語句として抽出する。
【０１８７】
ステップＳ７０８で部分文字列処理部１３６は、ステップＳ７０４で切り出した文字列の末尾が検索クエリの末尾であるか否かを判断する。切り出した文字列の末尾が検索クエリの末尾のとき、現在の切り出し文字数での切り出し方は既に網羅されたということなので、処理はステップＳ７１０に移行する。逆に、切り出した文字列の末尾が検索クエリの末尾ではないとき、現在の切り出し文字数での切り出し方はまだ網羅されていないので、処理はステップＳ７０９に移行する。
【０１８８】
ステップＳ７０９で部分文字列処理部１３６は、切り出し位置を１文字後方へ移動する。そして、処理はステップＳ７０４に戻る。
また、ステップＳ７１０で部分文字列処理部１３６は、現在の切り出し文字数が語句リスト１３３ｄに登録されている語句の文字列長の最大値と等しいか否かを判断する。例えば、図２０の例では、語句リスト１３３ｄに登録されている語句の文字列長の最大値は１０である。
【０１８９】
現在の切り出し文字数が語句リスト１３３ｄに登録されている語句の文字列長の最大値と等しいとき、文書集合１１２から抽出された語句に一致する可能性のある文字列の切り出し方は既に網羅されたということなので、図２１のクエリ語句抽出処理は終了する。他方、現在の切り出し文字数が語句リスト１３３ｄに登録されている語句の文字列長の最大値より小さいとき、他の切り出し方を試すため、処理はステップＳ７１１に移行する。
【０１９０】
ステップＳ７１１で部分文字列処理部１３６は、語句リスト１３３ｄを参照し、次の切り出し文字数を取得する。例えば、現在の切り出し文字数が３の場合、部分文字列処理部１３６は、図２０の語句リスト１３３ｄを参照して、３の次の文字列長である５を切り出し文字数として取得する。そして、処理はステップＳ７０３に戻る。
【０１９１】
第５実施形態によれば、携帯電話１３０において以上のようにしてクエリ語句抽出処理が行われるため、「文書集合１１２から抽出された語句と一致する可能性がまったくない」ということが明らかな切り出し方での部分文字列の切り出しは省略される。
【０１９２】
例えば、図２０の語句リスト１３３ｄは、文字列長が４、６および９の語句が文書集合１１２からは抽出されなかったことを示している。よって、切り出し文字数として４、６または９を設定したとしても、検索クエリから切り出される文字列が語句リスト１３３ｄ中の語句と一致する可能性はまったくない。そのため、第５実施形態ではこのような無駄な文字列の切り出しを省略して処理量を削減することで、クエリ語句抽出処理の高速化を実現している。
【０１９３】
なお、図２１のクエリ語句抽出処理は、適宜変形可能である。例えば、ステップＳ７０５は、ステップＳ７０２またはステップＳ７１１の実行後、かつステップＳ７０３の実行前に行ってもよい。また、語句リスト１３３ｄを実装するデータ構造によっては、ステップＳ７０５は省略することもできる。
【０１９４】
例えば、語句リスト１３３ｄが、語句のみを管理するハッシュテーブルと、語句の文字列長の集合を管理する上記（ｄ７）のファイルにより実現される場合、ステップＳ７０５は省略可能である。そして、この場合において語句一致判定部１３７は、ステップＳ７０６で、探索範囲について何ら考慮することなく、単に切り出された文字のハッシュ値を算出してハッシュテーブルを検索すればよい。
【０１９５】
また、図２０のように文字列長によってソートされたテーブルにより語句リスト１３３ｄが実装されている場合、例えば、ステップＳ７０５で語句一致判定部１３７は、探索範囲の開始位置のみを取得してもよい。その場合、語句一致判定部１３７はステップＳ７０６で、取得した開始位置から順に語句リスト１３３ｄのエントリを、エントリ内の語句と切り出された文字列が一致するか、またはエントリ内の語句と切り出された文字列の長さが不一致になるまで、調べていく。切り出された文字列と一致する語句が見つかる前に、エントリ内の語句と切り出された文字列の長さが不一致になるか語句リスト１３３ｄの末尾に達した場合は、語句一致判定部１３７は、切り出された文字列に一致する語句がないと判断することができる。
【０１９６】
いずれにせよ、第５実施形態またはその変形例によれば、明らかに無効な切り出し方による無駄な探索が防止されるので、処理が高速化される。
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１９７】
文書集合１１２の内容（すなわち文書集合１３２の内容）は、実施形態に応じて任意であり、マニュアル類でなくてもよい。
また、上記の説明においてはサーバ１１０による前処理と携帯電話１３０による検索の例を示したが、サーバ１１０と携帯電話１３０の各々は、図２に示すような任意の情報処理装置２００に置き換え可能である。例えば、録画機器などの各種情報家電製品や、音楽プレーヤ、ゲーム機、通信端末などを含む各種携帯端末機は、図２の情報処理装置２００の一種であるから、携帯電話１３０の代わりとして上記実施形態の適用対象となりうる。
【０１９８】
また、上記実施形態に関しては、ベクトル検索の具体例として、ベクトルの各要素の算出にＴＦ・ＩＤＦ法を用いる場合を例示した。しかし、インデックス生成部１１８とベクトル化処理部１３９は、実施形態に応じて、形態素解析を利用した検索のためのその他の任意のアルゴリズムにより、ベクトルの各要素を算出してもよい。
【０１９９】
そして、上記の各実施形態の説明でもいくつか例示したが、語句リスト１３３（１３３ａ〜１３３ｄを含む）、インデックス１３４、品詞優先度情報１２２など各種情報の形式や構造は任意であり、各図に示したようなテーブル形式には限定されない。
【０２００】
上記の第２〜第４実施形態は、容量設定値１２１によって語句リスト１３３の容量を制限する点で共通しているが、上記の第２〜第４実施形態は組み合わせ可能である。
例えば、語句リスト生成部１１７ａは、一次語句リストに含まれる各語句について、ＤＦ値と文字列長と品詞に基づく点数を算出してもよい。そして、語句リスト生成部１１７ａは、点数順に、容量設定値１２１以下になるまで、一次語句リストから語句を削除することで、最終的な語句リストを得てもよい。
【０２０１】
すなわち、第２〜第４実施形態およびそれらを任意に組み合わせた実施形態においては、所定の評価基準による評価のための評価用情報が、出現形態素集合に含まれる各形態素に対応付けられ、評価用情報に基づいて評価の低い方から形態素が削除される。評価用情報は、第２実施形態のようにＤＦ値を用いたものでもよいし、第３実施形態のように文字列長を用いたものでもよいし、第４実施形態のように品詞を含んでいてもよい。
【０２０２】
例えば、語句リスト生成部１１７ａは、ＤＦ値が大きいほど点数の値が大きく、かつ、文字列長が長いほど点数の値が大きく、かつ、品詞の優先度が低いほど点数の値が大きくなるように定義された点数を評価用情報として利用してもよい。具体的には、ＤＦ値と文字列長と品詞の優先度の重み付け和などが利用可能である。
【０２０３】
もちろん、第２〜第４実施形態の組み合わせに限らず、上記の各種実施形態およびその変形例は、適宜組み合わせ可能である。また、語句リスト生成部１１７ａは、予め決められたストップワードを一次語句リストから削除し、その後で第２〜第４実施形態のいずれか（またはその組み合わせ）による語句削減処理を行ってもよい。
【０２０４】
上記のいずれの実施形態においても、製造コストや製品サイズなどの種々の制約のために形態素解析用の大規模な辞書を格納することが不可能（あるいは困難）な情報処理装置が、自然言語による検索クエリを擬似的に形態素解析することが可能となる。したがって、情報処理装置のコンピューティングリソースが比較的貧弱であっても、静的な文書集合に対しては自然言語による検索が可能となる。
【０２０５】
また、上記各種実施形態には、検索のために通信を必要としないという利点もある。この利点は、検索のために通信を行う次のような比較例と比べると明らかである。
すなわち、比較例として、携帯電話などの情報処理装置に検索クエリが入力されるたびに、当該情報処理装置が検索クエリをサーバなどの外部の情報処理装置に送信し、外部の情報処理装置が形態素解析を行って解析結果を返信することも考えられる。
【０２０６】
しかし、この比較例は検索のために通信が必要であり、換言すれば、次の（ｅ１）〜（ｅ３）のような欠点を有する。
【０２０７】
（ｅ１）この比較例は、携帯電話のようにネットワークを介して外部の情報処理装置にアクセスする通信機能を備えた情報処理装置にしか適用することができない。
【０２０８】
（ｅ２）この比較例では、検索のたびに通信コスト（通信費用という意味とネットワークリソースの消費という意味を含む）と通信時間がかかってしまう。
【０２０９】
（ｅ３）この比較例では、任意の時点で生じうる検索に対応するために、サーバなどの外部の情報処理装置を常時稼働させることが求められる。
【０２１０】
他方、上記の各種実施形態は、検索のために通信を必要としないので、検索クエリが入力される情報処理装置が通信機能を備えていなくても適用可能であるし、通信コストや通信時間もかからないし、外部の情報処理装置を常時稼働させる運用コストもかからない。したがって、上記の各種実施形態は比較例と比べて優れている。
【符号の説明】
【０２１１】
１００、１００ａ  文書検索システム
１１０、１１０ａ  サーバ
１１１  記憶部
１１２  文書集合
１１３  辞書
１１４  接続表
１１５  形態素解析部
１１６  文書語句抽出部
１１７、１１７ａ  語句リスト生成部
１１８  インデックス生成部
１１９  容量設定部
１２０ａ〜１２０ｃ  一次語句リスト
１２１  容量設定値
１２２  品詞優先度情報
１３０  携帯電話
１３１  記憶部
１３２  文書集合
１３３、１３３ａ〜１３３ｄ  語句リスト
１３４  インデックス
１３５  入力部
１３６  部分文字列処理部
１３７  語句一致判定部
１３８  クエリ語句抽出部
１３９  ベクトル化処理部
１４０  類似度算出部
１４１  文書ソート部
１４２  表示部
１４３  文書選択部
１４４  ベクトル
２００  情報処理装置
２０１  入力装置
２０２  出力装置
２０３  記憶装置
２０４  ＣＰＵ
２０５  メモリ
２０６  バス
３０１  検索対象文書集合
３０２  辞書
３０３  形態素解析結果
３０４  検索クエリ
３０５  形態素解析結果
【図１】
0005418138.tif 000002
【図２】
0005418138.tif 000003
【図３】
0005418138.tif 000004
【図４】
0005418138.tif 000005
【図５】
0005418138.tif 000006
【図６】
0005418138.tif 000007
【図７】
0005418138.tif 000008
【図８】
0005418138.tif 000009
【図９】
0005418138.tif 000010
【図１０】
0005418138.tif 000011
【図１１】
0005418138.tif 000012
【図１２】
0005418138.tif 000013
【図１３】
0005418138.tif 000014
【図１４】
0005418138.tif 000015
【図１５】
0005418138.tif 000016
【図１６】
0005418138.tif 000017
【図１７】
0005418138.tif 000018
【図１８】
0005418138.tif 000019
【図１９】
0005418138.tif 000020
【図２０】
0005418138.tif 000021
【図２１】
0005418138.tif 000022