(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023132977
(43)【公開日】2023-09-22
(54)【発明の名称】検索プログラム、装置、及び方法
(51)【国際特許分類】
G06F 16/36 20190101AFI20230914BHJP
【FI】
G06F16/36
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022038611
(22)【出願日】2022-03-11
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】志村 将吾
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175GB04
5B175HB03
(57)【要約】
【課題】肯定文と否定文とを区別して文書を検索する。
【解決手段】検索装置は、検索テキストを受け付けると、機械学習により生成された単語ベクトルと検索テキストに含まれる一又は複数の単語とに基づいて、検索テキストに含まれる文章毎の文章ベクトルを生成し、検索テキストに否定を示す文章が含まれている場合、その文章の文章ベクトルを特定の角度回転させて、肯定文の文章ベクトルと合成した検索ベクトルを生成し、検索テキストに否定を示す文章が含まれていない場合、各文章ベクトルをそのまま合成した検索ベクトルを生成し、生成した検索ベクトルを用いてテキストの検索処理を実行する。検索処理の対象となる文書も同様の方法でベクトル化されている。
【選択図】
図10
【特許請求の範囲】
【請求項1】
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
処理をコンピュータに実行させることを特徴とする検索プログラム。
【請求項2】
前記単語を示すベクトルは、意味を持つ単語の原形の分散表現である、
ことを特徴とする請求項1に記載の検索プログラム。
【請求項3】
前記検索テキストが複数の文章を含む場合、前記文章毎に、前記各単語を示すベクトルと前記文章に含まれる一又は複数の単語とに基づいて、前記文章を示す第3のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在しない場合、前記複数の文章についての前記第3のベクトルを合成して前記第1のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在する場合、前記否定を示す語が含まれている文章について、前記第3のベクトルを前記特定の角度回転させた第4のベクトルを生成し、前記複数の文章について、前記否定を示す語が含まれていない文章については前記第3のベクトル、前記否定を示す語が含まれている文章については前記第4のベクトルを合成して前記第2のベクトルを生成する、
ことを特徴とする請求項1又は請求項2に記載の検索プログラム。
【請求項4】
前記第2のベクトルを生成する処理は、前記第4のベクトルを所定倍に増幅させて合成することを含む、
ことを特徴とする請求項3に記載の検索プログラム。
【請求項5】
前記特定の角度は、90度又はマイナス90度である、
ことを特徴とする請求項1~請求項4のいずれか1項に記載の検索プログラム。
【請求項6】
前記コンピュータに、さらに、複数の検索対象文書の各々について、前記否定を示す語が含まれていない検索対象文書については前記第1のベクトルを生成し、前記否定を示す語が含まれている検索対象文書については前記第2のベクトルを生成して記憶部に記憶する処理を実行させ、
前記テキストの検索処理は、前記検索テキストを示す前記第1のベクトル又は前記第2のベクトルと、前記記憶部に記憶された前記複数の検索対象文書の各々を示す前記第1のベクトル又は前記第2のベクトルとの類似度に基づいて、前記検索テキストに類似する前記検索対象文書を検索することを含む、
ことを特徴とする請求項1~請求項5のいずれか1項に記載の検索プログラム。
【請求項7】
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
制御部を含むことを特徴とする検索装置。
【請求項8】
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
処理をコンピュータが実行することを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、検索プログラム、検索装置、及び検索方法に関する。
【背景技術】
【0002】
従来、クエリとなる検索テキストの意味に基づいて、検索テキストに関連する文書を検索すること(以下、「意味検索」という)が行われている。意味検索では、検索対象となる文書群や学習用の文書群の単語の意味について機械学習が実行される。そして、機械学習により得られた単語の意味に基づいて、検索テキストや検索対象となる文書(以下、「検索対象文書」という)の意味を解析して文書検索が実行される。例えば、意味検索では、機械学習により、単語の意味が分散表現(ベクトル)として得られる。また、単語の分散表現を使って、検索テキストや検索対象文書も分散表現に変換される。そして、意味検索では、分散表現された検索テキストと検索対象文書との距離を計算することで、意味的に近い又は遠いが判断され、検索結果に反映される。これにより、単純な文字列マッチによる検索では拾い落していたような文書を検索することができるようになる。
【0003】
例えば、暗号化された文書についてのセキュアなブール検索を実行するための方法が提案されている。この方法では、各々の文書がキーワードのセットにより特徴付けられ、全ての文書を特徴付ける全てのキーワードが、索引を形成し、索引の各々のキーワードが正規直交基底の唯一無二のベクトルに対応する、正規直交基底に変換される。また、各々の文書が、正規直交基底のスパン内の合成ベクトルに関連付けられ、合成ベクトルが、暗号化された検索サーバに格納されている全ての文書に対応する。そして、この方法は、クエリアから検索クエリを受信し、検索クエリを1つのクエリ行列に変換し、クエリ行列と合成ベクトルとの間の乗算の結果に基づいて全体的な結果を決定する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、意味検索において、単語の分散表現は、単語の原形について機械学習が実行されており、このため、肯定文の分散表現と否定文の分散表現とが同一になってしまうという問題がある。すなわち、検索対象文書が肯定文であっても否定文であっても、検索テキストに対する検索結果が同じになってしまうという問題がある。
【0006】
一つの側面として、開示の技術は、肯定文と否定文とを区別して文書を検索することを目的とする。
【課題を解決するための手段】
【0007】
一つの態様として、開示の技術は、検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成する。そして、開示の技術は、前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行する。また、開示の技術は、前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する。
【発明の効果】
【0008】
一つの側面として、肯定文と否定文とを区別して文書を検索することができる、という効果を有する。
【図面の簡単な説明】
【0009】
【
図1】検索システムの概略構成を示すブロック図である。
【
図2】データ記憶装置、生成装置、及び検索装置の機能ブロック図である。
【
図7】否定文の文章ベクトルを反転させる場合の問題を説明するための図である。
【
図8】否定文の文章ベクトルを反転させる場合の問題を説明するための図である。
【
図9】否定文の文章ベクトルを回転させる場合を説明するための図である。
【
図10】否定文の文章ベクトルを回転させる場合を説明するための図である。
【
図11】生成装置として機能するコンピュータの概略構成を示すブロック図である。
【
図12】検索装置として機能するコンピュータの概略構成を示すブロック図である。
【
図13】生成処理の一例を示すフローチャートである。
【
図14】検索処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。
【0011】
図1に示すように、本実施形態に係る検索システム100は、データ記憶装置10と、生成装置20と、検索装置30と、ユーザ端末40とを含む。
図2に、データ記憶装置10、生成装置20、及び検索装置30の各々の機能的な構成を示す。
【0012】
ユーザ端末40は、ユーザにより使用される情報処理端末であり、例えば、パーソナルコンピュータ、タブレット端末、スマートフォン等である。ユーザ端末40は、ユーザにより入力される文書検索のクエリとなる検索テキストを検索装置30へ送信する。検索テキストは、1以上の文章を含む文書であってよい。また、ユーザ端末40は、検索装置30から送信される検索結果を取得し、表示装置に検索結果を表示する。
【0013】
データ記憶装置10には、
図2に示すように、文書DB(database)11と、単語ベクトルDB12と、文書ベクトルDB13とが記憶される。
【0014】
文書DB11には、複数の検索対象文書が記憶される。
図3に、文書DB11の一例を示す。
図3の例では、文書DB11には、各検索対象文書の識別情報である文書IDと、検索対象文書(テキストデータ)とが対応付けて記憶されている。
【0015】
単語ベクトルDB12には、生成装置20において機械学習により生成された複数の単語ベクトル(詳細は後述)が記憶される。
図4に、単語ベクトルDB12の一例を示す。
図4の例では、単語ベクトルDB12には、各単語の識別情報である単語IDと、単語(テキストデータ)と、その単語の単語ベクトルとが対応付けて記憶されている。
【0016】
文書ベクトルDB13には、文書DB11に記憶された各検索対象文書について、生成装置20において生成された複数の文書ベクトル(詳細は後述)が記憶される。
図5に、文書ベクトルDB13の一例を示す。
図5の例では、文書ベクトルDB13には、文書IDと、その文書IDが示す検索対象文書の文書ベクトルとが対応付けて記憶されている。
【0017】
生成装置20は、機能的には、
図2に示すように、機械学習部21と、生成部22とを含む。
【0018】
機械学習部21は、文書DB11に記憶された複数の検索対象文書の各々を取得し、取得した検索対象文書の各々に対して形態素解析を行い、形態素解析結果から、品詞が名詞、動詞、形容詞等である意味を持つ単語の原形を抽出する。機械学習部21は、抽出した単語の原形から、例えばニューラルネットワークを用いて機械学習を実行することにより、単語の意味の分散表現として、例えばWord2Vecのような単語ベクトルを生成する。機械学習部21は、生成した単語ベクトルを単語ベクトルDB12に記憶する。
【0019】
生成部22は、文書DB11に記憶された複数の検索対象文書、及び単語ベクトルDB12に記憶された複数の単語ベクトルを取得し、単語ベクトルを用いて各検索対象文書を表す文書ベクトルを生成する。
【0020】
ここで、単語ベクトルを用いて文書ベクトルを生成する一般的な方法として、例えば、下記(1)式により、N種類の単語から構成される文書の文書ベクトルDvを計算することが考えられる。
【0021】
【0022】
ただし、Wv(i)は、文書中に出現する単語iの分散表現、すなわち単語ベクトルである。TF(i)は、単語iの文書中での出現回数を全単語の出現回数で割った値、すなわち単語iの文書中の出現頻度である。IDF(i)は、単語iが文書群の中でいくつの文書で使用されているかを示す値の逆数である。
【0023】
しかし、機械学習部21で生成された単語ベクトルは、単語の原形の分散表現であり、また、検索対象文書内に含まれる単語のうち、意味を持たない単語は機械学習による単語ベクトルが生成されていない。そのため、上記(1)式のように文書ベクトルを計算した場合には、肯定文と否定文とで文書ベクトルが同一になってしまう。例えば、「会社に行く」という文書と「会社に行かない」という文書とでは、いずれも「会社」及び「行く」の2単語の単語ベクトルのみを使って文書ベクトルが計算されるため、いずれも同一の文書ベクトルになってしまう。そのため、「会社に行く」という肯定文と、「会社に行かない」という否定文とを区別した検索を行うことができない。
【0024】
そこで、生成部22は、各単語ベクトルと、検索対象文書に含まれる一又は複数の単語とに基づいて文書ベクトルを生成し、検索対象文書に否定を示す語が含まれていない場合、この文書ベクトルを検索処理に用いる文書ベクトルとする。一方、検索対象文書に否定を示す語が含まれている場合、生成部22は、特定の角度回転させた文書ベクトルを検索処理に用いる文書ベクトルとする。
【0025】
また、生成部22は、検索対象文書が複数の文章を含む場合、文章毎に、各単語ベクトルと、文章に含まれる一又は複数の単語とに基づいて文章ベクトルを生成する。そして、生成部22は、検索対象文書に否定を示す語が含まれている文章が存在しない場合、複数の文章についての文章ベクトルを合成して文書ベクトルを生成する。一方、検索対象文書に否定を示す語が含まれている文章が存在する場合、否定を示す語が含まれている文章の文章ベクトルを特定の角度回転させたうえで、複数の文章についての文章ベクトルを合成して文書ベクトルを生成する。
【0026】
具体的には、生成部22は、文書DB11から取得した検索対象文書の各々を文章毎に分割する。例えば、生成部22は、読点、句点、感嘆符、疑問符、括弧等を基準に検索対象文書を文章毎に分割する。生成部22は、各文章について、下記(2)式により、文章ベクトルSvを計算する。ただし、(2)式において、TF(i)は、単語iの検索対象文書中の出現回数ではなく、文章中の出現回数を、検索対象文書中の全単語の出現回数で割った値とする。
【0027】
【0028】
また、生成部22は、文章が「ない(助動詞)」、「ぬ(助動詞)」等の否定を表す単語で終わるか否かに基づいて、各文章が否定文か否かを判定する。否定を表す単語は予め定めておけばよい。生成部22は、否定文と判定した文章の文章ベクトルを特定の2軸の平面で、特定の角度回転させる。回転させる平面は任意に定めておいてよいが、回転させる全ての文章ベクトルで同じ平面を使用するように設定する。
【0029】
特定の角度は、例えば、90度又は-90度を中心とした所定範囲に含まれる角度(例えば、90度又は-90度)としてよい。所定範囲は、90度-α度~90度+β度、又は-90度+α度~-90度-β度の範囲(α及びβは0より大きく、かつ90未満の値)としてよい。回転させる角度が小さ過ぎると、否定文と肯定文とを区別する効果が低くなるため、この効果が得られるように予めαの値を定めておけばよい。また、ベクトルを回転させる角度が180度又は-180度に近い場合には、否定文の成分が肯定文の成分に打ち消されるという問題が生じるため(詳細は後述)、この問題が生じないように予めβの値を定めておけばよい。また、例えば、テストケースの文書及び検索テキストを用意し、検索テキストに対する検索結果が良好になる角度を総当たり的な方法で見つけて設定するようにしてもよい。
【0030】
また、生成部22は、特定の角度回転させた否定文の文章ベクトルを所定倍に増幅する。この理由は、一般的に文書中の文章は肯定文の割合が否定文より圧倒的に多く、また、文書ベクトルは文章ベクトルの和とするため(詳細は後述)、増幅を行うことで否定文の成分が文書ベクトルにおいて埋もれないようにするためである。所定倍は、予め定めた一定値としてもよいし、検索対象文書に含まれる肯定文と否定文との割合に基づく値としてもよい。例えば、生成部22は、検索対象文書に含まれる肯定文が4個、否定文が1個の場合、回転させた否定文の文章ベクトルを4倍に増幅するようにしてよい。
【0031】
生成部22は、肯定文の文章ベクトルと、特定の角度回転させ増幅させた否定文の文章ベクトルとを合成して、文書ベクトルを生成する。具体的には、生成部22は、検索対象文書にM個の文章が含まれる場合、下記(3)式により文書ベクトルDvを計算する。なお、(3)式におけるSv(j)は、文章jが否定文の場合、特定の角度回転して増幅した文章ベクトルである。生成部22は、生成した文書ベクトルを文書ベクトルDB13に記憶する。
【0032】
【0033】
検索装置30は、機能的には、
図2に示すように、生成部31と、検索部32とを含む。
【0034】
生成部31は、ユーザ端末40から送信された検索テキストを取得し、検索テキストを表す検索ベクトルを生成する。検索ベクトルの生成方法は、生成装置20の生成部22において、検索対象文書の文書ベクトルを生成する方法と同様である。すなわち、生成部31は、取得した検索テキストを文章毎に分割し、各文章について、単語ベクトルDB12に記憶された単語ベクトルを用いて、例えば(2)式により文章ベクトルを計算する。また、生成部31は、各文章が否定文か否かを判定し、否定文と判定した文章の文章ベクトルを特定の角度回転させ、所定倍に増幅する。そして、生成部31は、肯定文の文章ベクトルと、特定の角度回転させ増幅させた否定文の文章ベクトルとを、例えば(3)式により合成して、検索テキストを表す検索ベクトルを生成する。
【0035】
検索部32は、生成部31により生成された検索テキストを表す検索ベクトルと、文書ベクトルDB13に記憶された、複数の検索対象文書の各々を表す文書ベクトルの各々とを用いて、検索テキストと検索対象文書の各々との類似度を算出する。例えば、類似度は、検索ベクトルと文書ベクトルとのコサイン類似度としてよい。検索部32は、算出した類似度に基づいて検索対象文書の検索結果を作成し、ユーザ端末40へ送信する。検索結果は、例えば、検索テキストとの類似度が高い順に所定個の検索対象文書や、類似度が所定値以上の検索対象文書をリスト化したものであってよい。
【0036】
ここで、検索対象文書を表す文書ベクトル、及び検索テキストを表す検索ベクトルを生成する際における、否定文の文章ベクトルを反転させる場合の問題点について説明する。文章ベクトルを反転させる場合とは、すなわち、文章ベクトルを180度又は-180度回転させる場合である。この場合、反転させた否定文の文章ベクトルと、肯定文の文章ベクトルとの打消しが発生し、これらを合成した場合に適切な文書ベクトルが生成されない。そこで、否定文の文章ベクトルを回転させる特定の角度からは、180度又は-180度を除外する。この理由を具体的に説明する。
【0037】
一例として、「昨日は会社に行った。今日は会社に行かない。明日は会社に行くつもりだ。」という検索対象文書があるとする。この検索対象文書を文章で分割し、文章1「昨日は会社に行った。」、文章2「今日は会社に行かない」、文章3「明日は会社に行くつもりだ。」とする。また、文章1、2、3の各々について、文章ベクトル1、2、3が生成される。
図6に、文章ベクトル1、2、3の一例を示す。なお、ベクトル空間は、ベクトルの要素数分のN次元空間であるが、
図6では、説明を簡単にするため2次元としている。以下の
図7~
図10も同様である。文章2は否定文であるが、文章ベクトルを生成する際には、「会社」及び「行く」という単語の原形の単語ベクトルが用いられるため、
図6に示すように、文章ベクトル1、2、3とも近似したベクトルとなってしまう。
【0038】
そこで、
図7に示すように、否定文である文章2の文章ベクトル2を反転させて、文章ベクトル1及び3と合成して文書ベクトルを生成するとする。この場合、肯定文である文章1及び3の文章ベクトル1及び3と、否定文である文章2の文章ベクトル2とが打ち消し合う形となる。そのため、生成される文書ベクトルは、肯定文の文章ベクトルと同様の方向に伸びたベクトルとなり、否定文の成分が打ち消されてしまう。
【0039】
これに対して、「会社に行かない。」という検索テキストで検索する場合を考える。検索テキストの場合も同様に、否定文の文章ベクトルを反転させると、検索ベクトルは、
図8に示すように、上記検索対象文書の文章ベクトル2を反転させたベクトルと、ほぼ同様の方向に延びるベクトルとなる。この場合、検索ベクトルと、検索対象文書の文書ベクトルとのコサイン類似度の値は小さくなってしまう。
【0040】
本実施形態では、
図9に示すように、否定文の文章ベクトルを、180度又は-180度を除く範囲の角度(例えば、90度又は-90度)で回転させることで、上記のように否定文の成分が打ち消されることを抑制して、文書ベクトルを生成することができる。なお、
図9は、否定文の文章ベクトルの回転と共に、増幅も行った例である。上記の「会社に行かない」という検索テキストも同様の方法で検索ベクトルを生成することで、
図10に示すように、否定文の文章ベクトルを反転させた場合に比べ、文書ベクトルとのコサイン類似度が大きくなる。また、文章2が「今日は会社に行く。」であり、否定文を含まない検索対象文書と比較した場合について説明する。否定文を含む検索テキストを表す検索ベクトルは、否定文を含まない検索対象文書の文書ベクトルとのコサイン類似度よりも、否定文を含む検索対象文書の文書ベクトルとのコサイン類似度の方が大きくなる。すなわち、本実施形態では、否定文を含む検索テキストで検索を行う場合、否定文を含む検索対象文書を、否定文を含まない検索対象文書より意味的に近いものとして検索することが可能になる。
【0041】
生成装置20は、例えば
図11に示すコンピュータ50で実現されてよい。コンピュータ50は、CPU(Central Processing Unit)51と、一時記憶領域としてのメモリ52と、不揮発性の記憶部53とを備える。また、コンピュータ50は、入力部、表示部等の入出力装置54と、記憶媒体59に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)部55とを備える。また、コンピュータ50は、インターネット等のネットワークに接続される通信I/F(Interface)56を備える。CPU51、メモリ52、記憶部53、入出力装置54、R/W部55、及び通信I/F56は、バス57を介して互いに接続される。
【0042】
記憶部53は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等によって実現されてよい。記憶媒体としての記憶部53には、コンピュータ50を、生成装置20として機能させるための生成プログラム60が記憶される。生成プログラム60は、機械学習プロセス61と、生成プロセス62とを有する。
【0043】
CPU51は、生成プログラム60を記憶部53から読み出してメモリ52に展開し、生成プログラム60が有するプロセスを順次実行する。CPU51は、機械学習プロセス61を実行することで、
図2に示す機械学習部21として動作する。また、CPU51は、生成プロセス62を実行することで、
図2に示す生成部22として動作する。これにより、生成プログラム60を実行したコンピュータ50が、生成装置20として機能することになる。なお、プログラムを実行するCPU51はハードウェアである。
【0044】
検索装置30は、例えば
図12に示すコンピュータ70で実現されてよい。コンピュータ70は、CPU71と、一時記憶領域としてのメモリ72と、不揮発性の記憶部73とを備える。また、コンピュータ70は、入出力装置74と、記憶媒体79に対するデータの読み込み及び書き込みを制御するR/W部75と、通信I/F76とを備える。CPU71、メモリ72、記憶部73、入出力装置74、R/W部75、及び通信I/F76は、バス77を介して互いに接続される。
【0045】
記憶部73は、HDD、SSD、フラッシュメモリ等によって実現されてよい。記憶媒体としての記憶部73には、コンピュータ70を、検索装置30として機能させるための検索プログラム80が記憶される。検索プログラム80は、生成プロセス81と、検索プロセス82とを有する。
【0046】
CPU71は、検索プログラム80を記憶部73から読み出してメモリ72に展開し、検索プログラム80が有するプロセスを順次実行する。CPU71は、生成プロセス81を実行することで、
図2に示す生成部31として動作する。また、CPU71は、検索プロセス82を実行することで、
図2に示す検索部32として動作する。これにより、検索プログラム80を実行したコンピュータ70が、検索装置30として機能することになる。なお、プログラムを実行するCPU71はハードウェアである。
【0047】
なお、生成プログラム60及び検索プログラム80の各々により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
【0048】
次に、本実施形態に係る検索システム100の作用について説明する。文書DB11に複数の検索対象文書が記憶された状態で、生成装置20に単語ベクトル及び文書ベクトルの生成が指示されると、生成装置20が、
図13に示す生成処理を実行する。そして、生成装置20により生成された単語ベクトル及び文書ベクトルがそれぞれ単語ベクトルDB12及び文書ベクトルDB13に記憶される。この状態で、検索装置30がユーザ端末40から送信された検索テキストを受信すると、検索装置30が、
図14に示す検索処理を実行する。以下、生成処理及び検索処理の各々について詳述する。なお、検索処理は、開示の技術の検索方法の一例である。
【0049】
まず、
図13に示す生成処理について説明する。
ステップS11で、機械学習部21が、文書DB11に記憶された複数の検索対象文書の各々を取得する。次に、ステップS12で、機械学習部21が、取得した検索対象文書の各々に対して形態素解析を行い、形態素解析結果から、品詞が名詞、動詞、形容詞等である意味を持つ単語の原形を抽出する。そして、機械学習部21が、抽出した単語の原形から、例えばニューラルネットワークを用いて機械学習を実行することにより、単語ベクトルを生成する。機械学習部21は、生成した単語ベクトルを単語ベクトルDB12に記憶する。
【0050】
次に、ステップS13で、生成部22が、取得された複数の検索対象文書から、以下のステップS14~S16の処理が未処理の検索対象文書を1つ選択する。次に、ステップS14で、生成部22が、選択した検索対象文書を文章毎に分割し、単語ベクトルDB12に記憶された単語ベクトルを用いて、文章毎の文章ベクトルを生成する。
【0051】
次に、ステップS15で、生成部22が、各文章が否定文か否かを判定し、否定文と判定した文章の文章ベクトルを特定の2軸の平面で、特定の角度回転させ、所定倍に増幅する。次に、ステップS16で、生成部22が、上記ステップS14で生成した肯定文の文章ベクトルと、上記ステップS15で特定の角度回転させ増幅させた否定文の文章ベクトルとを合成して、選択した検索対象文書を表す文書ベクトルを生成する。生成部22は、生成した文書ベクトルを文書ベクトルDB13に記憶する。
【0052】
次に、ステップS17で、生成部22が、取得した全ての検索対象文書について、文書ベクトルを生成する処理を終了したか否かを判定する。未処理の検索対象文書が存在する場合には、ステップS13に戻り、全ての検索対象文書について処理が終了した場合には、生成処理は終了する。
【0053】
次に、
図14に示す検索処理について説明する。
ステップS21で、生成部31が、ユーザ端末40から送信された検索テキストを取得する。次に、ステップS22で、生成部31が、上記生成処理(
図13)のステップS14と同様の処理で、検索テキストの文章毎の文章ベクトルを生成する。次に、ステップS23で、生成部31が、各文章が否定文か否かを判定し、否定文と判定した文章の文章ベクトルを特定の角度回転させ、所定倍に増幅する。次に、ステップS24で、生成部31が、肯定文の文章ベクトルと、特定の角度回転させ増幅させた否定文の文章ベクトルとを合成して、検索テキストを表す検索ベクトルを生成する。
【0054】
次に、ステップS25で、検索部32が、上記ステップS24で生成された検索ベクトルと、文書ベクトルDB13に記憶された複数の文書ベクトルの各々とを用いて、検索テキストと検索対象文書の各々との類似度を算出する。次に、ステップS26で、検索部32が、算出した類似度に基づいて検索対象文書の検索結果を作成し、ユーザ端末40へ送信し、検索処理は終了する。
【0055】
以上説明したように、本実施形態に係る検索システムによれば、検索装置は、検索テキストを受け付けると、各単語を示すベクトルと検索テキストに含まれる一又は複数の単語とに基づいて、検索テキストに含まれる文章毎の文章ベクトルを生成する。そして、検索装置は、検索テキストに否定を示す文章が含まれている場合、その文章の文章ベクトルを特定の角度回転させて、肯定文の文章ベクトルと合成した検索ベクトルを生成し、その検索ベクトルを用いてテキストの検索処理を実行する。一方、検索装置は、検索テキストに否定を示す文章が含まれていない場合、各文章ベクトルをそのまま合成した検索ベクトルを用いてテキストの検索処理を実行する。検索処理の対象となる文書も同様の方法でベクトル化されている。これにより、肯定文と否定文とを区別して文書を検索することができる。
【0056】
なお、上記実施形態では、生成装置と検索装置とを別々のコンピュータで実現する場合について説明したが、1つのコンピュータで実現するようにしてもよい。また、上記実施形態では、文書DB、単語ベクトルDB、及び文書ベクトルDBがデータ記憶装置に記憶されている場合について説明したが、これらのDBは、例えば検索装置の所定の記憶領域に記憶されてもよい。
【0057】
また、上記実施形態では、生成プログラム及び検索プログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD-ROM、DVD-ROM、USBメモリ等の記憶媒体に記憶された形態で提供することも可能である。
【0058】
以上の実施形態に関し、さらに以下の付記を開示する。
【0059】
(付記1)
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
処理をコンピュータに実行させることを特徴とする検索プログラム。
【0060】
(付記2)
前記単語を示すベクトルは、意味を持つ単語の原形の分散表現である、
ことを特徴とする付記1に記載の検索プログラム。
【0061】
(付記3)
前記検索テキストが複数の文章を含む場合、前記文章毎に、前記各単語を示すベクトルと前記文章に含まれる一又は複数の単語とに基づいて、前記文章を示す第3のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在しない場合、前記複数の文章についての前記第3のベクトルを合成して前記第1のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在する場合、前記否定を示す語が含まれている文章について、前記第3のベクトルを前記特定の角度回転させた第4のベクトルを生成し、前記複数の文章について、前記否定を示す語が含まれていない文章については前記第3のベクトル、前記否定を示す語が含まれている文章については前記第4のベクトルを合成して前記第2のベクトルを生成する、
ことを特徴とする付記1又は付記2に記載の検索プログラム。
【0062】
(付記4)
前記第2のベクトルを生成する処理は、前記第4のベクトルを所定倍に増幅させて合成することを含む、
ことを特徴とする付記3に記載の検索プログラム。
【0063】
(付記5)
前記特定の角度は、90度又はマイナス90度である、
ことを特徴とする付記1~付記4のいずれか1項に記載の検索プログラム。
【0064】
(付記6)
前記コンピュータに、さらに、複数の検索対象文書の各々について、前記否定を示す語が含まれていない検索対象文書については前記第1のベクトルを生成し、前記否定を示す語が含まれている検索対象文書については前記第2のベクトルを生成して記憶部に記憶する処理を実行させ、
前記テキストの検索処理は、前記検索テキストを示す前記第1のベクトル又は前記第2のベクトルと、前記記憶部に記憶された前記複数の検索対象文書の各々を示す前記第1のベクトル又は前記第2のベクトルとの類似度に基づいて、前記検索テキストに類似する前記検索対象文書を検索することを含む、
ことを特徴とする付記1~付記5のいずれか1項に記載の検索プログラム。
【0065】
(付記7)
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
制御部を含むことを特徴とする検索装置。
【0066】
(付記8)
前記単語を示すベクトルは、意味を持つ単語の原形の分散表現である、
ことを特徴とする付記7に記載の検索装置。
【0067】
(付記9)
前記制御部は、
前記検索テキストが複数の文章を含む場合、前記文章毎に、前記各単語を示すベクトルと前記文章に含まれる一又は複数の単語とに基づいて、前記文章を示す第3のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在しない場合、前記複数の文章についての前記第3のベクトルを合成して前記第1のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在する場合、前記否定を示す語が含まれている文章について、前記第3のベクトルを前記特定の角度回転させた第4のベクトルを生成し、前記複数の文章について、前記否定を示す語が含まれていない文章については前記第3のベクトル、前記否定を示す語が含まれている文章については前記第4のベクトルを合成して前記第2のベクトルを生成する、
ことを特徴とする付記7又は付記8に記載の検索装置。
【0068】
(付記10)
前記第2のベクトルを生成する処理は、前記第4のベクトルを所定倍に増幅させて合成することを含む、
ことを特徴とする付記9に記載の検索装置。
【0069】
(付記11)
前記特定の角度は、90度又はマイナス90度である、
ことを特徴とする付記7~付記10のいずれか1項に記載の検索装置。
【0070】
(付記12)
前記制御部は、さらに、複数の検索対象文書の各々について、前記否定を示す語が含まれていない検索対象文書については前記第1のベクトルを生成し、前記否定を示す語が含まれている検索対象文書については前記第2のベクトルを生成して記憶部に記憶する処理を実行し、
前記テキストの検索処理は、前記検索テキストを示す前記第1のベクトル又は前記第2のベクトルと、前記記憶部に記憶された前記複数の検索対象文書の各々を示す前記第1のベクトル又は前記第2のベクトルとの類似度に基づいて、前記検索テキストに類似する前記検索対象文書を検索することを含む、
ことを特徴とする付記7~付記11のいずれか1項に記載の検索装置。
【0071】
(付記13)
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
処理をコンピュータが実行することを特徴とする検索方法。
【0072】
(付記14)
前記単語を示すベクトルは、意味を持つ単語の原形の分散表現である、
ことを特徴とする付記13に記載の検索方法。
【0073】
(付記15)
前記検索テキストが複数の文章を含む場合、前記文章毎に、前記各単語を示すベクトルと前記文章に含まれる一又は複数の単語とに基づいて、前記文章を示す第3のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在しない場合、前記複数の文章についての前記第3のベクトルを合成して前記第1のベクトルを生成し、
前記検索テキストに前記否定を示す語が含まれている文章が存在する場合、前記否定を示す語が含まれている文章について、前記第3のベクトルを前記特定の角度回転させた第4のベクトルを生成し、前記複数の文章について、前記否定を示す語が含まれていない文章については前記第3のベクトル、前記否定を示す語が含まれている文章については前記第4のベクトルを合成して前記第2のベクトルを生成する、
ことを特徴とする付記13又は付記14に記載の検索方法。
【0074】
(付記16)
前記第2のベクトルを生成する処理は、前記第4のベクトルを所定倍に増幅させて合成することを含む、
ことを特徴とする付記15に記載の検索方法。
【0075】
(付記17)
前記特定の角度は、90度又はマイナス90度である、
ことを特徴とする付記13~付記16のいずれか1項に記載の検索方法。
【0076】
(付記18)
前記コンピュータは、さらに、複数の検索対象文書の各々について、前記否定を示す語が含まれていない検索対象文書については前記第1のベクトルを生成し、前記否定を示す語が含まれている検索対象文書については前記第2のベクトルを生成して記憶部に記憶する処理を実行し、
前記テキストの検索処理は、前記検索テキストを示す前記第1のベクトル又は前記第2のベクトルと、前記記憶部に記憶された前記複数の検索対象文書の各々を示す前記第1のベクトル又は前記第2のベクトルとの類似度に基づいて、前記検索テキストに類似する前記検索対象文書を検索することを含む、
ことを特徴とする付記13~付記17のいずれか1項に記載の検索方法。
【0077】
(付記19)
検索テキストを受け付けると、各単語を示すベクトルと前記検索テキストに含まれる一又は複数の単語とに基づいて、前記検索テキストを示す第1のベクトルを生成し、
前記検索テキストに否定を示す語が含まれている場合、前記第1のベクトルを特定の角度回転させた第2のベクトルを生成し、前記第2のベクトルを用いてテキストの検索処理を実行し、
前記検索テキストに前記否定を示す語が含まれていない場合、前記第1のベクトルを用いてテキストの検索処理を実行する、
処理をコンピュータに実行させることを特徴とする検索プログラムを記憶した非一時的記憶媒体。
【符号の説明】
【0078】
100 検索システム
10 データ記憶装置
11 文書DB
12 単語ベクトルDB
13 文書ベクトルDB
20 生成装置
21 機械学習部
22 生成部
30 検索装置
31 生成部
32 検索部
40 ユーザ端末
50、70 コンピュータ
51、71 CPU
52、72 メモリ
53、73 記憶部
54、74 入出力装置
55、75 R/W部
56、76 通信I/F
57、77 バス
59、79 記憶媒体
60 生成プログラム
61 機械学習プロセス
62 生成プロセス
80 検索プログラム
81 生成プロセス
82 検索プロセス