JP2017107472A - 文字列検索方法および装置 - Google Patents
文字列検索方法および装置 Download PDFInfo
- Publication number
- JP2017107472A JP2017107472A JP2015241887A JP2015241887A JP2017107472A JP 2017107472 A JP2017107472 A JP 2017107472A JP 2015241887 A JP2015241887 A JP 2015241887A JP 2015241887 A JP2015241887 A JP 2015241887A JP 2017107472 A JP2017107472 A JP 2017107472A
- Authority
- JP
- Japan
- Prior art keywords
- character string
- keyword
- hash
- index values
- values
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】検索性能を劣化させることなく入力テキスト内のキーワードを高速に検索する。【解決手段】キーワード処理部18が、キーワードkw(j)を文字列長nで分類したキーワードグループGK(n)ごとに、GK(n)に属するkw(j)の標準化指標値F0’(j),F1’(j)を計算し、これら標準化指標値の2次元正規分布W(n)を、分布中心Oに対して点対称な領域R(d)に分割した後、分布中心Oから順に選択してハッシュ値eを循環して付与し、eと対応するハッシュグループGH(e)に各kw(j)を順次分類し、検索処理部19が、入力テキストTinから抽出した文字列長nの部分文字列Tの標準化指標値F0’(j),F1’(j)に基づきハッシュ値eを計算し、eと対応するハッシュグルーブGH(e)に分類されているキーワードkw(j)のそれぞれとTとを照合することにより、Tin内に含まれるkw(j)を検索する。【選択図】 図1
Description
本発明は、文字列のハッシュ値を利用して、テキスト中に含まれる所定のキーワードを高速検索するための文字列検索技術に関する。
近年のビッグデータ活用の潮流の中で、大規模な文字列検索のニーズが高まっている。例えば、大量のテキスト(ツイートデータ等)の中に含まれる複数のキーワードを高速に探したいという要望がある。さまざまな文字列検索アルゴリズムがあるが、複数のキーワードを検索するアルゴリズムとしてラビン―カープ法(非特許文献1参照)等のハッシュ関数を利用した手法がよく使われる。
Karp, Richard M.; Rabin, Michael O., "Efficient randomized pattern-matching algorithms", IBM Journal of Research and Development 31 (2), 249-260, 1987年3月
このようなラビン−カープ法では、入力テキスト中の文字列をスキャンしながらハッシュ値を計算して高速な文字列検索処理を実現している。通常、ハッシュ値を計算する関数は簡単な形(一次関数等)なので、テキストやキーワードが大量になるとハッシュ値の衝突が頻発する。衝突ごとに文字列の照合処理が必要となるため、その回数の増加は処理性能の急激な劣化を引き起こす。性能劣化を避けるためには、衝突を起こし得るキーワードの数を少なくし、衝突回数の最悪値を低く抑える等の対策が必要であった。
しかしながら、簡単なハッシュ関数では値の衝突が生じやすく衝突回数の制御もできない。そのため、衝突回数が著しく増えることで検索性能が大きく劣化するのを避けるよう設計するのが難しいという問題点があった。
しかしながら、簡単なハッシュ関数では値の衝突が生じやすく衝突回数の制御もできない。そのため、衝突回数が著しく増えることで検索性能が大きく劣化するのを避けるよう設計するのが難しいという問題点があった。
本発明はこのような課題を解決するためのものであり、検索性能を劣化させることなく、入力テキストに含まれるキーワードを高速に検索できる文字列検索技術を提供することを目的としている。
このような目的を達成するために、本発明にかかる文字列検索方法は、文字列に関するハッシュ値を利用して、入力テキストTin中に含まる所定のキーワードkw(j)(j=1,2,…,J)を検索する文字列検索装置で用いられる文字列検索方法であって、前記キーワードkw(j)を文字列長n(n=1,2,…,N)に基づき複数のキーワードグループGK(n)に分類し、これらキーワードグループGK(n)ごとに、当該キーワードグループGK(n)に属する各キーワードkw(j)について、当該キーワードkw(j)を構成する文字コードC(i)(i=1,2,…,I)と2つの異なる係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0(j),F1(j)を計算し、これら指標値F0(j),F1(j)を2次元座標値とした2次元正規分布W(n)に関する回帰直線Lに基づき前記指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これら標準化指標値F0’(j),F1’(j)を2次元座標値とした標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割し、これら領域R(d)を分布中心Oから順に選択して予め設定されたE個のハッシュ値e(e=1,2,…,E)を循環して順に付与し、当該ハッシュ値eと対応する文字列長nのハッシュグループGH(e)に前記キーワードkw(j)のそれぞれを分類するキーワード処理ステップと、前記文字列長n(n=1,2,…,N)ごとに、前記入力テキストTinの先頭から1文字ずつ順に移動させた抽出位置xから、前記文字列長nを有する部分文字列Tをそれぞれ抽出し、これら部分文字列Tごとに、当該部分文字列Tを構成する文字コードc(i)と前記係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0,F1を計算し、前記2次元正規分布W(n)に関する回帰直線に基づき前記指標値F0,F1を標準化した標準化指標値F0’,F1’を計算し、これら標準化指標値F0’,F1’に基づいて前記標準化2次元正規分布W’(n)のうち当該部分文字列Tが属する前記領域R(d)を特定することにより当該部分文字列Tのハッシュ値eを導出し、当該ハッシュ値eと対応する文字列長nの前記ハッシュグルーブGH(e)に分類されている前記キーワードkw(j)のそれぞれと当該部分文字列Tとを照合することにより、前記入力テキストTin内に含まれる前記キーワードkw(j)を検索する検索処理ステップとを備えている。
また、本発明にかかる上記文字列検索方法の一構成例は、前記キーワード処理ステップが、前記2次元正規分布W(n)を生成する際、前記指標値F0(j)に関する正規分布の平均値および標準偏差をa0,s0とし、前記指標値F1(j)に関する正規分布の標準偏差をs1とし、前記指標値F0(j),F1(j)の2次元分布に関する回帰直線の傾きおよび切片をP,Qとした場合、前記指標値F0(j),F1(j)から標準化指標値F0’(j),F1’(j)を、後述する式(2)に基づき計算するようにしたものである。
また、本発明にかかる上記文字列検索方法の一構成例は、前記検索処理ステップが、前記文字列長nの前記部分文字列Tについて前記指標値F0,F1を計算する際、前記文字コードc(i)との線形結合の計算に用いる前記係数列a(i),b(i)として、後述する式(9)からなる係数列a(i),b(i)を用いて計算し、前記抽出位置xから抽出した文字列長nの前記部分文字列Tに関する指標値F0(x),F1(x)を計算する際、前記抽出位置xの1文字前の抽出位置x−1から抽出した文字列長nの部分文字列T−1に関する指標値をF0(x−1),F1(x−1)とした場合、2つの前記指標値F0(x),F1(x)は、後述する式(10)に基づき計算するようにしたものである。
また、本発明にかかる上記文字列検索方法の一構成例は、前記検索処理ステップが、前記ハッシュグループGH(e)に属する前記キーワードkw(j)のそれぞれと前記部分文字列Tとを照合する際、前記キーワードkw(j)に関する前記指標値F0(j)(またはF1(j))からなるキーワード指標値FK(e,j)と、前記部分文字列Tに関する前記指標値F0(またはF1)からなる部分文字列指標値FTとを比較し、前記キーワード指標値FK(e,j)と前記部分文字列指標値FTとが一致した場合にのみ、前記キーワードkw(j)と前記部分文字列Tとを照合するようにしたものである。
また、本発明にかかる上記文字列検索方法の一構成例は、前記検索処理ステップが、前記ハッシュグループGH(e)に属する前記キーワードkw(j)に関する前記キーワード指標値FK(e,j)のそれぞれを昇順(または降順)に並び替えた後、前記部分文字列指標値FTと順に比較し、前記部分文字列指標値FTが前記キーワード指標値FK(e,j)を上回った(または下回った)時点で比較を終了するようにしたものである。
また、本発明にかかる文字列検索装置は、文字列に関するハッシュ値を利用して、入力テキストTin中に含まる所定のキーワードkw(j)(j=1,2,…,J)を検索する文字列検索装置であって、
前記キーワードkw(j)を文字列長n(n=1,2,…,N)に基づき複数のキーワードグループGK(n)に分類し、これらキーワードグループGK(n)ごとに、当該キーワードグループGK(n)に属する各キーワードkw(j)について、当該キーワードkw(j)を構成する文字コードC(i)(i=1,2,…,I)と2つの異なる係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0(j),F1(j)を計算し、これら指標値F0(j),F1(j)を2次元座標値とした2次元正規分布W(n)に関する回帰直線Lに基づき前記指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これら標準化指標値F0’(j),F1’(j)を2次元座標値とした標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割し、これら領域R(d)を分布中心Oから順に選択して予め設定されたE個のハッシュ値e(e=1,2,…,E)を循環して順に付与し、当該ハッシュ値eと対応する文字列長nのハッシュグループGH(e)に前記キーワードkw(j)のそれぞれを分類するキーワード処理部と、前記文字列長n(n=1,2,…,N)ごとに、前記入力テキストTinの先頭から1文字ずつ順に移動させた抽出位置xから、前記文字列長nを有する部分文字列Tをそれぞれ抽出し、これら部分文字列Tごとに、当該部分文字列Tを構成する文字コードc(i)と前記係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0,F1を計算し、前記2次元正規分布W(n)に関する回帰直線に基づき前記指標値F0,F1を標準化した標準化指標値F0’,F1’を計算し、これら標準化指標値F0’,F1’に基づいて前記標準化2次元正規分布W’(n)のうち当該部分文字列Tが属する前記領域R(d)を特定することにより当該部分文字列Tのハッシュ値eを導出し、当該ハッシュ値eと対応する文字列長nの前記ハッシュグルーブGH(e)に分類されている前記キーワードkw(j)のそれぞれと当該部分文字列Tとを照合することにより、前記入力テキストTin内に含まれる前記キーワードkw(j)を検索する検索処理部とを備えている。
前記キーワードkw(j)を文字列長n(n=1,2,…,N)に基づき複数のキーワードグループGK(n)に分類し、これらキーワードグループGK(n)ごとに、当該キーワードグループGK(n)に属する各キーワードkw(j)について、当該キーワードkw(j)を構成する文字コードC(i)(i=1,2,…,I)と2つの異なる係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0(j),F1(j)を計算し、これら指標値F0(j),F1(j)を2次元座標値とした2次元正規分布W(n)に関する回帰直線Lに基づき前記指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これら標準化指標値F0’(j),F1’(j)を2次元座標値とした標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割し、これら領域R(d)を分布中心Oから順に選択して予め設定されたE個のハッシュ値e(e=1,2,…,E)を循環して順に付与し、当該ハッシュ値eと対応する文字列長nのハッシュグループGH(e)に前記キーワードkw(j)のそれぞれを分類するキーワード処理部と、前記文字列長n(n=1,2,…,N)ごとに、前記入力テキストTinの先頭から1文字ずつ順に移動させた抽出位置xから、前記文字列長nを有する部分文字列Tをそれぞれ抽出し、これら部分文字列Tごとに、当該部分文字列Tを構成する文字コードc(i)と前記係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0,F1を計算し、前記2次元正規分布W(n)に関する回帰直線に基づき前記指標値F0,F1を標準化した標準化指標値F0’,F1’を計算し、これら標準化指標値F0’,F1’に基づいて前記標準化2次元正規分布W’(n)のうち当該部分文字列Tが属する前記領域R(d)を特定することにより当該部分文字列Tのハッシュ値eを導出し、当該ハッシュ値eと対応する文字列長nの前記ハッシュグルーブGH(e)に分類されている前記キーワードkw(j)のそれぞれと当該部分文字列Tとを照合することにより、前記入力テキストTin内に含まれる前記キーワードkw(j)を検索する検索処理部とを備えている。
本発明によれば、各ハッシュグループに分類されるキーワードの数、すなわち、ハッシュ値が同じで衝突が起こしうるキーワード数を、領域数とハッシュグループ数に基づき制御することができ、各ハッシュグループ間でキーワード数を均等化することができる。これにより、キーワード数が大きく異なる場合と比較して、衝突回数の最悪値を抑えることができる。したがって、検索性能を劣化させることなく、入力テキストに含まれるキーワードを高速に検索できる。
次に、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかる文字列検索装置10について説明する。図1は、第1の実施の形態にかかる文字列検索装置の構成を示すブロック図である。
この文字列検索装置10は、全体としてサーバ装置などの情報処理装置からなり、文字列のハッシュ値を利用して、外部装置20から入力された入力テキストTin中に含まれる所定のキーワードを高速検索する機能を有している。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかる文字列検索装置10について説明する。図1は、第1の実施の形態にかかる文字列検索装置の構成を示すブロック図である。
この文字列検索装置10は、全体としてサーバ装置などの情報処理装置からなり、文字列のハッシュ値を利用して、外部装置20から入力された入力テキストTin中に含まれる所定のキーワードを高速検索する機能を有している。
文字列検索装置10には、主な機能部として、通信I/F部11、操作入力部12、画面表示部13、キーワード群記憶部14、ハッシュ関数データ記憶部15、検索結果記憶部16、および演算処理部17が設けられている。
通信I/F部11は、通信回線を介して外部装置20とデータ通信を行うことにより、キーワード群KWや入力テキストTinなどの各種データを入力する機能と、検索処理により得られた、入力テキストTinに含まれるキーワードkw(j)(j=1,2,,J)を示す検索結果RESを出力する機能とを有している。
操作入力部12は、キーボード、マウス、タッチパネルなどの操作入力装置からなり、オペレータの操作を検出して演算処理部17へ出力する機能を有している。
画面表示部13は、LCDなどの画面表示装置からなり、操作メニューや検索結果などの各種情報を画面表示する機能を有している。
キーワード群記憶部14は、ハードディスクや半導体メモリなどの記憶装置からなり、入力テキストTinから検索する多数のキーワードkw(j)を含むキーワード群KWを記憶する機能を有している。
ハッシュ関数データ記憶部15は、ハードディスクや半導体メモリなどの記憶装置からなり、キーワード群KWに含まれる各キーワードkw(j)を予め演算処理部17で分析して得られた、文字列長nごとのハッシュ関数データDH(n)を記憶する機能を有している。
検索結果記憶部16は、ハードディスクや半導体メモリなどの記憶装置からなり、演算処理部17で得られた、入力テキストTinに含まれるキーワードkw(j)を示す検索結果RESを記憶する機能を有している。
演算処理部17は、CPUおよびその周辺回路を有し、プログラムを読み込んで実行することにより、文字列検索処理のための処理部を実現する機能を有している。主な処理部としては、キーワード処理部18と検索処理部19とがある。
キーワード処理部18は、キーワード群記憶部14から読み出したキーワード群KWに含まれる各キーワードkw(j)(j=1,2,…,J)に関するハッシュ値eを計算し、このハッシュ値eと対応するハッシュグループGH(e)にそれぞれのキーワードkw(j)を分類する機能と、これらハッシュ値eの計算処理内容や分類結果を示すハッシュ関数データDH(n)をハッシュ関数データ記憶部15に保存する機能とを有している。
検索処理部19は、外部装置20から入力された入力テキストTinから抽出した部分文字列Tごとに、ハッシュ関数データ記憶部15から読み出した、当該部分文字列Tの文字列長nに関するハッシュ関数データDH(n)に基づいて、当該部分文字列Tに関するハッシュ値eを計算し、このハッシュ値eと対応するハッシュグループGH(e)に属するキーワードkw(j)と部分文字列Tとを照合することにより文字列検索を行う機能を有している。
[キーワード処理部]
次に、図1を参照して、演算処理部17のキーワード処理部18について詳細に説明する。キーワード処理部18には、主な処理部として、キーワード分類部18A、指標値計算部18B、分布領域特定部18C、ハッシュ値計算部18D、ハッシュグループ分類部18E、およびハッシュ関数データ保存部18Fが設けられている。
次に、図1を参照して、演算処理部17のキーワード処理部18について詳細に説明する。キーワード処理部18には、主な処理部として、キーワード分類部18A、指標値計算部18B、分布領域特定部18C、ハッシュ値計算部18D、ハッシュグループ分類部18E、およびハッシュ関数データ保存部18Fが設けられている。
キーワード分類部18Aは、キーワードkw(j)を文字列長n(n=1,2,…,N)に基づき複数のキーワードグループGK(n)に分類する機能を有している。
指標値計算部18Bは、これらキーワードグループGK(n)ごとに、当該キーワードグループGK(n)に属する各キーワードkw(j)について、当該キーワードkw(j)を構成する文字コードC(i)(i=1,2,…,I)と2つの異なる係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0(j),F1(j)を計算する機能と、これら指標値F0(j),F1(j)を2次元座標値とした2次元正規分布W(n)に関する回帰直線Lに基づき前記指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算する機能とを有している。
図2は、線形結合の計算例である。キーワードkw(j)に関する指標値F0(j),F1(j)は、文字コードC(i)と係数列a(i),b(i)との線形結合からなり、次の式(1)により求められる。
図3は、指標値の2次元正規分布を示す説明図である。中心極限定理によれば、文字列を構成する個々の文字を確率変数と考えると、文字列長nが長くなるにつれて、指標値F0(j),F1(j)はそれぞれ正規分布に近づく。これら指標値F0(j),F1(j)を2次元座標値として2次元座標にプロットすれば、図3に示すような2次元正規分布となる。
図4は、2次元正規分布の標準化を示す説明図である。これら指標値F0(j),F1(j)の正規分布W0,W1は、それぞれの平均値a0,a1と標準偏差s0,s1が異なるため、2次元座標上で分布の偏りが発生する。このため、本実施の形態では、指標値計算部18Bにおいて、2次元正規分布W(n)の回帰直線Lを求め、その傾きPと切片Qに基づいて、次の式(2)により、指標値F0(j),F1(j)を標準化して標準化指標値F0’(j),F1’(j)を計算し、偏りのない標準化2次元正規分布W’(n)を生成している。
分布領域特定部18Cは、標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な複数の領域R(d)(d=1,2,…,D)に分割する機能を有している。
図5は、領域分割例を示す説明図である。ここでは、標準化2次元正規分布W’(n)を、その分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割されている。図5には、領域R(d)の形状として、分布中心Oを中心とし、頂点が軸上に位置するよう、大きさが異なる正方形を重ねて配置し、これら正方形で区切られる帯状の領域とした場合が、例として示されているが、これに限定されるものではなく、正方形に代えて円などの点対称な他の形状を用いてもよい。
図5は、領域分割例を示す説明図である。ここでは、標準化2次元正規分布W’(n)を、その分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割されている。図5には、領域R(d)の形状として、分布中心Oを中心とし、頂点が軸上に位置するよう、大きさが異なる正方形を重ねて配置し、これら正方形で区切られる帯状の領域とした場合が、例として示されているが、これに限定されるものではなく、正方形に代えて円などの点対称な他の形状を用いてもよい。
この際、2次元正規分布W(n)を標準化2次元正規分布W’(n)に標準化し、かつ、領域R(d)の形状を正方形としたので、元の正規分布W0,W1の中心(平均値a0,a1)からほぼ等しい距離にあるキーワードkw(j)が同一領域R(d)に含まれるよう分割することができる。この際、標準化指標値F0’,F1’の絶対値の和を、領域数Dにおける領域番号dの比率と比較する、次の式(3)に示すような、簡素な演算処理で分割できる。
図6は、領域とキーワード数との関係を示す説明図である。標準化2次元正規分布W’(n)の分布中心Oに近い領域R(d)から順に領域番号dを付与した場合、各領域R(d)に含まれるキーワード数は、図6に示すように大きく変化する。これは、元の正規分布W0,W1におけるキーワード数の分布に依存しており、この関係は、文字数が異なる場合でも同様である。
ハッシュ値計算部18Dは、これら領域R(d)を分布中心Oから順に選択して予め設定されている複数のハッシュ値e(e=1,2,…,E)を循環して付与する機能を有している。
図7は、領域とハッシュ値との関係を示す説明図である。本実施の形態では、分布領域特定部18Cにおいて、これら領域R(d)を分布中心Oから順に選択して予め設定されている複数のハッシュ値e(e=1,2,…,E)を循環して付与している。これにより、分布中心Oから順にE個飛びで、各領域R(d)に同じハッシュ値eが付与されることになる。
図7は、領域とハッシュ値との関係を示す説明図である。本実施の形態では、分布領域特定部18Cにおいて、これら領域R(d)を分布中心Oから順に選択して予め設定されている複数のハッシュ値e(e=1,2,…,E)を循環して付与している。これにより、分布中心Oから順にE個飛びで、各領域R(d)に同じハッシュ値eが付与されることになる。
例えば、図7に示したように、ハッシュ値eを1,2,3の3つの値とした場合、分布中心Oに最も近い領域R(1)に対してハッシュ値e=1が付与され、その外側の領域R(2)に対してハッシュ値e=2が付与され、さらにその外側の領域R(3)にハッシュ値e=3が付与され、さらにその領域R(4)にハッシュ値e=1が付与され、以下に続く領域R(5),R(6),R(7),R(8),…に対して循環してハッシュ値e=2,3,1,2,…が付与されることになる。
図8は、領域とキーワード数との他の関係を示す説明図である。このようにして、各領域R(d)に対して複数のハッシュ値e(e=1,2,…,E)を循環して付与すれば、各領域R(d)に含まれるキーワード数は、図8に示すようにほぼ等しい数となる。
このようなハッシュ値eの付与方式は、領域番号dの剰余(除算した余り)に基づく値を付与することになり、次の式(4)で求められる。
このようなハッシュ値eの付与方式は、領域番号dの剰余(除算した余り)に基づく値を付与することになり、次の式(4)で求められる。
式(4)において、%記号は、剰余計算を示す演算子である。なお、D/Eは整数であることが望ましく、同一ハッシュ値eが付与される領域R(d)の数が等しくなる。領域数Dおよびハッシュグループ数Eについては、文字列数nごとに予め設定される。
ハッシュグループ分類部18Eは、キーワードkw(j)のハッシュ値eに基づいて、ハッシュ値eごとに設けられているハッシュグループGH(e)へ、キーワードkw(j)を分類する機能を有している。この際、キーワードkw(j)は、キーワードkw(j)を構成する文字列データを、ハッシュグループGH(e)へ登録するのではなく、キーワード群KW内において付与されているキーワード番号jを用いて登録する。
したがって、文字列長ごとに、ハッシュ値e(e=1,2,…,E)に対応するハッシュグループGH(e)が設けられ、ハッシュグループGH(e)ごとに、当該ハッシュグループGH(e)に属するキーワードkw(j)がキーワード番号U(e,j)により登録される。また、当該ハッシュグループGH(e)に属するキーワードkw(j)の数を示すキーワード数V(e)も登録される。
ハッシュ関数データ保存部18Fは、ハッシュ値eの計算処理内容や分類結果を示すハッシュ関数データDH(n)をハッシュ関数データ記憶部15に保存する機能を有している。このハッシュ関数データDH(n)は、係数列a(i),b(i)、指標値F0(j)の正規分布W0に関する平均値a0および標準偏差s0、指標値F1(j)の正規分布W1に関する標準偏差s0、2次元正規分布W(n)の回帰直線Lに関する傾きPおよび切片Q、領域数D、ハッシュグループ数E、ハッシュグループGH(e)ごとのキーワード番号U(e,j)およびキーワード数V(e)が含まれる。
[検索処理部]
次に、図1を参照して、演算処理部17の検索処理部19について詳細に説明する。検索処理部19には、主な処理部として、部分文字列抽出部19A、指標値計算部19B、分布領域特定部19C、ハッシュ値計算部19D、およびキーワード照合部19Eが設けられている。
次に、図1を参照して、演算処理部17の検索処理部19について詳細に説明する。検索処理部19には、主な処理部として、部分文字列抽出部19A、指標値計算部19B、分布領域特定部19C、ハッシュ値計算部19D、およびキーワード照合部19Eが設けられている。
部分文字列抽出部19Aは、文字列長n(n=1,2,…,N)ごとに、入力テキストTinの先頭から1文字ずつ順に移動させた抽出位置xから、文字列長nを有する部分文字列Tをそれぞれ抽出する機能を有している。
図9は、部分文字列の抽出例を示す説明図である。ここでは、入力テキストTinが「ネットがあるからいじめが増えたっていうなら…」からなる例が示されており、入力テキストTinの先頭から順に1文字ずつ抽出位置xを移動させて、文字n個分が部分文字列Tとして抽出される。
したがって、文字列n=1の場合、「ネ」,「ッ」,「ト」,「が」,…の順に1文字ずつ抽出され、文字列n=2の場合、「ネッ」,「ット」,「トが」,…の順に2文字ずつ抽出されることになる。また、文字列n=3の場合、「ネット」,「ットが」,「トがあ」,…の順に3文字ずつ抽出されることになる。
指標値計算部19Bは、部分文字列Tの文字列長nに対応するハッシュ関数データDH(n)をハッシュ関数データ記憶部15から取得する機能と、ハッシュ関数データDH(n)に含まれる2つの異なる係数列a(i),b(i)を用いて、当該部分文字列Tを構成する文字コードc(i)(i=1,2,…,I)から、次の式(5)に基づき、2つの指標値F0,F1を計算する機能とを有している。
また、指標値計算部19Bは、ハッシュ関数データDH(n)に含まれる指標値F0(j)の正規分布W0に関する平均値a0および標準偏差s0、指標値F1(j)の正規分布W1に関する標準偏差s0、2次元正規分布W(n)の回帰直線Lに関する傾きPおよび切片Qを用いて、次の式(6)に基づき、指標値F0,F1を標準化した標準化指標値F0’,F1’を計算する機能とを有している。
分布領域特定部19Cは、ハッシュ関数データDH(n)に含まれる領域数Dに基づいて、2つの標準化指標値F0’,F1’を2次元座標値として、当該文字列長nに関する標準化2次元正規分布W’(n)のうち当該部分文字列Tが属する領域R(d)を特定する機能を有している。この際、領域R(d)の特定方法については、分布領域特定部18Cにおける領域R(d)の分割方法と同様であり、標準化指標値F0’,F1’の絶対値の和に領域数Dを乗算して整数化(int関数)する、次の式(7)に基づき領域番号dが求められる。
ハッシュ値計算部19Dは、ハッシュ関数データDH(n)に含まれる領域数Dおよびハッシュグループ数Eに基づいて、これら領域R(d)を分布中心Oから順に選択して予め設定されている複数のハッシュ値e(e=1,2,…,E)を循環して付与する機能を有している。この際、ハッシュ値eの計算方法については、ハッシュ値計算部18Dと同様であり、領域番号dの剰余を用いた、次の式(8)に基づきハッシュ値eが求められる。
キーワード照合部19Eは、ハッシュ関数データDH(n)に含まれる、部分文字列Tのハッシュ値eと対応する文字列長nのハッシュグルーブGH(e)に分類されているキーワード番号U(e,j)に基づいて、対応するキーワードkw(j)のそれぞれと当該部分文字列Tとを照合することにより、入力テキストTin内に含まれるキーワードkw(j)を検索する機能と、一致不一致を示す照合結果に基づいて、入力テキストTin内に含まれるキーワードkw(j)を示す検索結果RESを生成して、検索結果記憶部16に保存する機能とを有している。
[第1の実施の形態の動作]
次に、本実施の形態にかかる文字列検索装置10の動作について、キーワード処理部18におけるキーワード登録動作と、検索処理部19における文字列検索動作について説明する。
次に、本実施の形態にかかる文字列検索装置10の動作について、キーワード処理部18におけるキーワード登録動作と、検索処理部19における文字列検索動作について説明する。
[キーワード登録動作]
まず、図10および図11を参照して、キーワード登録動作について説明する。図10は、キーワード登録処理を示すチャートである。図11は、キーワード登録動作を示す説明図である。
キーワード処理部18は、検索処理部19での文字列検索動作に先立って、キーワード群記憶部14に登録されているキーワード群KWに含まれている各kw(j)の登録処理を、文字列長n(n=1,2,…,N)ごとに実行する。
まず、図10および図11を参照して、キーワード登録動作について説明する。図10は、キーワード登録処理を示すチャートである。図11は、キーワード登録動作を示す説明図である。
キーワード処理部18は、検索処理部19での文字列検索動作に先立って、キーワード群記憶部14に登録されているキーワード群KWに含まれている各kw(j)の登録処理を、文字列長n(n=1,2,…,N)ごとに実行する。
まず、キーワード分類部18Aは、キーワード群記憶部14から読み出したキーワード群KWに含まれる各キーワードkw(j)(j=1,2,…,J)を文字列長nに基づき複数のキーワードグループGK(n)に分類する(ステップ100)。
次に、指標値計算部18Bは、キーワード登録処理が未処理である文字列長nに関するキーワードグループGK(n)を選択して(ステップ101)、GK(n)に含まれる各キーワードkw(j)に関する指標値F0(j),F1(j)を計算して2次元正規分布W(n)を生成した後(ステップ102)、これら指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算することにより、標準化2次元正規分布W’(n)を生成する(ステップ103)。
続いて、分布領域特定部18Cは、標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な複数の領域R(d)(d=1,2,…,D)に分割し(ステップ104)、ハッシュ値計算部18Dは、これら領域R(d)を分布中心Oから順に選択して、予め設定されている複数のハッシュ値e(e=1,2,…,E)を循環して付与する(ステップ105)。
次に、ハッシュグループ分類部18Eは、各キーワードkw(j)のハッシュ値eに基づいて、ハッシュ値eごとに設けられているハッシュグループGH(e)へ、キーワードkw(j)をそれぞれ分類し(ステップ106)、ハッシュ関数データ保存部18Fは、ハッシュ値eの計算処理内容や分類結果を示すハッシュ関数データDH(n)をハッシュ関数データ記憶部15に保存する(ステップ107)。
この後、全キーワードグループGK(n)の選択が終了したか確認し(ステップ108)、未選択のキーワードグループGK(n)が存在する場合(ステップ108:NO)、ステップ101へ戻る。一方、全キーワードグループGK(n)の選択が終了した場合(ステップ108:YES)、文字列長nに関する一連のキーワード登録処理を終了する。
[文字列検索動作]
次に、図12および図13を参照して、キーワード登録動作について説明する。図12は、第1の実施の形態にかかる文字列検索処理を示すチャートである。図13は、第1の実施の形態にかかる文字列検索動作を示す説明図である。
検索処理部19は、キーワード処理部18でのキーワード登録動作が実行された後、外部装置20から入力された入力テキストTinに含まれるキーワードkw(j)の検索処理を、文字列長n(n=1,2,…,N)ごとに実行する。
次に、図12および図13を参照して、キーワード登録動作について説明する。図12は、第1の実施の形態にかかる文字列検索処理を示すチャートである。図13は、第1の実施の形態にかかる文字列検索動作を示す説明図である。
検索処理部19は、キーワード処理部18でのキーワード登録動作が実行された後、外部装置20から入力された入力テキストTinに含まれるキーワードkw(j)の検索処理を、文字列長n(n=1,2,…,N)ごとに実行する。
まず、部分文字列抽出部19Aは、入力テキストTinの先頭を抽出位置xとして設定し(ステップ110)、抽出位置xから文字列長nの部分文字列Tを抽出する(ステップ111)。
次に、指標値計算部19Bは、部分文字列Tの文字列長nに対応するハッシュ関数データDH(n)をハッシュ関数データ記憶部15から取得し、ハッシュ関数データDH(n)に含まれる2つの異なる係数列a(i),b(i)(i=1,2,…,I)を用いて、当該部分文字列Tを構成する文字コードc(i)から、2つの指標値F0,F1を計算する(ステップ112)。
次に、指標値計算部19Bは、部分文字列Tの文字列長nに対応するハッシュ関数データDH(n)をハッシュ関数データ記憶部15から取得し、ハッシュ関数データDH(n)に含まれる2つの異なる係数列a(i),b(i)(i=1,2,…,I)を用いて、当該部分文字列Tを構成する文字コードc(i)から、2つの指標値F0,F1を計算する(ステップ112)。
続いて、指標値計算部19Bは、ハッシュ関数データDH(n)に含まれる指標値F0(j)の正規分布W0に関する平均値a0および標準偏差s0、指標値F1(j)の正規分布W1に関する標準偏差s0、2次元正規分布W(n)の回帰直線Lに関する傾きPおよび切片Qを用いて、標準化指標値F0’,F1’を計算する(ステップ113)。
この後、分布領域特定部19Cは、ハッシュ関数データDH(n)に含まれる領域数Dに基づいて、文字列長nに関する標準化2次元正規分布W’(n)のうち、部分文字列Tが属する領域R(d)を特定する(ステップ114)。
次に、ハッシュ値計算部19Dは、ハッシュ関数データDH(n)に含まれる領域数Dおよびハッシュグループ数Eに基づいて、これら領域R(d)に付与されているハッシュ値e(e=1,2,…,E)を計算する(ステップ115)。
次に、ハッシュ値計算部19Dは、ハッシュ関数データDH(n)に含まれる領域数Dおよびハッシュグループ数Eに基づいて、これら領域R(d)に付与されているハッシュ値e(e=1,2,…,E)を計算する(ステップ115)。
続いて、キーワード照合部19Eは、ハッシュ関数データDH(n)に含まれる、部分文字列Tのハッシュ値eと対応する文字列長nのハッシュグルーブGH(e)に分類されているキーワード番号U(e,j)およびキーワード数V(e)に基づいて、キーワード群KWから取得したキーワードkw(j)のそれぞれと当該部分文字列Tとを文字列照合し、得られた検索結果RESを検索結果記憶部16に保存する(ステップ116)。
この後、部分文字列抽出部19Aは、抽出位置xが入力テキストTinの最終位置か確認し(ステップ117)、抽出位置xが最終位置の手前であれば(ステップ117:NO)、1文字ずらした位置を新たな抽出位置xとした後(ステップ108)、ステップ111へ戻る。
一方、抽出位置xが最終位置であれば(ステップ117:YES)、文字列長nに関する一連の文字列検索処理を終了する。
一方、抽出位置xが最終位置であれば(ステップ117:YES)、文字列長nに関する一連の文字列検索処理を終了する。
図14は、第1の実施の形態にかかる照合処理を示す説明図である。本実施の形態において、キーワード照合部19Eは、部分文字列Tのハッシュ値eと対応する文字列長nのハッシュグルーブGH(e)に分類されているキーワード番号U(e,j)に基づいて、キーワード群KWからキーワードkw(j)を取得する。
図14の例では、入力テキストTinが「ネットがあるからいじめが増えたっていうなら…」からなる例が示されており、文字列長n=3の場合、文字列長n=3のハッシュグルーブGH(e)に分類されているキーワードkw#1,kw#2,…,kw#K(K=V(e))と部分文字列Tとが照合される。
図14の例では、入力テキストTinが「ネットがあるからいじめが増えたっていうなら…」からなる例が示されており、文字列長n=3の場合、文字列長n=3のハッシュグルーブGH(e)に分類されているキーワードkw#1,kw#2,…,kw#K(K=V(e))と部分文字列Tとが照合される。
この際、これら全てのキーワードkw#1,kw#2,…,kw#Kと部分文字列Tとは、個々の文字コードに基づき照合される。照合により、部分文字列Tの各文字コードと一致するキーワードkw(j)が見つかった場合、入力テキストTinにキーワードkw(j)が含まれているという検索結果RESが保存される。
[第1の実施の形態の効果]
このように、本実施の形態は、キーワード処理部18が、キーワードkw(j)を文字列長nで分類したキーワードグループGK(n)ごとに、GK(n)に属するkw(j)の指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これらF0’(j),F1’(j)の2次元正規分布W(n)を、分布中心Oに対して点対称な複数の領域R(d)に分割した後、分布中心Oから順に選択してハッシュ値eを循環して付与し、eと対応するハッシュグループGH(e)に各kw(j)を順次分類するようにしたものである。
このように、本実施の形態は、キーワード処理部18が、キーワードkw(j)を文字列長nで分類したキーワードグループGK(n)ごとに、GK(n)に属するkw(j)の指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これらF0’(j),F1’(j)の2次元正規分布W(n)を、分布中心Oに対して点対称な複数の領域R(d)に分割した後、分布中心Oから順に選択してハッシュ値eを循環して付与し、eと対応するハッシュグループGH(e)に各kw(j)を順次分類するようにしたものである。
また、検索処理部19が、入力テキストTinから抽出した文字列長nの部分文字列Tの標準化指標値F0’(j),F1’(j)を計算し、Tが属する領域R(d)を特定することによりTのハッシュ値eを計算し、eと対応するハッシュグルーブGH(e)に分類されているキーワードkw(j)のそれぞれとTとを照合することにより、Tin内に含まれるkw(j)を検索するようにしたものである。
これにより、各ハッシュグループGH(e)に分類されるキーワードkw(j)の数、すなわち、ハッシュ値eが同じで衝突が起こしうるキーワード数V(e)を、領域数Dとハッシュグループ数Eに基づき制御することができ、各ハッシュグループGH(e)間でキーワード数V(e)を均等化することができる。これにより、キーワード数V(e)が大きく異なるよう分類した場合と比較して、衝突回数の最悪値を抑えることができる。したがって、検索性能を劣化させることなく、入力テキストTinに含まれるキーワードkw(j)を高速に検索できる。
また、本実施の形態にかかる計算方法は、コンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリ等の適当な記録媒体を介して、またはネットワークを介して提供され、本発明を実施する際に計算環境にインストールされ、CPU等の演算手段の下で動作して本発明を実現することになる。
[第2の実施の形態]
次に、本発明の第2の実施の形態にかかる文字列検索装置10について説明する。本実施の形態は、第1の実施の形態と比較して、文字列検索処理における指標値計算方法が異なる。
すなわち、本実施の形態にかかる指標値計算部19Bは、抽出位置xから抽出した文字列長nの部分文字列Tに関する指標値F0(x),F1(x)を計算する際、抽出位置xの1文字前の抽出位置x−1から抽出した文字列長nの部分文字列T−1に関する指標値をF0(x−1),F1(x−1)に基づいて、指標値F0(x),F1(x)を計算する機能を有している。
次に、本発明の第2の実施の形態にかかる文字列検索装置10について説明する。本実施の形態は、第1の実施の形態と比較して、文字列検索処理における指標値計算方法が異なる。
すなわち、本実施の形態にかかる指標値計算部19Bは、抽出位置xから抽出した文字列長nの部分文字列Tに関する指標値F0(x),F1(x)を計算する際、抽出位置xの1文字前の抽出位置x−1から抽出した文字列長nの部分文字列T−1に関する指標値をF0(x−1),F1(x−1)に基づいて、指標値F0(x),F1(x)を計算する機能を有している。
図15は、第2の実施の形態にかかる指標値の計算方法を示す説明図である。図16は、第2の実施の形態にかかる文字列検索動作を示す説明図である。
第1の実施の形態では、文字列検索処理において、抽出位置xから抽出した文字列長nの部分文字列Tの検索が1回終わると、抽出位置xを1つ文字ずらして抽出した文字列長nの部分文字列Tについて、同様の処理を行うことを繰り返す。つまり、部分文字列Tの先頭を1つスライドさせた後に指標値F0,F1を改めて計算していた。
第1の実施の形態では、文字列検索処理において、抽出位置xから抽出した文字列長nの部分文字列Tの検索が1回終わると、抽出位置xを1つ文字ずらして抽出した文字列長nの部分文字列Tについて、同様の処理を行うことを繰り返す。つまり、部分文字列Tの先頭を1つスライドさせた後に指標値F0,F1を改めて計算していた。
この際、指標値F0,F1を前述した式(1)の一般的な形式で求められるものとしているが、特殊なケースとして、次の式(9)に示すような、係数列a(i)がすべて1で、係数列b(i)がi+1である場合、指標値F0,F1は、いわゆるローリングハッシュ関数と同様に、高速計算できる。
このような指標値F0,F1の計算式を用いた場合、ある抽出位置xでのF0,F1であるF0(x)およびF1(x)は、1文字前の抽出位置x−1でのF0(x−1)およびF1(x−1)を利用して、次の式(10)に基づき、わずかな加減算で計算できる。
図15には、入力テキストTinの位置x−1から文字「ABCDEF」が並んでおり、位置xから文字列長n=5で抽出した部分文字列Tに関する指標値F0,F1を計算する場合が示されている。
抽出位置x−1のF0(x−1)から、位置x−1の文字「A」の文字コードc(x−1)を減算して、新たに追加される位置x+5−1の文字「F」の文字コードc(x−1)を加算することにより、抽出位置xのF0(x)が求められる。
抽出位置x−1のF0(x−1)から、位置x−1の文字「A」の文字コードc(x−1)を減算して、新たに追加される位置x+5−1の文字「F」の文字コードc(x−1)を加算することにより、抽出位置xのF0(x)が求められる。
また、抽出位置x−1のF1(x−1)から、抽出位置xのF0(x)を減算して、位置x+5−1の文字「F」の文字コードc(x−1)の5倍を加算することにより、抽出位置xのF1(x)が求められる。
したがって、第1の実施の形態において、F0,F1の計算結果を記憶しておき、抽出位置xが1文字スライドする度に式(10)による計算に利用する形に変形すれば、本実施の形態にかかる構成を得ることができる。
したがって、第1の実施の形態において、F0,F1の計算結果を記憶しておき、抽出位置xが1文字スライドする度に式(10)による計算に利用する形に変形すれば、本実施の形態にかかる構成を得ることができる。
したがって、本実施の形態によれば、入力テキストTin中の部分文字列Tを変更する度に式(1)の線形結合を計算する必要がなく、式(10)に示した数回の加減乗算のみでF0,F1を計算できる。また、第1の実施の形態において使用していたF0,F1の計算に用いる係数列a(i),b(i)はメモリに展開しておく必要がなくなる。これにより、並列計算できない演算手段によっても、高速な文字列検索が可能となる。
また、本実施の形態にかかる計算方法は、コンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリ等の適当な記録媒体を介して、またはネットワークを介して提供され、本発明を実施する際に計算環境にインストールされ、CPU等の演算手段の下で動作して本発明を実現することになる。
[第3の実施の形態]
次に、本発明の第3の実施の形態にかかる文字列検索装置10について説明する。本実施の形態は、第1の実施の形態と比較して、文字列検索処理における照合方法が異なる。
すなわち、本実施の形態にかかるキーワード照合部19Eは、ハッシュグループGH(e)に属するキーワードkw(j)のそれぞれと部分文字列Tとを照合する際、これらキーワードkw(j)に関する指標値F0’(j)(またはF1’(j))からなるキーワード指標値FK(e,j)と、部分文字列Tに関する指標値F0’(またはF1’)からなる部分文字列指標値FTとを比較し、キーワード指標値FK(e,j)と部分文字列指標値FTとが一致した場合にのみ、キーワードkw(j)と部分文字列Tとを照合する機能を有している。
次に、本発明の第3の実施の形態にかかる文字列検索装置10について説明する。本実施の形態は、第1の実施の形態と比較して、文字列検索処理における照合方法が異なる。
すなわち、本実施の形態にかかるキーワード照合部19Eは、ハッシュグループGH(e)に属するキーワードkw(j)のそれぞれと部分文字列Tとを照合する際、これらキーワードkw(j)に関する指標値F0’(j)(またはF1’(j))からなるキーワード指標値FK(e,j)と、部分文字列Tに関する指標値F0’(またはF1’)からなる部分文字列指標値FTとを比較し、キーワード指標値FK(e,j)と部分文字列指標値FTとが一致した場合にのみ、キーワードkw(j)と部分文字列Tとを照合する機能を有している。
図17は、第3の実施の形態にかかる文字列検索動作を示す説明図である。図18は、第3の実施の形態にかかる照合処理を示す説明図である。
第1の実施の形態では、ハッシュグループGH(e)に属するキーワードkw(j)のそれぞれと部分文字列Tとを照合する際、それぞれの文字コードを照合する処理であるため、一般には負荷の重い処理となる。
本実施の形態では、文字コードではなく前述した式(2)で求めたキーワードkw(j)に関するキーワード指標値FK(e,j)と、式(6)で求めた部分文字列Tに関する部分文字列指標値FTとが一致した場合にのみ、キーワードkw(j)と部分文字列Tとを照合するようにしたものである。
第1の実施の形態では、ハッシュグループGH(e)に属するキーワードkw(j)のそれぞれと部分文字列Tとを照合する際、それぞれの文字コードを照合する処理であるため、一般には負荷の重い処理となる。
本実施の形態では、文字コードではなく前述した式(2)で求めたキーワードkw(j)に関するキーワード指標値FK(e,j)と、式(6)で求めた部分文字列Tに関する部分文字列指標値FTとが一致した場合にのみ、キーワードkw(j)と部分文字列Tとを照合するようにしたものである。
検索処理時、ハッシュ値eが計算された時点で、部分文字列Tに関するF0’(またはF1’)が計算済みである。一方、ハッシュグループGH(e)に分類されているキーワードkw(j)についても、キーワード登録処理において予めF0’(またはF1’)が計算されている。したがって、部分文字列Tと等しいキーワードkw(j)がハッシュグループGH(e)に分類されていないことは、キーワード指標値FK(e,j)と部分文字列指標値FTとを比較することにより判定できる。
ハッシュグループGH(e)の全キーワードkw(j)に関するキーワード指標値FK(e,j)は、ハッシュ関数データDH(e)に加えてメモリに展開しておけばよい。
この際、前述の式(2)および式(6)に示したとおり、キーワード指標値FK(e,j)および部分文字列指標値FTはともに整数値であるため、その比較は通常の演算装置であれば1命令で行える。これにより、ハッシュグループGH(e)内のキーワードkw(j)との文字列照合の回数を大幅に減らすことができ、文字検索処理をさらに高速化することができる。
この際、前述の式(2)および式(6)に示したとおり、キーワード指標値FK(e,j)および部分文字列指標値FTはともに整数値であるため、その比較は通常の演算装置であれば1命令で行える。これにより、ハッシュグループGH(e)内のキーワードkw(j)との文字列照合の回数を大幅に減らすことができ、文字検索処理をさらに高速化することができる。
また、本実施の形態にかかる計算方法は、コンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリ等の適当な記録媒体を介して、またはネットワークを介して提供され、本発明を実施する際に計算環境にインストールされ、CPU等の演算手段の下で動作して本発明を実現することになる。
[第4の実施の形態]
次に、本発明の第4の実施の形態にかかる文字列検索装置10について説明する。本実施の形態は、第3の実施の形態と比較して、文字列検索処理における照合順序が異なる。
すなわち、本実施の形態にかかるキーワード照合部19Eは、ハッシュグループGH(e)に属するキーワードkw(j)に関するキーワード指標値FK(e,j)のそれぞれを昇順(または降順)に並び替えた後、部分文字列指標値FTと順に比較し、部分文字列指標値FTがキーワード指標値FK(e,j)を上回った(または下回った)時点で比較を終了する機能を有している。
次に、本発明の第4の実施の形態にかかる文字列検索装置10について説明する。本実施の形態は、第3の実施の形態と比較して、文字列検索処理における照合順序が異なる。
すなわち、本実施の形態にかかるキーワード照合部19Eは、ハッシュグループGH(e)に属するキーワードkw(j)に関するキーワード指標値FK(e,j)のそれぞれを昇順(または降順)に並び替えた後、部分文字列指標値FTと順に比較し、部分文字列指標値FTがキーワード指標値FK(e,j)を上回った(または下回った)時点で比較を終了する機能を有している。
図19は、第7の実施の形態にかかる文字列検索動作を示す説明図である。図20は、第4の実施の形態にかかる照合処理を示す説明図である。
前述した第3の実施の形態では、文字列検索処理において、キーワードkw(j)と部分文字列Tとの文字列照合の前に、キーワード指標値FK(e,j)と部分文字列指標値FTを比較している。この比較は、ハッシュグループGH(e)に属するキーワードキーワードkw(j)の全てに対して行うことになる。本実施の形態では、これらキーワードkw(j)について計算したキーワード指標値FK(e,j)を、その大小関係で昇順(または降順)に予めソートしておく。
前述した第3の実施の形態では、文字列検索処理において、キーワードkw(j)と部分文字列Tとの文字列照合の前に、キーワード指標値FK(e,j)と部分文字列指標値FTを比較している。この比較は、ハッシュグループGH(e)に属するキーワードキーワードkw(j)の全てに対して行うことになる。本実施の形態では、これらキーワードkw(j)について計算したキーワード指標値FK(e,j)を、その大小関係で昇順(または降順)に予めソートしておく。
この際、ハッシュ関数データDH(e)として、
・ハッシュグループGH(e)のキーワード番号Usort(e、j)
・ハッシュグループGH(e)のキーワード数Vsort(e)
・ハッシュグループGH(e)のキーワードkw(j)に関するキーワード指標値FKsort(e,j)
をメモリに展開しておけばよい。
・ハッシュグループGH(e)のキーワード番号Usort(e、j)
・ハッシュグループGH(e)のキーワード数Vsort(e)
・ハッシュグループGH(e)のキーワードkw(j)に関するキーワード指標値FKsort(e,j)
をメモリに展開しておけばよい。
したがって、第3の実施の形態においてメモリに展開するU(e、j)、V(e)、FK(e、j)といったデータは不要となる。そして、第3の実施の形態と同じく、検索対象の部分文字列Tについて文字列照合の前に、当該部分文字列Tについて計算済みの部分文字列指標値FTと、ハッシュグループGH(e)のキーワードkw(j)に関するFKsort(e,j)とをソート順に比較し、FTがFKsort(e,j)を上回った(下回った)場合には、それ以上探索をしても値が一致することはない。したがって、検索を打ち切ることができ、部分文字列指標値FTとキーワード指標値FK(e,j)との比較回数を削減することができ、さらなる高速処理が実現できることとなる。
また、本実施の形態にかかる計算方法は、コンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリ等の適当な記録媒体を介して、またはネットワークを介して提供され、本発明を実施する際に計算環境にインストールされ、CPU等の演算手段の下で動作して本発明を実現することになる。
[実施の形態の拡張]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
10…文字列検索装置、11…通信I/F部、12…操作入力部、13…画面表示部、14…キーワード群記憶部、15…ハッシュ関数データ記憶部、16…検索結果記憶部、17…演算処理部、18…キーワード処理部、18A…キーワード分類部、18B…指標値計算部、18C…分布領域特定部、18D…ハッシュ値計算部、18E…ハッシュグループ分類部、18F…ハッシュ関数データ保存部、19…検索処理部、19A…部分文字列抽出部、19B…指標値計算部、19C…分布領域特定部、19D…ハッシュ値計算部、19E…キーワード照合部、20…外部装置、KW…キーワード群、GK(n)…キーワードグループ、kw(j)…キーワード、C(i)…文字コード、a(i),b(i)…係数列、F0(j),F1(j),F0,F1…指標値、W0,W1…正規分布、a0,a1…平均値、s0,S1…標準偏差、W(n)…2次元正規分布、L…回帰直線、P…傾き、Q…切片、F0’(j),F1’(j),F0,F1’…標準化指標値、W’(n)…標準化2次元正規分布、O…分布中心、R(d)…領域、d…領域番号、D…領域数、e…ハッシュ値、E…ハッシュグループ数、GH(e)…ハッシュグループ、U(e,j)…キーワード番号、V(e)…キーワード数、DH(n)…ハッシュデータ、Tin…入力テキスト、T…部分文字列、x…抽出位置、FK(e,j)…キーワード指標値、FT…部分文字列指標値、RES…検索結果。
Claims (6)
- 文字列に関するハッシュ値を利用して、入力テキストTin中に含まる所定のキーワードkw(j)(j=1,2,…,J)を検索する文字列検索装置で用いられる文字列検索方法であって、
前記キーワードkw(j)を文字列長n(n=1,2,…,N)に基づき複数のキーワードグループGK(n)に分類し、これらキーワードグループGK(n)ごとに、当該キーワードグループGK(n)に属する各キーワードkw(j)について、当該キーワードkw(j)を構成する文字コードC(i)(i=1,2,…,I)と2つの異なる係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0(j),F1(j)を計算し、これら指標値F0(j),F1(j)を2次元座標値とした2次元正規分布W(n)に関する回帰直線Lに基づき前記指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これら標準化指標値F0’(j),F1’(j)を2次元座標値とした標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割し、これら領域R(d)を分布中心Oから順に選択して予め設定されたE個のハッシュ値e(e=1,2,…,E)を循環して順に付与し、当該ハッシュ値eと対応する文字列長nのハッシュグループGH(e)に前記キーワードkw(j)のそれぞれを分類するキーワード処理ステップと、
前記文字列長n(n=1,2,…,N)ごとに、前記入力テキストTinの先頭から1文字ずつ順に移動させた抽出位置xから、前記文字列長nを有する部分文字列Tをそれぞれ抽出し、これら部分文字列Tごとに、当該部分文字列Tを構成する文字コードc(i)と前記係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0,F1を計算し、前記2次元正規分布W(n)に関する回帰直線に基づき前記指標値F0,F1を標準化した標準化指標値F0’,F1’を計算し、これら標準化指標値F0’,F1’に基づいて前記標準化2次元正規分布W’(n)のうち当該部分文字列Tが属する前記領域R(d)を特定することにより当該部分文字列Tのハッシュ値eを導出し、当該ハッシュ値eと対応する文字列長nの前記ハッシュグルーブGH(e)に分類されている前記キーワードkw(j)のそれぞれと当該部分文字列Tとを照合することにより、前記入力テキストTin内に含まれる前記キーワードkw(j)を検索する検索処理ステップと
を備えることを特徴とする文字列検索方法。 - 請求項1に記載の文字列検索方法において、
前記キーワード処理ステップは、前記2次元正規分布W(n)を生成する際、前記指標値F0(j)に関する正規分布の平均値および標準偏差をa0,s0とし、前記指標値F1(j)に関する正規分布の標準偏差をs1とし、前記指標値F0(j),F1(j)の2次元分布に関する回帰直線の傾きおよび切片をP,Qとした場合、前記指標値F0(j),F1(j)から標準化指標値F0’(j),F1’(j)を次の式
- 請求項1または請求項2に記載の文字列検索方法において、
前記検索処理ステップは、
前記文字列長nの前記部分文字列Tについて前記指標値F0,F1を計算する際、前記文字コードc(i)との線形結合の計算に用いる前記係数列a(i),b(i)として、次の式
前記抽出位置xから抽出した文字列長nの前記部分文字列Tに関する指標値F0(x),F1(x)を計算する際、前記抽出位置xの1文字前の抽出位置x−1から抽出した文字列長nの部分文字列T−1に関する指標値をF0(x−1),F1(x−1)とした場合、2つの前記指標値F0(x),F1(x)は、次の式
- 請求項1〜請求項3のいずれかに記載の文字列検索方法において、
前記検索処理ステップは、前記ハッシュグループGH(e)に属する前記キーワードkw(j)のそれぞれと前記部分文字列Tとを照合する際、前記キーワードkw(j)に関する前記指標値F0(j)(またはF1(j))からなるキーワード指標値FK(e,j)と、前記部分文字列Tに関する前記指標値F0(またはF1)からなる部分文字列指標値FTとを比較し、前記キーワード指標値FK(e,j)と前記部分文字列指標値FTとが一致した場合にのみ、前記キーワードkw(j)と前記部分文字列Tとを照合することを特徴とする文字列検索方法。 - 請求項4に記載の文字列検索方法において、
前記検索処理ステップは、前記ハッシュグループGH(e)に属する前記キーワードkw(j)に関する前記キーワード指標値FK(e,j)のそれぞれを昇順(または降順)に並び替えた後、前記部分文字列指標値FTと順に比較し、前記部分文字列指標値FTが前記キーワード指標値FK(e,j)を上回った(または下回った)時点で比較を終了することを特徴とする文字列検索方法。 - 文字列に関するハッシュ値を利用して、入力テキストTin中に含まる所定のキーワードkw(j)(j=1,2,…,J)を検索する文字列検索装置であって、
前記キーワードkw(j)を文字列長n(n=1,2,…,N)に基づき複数のキーワードグループGK(n)に分類し、これらキーワードグループGK(n)ごとに、当該キーワードグループGK(n)に属する各キーワードkw(j)について、当該キーワードkw(j)を構成する文字コードC(i)(i=1,2,…,I)と2つの異なる係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0(j),F1(j)を計算し、これら指標値F0(j),F1(j)を2次元座標値とした2次元正規分布W(n)に関する回帰直線Lに基づき前記指標値F0(j),F1(j)を標準化した標準化指標値F0’(j),F1’(j)を計算し、これら標準化指標値F0’(j),F1’(j)を2次元座標値とした標準化2次元正規分布W’(n)を、分布中心Oに対して点対称な形状を有する、予め設定されたD個の領域R(d)(d=1,2,…,D)に分割し、これら領域R(d)を分布中心Oから順に選択して予め設定されたE個のハッシュ値e(e=1,2,…,E)を循環して順に付与し、当該ハッシュ値eと対応する文字列長nのハッシュグループGH(e)に前記キーワードkw(j)のそれぞれを分類するキーワード処理部と、
前記文字列長n(n=1,2,…,N)ごとに、前記入力テキストTinの先頭から1文字ずつ順に移動させた抽出位置xから、前記文字列長nを有する部分文字列Tをそれぞれ抽出し、これら部分文字列Tごとに、当該部分文字列Tを構成する文字コードc(i)と前記係数列a(i),b(i)のそれぞれとの線形結合からなる2つの指標値F0,F1を計算し、前記2次元正規分布W(n)に関する回帰直線に基づき前記指標値F0,F1を標準化した標準化指標値F0’,F1’を計算し、これら標準化指標値F0’,F1’に基づいて前記標準化2次元正規分布W’(n)のうち当該部分文字列Tが属する前記領域R(d)を特定することにより当該部分文字列Tのハッシュ値eを導出し、当該ハッシュ値eと対応する文字列長nの前記ハッシュグルーブGH(e)に分類されている前記キーワードkw(j)のそれぞれと当該部分文字列Tとを照合することにより、前記入力テキストTin内に含まれる前記キーワードkw(j)を検索する検索処理部と
を備えることを特徴とする文字列検索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015241887A JP2017107472A (ja) | 2015-12-11 | 2015-12-11 | 文字列検索方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015241887A JP2017107472A (ja) | 2015-12-11 | 2015-12-11 | 文字列検索方法および装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017107472A true JP2017107472A (ja) | 2017-06-15 |
Family
ID=59059908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015241887A Pending JP2017107472A (ja) | 2015-12-11 | 2015-12-11 | 文字列検索方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017107472A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6343081B1 (ja) * | 2017-09-29 | 2018-06-13 | 義尚 神山 | 符号符号分類検索ソフトウェアを記録した記録媒体 |
CN109727591A (zh) * | 2018-12-29 | 2019-05-07 | 深圳市同行者科技有限公司 | 一种语音搜索的方法及装置 |
CN116127457A (zh) * | 2023-02-16 | 2023-05-16 | 软安科技有限公司 | 一种基于winnowing算法的恶意代码检测方法及系统 |
-
2015
- 2015-12-11 JP JP2015241887A patent/JP2017107472A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6343081B1 (ja) * | 2017-09-29 | 2018-06-13 | 義尚 神山 | 符号符号分類検索ソフトウェアを記録した記録媒体 |
CN109727591A (zh) * | 2018-12-29 | 2019-05-07 | 深圳市同行者科技有限公司 | 一种语音搜索的方法及装置 |
CN109727591B (zh) * | 2018-12-29 | 2020-08-11 | 深圳市同行者科技有限公司 | 一种语音搜索的方法及装置 |
CN116127457A (zh) * | 2023-02-16 | 2023-05-16 | 软安科技有限公司 | 一种基于winnowing算法的恶意代码检测方法及系统 |
CN116127457B (zh) * | 2023-02-16 | 2024-05-14 | 软安科技有限公司 | 一种基于winnowing算法的恶意代码检测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776400B2 (en) | Clustering using locality-sensitive hashing with improved cost model | |
CN106991051B (zh) | 一种基于变异测试和关联规则的测试用例约简方法 | |
JP4556120B2 (ja) | 情報処理装置および方法、並びにプログラム | |
JP5193518B2 (ja) | パターン探索装置及びその方法 | |
JP6912488B2 (ja) | 文字列距離計算方法及び装置 | |
JP2013206187A (ja) | 情報変換装置、情報検索装置、情報変換方法、情報検索方法、情報変換プログラム、情報検索プログラム | |
US20160147867A1 (en) | Information matching apparatus, information matching method, and computer readable storage medium having stored information matching program | |
JP2017004123A (ja) | 判定装置、判定方法および判定プログラム | |
JP2013073256A (ja) | 近似最近傍探索方法、最近傍探索プログラムおよび装置 | |
JP2017107472A (ja) | 文字列検索方法および装置 | |
CN112364625A (zh) | 文本筛选方法、装置、设备及存储介质 | |
KR101662957B1 (ko) | 해싱기반의 순위다중패턴매칭 방법 | |
JP6589639B2 (ja) | 検索システム、検索方法およびプログラム | |
JP2010092432A (ja) | データ類似度計算システム、データ類似度計算方法およびデータ類似度計算プログラム | |
US8370390B1 (en) | Method and apparatus for identifying near-duplicate documents | |
US20150286892A1 (en) | Image processing apparatus and image processing method | |
JP5439235B2 (ja) | 文書分類方法、文書分類装置、およびプログラム | |
JP2012043437A (ja) | 画像処理方法及び画像処理装置 | |
JP2004046612A (ja) | データマッチング方法、データマッチング装置、データマッチングプログラムおよびコンピュータで読み取り可能な記録媒体 | |
US9830355B2 (en) | Computer-implemented method of performing a search using signatures | |
CN109299260B (zh) | 数据分类方法、装置以及计算机可读存储介质 | |
WO2014168199A1 (ja) | 論理演算方法および情報処理装置 | |
JP6577922B2 (ja) | 検索装置、方法、及びプログラム | |
KR101815968B1 (ko) | 그룹 분리 기능을 제공하기 위한 악성코드 분류 시스템 및 그 방법 | |
JP6336827B2 (ja) | 画像検索装置、画像検索方法および検索システム |