(57)【要約】【課題】検索精度を向上させる。【解決手段】本願に係る生成装置は、検索対象に含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する算出部と、前記算出部により算出された確率に基づいて、前記検索対象文字列から単語とする文字列を抽出する抽出部と、前記抽出部により抽出された単語に基づいて、前記検索対象のインデックスを生成する生成部とを有することを特徴とする。【選択図】図１
2018077806.tif 000002
【特許請求の範囲】
【請求項１】
検索対象に含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する算出部と、
前記算出部により算出された確率に基づいて、前記検索対象文字列から単語とする文字列を抽出する抽出部と、
前記抽出部により抽出された文字列に基づいて、前記検索対象のインデックスを生成する生成部と
を有することを特徴とする生成装置。
【請求項２】
前記算出部は、前記文字列を一文字ごとに分割する各境界が単語の区切りとなる確率を算出し、算出した確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する
ことを特徴とする請求項１に記載の生成装置。
【請求項３】
前記算出部は、前記文字列を分割する所定の文字又は空白ごとに、当該所定の文字又は空白が単語の区切りとなる確率を算出し、算出した確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する
ことを特徴とする請求項１に記載の生成装置。
【請求項４】
前記算出部は、前記検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、当該所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、当該所定の文字列が単語となる確率を算出する
ことを特徴とする請求項１〜３のうちいずれか１つに記載の生成装置。
【請求項５】
前記算出部は、前記検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、当該所定の文字列をさらに分割する境界が単語の区切りとなる確率を１から減算した値との総乗を、当該所定の文字列が単語となる確率として算出する
ことを特徴とする請求項４に記載の生成装置。
【請求項６】
前記抽出部は、前記算出部により算出された確率が所定の閾値よりも高い文字列を前記検索対象文字列から抽出する
ことを特徴とする請求項１〜５のうちいずれか１つに記載の生成装置。
【請求項７】
前記抽出部は、前記算出部により算出された確率が高い方から順に所定の数の文字列を前記検索対象文字列から抽出する
ことを特徴とする請求項１〜６のうちいずれか１つに記載の生成装置。
【請求項８】
前記生成部は、文字数がより多い文字列を優先的に用いて、前記インデックスを生成する
ことを特徴とする請求項１〜７のうちいずれか１つに記載の生成装置。
【請求項９】
前記算出部は、前記境界に挟まれる文字列であって、前記検索対象文字列から抽出可能な全ての文字列について、当該文字列が単語となる確率を算出する
ことを特徴とする請求項１〜８のうちいずれか１つに記載の生成装置。
【請求項１０】
前記算出部は、前記境界に挟まれる文字列であって、文字数が所定の閾値以下となる文字列が単語となる確率を算出する
ことを特徴とする請求項１〜９のうちいずれか１つに記載の生成装置。
【請求項１１】
前記生成部は、前記抽出部が抽出した文字列を前記検索対象のインデックスとする
ことを特徴とする請求項１〜１０のうちいずれか１つに記載の生成装置。
【請求項１２】
前記算出部は、単語の区切りとなる境界の特徴を学習したモデルを用いて、前記検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率を算出する
ことを特徴とする請求項１〜１１のうちいずれか１つに記載の生成装置。
【請求項１３】
前記生成部は、前記抽出部が抽出した文字列と、当該文字列に含まれる他の文字列とを前記検索対象のインデックスとする
ことを特徴とする請求項１〜１２のうちいずれか１つに記載の生成装置。
【請求項１４】
生成装置が実行する生成方法であって、
検索対象に含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する算出工程と、
前記算出工程により算出された確率に基づいて、前記検索対象文字列から単語とする文字列を抽出する抽出工程と、
前記抽出工程により抽出された単語に基づいて、前記検索対象のインデックスを生成する生成工程と
を含むことを特徴とする生成方法。
【請求項１５】
検索対象に含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する算出手順と、
前記算出手順により算出された確率に基づいて、前記検索対象文字列から単語とする文字列を抽出する抽出手順と、
前記抽出手順により抽出された単語に基づいて、前記検索対象のインデックスを生成する生成手順と
をコンピュータに実行させるための生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成装置、生成方法および生成プログラムに関する。
【背景技術】
【０００２】
従来、検索クエリに対応する情報を検索する検索技術が知られている。このような検索技術の一例として、検索対象となる文章に含まれる単語を単語分割により抽出し、抽出した単語を含むインデックスをあらかじめ作成しておくことで、検索クエリと対応する文章の検索を効率化する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２４３９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、検索精度が悪化する場合がある。
【０００５】
例えば、従来技術において、「東京都」という文字列を形態素解析した結果、「東京」と「都」という文字列が抽出された場合は、「東京」という検索クエリが入力された際に、文字列「東京都」を検索結果として出力することができる。しかしながら、従来技術において、「東京都」という文字列を形態素解析した結果、「東」と「京都」という文字列が抽出された場合は、「東京」という検索クエリが入力されたとしても、文字列「東京都」を検索結果として出力できない恐れがある。
【０００６】
本願は、上記に鑑みてなされたものであって、検索精度を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る生成装置は、検索対象に含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する算出部と、前記算出部により算出された確率に基づいて、前記検索対象文字列から単語とする文字列を抽出する抽出部と、前記抽出部により抽出された単語に基づいて、前記検索対象のインデックスを生成する生成部とを有することを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、検索精度を向上させることを目的とする。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る生成装置が実行する生成処理の一例を示す図である。
【図２】図２は、実施形態に係る生成装置の構成例を示す図である。
【図３】図３は、実施形態に係る検索対象コンテンツデータベースに登録される情報の一例を示す図である。
【図４】図４は、実施形態に係るインデックスデータベースに登録される情報の一例を示す図である。
【図５】図５は、実施形態にかかる生成装置が実行する生成処理の流れの一例を示すフローチャートである。
【図６】図６は、ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る生成装置、生成方法および生成プログラムを実施するための形態（以下、「実施形態」と記載する。）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法および生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
［実施形態］
〔１−１．生成装置の一例〕
まず、図１を用いて、生成装置が実行する生成処理の一例について説明する。図１は、実施形態に係る生成装置が実行する生成処理の一例を示す図である。図１では、生成装置１０は、インターネット等の所定のネットワークＮを介して、所定のコンテンツを管理するコンテンツサーバ１００や、端末装置２００と通信可能である。なお、生成装置１０は、ネットワークＮを介して、任意の数のコンテンツサーバ１００や端末装置２００と通信可能であってもよい。
【００１２】
端末装置２００は、利用者Ｕ０１が使用するスマートフォンやタブレット等のスマートデバイスであり、３Ｇ（3rd  Generation）やＬＴＥ（Long  Term  Evolution）等の無線通信網を介して、生成装置１０と通信を行うことができる携帯端末装置である。なお、端末装置２００は、スマートデバイスのみならず、デスクトップＰＣやノートＰＣ等の情報処理装置であってもよい。
【００１３】
コンテンツサーバ１００は、ウェブページ、ウィジェット、静止画像、動画像、ゲーム等といった各種のウェブコンテンツ（以下、「コンテンツ」と記載する。）を管理し、管理したコンテンツを端末装置２００等の任意の装置に配信する装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
【００１４】
生成装置１０は、コンテンツの検索に用いるインデックスの生成処理を実行する。例えば、生成装置１０は、コンテンツサーバ１００から検索対象となるコンテンツ、すなわち、検索対象コンテンツを取得すると、取得したコンテンツの内容を示すインデックスを生成し、コンテンツとインデックスとを対応付けて記憶する。そして、生成装置１０は、端末装置２００から検索クエリを受付けた場合は、検索クエリと対応するインデックスを特定し、特定したインデックスに対応付けられたコンテンツの所在を示すＵＲＬ（Uniform  Resource  Locator）やコンテンツのデータを端末装置２００へと配信する。
【００１５】
〔１−２．生成処理について〕
ここで、インデックスの生成手法として、形態素解析等の文字解析技術により、コンテンツに含まれる文章等のテキストから単語を抽出し、抽出した単語をインデックスとする手法が考えられる。しかしながら、このような手法では、テキストが示す意味とは異なる意味を有する単語をインデックスとする恐れがある。例えば、コンテンツに含まれるテキスト中に「東京都」という文字列が存在する場合に、「東京」という単語を抽出した場合には、適切なインデックスを生成できると予測されるが、「京都」という単語を抽出した場合には、適切なインデックスを生成することができない。例えば、「東京都」という文字列を含むコンテンツに対して「京都」という単語をインデックスとした場合は、利用者が「東京」という単語を検索クエリとして入力した際に、コンテンツが検索結果から除外される恐れがある。
【００１６】
また、「東京大学」という文字列は、「東京」と「大学」との複合語であるが、このような文字列をインデックスとする場合、「東京大学」をインデックスとするか、「東京」と「大学」とをインデックスとするかという単語の単位の曖昧さが存在する。このように、文字列のうちどの範囲を単語にするかという単語の単位の曖昧性に起因して、検索クエリとコンテンツに含まれるテキストとの間にトークナイズ揺れが生じる場合には、適切なインデックスを生成することができなくなる恐れがある。
【００１７】
そこで、生成装置１０は、以下の生成処理を実行する。まず、生成装置１０は、検索対象コンテンツに含まれる文字列（以下、「検索対象文字列」と記載する。）を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。そして、生成装置１０は、算出された確率に基づいて、検索対象文字列から単語とする文字列を抽出し、抽出された単語に基づいて、検索対象コンテンツのインデックスを生成する。
【００１８】
例えば、生成装置１０は、「東京都に住む」という文字列が存在する場合に、文字列を一文字ごとに分割する境界を設定し、各境界が単語の区切りとなる確率をそれぞれ算出する。そして、生成装置１０は、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出し、算出した確率が所定の閾値を超える文字列や、算出した確率が高い方から順に所定の数の文字列を抽出する。
【００１９】
例えば、「東京都に住む」という文字列を一文字ずつ分割する境界を設定した場合、「東京都に住む」という文字列からは、境界に挟まれる文字列として、「東」、「京」、「都」、「に」、「住」、「む」、「東京」、「京都」、「都に」、「に住」、「住む」、「東京都」、「京都に」、「都に住」、「に住む」、「東京都に」、「京都に住」、「都に住む」、「東京都に住」、「京都に住む」といった文字列が抽出される。なお、境界は、文字列の先頭と末尾とにも設定されるものとする。このような場合、生成装置１０は、抽出した各文字列を挟む境界、および、各文字列に含まれる境界が単語の区切りとなる確率に基づいて、各文字列が単語となる確率を算出する。すなわち、生成装置１０は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、所定の文字列が単語となる確率を算出する。
【００２０】
以下、「東京都に住む」という文字列のうち「東京都」という文字列が単語となる確率を算出する処理の一例について説明する。例えば、生成装置１０は、「東」と「京」とを分割する境界ｃ１、「京」と「都」とを分割する境界ｃ２、および「都」と「に」とを分割する境界ｃ３を特定する。そして、生成装置１０は、入力された文字列（処理対象となる文字列）ｘが存在する場合、特定した境界ｃ１が単語の区切りとなる確率Ｐ（ｃ１｜ｘ）、境界ｃ２が単語の区切りとなる確率Ｐ（ｃ２｜ｘ）、および境界ｃ３が単語の区切りとなる確率Ｐ（ｃ３｜ｘ）を算出する。なお、各境界が単語の区切りとなる確率を算出する処理の具体例については、後述する。
【００２１】
続いて、生成装置１０は、文字列「東京都」に含まれる境界、すなわち、境界ｃ１および境界ｃ２が単語の区切りとはならない確率を算出する。例えば、生成装置１０は、１からＰ（ｃ１｜ｘ）を減算した値を境界ｃ１が単語の区切りとならない確率とし、１からＰ（ｃ２｜ｘ）を減算した値を境界ｃ２が単語の区切りとならない確率とする。また、生成装置１０は、文字列「東京都に住む」の先頭に境界ｃ０を設定し、境界ｃ０が単語の区切りとなる確率として所定の値（例えば、「１」）を設定する。そして、生成装置１０は、文字列「東京都」が単語となる確率として、文字列「東京都」を挟む境界ｃ０及び境界Ｃ３が単語の区切りとなる確率と、境界ｃ１および境界ｃ２が単語の区切りとはならない確率との総乗を算出する。
【００２２】
また、生成装置１０は、「東京都に住む」という文字列から抽出可能な全ての文字列、すなわち、境界に挟まれた全ての文字列ついて、同様の処理を実行することで、各文字列が単語となる確率を算出する。そして、生成装置１０は、算出した確率が所定の条件を満たす文字列を単語として抽出する。
【００２３】
すなわち、生成装置１０は、検索対象文字列を分割する各境界が単語の区切りとなる確率に基づき、検索対象文字列から抽出可能な全ての文字列について、各文字列が単語となる確率をその文字列を挟む境界が単語の区切りとなる確率、および、その文字列を分割する境界が単語の区切りとなる確率から以下の式（１）を用いて算出する。なお、式（１）に示すＰ（ｗｉｊ、ｘ）とは、検索対象文字列のうちｉ番目の文字からｊ番目の文字までの文字列ｗｉｊが単語となる確率を示し、Ｐ（ｃｋ｜ｘ）とは、境界ｃｋが単語の区切りとなる確率を示す。
【００２４】
【数１】
2018077806.tif 000003
【００２５】
そして、生成装置１０は、単語となる確率が所定の条件を満たす文字列をインデックスとなる単語として登録する。この結果、生成装置１０は、検索対象文字列を分割してインデックスとなる単語を取得するのではなく、検索対象文字列に含まれる文字列のうち単語となる可能性が高い文字列を全て抽出する。この結果、生成装置１０は、インデックスの特定性を保持しつつ、インデックスの網羅性を向上させることができるので、検索精度を向上させることができる。
【００２６】
また、生成装置１０は、文字列を一文字ごとに分割する境界を設定し、抽出可能な文字列が単語となる確率を算出するので、例えば、いわゆる新語といった辞書に登録されていない単語をインデックスに含めることができる。
【００２７】
〔１−３．区切りについて〕
上述した例では、生成装置１０は、検索対象文字列を一文字ごとに分割する境界を設定した。このような処理を実行した場合には、生成装置１０は、日本語や中国語等、文字列に含まれる単語の区切りが曖昧な任意の言語について、単語となる可能性が高い文字列をインデックスとして抽出することができる。しかしながら、実施形態は、これに限定されるものではない。
【００２８】
例えば、英語、ドイツ語、フランス語、イタリア語等、単語となる文字列が空白や所定の文字によって分割される言語が存在する。しかしながら、このような言語においては、空白や所定の文字により分割されている複数の単語が一つの単語として機能する場合がある。例えば「New  York」という文字列は、「New」と「York」という２つの単語により構成される文字列であるが、「New  York」という文字列全体で一つの単語として機能する。他にも「ice  cream」や「United  States  Capitol」等といった単語も、複数の単語から構成されているものの、一つの単語として機能すると考えられる。このように、検索対象文字列中に、複数の単語から構成された一つの単語として機能する文字列が含まれる場合、構成要素となる単語をインデックスとするのではなく、一つの単語として機能する文字列全体をインデックスとした方が検索クエリとのトークナイズを揃えることができると考えられる。
【００２９】
そこで、生成装置１０は、文字列を分割する所定の文字又は空白ごとに、所定の文字又は空白が単語の区切りとなる確率を算出し、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出してもよい。例えば、生成装置１０は、検索対象文字列のうち「New  York」を挟む空白が単語の区切りとなる確率と、「New」と「York」とを分割する空白が単語の区切りとなる確率とに基づいて、「New  York」が単語となる確率を算出し、算出した確率が所定の閾値を超える場合は、「New  York」という文字列をインデックスとしてもよい。
【００３０】
なお、生成装置１０は、例えば、任意の数の文字ごとに検索対象文字列を分割する境界を設定してもよく、所定の条件に従って検索対象文字列を分割する境界を設定してもよい。例えば、生成装置１０は、漢字とひらがなとを分割する境界を設定してもよく、母音と子音とを分割する境界を設定してもよい。すなわち、生成装置１０は、検索対象文字列が属する言語の記述法に応じた任意の条件により、検索対象文字列を所定の単位ごとに分割する境界を設定するのであれば、任意の条件に従って、検索対象文字列を分割する境界を設定してよい。
【００３１】
〔１−４．抽出する文字列について〕
ここで、インデックスとなる文字列の文字数、すなわち、文字列の単位を小さくした場合には、検索処理における網羅性が増加するものの、検索処理における特定性が小さくなる。一方で、文字列の単位を大きくした場合は、検索処理に特定性が増加するものの、網羅性が減少してしまう。
【００３２】
そこで、生成装置１０は、所定の条件を満たす文字列のみをインデックスとして抽出してもよい。例えば、生成装置１０は、単語となる確率が所定の閾値よりも高い文字列のみをインデックスとして抽出してもよい。また、生成装置１０は、単語となる確率が高い方から順に所定の数の文字列をインデックスとして抽出してもよい。また、生成装置１０は、文字数がより多い文字列を優先的にインデックスとしてもよい。
【００３３】
また、例えば、生成装置１０は、文字列の文字数に応じた確率を算出してもよい。例えば、生成装置１０は、文字列の文字数が増加するほど、閾値の値をより小さい値に設定してもよい。また、生成装置１０は、文字数や単語となる確率に所定の重みづけを考慮したスコアを算出し、算出したスコアの値が所定の閾値を超える文字列や、スコアの値が所定の閾値を超える文字列をインデックスとして抽出してもよい。
【００３４】
また、生成装置１０は、文字数が所定の閾値以下となる文字列が単語となる確率を算出してもよい。すなわち、生成装置１０は、インデックスとして抽出する文字列に最大文字数の設定を行ってもよい。
【００３５】
〔１−５．インデックスについて〕
ここで、上述した生成装置１０は、抽出した文字列を検索対象コンテンツのインデックスとした。しかしながら、実施形態は、これに限定されるものではない。例えば、生成装置１０は、検索対象文字列からインデックスとして抽出した文字列から、形態素解析等の技術を用いて、さらに他の単語を抽出し、抽出した単語をインデックスに含めてもよい。すなわち、生成装置１０は、抽出した単語が複合語である場合は、かかる複合語を構成する単語をインデックスに含めてもよい。このような処理を実行することで、生成装置１０は、検索処理における網羅性を向上させることができる。
【００３６】
ここで、各境界が区切りとなる確率を検索対象文字列ごとに算出した場合、同一の文字列であってもその文字列が単語となる確率は、検索対象文字列ごとに異なる値となる。すなわち、検索対象文字列から抽出された文字列が単語となる確率は、その検索対象文字列と抽出された文字列との関連性を示す指標となりうる。そこで、生成装置１０は、インデックスとして抽出した文字列が単語となる確率を検索処理に用いてもよい。
【００３７】
例えば、生成装置１０は、インデックスとして、抽出した文字列とその文字列が単語となる確率またはスコアを対応付けて登録する。また、生成装置１０は、検索クエリを受付けた場合は、検索クエリと一致する文字列を含むインデックスを検索する。そして、生成装置１０は、検索クエリと一致する文字列の確率またはスコアに基づいて、検索したインデックスが対応付けられたコンテンツと検索クエリとの関連性を算出し、算出した関連性が高い方から順にコンテンツを並べた検索結果を配信する。このように、生成装置１０は、インデックスとして抽出した文字列が単語となる確率やスコアに応じて、インデックスと対応するコンテンツのリスティングを行ってもよい。
【００３８】
また、生成装置１０は、抽出した文字列そのものをインデックスとしなくともよい。例えば、生成装置１０は、ｗ２ｖ（word2vec）等の技術を用いて、抽出した文字列をベクトル表現に変換し、変換したベクトル表現をインデックスとしてもよい。このような場合、生成装置１０は、例えば、検索クエリのベクトル表現とコサイン類似度が所定の範囲内となるベクトル表現がインデックスに含まれるコンテンツを検索してもよい。
【００３９】
また、生成装置１０は、抽出した文字列が単語となる確率やスコアの値に基づいて、インデックスのベクトル表現を生成してもよい。例えば、生成装置１０は、ベクトル表現を構成する各次元の値として、各次元に対応する文字列が単語となる確率やスコアの値を設定してもよい。より具体的な例を挙げると、生成装置１０は、ある次元と対応する文字列が検索対象文字列に含まれているか否かを判定し、含まれている場合は、その文字列が単語となる確率やスコアをその次元の値とし、含まれていない場合は、その次元の値を「０」に設定すればよい。
【００４０】
〔１−６．検索対象文字列の分割について〕
ここで、生成装置１０は、コンテンツに含まれる全てのテキストを１つの検索対象文字列とする必要はない。例えば、生成装置１０は、コンテンツに含まれるテキストを句点により区切られた文章に分割する。また、生成装置１０は、文章ごとに上述した生成処理を実行することで、インデックスとなる単語を抽出する。そして、生成装置１０は、各文章から抽出した文字列を集約することで、コンテンツのインデックスを生成してもよい。ここで、生成装置１０は、各文章から抽出した各文字列が単語となる確率やスコアに基づいて、コンテンツのインデックスとする文字列を選択してもよい。
【００４１】
また、生成装置１０は、複数の文章毎に上述した生成処理を実行してもよく、読点により区切られた文章ごとに生成処理を実行してもよい。すなわち、生成装置１０は、コンテンツに含まれるテキストを任意の単位に分割し、分割したテキストを検索対象文字列として上述した生成処理を実行して良い。
【００４２】
〔１−７．確率の算出について〕
上述したように、生成装置１０は、検索対象文字列を任意の単位に分割する境界を設定し、設定した境界が単語の区切りとなる確率を算出する。ここで、生成装置１０は、任意の手法を用いて、境界が単語の区切りとなる確率を算出してよい。例えば、生成装置１０は、ＳＶＭ（Support  Vector  Machine）やロジスティック回帰、ｔｆ−ｉｄｆ（Term  Frequency-Inverse  Document  Frequency）、ｗ２ｖ、ディープラーニング等の技術等を用いて、境界が単語の区切りとなる確率を算出してよい。
【００４３】
例えば、生成装置１０は、正解データとなる所定の文章中において境界が単語の区切りとなる確度を学習したモデル、すなわち、単語の区切りとなる境界の特徴を学習したモデルをあらかじめ記憶する。そして、生成装置１０は、モデルを用いて、検索対象文字列を分割する境界が単語の区切りとなる確率を算出してよい。
【００４４】
また、例えば、生成装置１０は、辞書に登録された単語を考慮してもよい。例えば、生成装置１０は、単語となる確率の算出対象となる文字列が辞書に登録されている場合には、その文字列が単語となる確率に所定の値を加算してもよい。また、生成装置１０は、辞書に登録された単語を用いて、境界が単語の区切りとなる確率を算出するモデルの学習を行ってもよい。
【００４５】
〔１−８．生成装置が実行する処理の一例〕
次に、図１を用いて、生成装置１０が実行する処理の一例について説明する。まず、生成装置１０は、クロール処理等を実行することで、コンテンツサーバ１００から検索対象コンテンツを収集する（ステップＳ１）。例えば、図１に示す例では、生成装置１０は、文章＃１〜文章＃４を含む検索対象コンテンツＣ１０を収集する。なお、生成装置１０は、コンテンツサーバ１００が管理済みのコンテンツのみならず、例えば、ニュースフィードやマイクロブログに投稿された文章等、任意の利用者により投稿が行われた任意のコンテンツを収集してもよい。
【００４６】
このような場合、生成装置１０は、検索対象コンテンツに含まれる文章を所定の単位ごとに分割する全ての境界について、単語の区切りとなる確率を算出する（ステップＳ２）。例えば、生成装置１０は、文章＃１に含まれる「東京都に住む」という文字列を「東」、「京」、「都」、「に」、「住」、「む」というように一文字ずつに分割する境界ｃ１〜ｃ５を設定し、設定した各境界ｃ１〜ｃ５が単語の区切りとなる確率Ｐ（ｃ１｜ｘ）〜Ｐ（ｃ５｜ｘ）を算出する。例えば、図１に示す例では、生成装置１０は、「Ｐ（ｃ１｜ｘ）＝０．１」、「Ｐ（ｃ２｜ｘ）＝０．７」、「Ｐ（ｃ３｜ｘ）＝０．９」、「Ｐ（ｃ４｜ｘ）＝０．９」、および「Ｐ（ｃ５｜ｘ）＝０．４」を算出する。
【００４７】
また、例えば、生成装置１０は、文章＃４に含まれる「Living  in  New  York  with」という文字列を「Living」、「in」、「New」、「York」、「with」というように区切る空白を境界ｃ６〜ｃ９とし、設定した各境界ｃ６〜ｃ９が単語の区切りとなる確率Ｐ（ｃ６｜ｘ）〜Ｐ（ｃ９｜ｘ）を算出する。例えば、図１に示す例では、生成装置１０は、「Ｐ（ｃ６｜ｘ）＝０．９」、「Ｐ（ｃ７｜ｘ）＝０．９」、「Ｐ（ｃ８｜ｘ）＝０．２」、および「Ｐ（ｃ９｜ｘ）＝０．９」を算出する。
【００４８】
続いて、生成装置１０は、全ての境界の組み合わせについて、文字列を挟む前後の境界が区切りとなる確率と、文字列中の境界が区切りとはならない確率との積をスコアとして算出する（ステップＳ３）。すなわち、生成装置１０は、「東京都に住む」や「Living  in  New  York  with」といった文字列から抽出可能な全ての文字列について、上述した式（１）を用いて単語となる確率を算出する。
【００４９】
例えば、生成装置１０は、文字列「京都」を挟む境界ｃ１および境界ｃ３が区切りとなる確率と、文字列「京都」に含まれる境界ｃ２が区切りとはならない確率との積を、文字列「京都」が単語となる確率「Ｐ（京都，ｘ）」として算出する。より具体的には、生成装置１０は、境界ｃ１が区切りとなる確率「０．１」と、境界ｃ３が区切りとなる確率「０．９」と、境界ｃ２が区切りとはならない確率「１−０．７」との積を確率「Ｐ（京都、ｘ）」とする。また、生成装置１０は、文字列「東京」や、文字列「New」、文字列「New  York」についても同様に、単語となる確率をスコアとして算出する。
【００５０】
そして、生成装置１０は、スコアが所定の条件を満たす全ての文字列から、検索対象コンテンツのインデックスを生成する（ステップＳ４）。例えば、生成装置１０は、文字列「東京」、「東京都」、「住む」、「New  York」のスコアが文字数や単語数に応じた閾値を超える場合、文字列「東京」、「東京都」、「住む」、「New  York」を全て検索対象コンテンツＣ１０のインデックスとして登録する。
【００５１】
また、生成装置１０は、端末装置２００から検索クエリを受信する（ステップＳ５）。このような場合、生成装置１０は、検索クエリと一致する文字列や検索クエリとの関連性が高い文字列がインデックスに含まれる検索対象コンテンツをインデックスが検索クエリと対応する検索対象コンテンツとして検索する。そして、生成装置１０は、インデックスが検索クエリと対応する検索対象コンテンツを端末装置２００へと配信する。なお、生成装置１０は、検索対象コンテンツの所在を示すＵＲＬをまとめた検索結果を端末装置２００へ送信してもよい。
【００５２】
〔２．生成装置の構成〕
以下、上記した生成処理を実現する生成装置１０が有する機能構成の一例について説明する。図２は、実施形態に係る生成装置の構成例を示す図である。図２に示すように、生成装置１０は、通信部２０、記憶部３０、および制御部４０を有する。
【００５３】
通信部２０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部２０は、ネットワークＮと有線または無線で接続され、コンテンツサーバ１００や端末装置２００との間で情報の送受信を行う。
【００５４】
記憶部３０は、例えば、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部３０は、確率算出モデルデータベース３１、検索対象コンテンツデータベース３２、およびインデックスデータベース３３を記憶する。
【００５５】
確率算出モデルデータベース３１には、境界が単語の区切りとなる確率を算出するためのモデルが登録されている。例えば、確率算出モデルデータベース３１には、正解データにおいて単語の区切りとなる境界の特徴を学習したＳＶＭやＤＮＮ（Deep  Neural  Network）等のデータが登録されている。
【００５６】
検索対象コンテンツデータベース３２には、検索対象コンテンツと、検索対象コンテンツに含まれる検索対象文字列から抽出した単語に基づくインデックスが登録されている。例えば、図３は、実施形態に係る検索対象コンテンツデータベースに登録される情報の一例を示す図である。図３に示す例では、検索対象コンテンツデータベース３２には、「コンテンツＩＤ（Identifier）」、「テキストデータ」等といった項目を有する情報が登録されている。なお、検索対象コンテンツデータベース３２には、図３に示す情報以外にも、例えば、検索対象コンテンツ自体のデータや、検索対象コンテンツの所在を示すＵＲＬ等、任意の情報が登録されていてもよい。
【００５７】
ここで、「コンテンツＩＤ」とは、配信対象コンテンツの識別子である。また、「テキストデータ」とは、対応付けられたコンテンツＩＤが示す配信対象コンテンツに含まれる文章等の文字列、すなわち、検索対象文字列である。
【００５８】
例えば、図３に示す例では、コンテンツＩＤ「ＩＤ＃１」、テキストデータ「テキスト＃１−１、テキスト＃１−２、・・・」といった情報が対応付けて登録されている。このような情報は、コンテンツＩＤ「ＩＤ＃１」が示す検索対象コンテンツに、「テキスト＃１−１」や「テキスト＃１−２」等といった文字列を含む検索対象文字列が含まれている旨を示す。
【００５９】
なお、図３に示す例では、「テキスト＃１−１」等といった概念的な値を記載したが、実際には、検索対象コンテンツに含まれる検索対象文字列のデータや、検索対象文字列から単語として抽出された文字列のデータ等が登録される。
【００６０】
インデックスデータベース３３には、配信対象コンテンツの検索に用いる情報であり、検索対象コンテンツの内容を示す情報、すなわち、インデックスが登録される。例えば、図４は、実施形態に係るインデックスデータベース３３に登録される情報の一例を示す図である。図４に示す例では、インデックスデータベース３３には、「インデックス」および「コンテンツＩＤ」といった項目を有する情報が登録されている。
【００６１】
ここで、「インデックス」とは、インデックスとなる単語の文字列、すなわち、検索対象文字列から抽出された文字列である。また、「コンテンツＩＤ」とは、対応付けられたインデックスとなる文字列の抽出元となる検索対象文字列を含むコンテンツの識別子である。例えば、図３に示す例では、インデックス「単語＃１」と、コンテンツＩＤ「ＩＤ＃１、ＩＤ＃３」とが対応付けて登録されている。このような情報は、コンテンツＩＤ「ＩＤ＃１」が示すコンテンツやコンテンツＩＤ「ＩＤ＃３」が示すコンテンツに含まれる文字列に、インデックス「単語＃１」が含まれている旨を示す。なお、図４に示す例では、「単語＃１」等といった概念的な値を記載したが、実際には、検索対象コンテンツに含まれる検索対象文字列からインデックスとして抽出された文字列が登録される。
【００６２】
図２に戻り、説明を続ける。制御部４０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等のプロセッサによって、生成装置１０内部の記憶装置に記憶されている各種プログラムがＲＡＭ等を作業領域として実行されることにより実現される。また、制御部４０は、コントローラ（controller）であり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されてもよい。
【００６３】
図２に示すように、制御部４０は、収集部４１、境界設定部４２、算出部４３、抽出部４４、生成部４５、および検索部４６を有する。収集部４１は、検索対象コンテンツをコンテンツサーバ１００から収集する。より具体的には、収集部４１は、クロール処理を実行することにより、コンテンツサーバ１００が管理する各種のコンテンツを検索対象コンテンツとして収集する。なお、収集部４１は、任意の利用者が投稿したマイクロブログの内容や、新たに配信対象として登録されるニュース等、任意のコンテンツを収集してよい。
【００６４】
境界設定部４２は、検索対象文字列を所定の単位に分割する境界を設定する。例えば、境界設定部４２は、収集部４１によって収集された検索対象コンテンツに含まれる文字列を抽出する。続いて、境界設定部４２は、抽出した文字列を文章単位に分割し、分割した各文章を検索対象文字列とする。そして、境界設定部４２は、検索対象文字列が漢字やひらがな等で構成される場合は、検索対象文字列を一文字ごとに分割する境界を設定する。一方、境界設定部４２は、検索対象文字列がアルファベット等で構成される場合は、空白や単語の区切りとなる文字を境界として設定する。
【００６５】
算出部４３は、検索対象コンテンツに含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。より具体的には、算出部４３は、単語の区切りとなる境界の特徴を学習したモデルを用いて、検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率を算出する。そして、算出部４３は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、所定の文字列が単語となる確率を算出する。
【００６６】
例えば、算出部４３は、境界が設定された検索対象文字列を境界設定部４２から受付ける。このような場合、算出部４３は、確率算出モデルデータベース３１に登録されたモデルを用いて、境界設定部４２によって設定された境界、すなわち、検索対象文字列を一文字ごとに分割する各境界や、検索対象文字列を分割する所定の文字や空白が、単語の区切りとなる確率Ｐ（ｃ｜ｘ）を算出する。
【００６７】
続いて、算出部４３は、検索対象文字列から抽出可能な全ての文字列を抽出する。すなわち、算出部４３は、検索対象文字列に含まれる文字列であって、境界に挟まれた文字列を全て抽出する。なお、算出部４３は、境界に挟まれる文字列であって、文字数が所定の閾値以下となる文字列を抽出してもよい。
【００６８】
そして、算出部４３は、上述した式（１）を用いて、抽出した各文字列が単語となる確率（スコア）を算出する。例えば、算出部４３は、文字列を挟む各境界が単語の区切りとなる確率と、所定の文字列をさらに分割する境界が単語の区切りとなる確率を１から減算した値との総乗を、所定の文字列が単語となる確率として算出する。
【００６９】
抽出部４４は、算出部４３により算出された確率に基づいて、検索対象文字列から単語とする文字列を抽出する。例えば、抽出部４４は、算出部４３が検索対象文字列から抽出した文字列と、その文字列が単語となる確率とを受付ける。このような場合、抽出部４４は、確率が所定の閾値よりも高い文字列や、確率が高い方から順に所定の数の文字列を選択する。なお、抽出部４４は、文字列に含まれる文字の数が増える程、閾値の値を減少させてもよく、文字数がより多い文字列を優先的に選択してもよい。
【００７０】
生成部４５は、抽出部４４により抽出された単語に基づいて、検索対象のインデックスを生成する。例えば、生成部４５は、抽出部４４が選択した文字列を取得する。すなわち、生成部４５は、検索対象コンテンツに含まれる各検索対象文字列から抽出された文字列であって、単語となる確率が高い文字列を取得する。このような場合、生成部４５は、取得した文字列を集約することで、検索対象コンテンツのインデックスを生成する。
【００７１】
例えば、生成部４５は、インデックスデータベース３３を参照し、抽出部４４が選択した文字列がインデックスとして登録されているか否かを判定する。そして、生成部４５は、抽出部４４が選択した文字列がインデックスとして登録されている場合は、そのインデックスと対応付けられたコンテンツＩＤに、検索対象コンテンツのコンテンツＩＤを追加する。一方、生成部４５は、抽出部４４が選択した文字列がインデックスとして登録されていない場合は、そのインデックスと、検索対象コンテンツのコンテンツＩＤとを対応付けてインデックスデータベース３３に登録する。また、生成部４５は、検索対象文字列と検索対象コンテンツとを対応付けて検索対象コンテンツデータベース３２に登録する。
【００７２】
なお、生成部４５は、文字数がより多い文字列を優先的に用いて、インデックスを生成してもよい。例えば、生成部４５は、抽出部４４が選択した文字列のうち、文字数がより多い文字列を優先的にインデックスとして登録してもよい。また、生成部４５は、文字列とその文字列が単語となる確率（スコア）とを対応付けてインデックスとして登録してもよい。
【００７３】
また、生成部４５は、抽出部４４が抽出した単語と、その単語に含まれる他の単語とをインデックスとしてもよい。例えば、生成部４５は、形態素解析等の技術を用いて、抽出部４４が選択した文字列から単語とする文字列をさらに抽出する。そして、生成部４５は、抽出部４４が選択した文字列と、その文字列から抽出した他の文字列とをインデックスとして登録してもよい。
【００７４】
また、生成部４５は、抽出部４４が選択した各文字列のベクトル表現をインデックスとしてもよく、各文字列およびその文字列が単語となる確率との組を示すベクトル表現をインデックスとしてもよい。また、生成部４５は、複数の文字列等から生成した複数のベクトル表現をマージした一つのベクトル表現をインデックスとしてもよい。
【００７５】
検索部４６は、生成処理によって生成されたインデックスを用いた検索処理を実行する。例えば、検索部４６は、検索クエリを端末装置２００から受付ける。このような場合、検索部４６は、文字列が検索クエリと一致するインデックスや、検索クエリとの関連性が高いインデックスをインデックスデータベース３３から特定する。そして、検索部４６は、特定したインデックスと対応付けられたコンテンツＩＤをインデックスデータベース３３から抽出する。また、検索部４６は、抽出したコンテンツＩＤと対応付けられた検索対象コンテンツを検索対象コンテンツデータベース３２から検索する。そして、検索部４６は、検索した検索対象コンテンツのデータや、検索対象コンテンツの所在を示す検索結果を端末装置２００へと配信する。なお、検索部４６は、インデックスがベクトル表現である場合、検索クエリをベクトル表現へと変換した上で、検索クエリのベクトル表現とインデックスのベクトル表現とのコサイン類似度を算出し、コサイン類似度が所定の範囲内に収まる検索対象コンテンツを検索すればよい。
【００７６】
〔３．生成処理の流れの一例〕
続いて、図５を用いて、生成装置１０が実行する処理の流れについて説明する。図５は、実施形態にかかる生成装置が実行する生成処理の流れの一例を示すフローチャートである。例えば、生成装置１０は、検索対象コンテンツに含まれる文章を検索対象文字列として抽出する（ステップＳ１０１）。続いて、生成装置１０は、文章を所定の単位に分割する境界を設定する（ステップＳ１０２）。そして、生成装置１０は、各境界が単語の区切りとなる確率を算出し（ステップＳ１０３）、文章から抽出可能な文字列について、境界が単語の区切りとなる確率に基づくスコアを算出する（ステップＳ１０４）。その後、生成装置１０は、算出したスコアが所定の条件を満たす文字列に基づいて、検索対象コンテンツのインデックスを生成し（ステップＳ１０５）、処理を終了する。
【００７７】
〔５．変形例〕
上記では、生成装置１０による生成処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、生成装置１０が実行する生成処理のバリエーションについて説明する。
【００７８】
〔５−１．検索処理について〕
例えば、生成装置１０は、上述した検索以外にも、任意の検索手法を用いた検索処理を実行してもよい。例えば、生成装置１０は、検索クエリに対しても、所定の単位ごとに分割する境界を設定し、境界が単語の区切りとなる確率に基づいて、検索クエリから抽出可能な各文字列が単語となる確率を算出し、算出した確率が所定の閾値よりも高い文字列を用いて、インデックスの検索を行ってもよい。また、生成装置１０は、インデックスに含まれる文字列と検索クエリから抽出した文字列とのマッチングを行い、インデックスに含まれる文字列が単語となる確率と、検索クエリから抽出した文字列が単語となる確率とに基づいて、検索クエリと検索対象コンテンツとの関連度を示すスコアを算出し、算出したスコアに基づくリスティングや検索処理を実行してもよい。また、生成装置１０は、インデックスに含まれる文字列のうち、検索クエリや検索クエリから抽出した文字列と一致する文字列が単語となる確率やスコアの合計値に基づいて、検索結果のリスティングを行ってもよい。
【００７９】
また、生成装置１０は、再現率に基づく検索を行ってもよい。例えば、生成装置１０は、検索クエリとなる文字列や検索クエリから抽出した文字列が、インデックスに含まれる文字列を再現する度合いである再現率を算出し、算出した再現率が所定の条件を満たす検索対象コンテンツを検索結果に含めてもよい。
【００８０】
〔５−２．数式について〕
上述した生成装置１０は、境界が単語の区切りとなる確率の総乗に基づいて、文字列が単語となる確率を算出した。しかしながら、実施形態は、これに限定されるものではない。例えば、生成装置１０は、境界が単語の区切りとなる確率の総和等に基づいて、文字列が単語となる確率を算出してもよい。より具体的には、生成装置１０は、境界が単語の区切りとなる確率の対数値の総和等に基づいて、文字列が単語となる確率を算出してもよい。すなわち、生成装置１０は、境界が単語の区切りとなる確率に基づいて、文字列が単語となる確率やスコアを算出するのであれば、任意の数式を採用して良い。
【００８１】
〔５−３．打ち切りについて〕
また、生成装置１０は、インデックスを生成する際に、計算量を削減するための任意の処理を実行して良い。例えば、生成装置１０は、２文字以上１０文字以下の文字列について、単語となる確率を算出してもよい。また、例えば、生成装置１０は、文字数が少ない文字列から順に単語となる確率を算出し、ある文字数の文字列において算出される確率が所定の閾値を下回るようになったら、その文字列よりも文字数が多い文字列については、インデックスの対象から除外してもよい。
【００８２】
〔５−４．利用形態について〕
また、上述した生成装置１０は、検索対象コンテンツの検索を行う際に用いるインデックスの生成処理を行う生成処理を実行した。しかしながら、実施形態は、これに限定されるものではない。例えば、検索対象文字列中に境界を設定し、設定した各境界が単語の区切りとなる確率に基づいて、検索対象文字列から抽出される文字列が単語となる確率を算出するのであれば、任意の処理に用いられてもよい。
【００８３】
すなわち、検索対象文字列が抽出される文字列が単語となる確率とは、検索対象文字列が抽出される文字列が一塊の語として何かしらの意味を有する確率であり、ここでいう「単語」とは、所謂名詞等の単語に限定されるものではない。例えば、ＤＮＡ（Deoxyribonucleic  Acid）の配列には、所定の生体的な機能を発揮する配列部分が含まれる。そこで、生成装置１０は、ＤＮＡ全体やＤＮＡの一部を検索対象文字列とし、配列部分を単語と見做すことで、所定の生体的な機能を発揮する可能性が高い配列部分をＤＮＡの配列検索に用いるインデックスとして抽出してもよい。このような処理を実行した場合、例えば、辞書等にあらかじめ登録されていない配列部分であるが、所定の生体的な機能を発揮する可能性が高い配列部分をインデックスに含めることができる。
【００８４】
また、生成装置１０は、インデックスを検索処理に用いるのではなく、検索対象文字列が属する分野を特定するために用いることで、検索対象コンテンツの分類処理を実行してもよい。例えば、生成装置１０は、検索対象文字列から生成したインデックスの内容に基づいて、検索対象文字列が属する分野（例えば、「スポーツ」や「政治」等）を特定し、検索対象コンテンツを特定した分野に属するコンテンツとしてもよい。
【００８５】
〔５−５．インデックスについて〕
また、生成装置１０は、任意の形式のインデックスを生成してもよい。例えば、生成装置１０は、単語として抽出した各文字列が単語となる確率を要素とするベクトルをインデックスにしてもよい。また、生成装置１０は、インデックスに含まれる文字列の数に上限を設定することで、検索処理における時間を短縮してもよい。
【００８６】
〔５−６．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【００８７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００８８】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００８９】
〔６．プログラム〕
また、上述してきた実施形態に係る生成装置１０は、例えば図６に示すような構成のコンピュータ１０００によって実現される。図６は、ハードウェア構成の一例を示す図である。コンピュータ１０００は、出力装置１０１０、入力装置１０２０と接続され、演算装置１０３０、一次記憶装置１０４０、二次記憶装置１０５０、出力ＩＦ（Interface）１０６０、入力ＩＦ１０７０、ネットワークＩＦ１０８０がバス１０９０により接続された形態を有する。
【００９０】
演算装置１０３０は、一次記憶装置１０４０や二次記憶装置１０５０に格納されたプログラムや入力装置１０２０から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置１０４０は、ＲＡＭ等、演算装置１０３０が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置１０５０は、演算装置１０３０が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ＲＯＭ(Read  Only  Memory)、ＨＤＤ、フラッシュメモリ等により実現される。
【００９１】
出力ＩＦ１０６０は、モニタやプリンタといった各種の情報を出力する出力装置１０１０に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、ＵＳＢ（Universal  Serial  Bus）やＤＶＩ（Digital  Visual  Interface）、ＨＤＭＩ（登録商標）（High  Definition  Multimedia  Interface）といった規格のコネクタにより実現される。また、入力ＩＦ１０７０は、マウス、キーボード、およびスキャナ等といった各種の入力装置１０２０から情報を受信するためのインタフェースであり、例えば、ＵＳＢ等により実現される。
【００９２】
なお、入力装置１０２０は、例えば、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置１０２０は、ＵＳＢメモリ等の外付け記憶媒体であってもよい。
【００９３】
ネットワークＩＦ１０８０は、ネットワークＮを介して他の機器からデータを受信して演算装置１０３０へ送り、また、ネットワークＮを介して演算装置１０３０が生成したデータを他の機器へ送信する。
【００９４】
演算装置１０３０は、出力ＩＦ１０６０や入力ＩＦ１０７０を介して、出力装置１０１０や入力装置１０２０の制御を行う。例えば、演算装置１０３０は、入力装置１０２０や二次記憶装置１０５０からプログラムを一次記憶装置１０４０上にロードし、ロードしたプログラムを実行する。
【００９５】
例えば、コンピュータ１０００が生成装置１０として機能する場合、コンピュータ１０００の演算装置１０３０は、一次記憶装置１０４０上にロードされたプログラムを実行することにより、制御部４０の機能を実現する。
【００９６】
〔７．効果〕
上述したように、生成装置１０は、検索対象コンテンツに含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。また、生成装置１０は、算出された確率に基づいて、検索対象文字列から単語とする文字列を抽出する。そして、生成装置１０は、抽出された単語に基づいて、検索対象コンテンツのインデックスを生成する。
【００９７】
このため、生成装置１０は、単語の可能性が高い文字列を全てインデックスに含めることができるので、例えば、単語の区切りが曖昧な言語であっても、トークナイズ揺れを起因とする検索漏れを軽減することができるので、検索精度を向上させることができる。また、生成装置１０は、辞書等を用いずとも、単語の可能性が高い文字列を全てインデックスに含めることができるので、例えば、新語をインデックスに含めることができる結果、検索精度を向上させることができる。
【００９８】
また、生成装置１０は、文字列を一文字ごとに分割する各境界が単語の区切りとなる確率を算出し、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。このため、生成装置１０は、日本語等、単語の区切りが曖昧な言語であっても、単語の可能性が高い文字列を全てインデックスに含めることができるので、検索精度を向上させることができる。
【００９９】
また、生成装置１０は、文字列を分割する所定の文字又は空白ごとに、その所定の文字又は空白が単語の区切りとなる確率を算出し、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。このため、生成装置１０は、例えば、複数の単語からなる複合語を一つの単語としてインデックスに含めることができるので、利用者の意図を検索処理に反映させることができる結果、検索精度を向上させることができる。
【０１００】
また、生成装置１０は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、その所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、その所定の文字列が単語となる確率を算出する。例えば、生成装置１０は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、その所定の文字列をさらに分割する境界が単語の区切りとなる確率を１から減算した値との総乗を、その所定の文字列が単語となる確率として算出する。このため、生成装置１０は、文字列が単語となる確率を適切に算出することができる。
【０１０１】
また、生成装置１０は、算出された確率が所定の閾値よりも高い文字列を検索対象文字列から抽出する。また、生成装置１０は、算出された確率が高い方から順に所定の数の文字列を検索対象文字列から抽出する。また、生成装置１０は、文字数がより多い文字列を優先的に用いて、インデックスを生成する。これらの処理の結果、生成装置１０は、検索処理における網羅性を保持しつつ、特定性を向上させることができる。
【０１０２】
また、生成装置１０は、境界に挟まれる文字列であって、検索対象文字列から抽出可能な全ての文字列について、その文字列が単語となる確率を算出する。このため、生成装置１０は、検索処理における網羅性を担保することができる。
【０１０３】
また、生成装置１０は、境界に挟まれる文字列であって、文字数が所定の閾値以下となる文字列が単語となる確率を算出する。このため、生成装置１０は、検索処理に要する処理負荷を削減することができる。
【０１０４】
また、生成装置１０は、抽出した文字列を検索対象コンテンツのインデックスとする。このため、生成装置１０は、検索対象コンテンツのインデックスを精度良く生成することができる。
【０１０５】
また、生成装置１０は、単語の区切りとなる境界の特徴を学習したモデルを用いて、検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率を算出する。このため、生成装置１０は、各境界が単語の区切りとなる確率を精度よく算出することができる。
【０１０６】
また、生成装置１０は、抽出した文字列と、その文字列に含まれる他の文字列とを検索対象コンテンツのインデックスとする。このため、生成装置１０は、複合語を構成する各単語をインデックスに含めることができるので、検索処理における網羅性を担保することができる。
【０１０７】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０１０８】
また、上記してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、抽出部は、抽出手段や抽出回路に読み替えることができる。
【符号の説明】
【０１０９】
１０  生成装置
２０  通信部
３０  記憶部
３１  確率算出モデルデータベース
３２  検索対象コンテンツデータベース
３３  インデックスデータベース
４０  制御部
４１  収集部
４２  境界設定部
４３  算出部
４４  抽出部
４５  生成部
４６  検索部
１００  コンテンツサーバ
２００  端末装置
【図１】
2018077806.tif 000004
【図２】
2018077806.tif 000005
【図３】
2018077806.tif 000006
【図４】
2018077806.tif 000007
【図５】
2018077806.tif 000008
【図６】
2018077806.tif 000009