(57)【要約】【課題】本発明の課題は、検知用行列データのデータ量を削減することを目的とする。【解決手段】上記課題は、対象文書を数値行列に変換し、前記数値行列を離散フーリエ変換することで変換行列を生成し、前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成する処理をコンピュータに行わせる生成プログラムにより達成される。【選択図】図１１
2019045895.tif 000002
【特許請求の範囲】
【請求項１】
対象文書を数値行列に変換し、
前記数値行列を離散フーリエ変換することで変換行列を生成し、
前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成する
処理をコンピュータに行わせる生成プログラム。
【請求項２】
前記コンピュータに、
前記対象文書のサイズに応じて前記上位行に対する前記マスキングの範囲を決定させる
処理を行わせる請求項１記載の生成プログラム。
【請求項３】
前記コンピュータに、
指定された剽窃検知精度に基づいて前記上位行に対する前記マスキングの範囲を決定させる
処理を行わせる請求項１記載の生成プログラム。
【請求項４】
対象文書を数値行列に変換し、
前記数値行列を離散フーリエ変換することで変換行列を生成し、
前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成する
処理をコンピュータが行う生成方法。
【請求項５】
対象文書を数値行列に変換する変換部と、
前記数値行列を離散フーリエ変換することで変換行列を生成する生成部と、
前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成するマスキング部と、
を有する生成装置。
【請求項６】
対象文書を第１数値行列に変換し、
前記第１数値行列を離散フーリエ変換することで第１変換行列を生成し、
前記第１変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成し、
問合文書を第２数値行列に変換し、
前記第２数値行列を前記離散フーリエ変換することで第２変換行列を生成し、
前記第２変換行列を要素ごとに乗算して、要素積行列を作成し、
作成された前記要素積行列の要素を行ごとに合算した後に、逆離散フーリエ変換を行って前記対象文書と前記問合文書との一致に係るベクトルを取得する
処理をコンピュータに行わせる剽窃検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成プログラム、生成方法、生成装置、及び剽窃検知プログラムに関する。
【背景技術】
【０００２】
近年、文書間の比較を行い、類似箇所を抽出することが行われている。一例として、文書間の類似性を要素の対で判定する際に、ハッシュ値の対を用いて高速に判定する技術等が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２３１７６６号公報
【特許文献２】特開２００４−４６３７０号公報
【特許文献３】特開２０１２−２５２４８４号公報
【非特許文献】
【０００４】
【非特許文献１】M．J．Fischer  and  M．S．Paterson：String‐matching  and  other  products，  Complexity  of  Computation（Proceedings  of  the  SIAM‐AMS  Applied  Mathematics  Symposium，New  York，1973），pp．113‐125，1974
【非特許文献２】D．Gusfield：Algorithms  on  Strings，Trees  and  Sequences：Computer  Science  and  Computational  Biology，Cambridge  University  Press，1997
【非特許文献３】M．J．Atallah  et  al．：A  randomized  algorithm  for  approximate  string  matching．Algorithmica，29：468‐486，2001
【非特許文献４】K．Baba  et  al．：A  Note  on  Randomized  Algorithm  for  String  Matching  with  Mismatches，Nordic  Journal  of  Computing，10（1）：2‐12，2003
【非特許文献５】T．Schoenmeyr  and  D．Yu‐Zhang：FFT‐based  Algorithms  for  the  String  Matching  with  Mismatches  Problem，Journal  of  Algorithms，57：130‐139，2005
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ネットワークの普及、インターネットの拡大に伴い、オンラインでアクセス可能な電子的な文書の量が膨大となっている。特に、学術論文、著作権のある文書等についての剽窃は、検出されるべきであるとの要望が高まっている。
【０００６】
一般には、剽窃の元になる大量の対象文書に対して、所定の処理を行って類似性判定を容易に行えるように数値化し、文書を数値化された行列を表すデータで記憶しておくことが行われている。特に、対象文書がインターネット上に膨大に存在する現在では、剽窃の検知用に数値化されたデータを十分に保持する記憶領域を確保することが困難になってきている。
【０００７】
したがって、１つの側面では、検知用行列データのデータ量を削減することを目的とする。
【課題を解決するための手段】
【０００８】
一態様によれば、対象文書を数値行列に変換し、前記数値行列を離散フーリエ変換することで変換行列を生成し、前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成する処理をコンピュータに行わせる生成プログラムが提供される。
【０００９】
また、対象文書を第１数値行列に変換し、前記第１数値行列を離散フーリエ変換することで第１変換行列を生成し、前記第１変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成し、問合文書を第２数値行列に変換し、前記第２数値行列を前記離散フーリエ変換することで第２変換行列を生成し、前記第２変換行列を要素ごとに乗算して、要素積行列を作成し、作成された前記要素積行列の要素を行ごとに合算した後に、逆離散フーリエ変換を行って前記対象文書と前記問合文書との一致に係るベクトルを取得する処理をコンピュータに行わせる剽窃検知プログラムが提供される。
【００１０】
更に、上記課題を解決するための手段として、生成方法、及び生成装置とすることもできる。
【発明の効果】
【００１１】
検知用行列データのデータ量を削減することができる。
【図面の簡単な説明】
【００１２】
【図１】文書の剽窃検知の概要を説明するための図である。
【図２】マッチカウント問題の例を示す図である。
【図３】事前計算の中間状態のデータ量について説明するための図である。
【図４】本実施例における剽窃検知用に保持するデータ量の削減を表す図である。
【図５】本実施例における剽窃検知に係る全体処理の概要を説明するための図である。
【図６】剽窃がある場合のスコアベクトルの例を示す図である。
【図７】波形の合成及び分解を説明するための図である。
【図８】剽窃が有る場合のマスキングによる近似的なスコアベクトルの例を説明するための図である。
【図９】剽窃が無い場合のマスキングによる近似的なスコアベクトルの例を説明するための図である。
【図１０】生成装置のハードウェア構成を示す図である。
【図１１】生成装置の第１の機能構成例を示す図である。
【図１２】図１１の第１の機能構成例における検知用データ生成処理を説明するための図である。
【図１３】図１１の第１の機能構成例における剽窃検知処理を説明するための図である。
【図１４】データ削減率と剽窃検知の精度との関係を示す図である。
【図１５】生成装置の第２の機能構成例を示す図である。
【図１６】図１５の第２の機能構成例における初期設定処理を説明するためのフローチャート図である。
【図１７】条件設定画面の例を示す図である。
【図１８】実験結果と条件設定との関係を説明するための図である。
【図１９】設定情報画面の例を示す図である。
【図２０】位置ずれを説明するための図である。
【図２１】計算と計算時間との関係を説明するための図である。
【図２２】計算方法の概念図を示す図である。
【図２３】生成装置の第３の機能構成例を示す図である。
【図２４】図２３の第３の機能構成例における剽窃検知処理を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面に基づいて説明する。先ず、文書の剽窃検知に係る問題の定式化について想定する状況を以下に示す。
【００１４】
＜状況１＞
文書の剽窃の検知では、大まかな内容や論理ではなく、字面についての盗用が対象となる。剽窃かどうかの現実的な判断が状況に依存する余地が少なく、特に厳密に検出できることが望ましい。
【００１５】
＜状況２＞
剽窃検知を行う入力文書（後述される問合文書７０に相当）中の疑わしい文やフレーズを指定せず、文書全体について網羅的に調べる。剽窃検知の手掛かりとなる付加的な情報が無い場合であっても剽窃検知可能とする。
【００１６】
＜状況３＞
剽窃の元になる可能性のある文章（後述される対象文章６０に相当）が前もって与えられ、事前の処理を行っておく。実際の運用では、対象文章６０に係るデータをデータベース（後述される剽窃検知用データ６９に相当）として保持すればよい。
【００１７】
図１は、文書の剽窃検知の概要を説明するための図である。図１において、文書の剽窃を検知するためには、剽窃の元になる複数の対象文書６０をインタビュー２から収集し、収集した複数の対象文書６０に対して事前計算が行われる。事前計算では、各対象文書６０を数値行列化し、離散フーリエ変換が行われる。事前計算によって得た変換後行列データが剽窃検知用データ６９に蓄積される。
【００１８】
問合文書７０は、文書内に既存の文書からの剽窃部分を含んでいないかが判定される文章である。問合文書７０に対しても、対象文書６０に対する事前計算と同様の処理を行い、変換後行列データを取得する。問合文書７０の変換後行列データと、剽窃検知用データ６９を参照して、複数の対象文書６０のそれぞれの変換後行列データとを用いて、剽窃を検知する。
【００１９】
次に、問合文書７０に対する剽窃検知のための指標について説明する。
・問合文書７０と対象文書６０のすべての位置ずれについて、語の一致の数を調べる問題（例えば、マッチカウント問題等）を用いる。
【００２０】
・出力はベクトルである。（ベクトルを用いることで、剽窃の判断のための解析が可能となる）
・問合文書７０の疑わしい部分を限定する必要がない。
【００２１】
・各位置ずれでの語の一致数の絶対値でなく、全体の分布に対する相対的な値を考慮できる。
【００２２】
そして、
・対象文書６０中の問合文書７０の出現を単純に求める問題の場合
・出力は出現位置である。（既に、剽窃についての何らかの知識が用いられていることが前提）
・厳密な出現の探索には、剽窃箇所の正確な特定が必要である。
【００２３】
・近似的な出現の探索は、閾値が与えられれば高速に可能だが、考慮できるのは絶対値のみである。
【００２４】
上述したマッチカウント問題について、問合文書７０が「犬である」、対象文書６０が「吾輩は猫である」の場合で説明する。図２は、マッチカウント問題の例を示す図である。図２において、対象文書６０に対して、問合文書７０の末尾の語から、語ごとにずらして重ね合わせる。語ごとのずれは位置ずれａで特定され、一致した語数は一致数ｂで示されている。この例の出力は、位置ずれａの順に、一致数ｂを示したベクトル（0，0，0，0，2，0，0）である。このようなベクトルは、スコアベクトルと言う。
【００２５】
マッチカウント問題を解く手法として、対象文書６０及び問合文書７０を数値化し、畳み込み演算を行うことが望ましい。この手法は、以下の特徴がある。
・マッチカウント問題を解く手法のなかで最も高速である。（それぞれ長さ（語数）ｎの文書について処理時間はO（nlogn）時間である。）
・計算量は、対象文書６０の量に比例して増加する。
・想定する上記＜状況３＞の場合、対象文書６０についての計算の一部を事前に実行するのが効果的な解法である。
・問題点は、計算の中間状態のデータ量が膨大となり、事前の計算結果を保持することが困難になる場合がある。
【００２６】
文章の数値化と畳み込み演算による中間状態のデータ量について説明する。図３は、事前計算の中間状態のデータ量について説明するための図である。図３では、問合文書７０が「犬である」、対象文書６０が「吾輩は猫である」とする。図３（Ａ）では、文書の数値ベクトル生成の例を示し、図３（Ｂ）では、畳み込み演算の例を示し、図３（Ｃ）では、語の一致数の例を示している。
【００２７】
図３（Ａ）の数値ベクトル生成では、文書ごとに語の数だけベクトルが生成される。この例では、問合文書７０の語数は３であるため３つのベクトルで表される。対象文書６０の語数は５であるため５つのベクトルで表される。
【００２８】
ここでは簡単に、問合文書７０と対象文書６０の少なくとも１方に含まれる語の総数に基づく次元数「５」としている。具体的には、問合文書７０と対象文書６０とから得られる語は、「犬」、「で」、「ある」、「吾輩」、「は」、及び「猫」の６個であるが、ある１語（この例では「犬」）を全てゼロのベクトル（0，0，0，0，0）に割り当てることにより、５次元で表現しても良い。
【００２９】
よって、図３（Ａ）の数値ベクトル生成の段階で、語のベクトル表現の次元数倍の領域が使用される。次元数は、単純な表現の場合には、語数に相当する。
【００３０】
図３（Ｂ）の畳み込み演算では、問合文書７０及び対象文書６０を位置ずれａ（図２）を行数とし、図３（Ａ）の数値ベクトル生成の段階における次元数を列数により畳み込み演算を行う。先ず、一方の行列を行に関して反転させて、２つの行列を位置ずれａの行数に一致させるために下位行を0でパディングする。
【００３１】
この例では、問合文書行列７１ａにおいて問合文書７０のベクトルの位置（行）を上下で反転させて下位行を0でパディングした問合文書行列７１ａと、パディングのみ行った対象文書６０の対象文書行列６１ａとに対して畳み込み演算を行う。問合文書行列７１ａは、問合文書７０を行列で表現し、対象文書行列６１ａは、対象文書６０を行列で表現している。
【００３２】
畳み込み演算では、
（１）２つの行列７１ａ及び６１ａの離散フーリエ変換（DFT：Discrete  Fourier  Transform）
（２）要素ごとの乗算（積）
（３）逆離散フーリエ変換（逆DFT）
が行われる。ただし、畳み込み定理を満たす変換であれば、離散フーリエ変換以外の演算でもよい。このような畳み込み演算を行うことで、行列８１ａを得る。この行列８１ａは、位置ずれａごとの語の一致箇所を「１」で示している。
【００３３】
図３（Ｃ）の語一致数計算では、図３（Ｂ）の行列８１ａの行ごとに要素を加算して、ａ行×１列のベクトル７９ａを得る。得られたベクトル７９ａが、図２の一致数ｂに相当する。この例では、５番目の位置ずれで、２つの語が一致していることを示している。図２を参照すると、語「で」と語「ある」の２つが一致している。
【００３４】
上述した事前計算では、問合文書行列７１ａ及び対象文書６０を作成するためのパディングと、離散フーリエ変換を含む畳み込み演算により、中間状態のデータ量は約４倍となってしまう。複数の対象文書６０に対して、それぞれの対象文書行列６１ａは、剽窃検知用データ６９（図１）に保持される。語が多い程、対象文書行列６１ａのデータ量が多くなる。本実施例では、この保持する対象文書行列６１ａのデータ量を削減する。
【００３５】
図４は、本実施例における剽窃検知用に保持するデータ量の削減を表す図である。図４において、本実施例では、剽窃検知の精度を劣化させることなく、対象文書６０から得られた対象文書行列６１ａを表すデータを少なくすることで、剽窃検知用データ６９のデータ量を削減する。
【００３６】
図５は、本実施例における剽窃検知に係る全体処理の概要を説明するための図である。図５より、本実施例では、対象文書行列６１ａに対して離散フーリエ変換を行って得た変換後対象文書行列６２ａの１又は複数行を全て0でマスキングして、剽窃検知用データ６９とする。行単位で0にすることで、データ量を削減した削減行列６３ａを得ることができる。このデータ量が削減された削減行列６３ａを剽窃検知用データ６９として保持する。
【００３７】
問合文書行列７１ａに対して離散フーリエ変換を行い、変換後問合文書行列７２ａを得る。本実施例では、既存の畳み込み演算での計算手順を変えて、変換後問合文書行列７２ａと、予め用意した剽窃検知用データ６９の削減行列６３ａとで、要素ごとの積（内積）を得たのち、逆離散フーリエ変換を行う。このような計算手順とすることで、処理時間を短縮できる。
【００３８】
上述した内容に基づく計算は、以下のように説明される。
【００３９】
【数１】
2019045895.tif 000003
で表されるものとする。スコアベクトルCcは、
【００４０】
【数２】
2019045895.tif 000004
で得られる。本実施例では、スコアベクトルCcの近似値として、
【００４１】
【数３】
2019045895.tif 000005
を計算する。
【００４２】
（FB）mの（i，j）要素が０ならば、
【００４３】
【数４】
2019045895.tif 000006
の（i，j）要素は０なので、マスキングの範囲に応じて乗算を省略できる。
【００４４】
次に、変換後対象文書行列６２ａの行のマスキングについて図６から図９で説明する。図６は、剽窃がある場合のスコアベクトルの例を示す図である。図６において、縦軸に語の一致数（スコアベクトル）を示し、横軸に文書の位置ずれを示している。以下、図６に示すグラフを単にスコアベクトル８ｇという。
【００４５】
問合文書７０は、対象文書６０に対する位置ずれ８ａで突出したピーク８ｐを示している。即ち、位置ずれ８ａの時に、問合文書７０は、対象文書６０と非常に類似していることを示し、剽窃している可能性があることを示している。また、単に、ピーク８ｐの有無のみを示す結果を得られるだけでも有効な場合がある。その場合、スコアベクトルの厳密解でなくてもよい。
【００４６】
発明者は、文章の位置ずれごとの語の一致数を表すこのような波形について、以下のように解析した。先ず、波形の合成及び分解について考えると、単純には、図７のように示される。
【００４７】
図７は、波形の合成及び分解を説明するための図である。図７において、元の波形７ｏｒｇは、低周波成分７ＬＦと高周波成分７ＨＦの合成により表される。言い換えると、元の波形７ｏｒｇは、低周波成分７ＬＦと高周波成分７ＨＦとに分解される。
【００４８】
低周波成分７ＬＦは大域的な変化を表し、高周波成分７ＨＦは局所的な変化を表す。また、低周波成分７ＬＦは、フーリエ変換先の下位成分に相当し、高周波成分７ＨＦは、フーリエ変換先の上位成分に相当している。高周波成分７ＨＦに比べ、低周波成分７ＬＦには、元の波形７ｏｒｇの大まかな形状が残るため、ピーク８ｐの情報が残りやすい。
【００４９】
発明者は、この低周波成分７ＬＦの特定に着目し、剽窃の有り無しによる低周波成分７ＬＦ及び高周波成分７ＨＦについて検証し、図８及び図９に示すような結果を得た。この検証では、対象文書６０の離散フーリエ変換後の変換後対象文書行列６２ａをマスキングにより１０％と１％の下位成分を残して剽窃検証を行った場合と、剽窃検知用データ６９に対するマスキングにより１０％と１％の上位成分を残して剽窃検証を行った場合とで比較した。
【００５０】
図８は、剽窃が有る場合のマスキングによる近似的なスコアベクトルの例を説明するための図である。図８（Ａ）は、図６と同様の剽窃が有り、ピーク８ｐを示すスコアベクトル８ｇを示している。
【００５１】
図８（Ｂ）では、変換後対象文書行列６２ａの下位成分のみを使用した場合の近似的なスコアベクトルを上段に示し、上位成分のみを使用した場合の近似的なスコアベクトルを下段に示している。それぞれ、１０％使用と１％使用の２つの場合を示している。
【００５２】
低周波成分のみを残した場合には、変換後対象文書行列６２ａの下位成分の１０％使用と１％使用の両方において、同様の位置ずれにおいてピーク８ｖ−１とピーク８ｖ−２とが残っている。剽窃の有無の判定は十分に行える。一方、高周波成分のみを残した場合には、変換後対象文書行列６２ａの上位成分の１０％使用の場合には、ピーク８ｗが残っているが、１％使用の場合にはピークの判別は困難である。
【００５３】
よって、低周波成分のみ、即ち、変換後対象文書行列６２ａの下位成分のみの使用で十分に、剽窃が有ることを判定できる。次に、剽窃が無い場合について検証した結果を示す。
【００５４】
図９は、剽窃が無い場合のマスキングによる近似的なスコアベクトルの例を説明するための図である。図９（Ａ）は、剽窃が無い場合のスコアベクトル８ｇ‐２を示している。スコアベクトル８ｇ‐２には、全ての位置ずれに対してピークが存在しない。
【００５５】
図９（Ｂ）では、変換後対象文書行列６２ａの下位成分のみを使用した場合の近似的なスコアベクトルを上段に示し、上位成分のみを使用した場合の近似的なスコアベクトルを下段に示している。それぞれ、１０％使用と１％使用の２つの場合を示している。
【００５６】
低周波成分のみを残した場合には、変換後対象文書行列６２ａの下位成分の１０％使用と１％使用の両方において、全ての位置ずれでピークは出現していない。また、高周波成分のみを残した場合においても同様に、全ての位置ずれでピークは出現していない。
【００５７】
上述したマスキングの検証から、変換後対象文書行列６２ａの下位成分のみで十分に、剽窃の有無を精度良く判別可能であることが分かる。また、下位成分では１％使用時においても剽窃の有無を判別可能であるため、発明者は、変換後対象文書行列６２ａの下位成分のみを使用した場合には、上位成分のみを使用した場合よりデータ量を削減可能であるという結果を導き出した。
【００５８】
本実施例では、データ量が削減された剽窃検知用データ６９を生成する検知用データ生成処理と、剽窃検知用データ６９を用いた剽窃検知処理とを実現する生成装置１００（図１０）について説明する。本実施例における生成装置１００は、図１０に示すようなハードウェア構成を有する。
【００５９】
図１０は、生成装置のハードウェア構成を示す図である。図１０において、生成装置１００は、コンピュータによって制御される情報処理装置であって、ＣＰＵ（Central  Processing  Unit）１１と、主記憶装置１２と、補助記憶装置１３と、入力装置１４と、表示装置１５と、通信Ｉ／Ｆ（インターフェース）１７と、ドライブ装置１８とを有し、バスＢに接続される。
【００６０】
ＣＰＵ１１は、主記憶装置１２に格納されたプログラムに従って生成装置１００を制御するプロセッサに相当する。主記憶装置１２には、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）等が用いられ、ＣＰＵ１１にて実行されるプログラム、ＣＰＵ１１での処理に必要なデータ、ＣＰＵ１１での処理にて得られたデータ等を記憶又は一時保存する。
【００６１】
補助記憶装置１３には、ＨＤＤ（Hard  Disk  Drive）等が用いられ、各種処理を実行するためのプログラム等のデータを格納する。補助記憶装置１３に格納されているプログラムの一部が主記憶装置１２にロードされ、ＣＰＵ１１に実行されることによって、各種処理が実現される。主記憶装置１２、補助記憶装置１３、ネットワーク等を介してアクセス可能な外部記憶装置等を総称して、記憶部１３０で表す。
【００６２】
入力装置１４は、マウス、キーボード等を有し、ユーザが生成装置１００による処理に必要な各種情報を入力するために用いられる。表示装置１５は、ＣＰＵ１１の制御のもとに必要な各種情報を表示する。入力装置１４と表示装置１５とは、一体化したタッチパネル等によるユーザインタフェースであってもよい。通信Ｉ／Ｆ１７は、有線又は無線などのネットワークを通じて通信を行う。通信Ｉ／Ｆ１７による通信は無線又は有線に限定されるものではない。
【００６３】
生成装置１００によって行われる処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ（Compact  Disc  Read‐Only  Memory）等の記憶媒体１９によって生成装置１００に提供される。
【００６４】
ドライブ装置１８は、ドライブ装置１８にセットされた記憶媒体１９（例えば、ＣＤ−ＲＯＭ等）と生成装置１００とのインターフェースを行う。
【００６５】
また、記憶媒体１９に、後述される本実施の形態に係る種々の処理を実現するプログラムを格納し、この記憶媒体１９に格納されたプログラムは、ドライブ装置１８を介して生成装置１００にインストールされる。インストールされたプログラムは、生成装置１００により実行可能となる。
【００６６】
尚、プログラムを格納する記憶媒体１９はＣＤ−ＲＯＭに限定されず、コンピュータが読み取り可能な、データの構造（structure）を有する１つ以上の非一時的（non‐transitory）な、有形（tangible）な媒体であればよい。コンピュータ読取可能な記憶媒体として、ＣＤ−ＲＯＭの他に、ＤＶＤ（Digital  Versatile  Disk）ディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリであっても良い。
【００６７】
図１１は、生成装置の第１の機能構成例を示す図である。図１１において、生成装置１００は、主に、検知用データ生成部４０と、剽窃検知部５０とを有する。検知用データ生成部４０と、剽窃検知部５０とは、ＣＰＵ１１が対応するプログラムを実行することによって行われる処理により実現される。
【００６８】
記憶部１３０は、対象文書６０、対象文書行列データ６１、変換後対象文書行列データ６２、削減行列データ６３、剽窃検知用データ６９、問合文書７０、問合文書行列データ７１、変換後問合文書行列データ７２、要素積行列データ７３、逆変換後行列データ７４、一致数ベクトルデータ７９等を有する。
【００６９】
検知用データ生成部４０は、データ量が削減された剽窃検知用データ６９を生成する処理部であり、対象文書行列生成部４１と、対象文書変換部４２と、マスキング部４３と、出力部４４とを有する。
【００７０】
対象文書行列生成部４１は、対象文書６０を読み込んで、対象文書６０を構成する語ごとに数値ベクトルを作成して、対象文書行列データ６１を生成する。対象文書行列生成部４１は、全ての語の数値ベクトルを、数値ベクトルの次元数を行とし、語の個数を列とする行列で表された対象文書行列データ６１を生成して、記憶部１３０に記憶する。
【００７１】
対象文書変換部４２は、記憶部１３０から対象文書行列データ６１を読み込んでFFTで変換する。変換により得た変換対象文書行列データ６２は、記憶部１３０に記憶される。マスキング部４３は、記憶部１３０から変換対象文書行列データ６２を読み込んで、低周波成分に相当する下位成分以外を０で置き換えてマスキングすることで、対象文書行列データ６１からデータ量が削減された削減行列データ６３を得る。マスキングする行数、又は、下位成分として残す下位行数は、予め定められている。
【００７２】
出力部４４は、マスキング部４３によって変換対象文書行列データ６２のデータ量が削減された削減行列データ６３を剽窃検知用データ６９として記憶部１３０に蓄積する。複数の対象文書６０のそれぞれの剽窃検知用データ６９が記憶部１３０に保持される。剽窃検知用データ６９は、対象文書６０に関する行列を表すデータである。
【００７３】
剽窃検知部５０は、ユーザからの剽窃部分を含んでいないかを判定する問合文書７０を指定した要求に応じて、剽窃検知用データ６９を用いて剽窃を検知する処理部である。剽窃検知部５０は、問合文書行列生成部５１と、問合文書変換部５２と、要素乗算部５３と、逆変換部５４と、要素合算部５９とを有する。
【００７４】
問合文書行列生成部５１は、ユーザからの問合文書７０を指定した要求に応じて、記憶部１３０から読み込み、問合文書７０を構成する語ごとに数値ベクトルを作成して、対象文書行列データ６１を生成する。問合文書行列生成部５１は、全ての語の数値ベクトルを、数値ベクトルの次元数を行とし、語の個数を列とする行列で表した問合文書行列データ７１を生成して、記憶部１３０に記憶する。
【００７５】
問合文書変換部５２は、問合文書行列データ７１を読み込んでFFTで変換する。変換により得た変換問合文書行列データ７２は、記憶部１３０に記憶される。要素乗算部５３は、記憶部１３０から変換問合文書行列データ７２を取得し、剽窃検知用データ６９を読み込み、両方の行列の互いに対応する要素同士を乗算する。即ち、要素の積を得る。要素の積で表された要素積行列データ７３が記憶部１３０に記憶される。
【００７６】
逆変換部５４は、記憶部１３０から逆変換後行列データ７４を得て、逆FFTで変換し、逆変換後行列データ７４を得る。逆変換後行列データ７４は記憶部１３０に記憶される。要素合算部５９は、逆変換後行列データ７４の各行の要素を合算し、語ごとの一致数を示す一致数ベクトルデータ７９を記憶部１３０に出力する。要素合算部５９は、一致数ベクトルデータ７９を表示装置１５に表示してもよい。
【００７７】
図１２は、図１１の第１の機能構成例における検知用データ生成処理を説明するための図である。図１２（Ａ）ではフローチャートを示し、図１２（Ｂ）では処理の過程を示す。図１２（Ｂ）を参照しつつ、図１２（Ａ）のフローチャートを説明する。図１２（Ａ）において、検知用データ生成部４０は、複数の対象文書６０のそれぞれに対して、ステップＳ４０１〜Ｓ４０４を行い、データ量の削減された剽窃検知用データ６９を生成する。
【００７８】
検知用データ生成部４０において、対象文書行列生成部４１は、対象文書６０の語ごとのベクトルを作成し、対象文書６０を表す対象文書行列データ６１を生成する（ステップＳ４０１）。対象文書行列データ６１は、配列ｂｉｊ（ｉ＝１〜ｎの自然数、ｊ＝１〜ｄの自然数）等で表され記憶部１３０に記憶される。
【００７９】
対象文書変換部４２は、対象文書行列生成部４１が生成した対象文書行列データ６１に対して離散フーリエ変換を行い、変換後対象文書行列データ６２を得る（ステップＳ４０２）。変換後対象文書行列データ６２は、配列ｇｉｊ（ｉ＝１〜ｎの自然数、ｊ＝１〜ｄの自然数）等で表され記憶部１３０に記憶される。
【００８０】
そして、マスキング部４３は、変換後対象文書行列データ６２の上位行をマスキングして削減行列データ６３を得て（ステップＳ４０３）、出力部４４は、得られた削減行列データ６３を剽窃検知用データ６９として蓄積する。削減行列データ６３は、図７で説明した高周波成分７ＨＦがマスクされ、低周波成分７ＬＦのみを表すため、剽窃検知用データ６９では、高周波成分７ＨＦに相当する上位行のデータ量が削減される。
【００８１】
マスキングを行わない既存技術では、離散フーリエ変換後の変換後対象文書行列データ６２が剽窃検知用データ６９として保持される。変換後対象文書行列データ６２と比べて、削減行列データ６３を剽窃検知用データ６９として保持した場合、剽窃検知用データ６９のデータ量を削減できる。
【００８２】
本実施例では、図３（Ｂ）に示される畳み込み演算における一方のDFT、即ち、上記にて説明したFFT及び逆FFTのうち、最初に行うFFTを事前に行い、かつ、データ量を削減して、記憶部１３０に剽窃検知用データ６９として保持する。次に、剽窃検知部５０によって行われる剽窃検知処理について説明する。
【００８３】
図１３は、図１１の第１の機能構成例における剽窃検知処理を説明するための図である。図１３（Ａ）ではフローチャートを示し、図１３（Ｂ）では処理の過程を示す。図１３（Ｂ）を参照しつつ、図１３（Ａ）のフローチャートを説明する。図１３（Ａ）において、剽窃検知部５０は、ユーザからの問合文書７０を指定した要求に応じて、ステップＳ５０１からＳ５０５を行い、語ごとの一致数を示す一致数ベクトルデータ７９を出力する。
【００８４】
剽窃検知部５０において、問合文書行列生成部５１は、問合文書７０の語ごとのベクトルを作成し、問合文書７０を表す問合文書行列データ７１を生成する（ステップＳ５０１）。問合文書行列データ７１は、配列ａｉｊ（ｉ＝１〜ｎの自然数、ｊ＝１〜ｄの自然数）等で表され記憶部１３０に記憶される。
【００８５】
問合文書変換部５２は、問合文書行列生成部５１が生成した問合文書行列データ７１に対して離散フーリエ変換を行い、変換後問合行列データ７２を得る（ステップＳ５０２）。変換後問合行列データ７２は、配列ｆｉｊ（ｉ＝１〜ｎの自然数、ｊ＝１〜ｄの自然数）等で表され記憶部１３０に記憶される。
【００８６】
要素乗算部５３は、変換後問合行列データ７２と剽窃検知用データ６９とで、要素ごとに乗算し、要素の積で表される要素積行列データ７３を作成する（ステップＳ５０３）。本実施例において、作成される要素積行列データ７３は、上位行がマスキングされた行列を示す。要素積行列データ７３は、配列ｈｉｊ（ｉ＝１〜ｎの自然数、ｊ＝１〜ｄの自然数）等で表され記憶部１３０に記憶される。上位行に相当する配列ｈには０のみが示される。
【００８７】
そして、逆変換部５４は、要素積行列データ７３に対して逆離散フーリエ変換を行って、逆変換後行列データ７４を取得する（ステップＳ５０４）。逆離散フーリエ変換は、要素積行列データ７３の各行の要素ごとに行われ、行列の大きさに応じて繰り返し行われる。逆変換後行列データ７４は、配列ｃｉｊ（ｉ＝１〜ｎの自然数、ｊ＝１〜ｄの自然数）等で表され記憶部１３０に記憶される。
【００８８】
要素合算部５９は、逆離散フーリエ変換によって得られた逆変換後行列データ７４の各行の要素を合算し、語ごとに一致した数をベクトルで示す一致数ベクトルデータ７９を作成し記憶部１３０に出力する（ステップＳ５０５）。
【００８９】
逆変換後行列データ７４の行は、図２の位置ずれａに相当する。また、例えば、図３（Ｃ）のベクトル７９ａが一致数ベクトルデータ７９で表される。一致数ベクトルデータ７９は、配列Σｃｉ（ｉ＝１〜ｎの自然数）等のｎ行１列の行列により示されることでベクトルとしてみなせ、記憶部１３０に記憶される。要素合算部５９は、一致数ベクトルデータ７９を表示装置１５に表示させてもよい。
【００９０】
次に、発明者によって行われた複数の対象文書６０から得た剽窃検知用データ６９を用いた実験結果について以下に示す。図１４は、データ削減率と剽窃検知の精度との関係を示す図である。
【００９１】
実験は、以下のように行った。
・剽窃有りの文書を２、０００対と剽窃無しの文書を２，０００対とを用いた。語彙数は、１４３，６００語である。
・文書の数値による行列表現の方法は、語の単純なベクトル表現（One‐hot）とランダムなベクトル表現（Random）とで行った。次元数は、１００で固定した。
・単純なベクトル表現において、出現頻度が上位の語を用い、上位成分をマスキングした場合との比較を行った。
【００９２】
図１４に示すグラフ９１では、横軸にデータ削減率を示し、縦軸に剽窃検知の精度を示している。データ削減率「０」は全ての行をマスキングした場合に相当し、データ削減率「１」は全ての行をマスキングをしなかった場合に相当する。０に近い程、データ削減率が高いことを示す。
【００９３】
本実施例におけるデータ削減率は、次元の大きさによるデータ量の差を考慮したデータ量の削減率である。語のベクトル表現の次元数をｄ、変換後対象文書行列６２ａに対してマスキングを行わない非マスキング率をｒ、基準次元をＤｒｅｆとした場合、データ削減率ＤＴｒは、
ＤＴｒ  ＝  （ｄ／Ｄｒｅｆ）×ｒ        （１）
で表される。実験時の最大次元を基準次元としても良く、図１４の例では、Ｄｒｅｆは１００となる。
【００９４】
図１４より、ランダムなベクトル表現が、単純なベクトル表現より、データ削減率がより「０」に近いところであっても高い精度を示していることが分かる。例えば、Ｐ１では、データ削減率が９８％であっても精度の低下は０．９％であった。また、Ｐ２では、データ削減率が９０％であっても精度の低下は０．１％であった。
【００９５】
ランダムなベクトル表現では、データ削減率が８０％以下では、次元数の固定による精度の低下は見られなくなる。即ち、ランダム（１００次元）、ランダム（２０次元）、及びランダム（４次元）のいずれにおいても、精度の低下は見られない。ランダム（２０次元）が、一般的な英語文書に相当する。一方、単純なベクトル表現の場合には、データ削減が全くない場合でも、精度は、ランダムなベクトル表現より明らかに低い。
【００９６】
このような実験結果から、ランダムなベクトル表現により、予め対象文書６０の語のベクトル表現の次元数を１又は複数定め、データ削減率との関係を実験により取得しておくことで、次元数とデータ削減率とを設定してもよい。
【００９７】
予め得た実験結果に基づき、所望の作業領域のサイズで剽窃検知処理を行うための語のベクトル表現の次元数ｄと、上位行のマスキング率（１−ｒ）とを得て設定してもよい。以下に、実験結果に基づいて次元数ｄと割合ｒとを得る機能構成例について説明する。
【００９８】
図１５は、生成装置の第２の機能構成例を示す図である。図１５において、生成装置１００は、図１１に示す第１の機能構成に加えて、初期設定部３０を有し、記憶部１３０には、実験結果２０、条件データ２１、設定情報２２、補足情報２３等を記憶する。検知用データ生成部４０、剽窃検知部５０、及び関連する種々のデータは、第１の機能構成と同様であるため、説明を省略する。
【００９９】
初期設定部３０は、ユーザの所望する条件に基づいて、検知用データ生成部４０及び剽窃検知部５０での処理に係る情報を設定する処理部である。初期設定部３０は、条件取得部３１と、設定情報特定部３２と、設定情報表示部３３とを有する。
【０１００】
条件取得部３１は、条件データ２１を取得する画面を表示装置１５に表示し、ユーザから条件データ２１を取得して、記憶部１３０に記憶する。設定情報特定部３２は、記憶部１３０から、条件データ２１と、予め用意された実験結果２０とを読み込んで、実験結果２０に基づいて、条件データ２１を満たす次元数、データ削減率、精度等を特定する。
【０１０１】
次元数及びマスキング率（１−ｒ）を示す設定情報２２と、データ削減率、精度等を示す補足情報２３とが記憶部１３０に記憶される。マスキング率（１−ｒ）の代わりに、非マスキング率ｒを指定してもよい。
【０１０２】
設定情報表示部３３は、設定情報２２と補足情報２３とを表示装置１５に表示する。表示装置１５に表示された設定情報２２の検知用データ生成部４０及び剽窃検知部５０による処理への適用のユーザによる確定により、設定情報２２の適用が確定する。設定情報２２を適用しない場合には、条件取得部３１からの処理を繰り返してもよい。又は、実験結果２０を表示装置１５に表示し、実験結果２０上でユーザにより選択された位置から得られる次元数、データ削減率、及び精度等を設定情報２２としてもよい。
【０１０３】
実験結果２０は、予めユーザによる実験によって得られた結果を示すデータファイルであり、図１４に示すような、１又は複数の次元ごとの、データ削減率に応じた精度を表すグラフである。
【０１０４】
条件データ２１は、ユーザが制限したいデータ量又はユーザが所望する精度を示す。制限するデータ量は、対象文書６０のサイズに対する倍率で指定される。設定情報２２は、実験結果２０と条件データ２１とに基づいて得られた次元数、データ削減率、精度等の情報を含む。
【０１０５】
次元数は、語のベクトル表現（図３（Ａ））の次元数を示す。データ削減率は、変換後対象文書行列データ６２の行の総数に対する、０でマスキングする上位行の割合を示す。本実施例では、上位行の割合を示すものとするが、データ削減率は、マスキングせず保持する下位行の行の総数に対する割合であってもよい。精度は、次元数とデータ削減率との組により実験結果２０から得た値を示す。
【０１０６】
図１６は、図１５の第２の機能構成例における初期設定処理を説明するためのフローチャート図である。図１６より、初期設定部３０において、条件取得部３１が条件設定画面Ｇ９７（図１７）を表示装置１５に表示し、ユーザが設定した値を取得し、条件データ２１として記憶部１３０に記憶する（ステップＳ３０１）。
【０１０７】
条件データ２１が取得されると、設定情報特定部３２は、実験結果２０を読み込み（ステップＳ３０２）、条件データ２１を参照して、ユーザが指定した条件はデータ量に係る倍率であるか精度であるかを判断する（ステップＳ３０３）。
【０１０８】
設定情報特定部３２は、実験結果２０から、倍率Ｍに対して、
４ｄｒ≦Ｍ            （２）
となるような次元数ｄと、非マスキング率ｒとを特定する（ステップＳ３０４）。離散フーリエ変換では虚数を表現するために実数の場合と比べて約２倍のデータ量を使用し、パディングによりデータ量が約２倍になる。従って、上記式（２）のｄｒには、係数「４」が乗算されている。
【０１０９】
上記式（１）は
ＤＴｒ  ＝  （ｄ×ｒ）／Ｄｒｅｆ          （３）
と表され、即ち、
ｄｒ＝Ｄｒｅｆ×ＤＴｒ                    （４）
に変形できる。更に、４を乗算することで、
４ｄｒ＝４Ｄｒｅｆ×ＤＴｒ≦Ｍ            （５）
と表せる。ここで、基準次元Ｄｒｅｆは予め与えられているため、ユーザに指定された倍率Ｍを用いることで、データ削減率ＤＴｒを得られる。得られたデータ削減率ＤＴｒを用いて実験結果２０から次元数ｄと精度とを取得する。式（４）を変形すると、
ｒ  ＝  （ＤＴｒ×Ｄｒｅｆ）／ｄ            （６）
となり、非マスキング率ｒを得られる。設定情報特定部３２は、次元数ｄと非マスキング率ｒとを示す設定情報２２と、データ削減率ＤＴｒと精度等を示す補足情報２３とを記憶部１３０に記憶する。
【０１１０】
一方、ステップＳ３０３において、条件が精度を指定していると判断した場合、設定情報特定部３２は、実験結果２０から、条件の精度に相当する次元数と削減率の組合せを１以上特定する（ステップＳ３０５）。例えば、設定情報特定部３２は、条件の精度以上となる次元数と削減率の組合せと、条件の精度から予め定めた許容値以下の範囲における次元数と削減率の組合せとを特定する。
【０１１１】
そして、設定情報特定部３２は、組合せごとに、保持するデータのサイズに対する元データの倍数を算出し、候補を特定する（ステップＳ３０６）。条件の精度以上となる次元数と削減率の組合せが複数ある場合、最も精度が高い組合せと、最も倍率が小さい組合せとを選択し候補としてもよい。ユーザは、処理中のデータ量の増大を考慮して、剽窃検出の精度を選択することができる。設定情報特定部３２は、次元数、削減率、精度等を示す１又は複数の設定情報２２を記憶部１３０に記憶する。
【０１１２】
設定情報特定部３２によって１以上の設定情報２２が得られると、設定情報表示部３３は、設定情報２２を示す設定情報画面Ｇ９８ａ又はＧ９８ｂ（図１９）を表示装置１５に表示する（ステップＳ３０７）。設定情報表示部３３は、条件データ２１が倍率をしていしている場合、設定情報画面Ｇ９８ａを表示装置１５に表示する。設定情報表示部３３は、条件データ２１が精度を指定している場合、設定情報画面Ｇ９８ｂを表示装置１５に表示する。
【０１１３】
設定情報画面Ｇ９８ａ又はＧ９８ｂ（図１９）の表示後にユーザの操作を受け付けると、確定又は終了が選択されたか否かが判断される（ステップＳ３０８）。キャンセルが選択された場合（ステップＳ３０８のＮＯ）、初期設定部３０は、ステップＳ３０１へと戻り、上述した同様の処理を繰り返す。一方、確定又は終了が選択された場合（ステップＳ３０８のＹＥＳ）、初期設定部３０は、この初期設定処理を終了する。
【０１１４】
上述では、領域のサイズを表す倍率又は精度のいずれかを選択する例で説明したが、倍率と精度とを条件としてもよい。上記式（２）を満たす次元数ｄと非マスキング率ｒとに基づいて実験結果２０を参照して、条件で指定された精度以上となる点を取得すればよい。
【０１１５】
図１７は、条件設定画面の例を示す図である。図１７において、条件設定画面Ｇ９７は、倍率を指定する領域９７ａと、精度を指定する領域９７ｂと、確定ボタン９７ｃと、終了ボタン９７ｄとを有する。
【０１１６】
ユーザは、領域９７ａと領域９７ｂのいずれかの領域に値を設定する。例えば、領域９７ａには、８を入力し、元データに対する倍率に８倍を指定する。又は、領域９７ｂには、０．９９９を入力し、精度「０．９９９」以上を指定する。値「１」が最も高い精度となる。
【０１１７】
予め用意した実験結果２０と、上述したユーザによる条件設定との関係を図１８で説明する。図１８は、実験結果と条件設定との関係を説明するための図である。図１８に示すグラフ９２は、実験結果２０を表し、横軸及び縦軸は図１４と同様である。
【０１１８】
図１８において、グラフ９２では、１００次元、２０次元、及び４次元のそれぞれのランダムなベクトル表現による実験結果を示している。グラフ９２内には、３点Ｑ１、Ｑ２、及びＱ３が（データ削減率、剽窃検知の精度）で示されている。
【０１１９】
点Ｑ１は、８倍が条件の場合に設定情報特定部３２が求めた、
４ｄｒ＜８
になるような次元数ｄと非マスキング率ｒに相当する点である。この場合、基準次元Ｄｒｅｆは１００であり、倍率Ｍは８であるから、上述式（５）によりデータ削減率ＤＴｒは０．０２（＝８／（４×１００））を得る。得られたデータ削減率ＤＴｒで実験結果２０を参照することにより、次元数ｄは４であることを特定できる。
【０１２０】
そして、得られた点Ｑ１のデータ削減率ＤＴｒ、基準次元Ｄｒｅｆ、及び次元数ｄとを、上記式（６）に代入することで、
０．０２×（１００／４）
を計算して、非マスキング率「０．５」を得る。従って、
次元数ｄは４、かつ、非マスキング率ｒは０．５
を得る。以下に示される非マスキング率ｒも同様にして得られる。
【０１２１】
上述から、
「ｄ＝４かつｒ＝０．５のとき、精度「０．９９１」が見込まれる」
と判定できる。
【０１２２】
精度「０．９９９」以上の条件に対して、点Ｑ２と点Ｑ３とが選択されている。点Ｑ２と点Ｑ３とについて説明する。
【０１２３】
点Ｑ２は、精度「０．９９９」以上、かつ、最も倍率が小さくなる点である。つまり、次元数ｄは「２０」であり、上記式（６）により非マスキング率ｒとして「０．５」を得るため、４ｄｒを算出することで、データ量が元データに対して「４０」倍となることを予測する。点Ｑ２の精度は「０．９９９」であるから、
「ｄ＝２０かつｒ＝０．５のとき、精度「０．９９９」が見込まれ、保持するデータのサイズは元データの４０倍程になり得る」
と判定できる。
【０１２４】
点Ｑ３は、精度「０．９９９」以上、かつ、最も精度が高い点である。点Ｑ３に関して、次元数ｄは「１００」であり、上記式（６）により非マスキング率ｒとして「０．５」を得るため、４ｄｒを算出することで、データ量が元データに対して「２００」倍となることを予測する。点Ｑ３の精度は「０．９９９５」であるから、
「ｄ＝１００かつｒ＝０．５のとき、精度「０．９９９５」が見込まれ、保持するデータのサイズは元データの１００倍程になり得る」
と判定できる。
【０１２５】
上述では、非マスキング率ｒ＝０．５であるため、マスキング率（１−ｒ）も０．５とである。
【０１２６】
上述した点Ｑ１〜Ｑ３から得られた判定結果に基づいて表示される設定情報画面例について説明する。図１９は、設定情報画面の例を示す図である。図１９（Ａ）は、条件に倍率が指定された場合の設定情報画面例を示している。図１９（Ｂ）は、条件に精度が指定された場合の設定情報画面例を示している。
【０１２７】
図１９（Ａ）に例示する設定情報画面Ｇ９８ａは、図１８の点Ｑ１から得られた情報を示す画面であり、ユーザの所望の倍率にした場合の種々の情報を表示する表示領域９９ａと、キャンセルボタン９９ｂと、確定ボタン９９ｃと、終了ボタン９９ｄとを有する。
【０１２８】
倍率「８」が指定された場合、表示領域９９ａには、例えば、
「保持するデータのサイズを
元データの８倍以下に抑えたい場合、
次元数＝４  かつ  マスキング率＝０．５
を得ました。この場合、０．９９１の精度を見込めます。」
のようなメッセージが表示される。マスキング率では、与えられた非マスキング率ｒを１から減算した値を表示すればよい。以下も同様である。
【０１２９】
ユーザがこの表示内容を確認し、キャンセルボタン９９ｂを押下すると、図１７の条件設定画面Ｇ９７が表示され、ユーザは、条件の再設定を行うことができる。確定ボタン９９ｃが押下された場合、次元数「４」及びマスキング率「０．５」が設定され、検知用データ生成処理における対象文書６０と、剽窃検知処理における問合文書７０の各語のベクトル表現は４次元で行われ、検知用データ生成処理における変換後対象文書行列６２ａに対するマスキングはマスキング率「０．５」で行われる。変換後対象文書行列６２ａの行の総数に対して上位から半分までがマスキングされる。終了ボタン９９ｄが押下された場合、初期設定部３０は、初期設定処理を終了する。
【０１３０】
図１９（Ｂ）に例示する設定情報画面Ｇ９８ｂは、図１８の点Ｑ２及び点Ｑ３から得られた情報を示す画面であり、ユーザの所望する精度を得るための次元数とマスキング率とによる組合せの候補を選択可能に表示する選択領域９９ｇと、設定情報画面Ｇ９８ａと同様のキャンセルボタン９９ｂと、確定ボタン９９ｃと、終了ボタン９９ｄとを有する。
【０１３１】
精度「０．９９９」以上が指定された場合、選択領域９９ｇには、例えば、第１の候補として、
「次元数＝１００  かつ  マスキング率＝０．５  の場合に、
０．９９９５の精度を見込めます。
【０１３２】
保持するデータのサイズは元データの２００倍です。」
が示される。また、第２の候補として、
「次元数＝２０  かつ  マスキング率＝０．５  の場合に、
０．９９９の精度を見込めます。
【０１３３】
保持するデータのサイズは元データの４０倍です。」
が示される。
【０１３４】
ユーザは、第１の候補か第２の候補かを選択し、確定ボタン９９ｃを押下することで、選択された候補で示される次元数とマスキング率とが、図１９（Ａ）で説明したように、検知用データ生成処理及び剽窃検知処理とに適用される。
【０１３５】
例えば、第２の候補が選択された場合、検知用データ生成処理における対象文書６０と、剽窃検知処理における問合文書７０の各語のベクトル表現は２０次元で行われ、検知用データ生成処理における変換後対象文書行列６２ａに対するマスキングはマスキング率「０．５」で行われる。変換後対象文書行列６２ａの行の総数に対して上位から半分がマスキングされる。キャンセルボタン９９ｂ及び終了ボタン９９ｄについては、図１９（Ａ）で説明した通りであるので、ここでは省略する。
【０１３６】
本実施例において、実験結果２０が得られていない場合、一般的な文書について、語彙数の対数程度の次元数ｄのランダムなベクトル表現により、高精度でスコアベクトルを近似可能である。また、マスキング率が０．５のとき剽窃検知の精度低下はほぼ無い。従って、マスキング率は０．５を規定値とし、次元数ｄも経験値を規定値として定めてもよい。
【０１３７】
本実施例では、上述した剽窃検知用データ６９のデータ量の削減に加え、図３（Ｂ）の畳み込み演算に係る計算量を低減する。先ず、２つの問合文書７０と対象文書６０（以下、単に、文書という場合がある）のそれぞれの語又は文字列を入力とし、全ての位置ずれ（図３（Ｂ））についての語の一致数ｂを得る既存の計算方法について説明する。以下の説明では、全ての位置ずれで２つの文書を対応させて得る語の一致数を「相関」という。
【０１３８】
文章間の相関を求める関連技術として、相関を求める高速アルゴリズムFFT（Fast  Fourier  Transform）‐based  Algorithm（以下、単に、FFTという場合がある）が存在する。FFT‐based  Algorithmは、離散フーリエ変換（DFT）を計算機上で高速に計算するアルゴリズムである。生成装置１００において、上述した離散フーリエ変換（DFT）は、FFTにより行われ、逆離散フーリエ変換（逆DFT）は、逆FFTにより行われる。
【０１３９】
FFTの処理では、O（nlogn）時間の畳み込み演算がσ回繰り返えされる。ここで、σは語又は文字列の種類の数を示し、nは各文章の語数又は文字列の長さを示す。
【０１４０】
次に、相関の計算時間について考察する。相関計算の例として、語の比較を順に行う単純計算と、FFTを用いた計算量について比較する。
【０１４１】
基本的に、σ≦nと見なせる場合、FFTが単純計算より高速である。即ち、σが一定で小さい場合、O（n2）とO（nlogn）の比較と見なせる。しかしながら、σが不定で小さい場合、O（n2logσ）に対するO（σnlogσ）の利点が小さい。即ち、σが大きい場合は想定されておらず、一定で小さいσを想定し、計算時間をO（nlogn）として扱っている（非特許文献１、２）。そのため、FFTの実行回数が多くなるという問題がある。
【０１４２】
この問題に対して、畳み込みの繰り返しからk回分の結果だけを使って近似することが提案されている（非特許文献３、４、５）。しかしながら、畳み込み演算を一つの処理単位として扱っているため、畳み込み演算の処理回数の削減に留まっている。
【０１４３】
さらに、このような近似的手法（非特許文献３、４、５）では、厳密な値でなく近似値を出力している。長さnの文書について、k回の繰り返しによる相関ciの推定値の分散は（n‐ci）/kで表される。近似値が正しい値ciに対して散らばる程度を表わす。大きなnについて誤差が大きく、長い文書に適していない。さらに、小さなciについて誤差が大きい。相関のうち小さい値の推定値の精度が低いことを示す。つまり、移動平均の計算や相関全体をベクトルとして機械学習等に用いる場合に適用できない。
【０１４４】
従来より、畳み込み演算は信号処理等の分野で一般的な概念である。信号処理では、データは、送受信間の通信で定められるデータ長を処理単位として処理されるためσが小さい。
【０１４５】
また、畳み込み演算は、プログラミング言語においても既存の関数を利用できる。このような開発環境において、畳み込み演算内での処理負荷について詳細な解析がなされることがなかった。学会誌、学術論文等の文書の長さは、通信におけるデータ長よりはるかに大きい。
【０１４６】
本実施例では、σが大きな場合に、更なる処理の高速化を実現し、近年の文書間の比較等での大きなσの大量データに対して相関を求める需要に対応する。
【０１４７】
ここで、相関の計算時間における課題は、現実的な実行時間の削減である。具体的には、σnlogσに対する係数部分、即ち、FFTの実行回数を削減することである。発明者は、畳み込み演算が、DFTと逆DFTの処理により行われることに着目し、大きなσの大量データを扱う場合の相関の計算処理の高速化を実現した。大きなσの大量データを、以下の説明では、２つの文書を例として説明する。
【０１４８】
２文書s，t間の相関を求める場合、２文書s，tの各文字列内で連続した２語以上で類似する類似部分の位置は必ずしも同一位置ではない。類似部分が出現する位置がずれている場合についても考慮する必要がある。相関で考慮される位置ずれについて説明する。
【０１４９】
まず、２つの文字列間の相関計算に係る表記を以下に定義する。
【０１５０】
【数５】
2019045895.tif 000007
文書sと文書tの語は、長さnの文字列全体からなる集合Σnの要素として表される。
【０１５１】
【数６】
2019045895.tif 000008
文書sと文書tとの相関c（s，t）は、2n‐1次元ベクトルで表され、i番目の要素は、
【０１５２】
【数７】
2019045895.tif 000009
で表される。ただし、
【０１５３】
【数８】
2019045895.tif 000010
について、
【０１５４】
【数９】
2019045895.tif 000011
のように文字列を数式のように表わすことで、範囲外の形式的な比較のためにダミーの語を付加することを表現する。このようにすることで、位置ずれを考慮して相関を算出できる。
【０１５５】
図２０は、位置ずれを説明するための図である。図２０では、文書sの文書tに対する語の位置ずれを考慮するために、文書tの前後に、文書sにも文書tにも属さないダミーの語を付加する概念図を示している。
文章sを１語ずつずらして、ずらした位置における文書tの１語との相関を算出する。文書tに対して、文書sでは語順を変えてある場合がずれ位置に相当する。１語ずらすごとに相関を算出することで、ずれごとの相関c1，  c2，・・・，  c2n‐1を得る。
【０１５６】
全ての位置ずれを考慮した相関c（s，t）は、全ての位置ずれでの語の一致の数に相当するとした場合、単純な計算ではO（n2）回の語の比較が行われる。ここで、１回の語の比較の時間はlogσに依存する。
【０１５７】
図２０は、文書間の相関の例を示す図である。図２０では、文章sは文字列“abbacab”であり、文書tは文字列“ababbac”である場合の相関の例を示している。図２０において、ダミーの語xは空欄で表している。
【０１５８】
文書tの前後にn‐1後のダミーを付加した文書t’の先頭に文書sの先頭を合せて、一語ずつ文書sをずらして一致する語数をカウントする。この例では、文書t’の先頭に文書sの先頭を合せた場合には、文書sと文書tとに一致する語が存在しない。従って、相関c1は0となる。一語ずらすと、文書sの末尾２語と文書tの先頭２語とが一致する。従って、相関c2は2となる。
【０１５９】
更に１語ずらした相関c3は０となる。順に、相関c4は３、相関c5は１、相関c6は２、相関c7は３、相関c8は１、相関c9は５、相関c10は１、相関c11は０、相関c12は１、そして、相関c13は０となる。
【０１６０】
ここで、語又は文字列の種類毎に行われるFFTによる畳み込みの計算について説明する。２つのn次元ベクトルuとvとの巡回畳み込みrは、
【０１６１】
【数１０】
2019045895.tif 000012
で表される。ただし、‐n+1≦i≦0についてはvi=vn+iである。
【０１６２】
R，U，Vをそれぞれr，u，vの離散フーリエ変換としoを要素ごとの積（内積）とすると、
【０１６３】
【数１１】
2019045895.tif 000013
で表される。このことから、rは、uとvとからFFTによりO（nlogn）時間で計算可能である。計算ルートと計算時間との関係を図２１で説明する。
【０１６４】
図２１は、計算と計算時間との関係を説明するための図である。図２１において、nは文章の長さを表わす。uとvとからrを得る計算、即ち、語uと語vの比較rを行う計算の場合、計算時間O（n2）で表される。
【０１６５】
一方、u，vの離散フーリエ変換U，Vの計算時間はO（nlogn）であり、U，Vの要素毎の積Rの計算時間は、O（n）である。また、Rからrへの逆FFTの計算時間は、O（nlogn）である。
【０１６６】
次に、FFT‐based  Algorithmの概要について説明する。FFT‐based  Algorithmでは、語を数値化し、文字列間の相関をベクトルの畳み込みにより計算する。そうすることで、文字列全体の集合Σ内のある語aを1、それ以外を0に置き換えると、語aの一致のみを考慮した相関を畳み込み演算で算出でき、O（nlogn）時間で計算可能である。文書から数値列への置き換えはO（n）時間である。また、乗算で一致又は不一致を表現できるため、畳み込み演算が適用可能である。
【０１６７】
文字列全体の集合Σ内の要素である語又は文字列の種類ごとに、O（nlogn）時間の畳み込み演算を行うため、語又は文字列の種類の数のσ回繰り返される。そして、ベクトルの要素ごとの和をとることで相関を算出する。即ち、ある位置ずれでの相関ciが求まる。また、ベクトルの内積の和をとるため、得られた相関は重み付き相関とみなせる。
【０１６８】
より具体的に、FFT‐based  Algorithmの計算式を以下に示す。
【０１６９】
【数１２】
2019045895.tif 000014
について、φaはaを1、それ以外を0に写す関数とし、定義（数３）より、n≦i≦2n‐1について、
【０１７０】
【数１３】
2019045895.tif 000015
と表される。ここで、加算の順序を入れ替えて、
【０１７１】
【数１４】
2019045895.tif 000016
とする。
【０１７２】
（ua，1，ua，2，．．．，ua，2n‐1）と（va，1，va，2，．．．，va，2n‐1）とを、
【０１７３】
【数１５】
2019045895.tif 000017
である。数１１では、1≦i≦nのときには、片方を反転させ、n≦i≦2n‐1のときには、0を埋める。2n‐1次元ベクトルとすると、数１０は、
【０１７４】
【数１６】
2019045895.tif 000018
で表される。数１２内の
【０１７５】
【数１７】
2019045895.tif 000019
は巡回畳み込み演算である。
【０１７６】
類似部分の位置ずれを考慮した場合、語又は文字列の種類（文字列全体の集合Σ内の要素）の数分の畳み込み演算を繰り返すことになり、計算時間が長くなる。
・１回の畳み込み演算に対して、２回のFFT、１回のベクトルの要素ごとの積（内積）、１回の逆FFTが行われる。ここで、逆FFTの計算時間はFFTの計算時間に相当すると考えられる。
・それぞれの１回の計算時間は、FFTがO（nlogn）時間、要素ごとの積はO（n）時間であり、FFTが支配的である。
・従って、１回の相関の計算で、FFTが3σ回必要であることが分かる。
【０１７７】
また、畳み込み演算の繰り返しの回数σは、アルファベットサイズσに対する論理的な最小値である。
【０１７８】
語又は文字列の種類ごとに畳み込み演算を行い、その結果を集約する関連技術に対して、発明者は、畳み込み演算の最後の処理であるフーリエ変換（逆FFT）の前に集約することで、フーリエ変換の回数を削減することを見出した。フーリエ変換の回数を削減するために、発明者が着目した計算式の変形について説明する。
【０１７９】
raをuaとvaの巡回畳み込みとすると、相関c（s，t）は、
【０１８０】
【数１８】
2019045895.tif 000020
のベクトルから得られる。このベクトルを
【０１８１】
【数１９】
2019045895.tif 000021
と表示することにする。そして、fを離散フーリエ変換、Ra=f（ra）とすると、数１５は、
【０１８２】
【数２０】
2019045895.tif 000022
と変形できる。数１６の右辺より、ベクトルの要素ごとの加算後に逆FFTを行なえばよいことが分かる。要素ごとの加算後の逆FFTは、１回のFFTと見なせる。
【０１８３】
図２２は、計算方法の概念図を示す図である。図２２において、畳み込み演算２ｐと、畳み込み演算２ｐを行わない単純な方法の計算部分は、集合Σの要素（語又は文字列の種類）ごとに処理が繰り返される部分である。即ちσ回数繰り返される。その後、得られたσ個のベクトルの要素ごとに値を合算して、文書sと文書tとの相関c（s，t）が得られる。
【０１８４】
関連技術において、畳み込み演算２ｐでは、FFTの計算が、離散フーリエ変換時に2σ回行われ、逆FFT時にσ回行われるため、合計3σ回行われる。
【０１８５】
一方、本実施例では、畳み込み演算２ｐのうち、逆FFTの実行前に、ベクトルの要素ごとの加算を行い、その結果に対して逆FFTを行うことで、逆FFTの計算回数をσ回から１回に削減する。本実施例では、σが大きいほど効果を奏し、関連技術に比べて、約３分の２の時間で２文書間の相関を取得できる。
【０１８６】
また、σが小さい場合、応用の観点から各語での相関が得ることが必要となる場合があるが、σが大きい場合、特定語での相関が必要であっても、その他の語として大きなσを考える必要があり、その観点において、本実施例がより適していると言える。図３（Ｂ）の畳み込み演算に関する、上述した逆FFTの計算回数をσ回から１回に削減する手法は、同一出願人による特願２０１６−２０１９３３及び特願２０１６−２２９２０８の内容に基づく。
【０１８７】
逆FFTの計算回数をσ回から１回に削減する第３の機能構成例について説明する。図２３は、生成装置の第３の機能構成例を示す図である。図２３において、生成装置１００は、主に、検知用データ生成部４０と、剽窃検知部５０−２とを有する。記憶部１３０は、第１の機能構成における、対象文書６０、対象文書行列データ６１、変換後対象文書行列データ６２、削減行列データ６３、剽窃検知用データ６９、問合文書７０、問合文書行列データ７１、変換後問合文書行列データ７２、要素積行列データ７３、及び一致数ベクトルデータ７９等に加えて、要素合算ベクトルデータ７７を有する。検知用データ生成部４０の機能構成は第１の機能構成と同様であるためその説明を省略する。
【０１８８】
剽窃検知部５０−２は、ユーザからの剽窃部分を含んでいないかを判定する問合文書７０を指定した要求に応じて、剽窃検知用データ６９を用いて剽窃を検知する処理部である。剽窃検知部５０−２では、逆離散フーリエ変換を１回でとするための構成として、第１の機能構成の問合文書行列生成部５１、問合文書変換部５２、及び要素乗算部５３を含むが、第１の機能構成の逆変換部５４及び要素合算部５９の代わりに、変換前要素合算部５７と、合算後逆変換部５８とを含む。問合文書行列生成部５１、問合文書変換部５２、及び要素乗算部５３は、第１の機能構成と同様であるため、その説明を省略する。
【０１８９】
変換前要素合算部５７は、変換後問合文書行列データ７２と剽窃検知用データ６９の要素の積を表す要素積行列データ７３に対して、行ごとに要素を合算して、要素合算ベクトルデータ７７を作成する。要素合算ベクトルデータ７７は、記憶部１３０に記憶される。
【０１９０】
合算後逆変換部５８は、要素合算ベクトルデータ７７に対して逆離散フーリエ変換を行い、一致数ベクトルデータ７９を得る。一致数ベクトルデータ７９は、記憶部１３０に記憶される。合算後逆変換部５８は、一致数ベクトルデータ７９を表示装置１５に表示してもよい。
【０１９１】
図２４は、図２３の第３の機能構成例における剽窃検知処理を説明するための図である。図２４（Ａ）ではフローチャートを示し、図２４（Ｂ）では処理の過程を示す。図２４（Ａ）において、剽窃検知部５０−２は、ユーザからの問合文書７０を指定した要求に応じて、ステップＳ５３１からＳ５３５を行い、語ごとの一致数を示す一致数ベクトルデータ７９を出力する。
【０１９２】
剽窃検知部５０において、問合文書行列生成部５１は、問合文書７０の語ごとのベクトルを作成し、問合文書７０を表す問合文書行列データ７１を生成する（ステップＳ５３１）。問合文書変換部５２は、問合文書行列生成部５１が生成した問合文書行列データ７１に対して離散フーリエ変換を行い、変換後問合行列データ７２を得る（ステップＳ５３２）。
【０１９３】
要素乗算部５３は、変換後問合行列データ７２と剽窃検知用データ６９とで、要素ごとに乗算し、要素の積で表される要素積行列データ７３を作成する（ステップＳ５３３）。本実施例において、作成される要素積行列データ７３は、上位行がマスキングされた行列を示す。
【０１９４】
そして、変換前要素合算部５７は、要素積行列データ７３の行ごとに要素を合算し、要素合算ベクトルデータ７７を得る（ステップＳ５３４）。要素合算ベクトルデータ７７は、記憶部１３０に記憶される。
【０１９５】
合算後逆変換部５８は、要素合算ベクトルデータ７７に対して逆離散フーリエ変換を行って、一致数ベクトルデータ７９を得る（ステップＳ５３５）。合算後逆変換部５８による逆離散フーリエ変換は１回のみである。一致数ベクトルデータ７９は、記憶部１３０に記憶される。合算後逆変換部５８は、一致数ベクトルデータ７９を表示装置１５に表示させてもよい。
【０１９６】
上述したように、本実施例により、剽窃検知に利用できるスコアベクトルの低周波成分を保持しつつ、上位行のマスキングにより、剽窃検知用データ６９のデータ量を削減することができる。
【０１９７】
上記において、削減行列６３ａは検知用行列の一例であり、対象文書行列６１ａは数値行列の一例であり、変換後対象文書行列６２ａは変換行列の一例である。また、剽窃検知用データ６９は検知用行列を表すデータの一例であり、対象文書行列データ６１は数値行列を表すデータの一例であり、変換後対象文書行列データ６２は変換行列を表すデータの一例である。更に、対象文書行列生成部４１は対象文書６０を行列へ変換する変換部の一例であり、対象文書変換部４２は変換行列を生成する生成部の一例である。
【０１９８】
また、問合文書行列データ７１は数値行列を表すデータの一例であり、変換後問合文書行列データ７２は変換行列を表すデータの一例であり、要素積行列データ７３は、要素積行列を表すデータの一例である。一致数ベクトルデータ７９は対象文書６０と問合文書７０との一致に係るベクトルを表すデータの一例である。
【０１９９】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、主々の変形や変更が可能である。
【０２００】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
対象文書を数値行列に変換し、
前記数値行列を離散フーリエ変換することで変換行列を生成し、
前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成する
処理をコンピュータに行わせる生成プログラム。
（付記２）
前記コンピュータに、
前記対象文書のサイズに応じて前記上位行に対する前記マスキングの範囲を決定させる
処理を行わせる付記１記載の生成プログラム。
（付記３）
前記コンピュータに、
前記対象文書のサイズに対する倍率の指定に応じて、該対象文書の次元数と、マスキング率と、該倍率とで表される条件式を用いて、該倍率を超えない該次元数と該マスキング率とを特定する
処理を行わせる付記２記載の生成プログラム。
（付記４）
前記コンピュータに、
特定した前記倍率と基準次元数とで表される式によって、データ削減率を取得し、
記憶部に記憶された、次元ごとにデータ削減率と剽窃検知精度との関係を示す実験結果を参照して、取得した前記データ削減率を満たす次元と剽窃検知精度とを取得する
処理を行わせる付記３記載の生成プログラム。
（付記５）
前記コンピュータに、
指定された剽窃検知精度に基づいて前記上位行に対する前記マスキングの範囲を決定させる
処理を行わせる付記１記載の生成プログラム。
（付記６）
前記コンピュータに、
記憶部に記憶された、次元ごとにデータ削減率と剽窃検知精度との関係を示した実験結果を参照して、指定された前記剽窃検知精度に対応する剽窃検知精度を取得する
処理を行わせる付記５記載の生成プログラム。
（付記７）
前記コンピュータに、
前記実験結果のうち、指定された前記剽窃検知精度を満たし、かつ、最小の倍率となる次元及びデータ削減率とを取得し、
取得した前記次元及び前記データ削減率と、基準次元数とを用いて、前記マスキングの範囲を表すマスキング率を取得する
処理を行わせる付記６記載の生成プログラム。
（付記８）
前記コンピュータに、
前記実験結果のうち、指定された前記剽窃検知精度以上、かつ、最大の精度となる次元及びデータ削減率とを取得し、
取得した前記次元及び前記データ削減率と、基準次元数とを用いて、前記マスキングの範囲を表すマスキング率を取得する
処理を行わせる付記６記載の生成プログラム。
（付記９）
対象文書を数値行列に変換し、
前記数値行列を離散フーリエ変換することで変換行列を生成し、
前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成する
処理をコンピュータが行う生成方法。
（付記１０）
対象文書を数値行列に変換する変換部と、
前記数値行列を離散フーリエ変換することで変換行列を生成する生成部と、
前記変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成するマスキング部と、
を有する生成装置。
（付記１１）
対象文書を第１数値行列に変換し、
前記第１数値行列を離散フーリエ変換することで第１変換行列を生成し、
前記第１変換行列の上位行を０でマスキングして、剽窃検知に用いる検知用行列を生成し、
問合文書を第２数値行列に変換し、
前記第２数値行列を前記離散フーリエ変換することで第２変換行列を生成し、  前記第２変換行列を要素ごとに乗算して、要素積行列を作成し、
作成された前記要素積行列の要素を行ごとに合算した後に、逆離散フーリエ変換を行って前記対象文書と前記問合文書との一致に係るベクトルを取得する
処理をコンピュータに行わせる剽窃検知プログラム。
（付記１２）
前記要素積行列の要素を行ごとに合算して得た値は、前記対象文書と前記問合文書との重み付き相関を表すことを特徴とする付記１１記載の剽窃検知プログラム。
【符号の説明】
【０２０１】
２０          実験結果
２１          条件データ
２２          設定情報
２３          補足情報
３０          初期設定部
３１          条件取得部
３２          設定情報特定部
３３          設定情報表示部
４０          検知用データ生成部
４１          対象文書行列生成部
４２          対象文書変換部
４３          マスキング部
４４          出力部
５０          剽窃検知部
５１          問合文書行列生成部
５２          問合文書変換部
５３          要素乗算部
５４          逆変換部
５９          要素合算部
６０          対象文書
６１          対象文書行列データ
６２          変換後対象文書行列データ
６３          削減行列データ
６９          剽窃検知用データ
７０          問合文書
７１          問合文書行列データ
７２          変換後問合文書行列データ
７３          要素積行列データ
７４          逆変換後行列データ
７９          一致数ベクトルデータ
１００        生成装置
【図１】
2019045895.tif 000023
【図２】
2019045895.tif 000024
【図３】
2019045895.tif 000025
【図４】
2019045895.tif 000026
【図５】
2019045895.tif 000027
【図６】
2019045895.tif 000028
【図７】
2019045895.tif 000029
【図８】
2019045895.tif 000030
【図９】
2019045895.tif 000031
【図１０】
2019045895.tif 000032
【図１１】
2019045895.tif 000033
【図１２】
2019045895.tif 000034
【図１３】
2019045895.tif 000035
【図１４】
2019045895.tif 000036
【図１５】
2019045895.tif 000037
【図１６】
2019045895.tif 000038
【図１７】
2019045895.tif 000039
【図１８】
2019045895.tif 000040
【図１９】
2019045895.tif 000041
【図２０】
2019045895.tif 000042
【図２１】
2019045895.tif 000043
【図２２】
2019045895.tif 000044
【図２３】
2019045895.tif 000045
【図２４】
2019045895.tif 000046