(58)【調査した分野】(Int.Cl.,DB名)
前記算出部は、前記文字列を一文字ごとに分割する各境界が単語の区切りとなる確率を算出し、算出した確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する
ことを特徴とする請求項1に記載の生成装置。
前記算出部は、前記文字列を分割する所定の文字又は空白ごとに、当該所定の文字又は空白が単語の区切りとなる確率を算出し、算出した確率に基づいて、前記境界に挟まれる文字列が単語となる確率を算出する
ことを特徴とする請求項1に記載の生成装置。
前記算出部は、前記検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、当該所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、当該所定の文字列が単語となる確率を算出する
ことを特徴とする請求項1〜3のうちいずれか1つに記載の生成装置。
前記算出部は、前記検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、当該所定の文字列をさらに分割する境界が単語の区切りとなる確率を1から減算した値との総乗を、当該所定の文字列が単語となる確率として算出する
ことを特徴とする請求項4に記載の生成装置。
【発明を実施するための形態】
【0010】
以下に、本願に係る生成装置、生成方法および生成プログラムを実施するための形態(以下、「実施形態」と記載する。)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る生成装置、生成方法および生成プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0011】
[実施形態]
〔1−1.生成装置の一例〕
まず、
図1を用いて、生成装置が実行する生成処理の一例について説明する。
図1は、実施形態に係る生成装置が実行する生成処理の一例を示す図である。
図1では、生成装置10は、インターネット等の所定のネットワークNを介して、所定のコンテンツを管理するコンテンツサーバ100や、端末装置200と通信可能である。なお、生成装置10は、ネットワークNを介して、任意の数のコンテンツサーバ100や端末装置200と通信可能であってもよい。
【0012】
端末装置200は、利用者U01が使用するスマートフォンやタブレット等のスマートデバイスであり、3G(3rd Generation)やLTE(Long Term Evolution)等の無線通信網を介して、生成装置10と通信を行うことができる携帯端末装置である。なお、端末装置200は、スマートデバイスのみならず、デスクトップPCやノートPC等の情報処理装置であってもよい。
【0013】
コンテンツサーバ100は、ウェブページ、ウィジェット、静止画像、動画像、ゲーム等といった各種のウェブコンテンツ(以下、「コンテンツ」と記載する。)を管理し、管理したコンテンツを端末装置200等の任意の装置に配信する装置であり、例えば、サーバ装置やクラウドシステム等により実現される。
【0014】
生成装置10は、コンテンツの検索に用いるインデックスの生成処理を実行する。例えば、生成装置10は、コンテンツサーバ100から検索対象となるコンテンツ、すなわち、検索対象コンテンツを取得すると、取得したコンテンツの内容を示すインデックスを生成し、コンテンツとインデックスとを対応付けて記憶する。そして、生成装置10は、端末装置200から検索クエリを受付けた場合は、検索クエリと対応するインデックスを特定し、特定したインデックスに対応付けられたコンテンツの所在を示すURL(Uniform Resource Locator)やコンテンツのデータを端末装置200へと配信する。
【0015】
〔1−2.生成処理について〕
ここで、インデックスの生成手法として、形態素解析等の文字解析技術により、コンテンツに含まれる文章等のテキストから単語を抽出し、抽出した単語をインデックスとする手法が考えられる。しかしながら、このような手法では、テキストが示す意味とは異なる意味を有する単語をインデックスとする恐れがある。例えば、コンテンツに含まれるテキスト中に「東京都」という文字列が存在する場合に、「東京」という単語を抽出した場合には、適切なインデックスを生成できると予測されるが、「京都」という単語を抽出した場合には、適切なインデックスを生成することができない。例えば、「東京都」という文字列を含むコンテンツに対して「京都」という単語をインデックスとした場合は、利用者が「東京」という単語を検索クエリとして入力した際に、コンテンツが検索結果から除外される恐れがある。
【0016】
また、「東京大学」という文字列は、「東京」と「大学」との複合語であるが、このような文字列をインデックスとする場合、「東京大学」をインデックスとするか、「東京」と「大学」とをインデックスとするかという単語の単位の曖昧さが存在する。このように、文字列のうちどの範囲を単語にするかという単語の単位の曖昧性に起因して、検索クエリとコンテンツに含まれるテキストとの間にトークナイズ揺れが生じる場合には、適切なインデックスを生成することができなくなる恐れがある。
【0017】
そこで、生成装置10は、以下の生成処理を実行する。まず、生成装置10は、検索対象コンテンツに含まれる文字列(以下、「検索対象文字列」と記載する。)を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。そして、生成装置10は、算出された確率に基づいて、検索対象文字列から単語とする文字列を抽出し、抽出された単語に基づいて、検索対象コンテンツのインデックスを生成する。
【0018】
例えば、生成装置10は、「東京都に住む」という文字列が存在する場合に、文字列を一文字ごとに分割する境界を設定し、各境界が単語の区切りとなる確率をそれぞれ算出する。そして、生成装置10は、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出し、算出した確率が所定の閾値を超える文字列や、算出した確率が高い方から順に所定の数の文字列を抽出する。
【0019】
例えば、「東京都に住む」という文字列を一文字ずつ分割する境界を設定した場合、「東京都に住む」という文字列からは、境界に挟まれる文字列として、「東」、「京」、「都」、「に」、「住」、「む」、「東京」、「京都」、「都に」、「に住」、「住む」、「東京都」、「京都に」、「都に住」、「に住む」、「東京都に」、「京都に住」、「都に住む」、「東京都に住」、「京都に住む」といった文字列が抽出される。なお、境界は、文字列の先頭と末尾とにも設定されるものとする。このような場合、生成装置10は、抽出した各文字列を挟む境界、および、各文字列に含まれる境界が単語の区切りとなる確率に基づいて、各文字列が単語となる確率を算出する。すなわち、生成装置10は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、所定の文字列が単語となる確率を算出する。
【0020】
以下、「東京都に住む」という文字列のうち「東京都」という文字列が単語となる確率を算出する処理の一例について説明する。例えば、生成装置10は、「東」と「京」とを分割する境界c1、「京」と「都」とを分割する境界c2、および「都」と「に」とを分割する境界c3を特定する。そして、生成装置10は、入力された文字列(処理対象となる文字列)xが存在する場合、特定した境界c1が単語の区切りとなる確率P(c1|x)、境界c2が単語の区切りとなる確率P(c2|x)、および境界c3が単語の区切りとなる確率P(c3|x)を算出する。なお、各境界が単語の区切りとなる確率を算出する処理の具体例については、後述する。
【0021】
続いて、生成装置10は、文字列「東京都」に含まれる境界、すなわち、境界c1および境界c2が単語の区切りとはならない確率を算出する。例えば、生成装置10は、1からP(c1|x)を減算した値を境界c1が単語の区切りとならない確率とし、1からP(c2|x)を減算した値を境界c2が単語の区切りとならない確率とする。また、生成装置10は、文字列「東京都に住む」の先頭に境界c0を設定し、境界c0が単語の区切りとなる確率として所定の値(例えば、「1」)を設定する。そして、生成装置10は、文字列「東京都」が単語となる確率として、文字列「東京都」を挟む境界c0及び境界C3が単語の区切りとなる確率と、境界c1および境界c2が単語の区切りとはならない確率との総乗を算出する。
【0022】
また、生成装置10は、「東京都に住む」という文字列から抽出可能な全ての文字列、すなわち、境界に挟まれた全ての文字列ついて、同様の処理を実行することで、各文字列が単語となる確率を算出する。そして、生成装置10は、算出した確率が所定の条件を満たす文字列を単語として抽出する。
【0023】
すなわち、生成装置10は、検索対象文字列を分割する各境界が単語の区切りとなる確率に基づき、検索対象文字列から抽出可能な全ての文字列について、各文字列が単語となる確率をその文字列を挟む境界が単語の区切りとなる確率、および、その文字列を分割する境界が単語の区切りとなる確率から以下の式(1)を用いて算出する。なお、式(1)に示すP(w
ij、x)とは、検索対象文字列のうちi番目の文字からj番目の文字までの文字列w
ijが単語となる確率を示し、P(c
k|x)とは、境界c
kが単語の区切りとなる確率を示す。
【0025】
そして、生成装置10は、単語となる確率が所定の条件を満たす文字列をインデックスとなる単語として登録する。この結果、生成装置10は、検索対象文字列を分割してインデックスとなる単語を取得するのではなく、検索対象文字列に含まれる文字列のうち単語となる可能性が高い文字列を全て抽出する。この結果、生成装置10は、インデックスの特定性を保持しつつ、インデックスの網羅性を向上させることができるので、検索精度を向上させることができる。
【0026】
また、生成装置10は、文字列を一文字ごとに分割する境界を設定し、抽出可能な文字列が単語となる確率を算出するので、例えば、いわゆる新語といった辞書に登録されていない単語をインデックスに含めることができる。
【0027】
〔1−3.区切りについて〕
上述した例では、生成装置10は、検索対象文字列を一文字ごとに分割する境界を設定した。このような処理を実行した場合には、生成装置10は、日本語や中国語等、文字列に含まれる単語の区切りが曖昧な任意の言語について、単語となる可能性が高い文字列をインデックスとして抽出することができる。しかしながら、実施形態は、これに限定されるものではない。
【0028】
例えば、英語、ドイツ語、フランス語、イタリア語等、単語となる文字列が空白や所定の文字によって分割される言語が存在する。しかしながら、このような言語においては、空白や所定の文字により分割されている複数の単語が一つの単語として機能する場合がある。例えば「New York」という文字列は、「New」と「York」という2つの単語により構成される文字列であるが、「New York」という文字列全体で一つの単語として機能する。他にも「ice cream」や「United States Capitol」等といった単語も、複数の単語から構成されているものの、一つの単語として機能すると考えられる。このように、検索対象文字列中に、複数の単語から構成された一つの単語として機能する文字列が含まれる場合、構成要素となる単語をインデックスとするのではなく、一つの単語として機能する文字列全体をインデックスとした方が検索クエリとのトークナイズを揃えることができると考えられる。
【0029】
そこで、生成装置10は、文字列を分割する所定の文字又は空白ごとに、所定の文字又は空白が単語の区切りとなる確率を算出し、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出してもよい。例えば、生成装置10は、検索対象文字列のうち「New York」を挟む空白が単語の区切りとなる確率と、「New」と「York」とを分割する空白が単語の区切りとなる確率とに基づいて、「New York」が単語となる確率を算出し、算出した確率が所定の閾値を超える場合は、「New York」という文字列をインデックスとしてもよい。
【0030】
なお、生成装置10は、例えば、任意の数の文字ごとに検索対象文字列を分割する境界を設定してもよく、所定の条件に従って検索対象文字列を分割する境界を設定してもよい。例えば、生成装置10は、漢字とひらがなとを分割する境界を設定してもよく、母音と子音とを分割する境界を設定してもよい。すなわち、生成装置10は、検索対象文字列が属する言語の記述法に応じた任意の条件により、検索対象文字列を所定の単位ごとに分割する境界を設定するのであれば、任意の条件に従って、検索対象文字列を分割する境界を設定してよい。
【0031】
〔1−4.抽出する文字列について〕
ここで、インデックスとなる文字列の文字数、すなわち、文字列の単位を小さくした場合には、検索処理における網羅性が増加するものの、検索処理における特定性が小さくなる。一方で、文字列の単位を大きくした場合は、検索処理に特定性が増加するものの、網羅性が減少してしまう。
【0032】
そこで、生成装置10は、所定の条件を満たす文字列のみをインデックスとして抽出してもよい。例えば、生成装置10は、単語となる確率が所定の閾値よりも高い文字列のみをインデックスとして抽出してもよい。また、生成装置10は、単語となる確率が高い方から順に所定の数の文字列をインデックスとして抽出してもよい。また、生成装置10は、文字数がより多い文字列を優先的にインデックスとしてもよい。
【0033】
また、例えば、生成装置10は、文字列の文字数に応じた確率を算出してもよい。例えば、生成装置10は、文字列の文字数が増加するほど、閾値の値をより小さい値に設定してもよい。また、生成装置10は、文字数や単語となる確率に所定の重みづけを考慮したスコアを算出し、算出したスコアの値が所定の閾値を超える文字列や、スコアの値が所定の閾値を超える文字列をインデックスとして抽出してもよい。
【0034】
また、生成装置10は、文字数が所定の閾値以下となる文字列が単語となる確率を算出してもよい。すなわち、生成装置10は、インデックスとして抽出する文字列に最大文字数の設定を行ってもよい。
【0035】
〔1−5.インデックスについて〕
ここで、上述した生成装置10は、抽出した文字列を検索対象コンテンツのインデックスとした。しかしながら、実施形態は、これに限定されるものではない。例えば、生成装置10は、検索対象文字列からインデックスとして抽出した文字列から、形態素解析等の技術を用いて、さらに他の単語を抽出し、抽出した単語をインデックスに含めてもよい。すなわち、生成装置10は、抽出した単語が複合語である場合は、かかる複合語を構成する単語をインデックスに含めてもよい。このような処理を実行することで、生成装置10は、検索処理における網羅性を向上させることができる。
【0036】
ここで、各境界が区切りとなる確率を検索対象文字列ごとに算出した場合、同一の文字列であってもその文字列が単語となる確率は、検索対象文字列ごとに異なる値となる。すなわち、検索対象文字列から抽出された文字列が単語となる確率は、その検索対象文字列と抽出された文字列との関連性を示す指標となりうる。そこで、生成装置10は、インデックスとして抽出した文字列が単語となる確率を検索処理に用いてもよい。
【0037】
例えば、生成装置10は、インデックスとして、抽出した文字列とその文字列が単語となる確率またはスコアを対応付けて登録する。また、生成装置10は、検索クエリを受付けた場合は、検索クエリと一致する文字列を含むインデックスを検索する。そして、生成装置10は、検索クエリと一致する文字列の確率またはスコアに基づいて、検索したインデックスが対応付けられたコンテンツと検索クエリとの関連性を算出し、算出した関連性が高い方から順にコンテンツを並べた検索結果を配信する。このように、生成装置10は、インデックスとして抽出した文字列が単語となる確率やスコアに応じて、インデックスと対応するコンテンツのリスティングを行ってもよい。
【0038】
また、生成装置10は、抽出した文字列そのものをインデックスとしなくともよい。例えば、生成装置10は、w2v(word2vec)等の技術を用いて、抽出した文字列をベクトル表現に変換し、変換したベクトル表現をインデックスとしてもよい。このような場合、生成装置10は、例えば、検索クエリのベクトル表現とコサイン類似度が所定の範囲内となるベクトル表現がインデックスに含まれるコンテンツを検索してもよい。
【0039】
また、生成装置10は、抽出した文字列が単語となる確率やスコアの値に基づいて、インデックスのベクトル表現を生成してもよい。例えば、生成装置10は、ベクトル表現を構成する各次元の値として、各次元に対応する文字列が単語となる確率やスコアの値を設定してもよい。より具体的な例を挙げると、生成装置10は、ある次元と対応する文字列が検索対象文字列に含まれているか否かを判定し、含まれている場合は、その文字列が単語となる確率やスコアをその次元の値とし、含まれていない場合は、その次元の値を「0」に設定すればよい。
【0040】
〔1−6.検索対象文字列の分割について〕
ここで、生成装置10は、コンテンツに含まれる全てのテキストを1つの検索対象文字列とする必要はない。例えば、生成装置10は、コンテンツに含まれるテキストを句点により区切られた文章に分割する。また、生成装置10は、文章ごとに上述した生成処理を実行することで、インデックスとなる単語を抽出する。そして、生成装置10は、各文章から抽出した文字列を集約することで、コンテンツのインデックスを生成してもよい。ここで、生成装置10は、各文章から抽出した各文字列が単語となる確率やスコアに基づいて、コンテンツのインデックスとする文字列を選択してもよい。
【0041】
また、生成装置10は、複数の文章毎に上述した生成処理を実行してもよく、読点により区切られた文章ごとに生成処理を実行してもよい。すなわち、生成装置10は、コンテンツに含まれるテキストを任意の単位に分割し、分割したテキストを検索対象文字列として上述した生成処理を実行して良い。
【0042】
〔1−7.確率の算出について〕
上述したように、生成装置10は、検索対象文字列を任意の単位に分割する境界を設定し、設定した境界が単語の区切りとなる確率を算出する。ここで、生成装置10は、任意の手法を用いて、境界が単語の区切りとなる確率を算出してよい。例えば、生成装置10は、SVM(Support Vector Machine)やロジスティック回帰、tf−idf(Term Frequency-Inverse Document Frequency)、w2v、ディープラーニング等の技術等を用いて、境界が単語の区切りとなる確率を算出してよい。
【0043】
例えば、生成装置10は、正解データとなる所定の文章中において境界が単語の区切りとなる確度を学習したモデル、すなわち、単語の区切りとなる境界の特徴を学習したモデルをあらかじめ記憶する。そして、生成装置10は、モデルを用いて、検索対象文字列を分割する境界が単語の区切りとなる確率を算出してよい。
【0044】
また、例えば、生成装置10は、辞書に登録された単語を考慮してもよい。例えば、生成装置10は、単語となる確率の算出対象となる文字列が辞書に登録されている場合には、その文字列が単語となる確率に所定の値を加算してもよい。また、生成装置10は、辞書に登録された単語を用いて、境界が単語の区切りとなる確率を算出するモデルの学習を行ってもよい。
【0045】
〔1−8.生成装置が実行する処理の一例〕
次に、
図1を用いて、生成装置10が実行する処理の一例について説明する。まず、生成装置10は、クロール処理等を実行することで、コンテンツサーバ100から検索対象コンテンツを収集する(ステップS1)。例えば、
図1に示す例では、生成装置10は、文章#1〜文章#4を含む検索対象コンテンツC10を収集する。なお、生成装置10は、コンテンツサーバ100が管理済みのコンテンツのみならず、例えば、ニュースフィードやマイクロブログに投稿された文章等、任意の利用者により投稿が行われた任意のコンテンツを収集してもよい。
【0046】
このような場合、生成装置10は、検索対象コンテンツに含まれる文章を所定の単位ごとに分割する全ての境界について、単語の区切りとなる確率を算出する(ステップS2)。例えば、生成装置10は、文章#1に含まれる「東京都に住む」という文字列を「東」、「京」、「都」、「に」、「住」、「む」というように一文字ずつに分割する境界c1〜c5を設定し、設定した各境界c1〜c5が単語の区切りとなる確率P(c1|x)〜P(c5|x)を算出する。例えば、
図1に示す例では、生成装置10は、「P(c1|x)=0.1」、「P(c2|x)=0.7」、「P(c3|x)=0.9」、「P(c4|x)=0.9」、および「P(c5|x)=0.4」を算出する。
【0047】
また、例えば、生成装置10は、文章#4に含まれる「Living in New York with」という文字列を「Living」、「in」、「New」、「York」、「with」というように区切る空白を境界c6〜c9とし、設定した各境界c6〜c9が単語の区切りとなる確率P(c6|x)〜P(c9|x)を算出する。例えば、
図1に示す例では、生成装置10は、「P(c6|x)=0.9」、「P(c7|x)=0.9」、「P(c8|x)=0.2」、および「P(c9|x)=0.9」を算出する。
【0048】
続いて、生成装置10は、全ての境界の組み合わせについて、文字列を挟む前後の境界が区切りとなる確率と、文字列中の境界が区切りとはならない確率との積をスコアとして算出する(ステップS3)。すなわち、生成装置10は、「東京都に住む」や「Living in New York with」といった文字列から抽出可能な全ての文字列について、上述した式(1)を用いて単語となる確率を算出する。
【0049】
例えば、生成装置10は、文字列「京都」を挟む境界c1および境界c3が区切りとなる確率と、文字列「京都」に含まれる境界c2が区切りとはならない確率との積を、文字列「京都」が単語となる確率「P(京都,x)」として算出する。より具体的には、生成装置10は、境界c1が区切りとなる確率「0.1」と、境界c3が区切りとなる確率「0.9」と、境界c2が区切りとはならない確率「1−0.7」との積を確率「P(京都、x)」とする。また、生成装置10は、文字列「東京」や、文字列「New」、文字列「New York」についても同様に、単語となる確率をスコアとして算出する。
【0050】
そして、生成装置10は、スコアが所定の条件を満たす全ての文字列から、検索対象コンテンツのインデックスを生成する(ステップS4)。例えば、生成装置10は、文字列「東京」、「東京都」、「住む」、「New York」のスコアが文字数や単語数に応じた閾値を超える場合、文字列「東京」、「東京都」、「住む」、「New York」を全て検索対象コンテンツC10のインデックスとして登録する。
【0051】
また、生成装置10は、端末装置200から検索クエリを受信する(ステップS5)。このような場合、生成装置10は、検索クエリと一致する文字列や検索クエリとの関連性が高い文字列がインデックスに含まれる検索対象コンテンツをインデックスが検索クエリと対応する検索対象コンテンツとして検索する。そして、生成装置10は、インデックスが検索クエリと対応する検索対象コンテンツを端末装置200へと配信する。なお、生成装置10は、検索対象コンテンツの所在を示すURLをまとめた検索結果を端末装置200へ送信してもよい。
【0052】
〔2.生成装置の構成〕
以下、上記した生成処理を実現する生成装置10が有する機能構成の一例について説明する。
図2は、実施形態に係る生成装置の構成例を示す図である。
図2に示すように、生成装置10は、通信部20、記憶部30、および制御部40を有する。
【0053】
通信部20は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部20は、ネットワークNと有線または無線で接続され、コンテンツサーバ100や端末装置200との間で情報の送受信を行う。
【0054】
記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。また、記憶部30は、確率算出モデルデータベース31、検索対象コンテンツデータベース32、およびインデックスデータベース33を記憶する。
【0055】
確率算出モデルデータベース31には、境界が単語の区切りとなる確率を算出するためのモデルが登録されている。例えば、確率算出モデルデータベース31には、正解データにおいて単語の区切りとなる境界の特徴を学習したSVMやDNN(Deep Neural Network)等のデータが登録されている。
【0056】
検索対象コンテンツデータベース32には、検索対象コンテンツと、検索対象コンテンツに含まれる検索対象文字列から抽出した単語に基づくインデックスが登録されている。例えば、
図3は、実施形態に係る検索対象コンテンツデータベースに登録される情報の一例を示す図である。
図3に示す例では、検索対象コンテンツデータベース32には、「コンテンツID(Identifier)」、「テキストデータ」等といった項目を有する情報が登録されている。なお、検索対象コンテンツデータベース32には、
図3に示す情報以外にも、例えば、検索対象コンテンツ自体のデータや、検索対象コンテンツの所在を示すURL等、任意の情報が登録されていてもよい。
【0057】
ここで、「コンテンツID」とは、配信対象コンテンツの識別子である。また、「テキストデータ」とは、対応付けられたコンテンツIDが示す配信対象コンテンツに含まれる文章等の文字列、すなわち、検索対象文字列である。
【0058】
例えば、
図3に示す例では、コンテンツID「ID#1」、テキストデータ「テキスト#1−1、テキスト#1−2、・・・」といった情報が対応付けて登録されている。このような情報は、コンテンツID「ID#1」が示す検索対象コンテンツに、「テキスト#1−1」や「テキスト#1−2」等といった文字列を含む検索対象文字列が含まれている旨を示す。
【0059】
なお、
図3に示す例では、「テキスト#1−1」等といった概念的な値を記載したが、実際には、検索対象コンテンツに含まれる検索対象文字列のデータや、検索対象文字列から単語として抽出された文字列のデータ等が登録される。
【0060】
インデックスデータベース33には、配信対象コンテンツの検索に用いる情報であり、検索対象コンテンツの内容を示す情報、すなわち、インデックスが登録される。例えば、
図4は、実施形態に係るインデックスデータベース33に登録される情報の一例を示す図である。
図4に示す例では、インデックスデータベース33には、「インデックス」および「コンテンツID」といった項目を有する情報が登録されている。
【0061】
ここで、「インデックス」とは、インデックスとなる単語の文字列、すなわち、検索対象文字列から抽出された文字列である。また、「コンテンツID」とは、対応付けられたインデックスとなる文字列の抽出元となる検索対象文字列を含むコンテンツの識別子である。例えば、
図3に示す例では、インデックス「単語#1」と、コンテンツID「ID#1、ID#3」とが対応付けて登録されている。このような情報は、コンテンツID「ID#1」が示すコンテンツやコンテンツID「ID#3」が示すコンテンツに含まれる文字列に、インデックス「単語#1」が含まれている旨を示す。なお、
図4に示す例では、「単語#1」等といった概念的な値を記載したが、実際には、検索対象コンテンツに含まれる検索対象文字列からインデックスとして抽出された文字列が登録される。
【0062】
図2に戻り、説明を続ける。制御部40は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等のプロセッサによって、生成装置10内部の記憶装置に記憶されている各種プログラムがRAM等を作業領域として実行されることにより実現される。また、制御部40は、コントローラ(controller)であり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されてもよい。
【0063】
図2に示すように、制御部40は、収集部41、境界設定部42、算出部43、抽出部44、生成部45、および検索部46を有する。収集部41は、検索対象コンテンツをコンテンツサーバ100から収集する。より具体的には、収集部41は、クロール処理を実行することにより、コンテンツサーバ100が管理する各種のコンテンツを検索対象コンテンツとして収集する。なお、収集部41は、任意の利用者が投稿したマイクロブログの内容や、新たに配信対象として登録されるニュース等、任意のコンテンツを収集してよい。
【0064】
境界設定部42は、検索対象文字列を所定の単位に分割する境界を設定する。例えば、境界設定部42は、収集部41によって収集された検索対象コンテンツに含まれる文字列を抽出する。続いて、境界設定部42は、抽出した文字列を文章単位に分割し、分割した各文章を検索対象文字列とする。そして、境界設定部42は、検索対象文字列が漢字やひらがな等で構成される場合は、検索対象文字列を一文字ごとに分割する境界を設定する。一方、境界設定部42は、検索対象文字列がアルファベット等で構成される場合は、空白や単語の区切りとなる文字を境界として設定する。
【0065】
算出部43は、検索対象コンテンツに含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。より具体的には、算出部43は、単語の区切りとなる境界の特徴を学習したモデルを用いて、検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率を算出する。そして、算出部43は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、所定の文字列が単語となる確率を算出する。
【0066】
例えば、算出部43は、境界が設定された検索対象文字列を境界設定部42から受付ける。このような場合、算出部43は、確率算出モデルデータベース31に登録されたモデルを用いて、境界設定部42によって設定された境界、すなわち、検索対象文字列を一文字ごとに分割する各境界や、検索対象文字列を分割する所定の文字や空白が、単語の区切りとなる確率P(c|x)を算出する。
【0067】
続いて、算出部43は、検索対象文字列から抽出可能な全ての文字列を抽出する。すなわち、算出部43は、検索対象文字列に含まれる文字列であって、境界に挟まれた文字列を全て抽出する。なお、算出部43は、境界に挟まれる文字列であって、文字数が所定の閾値以下となる文字列を抽出してもよい。
【0068】
そして、算出部43は、上述した式(1)を用いて、抽出した各文字列が単語となる確率(スコア)を算出する。例えば、算出部43は、文字列を挟む各境界が単語の区切りとなる確率と、所定の文字列をさらに分割する境界が単語の区切りとなる確率を1から減算した値との総乗を、所定の文字列が単語となる確率として算出する。
【0069】
抽出部44は、算出部43により算出された確率に基づいて、検索対象文字列から単語とする文字列を抽出する。例えば、抽出部44は、算出部43が検索対象文字列から抽出した文字列と、その文字列が単語となる確率とを受付ける。このような場合、抽出部44は、確率が所定の閾値よりも高い文字列や、確率が高い方から順に所定の数の文字列を選択する。なお、抽出部44は、文字列に含まれる文字の数が増える程、閾値の値を減少させてもよく、文字数がより多い文字列を優先的に選択してもよい。
【0070】
生成部45は、抽出部44により抽出された単語に基づいて、検索対象のインデックスを生成する。例えば、生成部45は、抽出部44が選択した文字列を取得する。すなわち、生成部45は、検索対象コンテンツに含まれる各検索対象文字列から抽出された文字列であって、単語となる確率が高い文字列を取得する。このような場合、生成部45は、取得した文字列を集約することで、検索対象コンテンツのインデックスを生成する。
【0071】
例えば、生成部45は、インデックスデータベース33を参照し、抽出部44が選択した文字列がインデックスとして登録されているか否かを判定する。そして、生成部45は、抽出部44が選択した文字列がインデックスとして登録されている場合は、そのインデックスと対応付けられたコンテンツIDに、検索対象コンテンツのコンテンツIDを追加する。一方、生成部45は、抽出部44が選択した文字列がインデックスとして登録されていない場合は、そのインデックスと、検索対象コンテンツのコンテンツIDとを対応付けてインデックスデータベース33に登録する。また、生成部45は、検索対象文字列と検索対象コンテンツとを対応付けて検索対象コンテンツデータベース32に登録する。
【0072】
なお、生成部45は、文字数がより多い文字列を優先的に用いて、インデックスを生成してもよい。例えば、生成部45は、抽出部44が選択した文字列のうち、文字数がより多い文字列を優先的にインデックスとして登録してもよい。また、生成部45は、文字列とその文字列が単語となる確率(スコア)とを対応付けてインデックスとして登録してもよい。
【0073】
また、生成部45は、抽出部44が抽出した単語と、その単語に含まれる他の単語とをインデックスとしてもよい。例えば、生成部45は、形態素解析等の技術を用いて、抽出部44が選択した文字列から単語とする文字列をさらに抽出する。そして、生成部45は、抽出部44が選択した文字列と、その文字列から抽出した他の文字列とをインデックスとして登録してもよい。
【0074】
また、生成部45は、抽出部44が選択した各文字列のベクトル表現をインデックスとしてもよく、各文字列およびその文字列が単語となる確率との組を示すベクトル表現をインデックスとしてもよい。また、生成部45は、複数の文字列等から生成した複数のベクトル表現をマージした一つのベクトル表現をインデックスとしてもよい。
【0075】
検索部46は、生成処理によって生成されたインデックスを用いた検索処理を実行する。例えば、検索部46は、検索クエリを端末装置200から受付ける。このような場合、検索部46は、文字列が検索クエリと一致するインデックスや、検索クエリとの関連性が高いインデックスをインデックスデータベース33から特定する。そして、検索部46は、特定したインデックスと対応付けられたコンテンツIDをインデックスデータベース33から抽出する。また、検索部46は、抽出したコンテンツIDと対応付けられた検索対象コンテンツを検索対象コンテンツデータベース32から検索する。そして、検索部46は、検索した検索対象コンテンツのデータや、検索対象コンテンツの所在を示す検索結果を端末装置200へと配信する。なお、検索部46は、インデックスがベクトル表現である場合、検索クエリをベクトル表現へと変換した上で、検索クエリのベクトル表現とインデックスのベクトル表現とのコサイン類似度を算出し、コサイン類似度が所定の範囲内に収まる検索対象コンテンツを検索すればよい。
【0076】
〔3.生成処理の流れの一例〕
続いて、
図5を用いて、生成装置10が実行する処理の流れについて説明する。
図5は、実施形態にかかる生成装置が実行する生成処理の流れの一例を示すフローチャートである。例えば、生成装置10は、検索対象コンテンツに含まれる文章を検索対象文字列として抽出する(ステップS101)。続いて、生成装置10は、文章を所定の単位に分割する境界を設定する(ステップS102)。そして、生成装置10は、各境界が単語の区切りとなる確率を算出し(ステップS103)、文章から抽出可能な文字列について、境界が単語の区切りとなる確率に基づくスコアを算出する(ステップS104)。その後、生成装置10は、算出したスコアが所定の条件を満たす文字列に基づいて、検索対象コンテンツのインデックスを生成し(ステップS105)、処理を終了する。
【0077】
〔5.変形例〕
上記では、生成装置10による生成処理の一例について説明した。しかしながら、実施形態は、これに限定されるものではない。以下、生成装置10が実行する生成処理のバリエーションについて説明する。
【0078】
〔5−1.検索処理について〕
例えば、生成装置10は、上述した検索以外にも、任意の検索手法を用いた検索処理を実行してもよい。例えば、生成装置10は、検索クエリに対しても、所定の単位ごとに分割する境界を設定し、境界が単語の区切りとなる確率に基づいて、検索クエリから抽出可能な各文字列が単語となる確率を算出し、算出した確率が所定の閾値よりも高い文字列を用いて、インデックスの検索を行ってもよい。また、生成装置10は、インデックスに含まれる文字列と検索クエリから抽出した文字列とのマッチングを行い、インデックスに含まれる文字列が単語となる確率と、検索クエリから抽出した文字列が単語となる確率とに基づいて、検索クエリと検索対象コンテンツとの関連度を示すスコアを算出し、算出したスコアに基づくリスティングや検索処理を実行してもよい。また、生成装置10は、インデックスに含まれる文字列のうち、検索クエリや検索クエリから抽出した文字列と一致する文字列が単語となる確率やスコアの合計値に基づいて、検索結果のリスティングを行ってもよい。
【0079】
また、生成装置10は、再現率に基づく検索を行ってもよい。例えば、生成装置10は、検索クエリとなる文字列や検索クエリから抽出した文字列が、インデックスに含まれる文字列を再現する度合いである再現率を算出し、算出した再現率が所定の条件を満たす検索対象コンテンツを検索結果に含めてもよい。
【0080】
〔5−2.数式について〕
上述した生成装置10は、境界が単語の区切りとなる確率の総乗に基づいて、文字列が単語となる確率を算出した。しかしながら、実施形態は、これに限定されるものではない。例えば、生成装置10は、境界が単語の区切りとなる確率の総和等に基づいて、文字列が単語となる確率を算出してもよい。より具体的には、生成装置10は、境界が単語の区切りとなる確率の対数値の総和等に基づいて、文字列が単語となる確率を算出してもよい。すなわち、生成装置10は、境界が単語の区切りとなる確率に基づいて、文字列が単語となる確率やスコアを算出するのであれば、任意の数式を採用して良い。
【0081】
〔5−3.打ち切りについて〕
また、生成装置10は、インデックスを生成する際に、計算量を削減するための任意の処理を実行して良い。例えば、生成装置10は、2文字以上10文字以下の文字列について、単語となる確率を算出してもよい。また、例えば、生成装置10は、文字数が少ない文字列から順に単語となる確率を算出し、ある文字数の文字列において算出される確率が所定の閾値を下回るようになったら、その文字列よりも文字数が多い文字列については、インデックスの対象から除外してもよい。
【0082】
〔5−4.利用形態について〕
また、上述した生成装置10は、検索対象コンテンツの検索を行う際に用いるインデックスの生成処理を行う生成処理を実行した。しかしながら、実施形態は、これに限定されるものではない。例えば、検索対象文字列中に境界を設定し、設定した各境界が単語の区切りとなる確率に基づいて、検索対象文字列から抽出される文字列が単語となる確率を算出するのであれば、任意の処理に用いられてもよい。
【0083】
すなわち、検索対象文字列が抽出される文字列が単語となる確率とは、検索対象文字列が抽出される文字列が一塊の語として何かしらの意味を有する確率であり、ここでいう「単語」とは、所謂名詞等の単語に限定されるものではない。例えば、DNA(Deoxyribonucleic Acid)の配列には、所定の生体的な機能を発揮する配列部分が含まれる。そこで、生成装置10は、DNA全体やDNAの一部を検索対象文字列とし、配列部分を単語と見做すことで、所定の生体的な機能を発揮する可能性が高い配列部分をDNAの配列検索に用いるインデックスとして抽出してもよい。このような処理を実行した場合、例えば、辞書等にあらかじめ登録されていない配列部分であるが、所定の生体的な機能を発揮する可能性が高い配列部分をインデックスに含めることができる。
【0084】
また、生成装置10は、インデックスを検索処理に用いるのではなく、検索対象文字列が属する分野を特定するために用いることで、検索対象コンテンツの分類処理を実行してもよい。例えば、生成装置10は、検索対象文字列から生成したインデックスの内容に基づいて、検索対象文字列が属する分野(例えば、「スポーツ」や「政治」等)を特定し、検索対象コンテンツを特定した分野に属するコンテンツとしてもよい。
【0085】
〔5−5.インデックスについて〕
また、生成装置10は、任意の形式のインデックスを生成してもよい。例えば、生成装置10は、単語として抽出した各文字列が単語となる確率を要素とするベクトルをインデックスにしてもよい。また、生成装置10は、インデックスに含まれる文字列の数に上限を設定することで、検索処理における時間を短縮してもよい。
【0086】
〔5−6.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0087】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0088】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0089】
〔6.プログラム〕
また、上述してきた実施形態に係る生成装置10は、例えば
図6に示すような構成のコンピュータ1000によって実現される。
図6は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力IF(Interface)1060、入力IF1070、ネットワークIF1080がバス1090により接続された形態を有する。
【0090】
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。一次記憶装置1040は、RAM等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD、フラッシュメモリ等により実現される。
【0091】
出力IF1060は、モニタやプリンタといった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインタフェースであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力IF1070は、マウス、キーボード、およびスキャナ等といった各種の入力装置1020から情報を受信するためのインタフェースであり、例えば、USB等により実現される。
【0092】
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等から情報を読み出す装置であってもよい。また、入力装置1020は、USBメモリ等の外付け記憶媒体であってもよい。
【0093】
ネットワークIF1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
【0094】
演算装置1030は、出力IF1060や入力IF1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
【0095】
例えば、コンピュータ1000が生成装置10として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部40の機能を実現する。
【0096】
〔7.効果〕
上述したように、生成装置10は、検索対象コンテンツに含まれる検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。また、生成装置10は、算出された確率に基づいて、検索対象文字列から単語とする文字列を抽出する。そして、生成装置10は、抽出された単語に基づいて、検索対象コンテンツのインデックスを生成する。
【0097】
このため、生成装置10は、単語の可能性が高い文字列を全てインデックスに含めることができるので、例えば、単語の区切りが曖昧な言語であっても、トークナイズ揺れを起因とする検索漏れを軽減することができるので、検索精度を向上させることができる。また、生成装置10は、辞書等を用いずとも、単語の可能性が高い文字列を全てインデックスに含めることができるので、例えば、新語をインデックスに含めることができる結果、検索精度を向上させることができる。
【0098】
また、生成装置10は、文字列を一文字ごとに分割する各境界が単語の区切りとなる確率を算出し、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。このため、生成装置10は、日本語等、単語の区切りが曖昧な言語であっても、単語の可能性が高い文字列を全てインデックスに含めることができるので、検索精度を向上させることができる。
【0099】
また、生成装置10は、文字列を分割する所定の文字又は空白ごとに、その所定の文字又は空白が単語の区切りとなる確率を算出し、算出した確率に基づいて、境界に挟まれる文字列が単語となる確率を算出する。このため、生成装置10は、例えば、複数の単語からなる複合語を一つの単語としてインデックスに含めることができるので、利用者の意図を検索処理に反映させることができる結果、検索精度を向上させることができる。
【0100】
また、生成装置10は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、その所定の文字列をさらに分割する境界が単語の区切りとはならない確率とに基づいて、その所定の文字列が単語となる確率を算出する。例えば、生成装置10は、検索対象文字列に含まれる所定の文字列を挟む各境界が単語の区切りとなる確率と、その所定の文字列をさらに分割する境界が単語の区切りとなる確率を1から減算した値との総乗を、その所定の文字列が単語となる確率として算出する。このため、生成装置10は、文字列が単語となる確率を適切に算出することができる。
【0101】
また、生成装置10は、算出された確率が所定の閾値よりも高い文字列を検索対象文字列から抽出する。また、生成装置10は、算出された確率が高い方から順に所定の数の文字列を検索対象文字列から抽出する。また、生成装置10は、文字数がより多い文字列を優先的に用いて、インデックスを生成する。これらの処理の結果、生成装置10は、検索処理における網羅性を保持しつつ、特定性を向上させることができる。
【0102】
また、生成装置10は、境界に挟まれる文字列であって、検索対象文字列から抽出可能な全ての文字列について、その文字列が単語となる確率を算出する。このため、生成装置10は、検索処理における網羅性を担保することができる。
【0103】
また、生成装置10は、境界に挟まれる文字列であって、文字数が所定の閾値以下となる文字列が単語となる確率を算出する。このため、生成装置10は、検索処理に要する処理負荷を削減することができる。
【0104】
また、生成装置10は、抽出した文字列を検索対象コンテンツのインデックスとする。このため、生成装置10は、検索対象コンテンツのインデックスを精度良く生成することができる。
【0105】
また、生成装置10は、単語の区切りとなる境界の特徴を学習したモデルを用いて、検索対象文字列を所定の単位ごとに分割する境界が単語の区切りとなる確率を算出する。このため、生成装置10は、各境界が単語の区切りとなる確率を精度よく算出することができる。
【0106】
また、生成装置10は、抽出した文字列と、その文字列に含まれる他の文字列とを検索対象コンテンツのインデックスとする。このため、生成装置10は、複合語を構成する各単語をインデックスに含めることができるので、検索処理における網羅性を担保することができる。
【0107】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【0108】
また、上記してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、抽出部は、抽出手段や抽出回路に読み替えることができる。