(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-05
(45)【発行日】2023-01-16
(54)【発明の名称】単語ベクトルリスト生成装置
(51)【国際特許分類】
G06F 40/30 20200101AFI20230106BHJP
【FI】
G06F40/30
(21)【出願番号】P 2018210421
(22)【出願日】2018-11-08
【審査請求日】2021-10-14
(73)【特許権者】
【識別番号】000155469
【氏名又は名称】株式会社野村総合研究所
(74)【代理人】
【識別番号】110002561
【氏名又は名称】特許業務法人勝沼国際特許事務所
(72)【発明者】
【氏名】伊藤 俊廷
(72)【発明者】
【氏名】大泉 建人
【審査官】木村 大吾
(56)【参考文献】
【文献】特開2012-190080(JP,A)
【文献】特開2004-070636(JP,A)
【文献】国際公開第2018/172840(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/00-40/58
(57)【特許請求の範囲】
【請求項1】
結合対象の2つの単語ベクトルリストW
1(n次元ベクトル空間),W
2(m次元ベクトル空間)(n≦m)を入力する入力手段と、
前記単語ベクトルリストW
1,W
2の次元を同一次元になるように調整する次元調整手段と、
前記次元調整された単語ベクトルリストW
1と単語ベクトルリストW’
2の共通の単語の単語ベクトルを連結し、共通単語ベクトルリストM
intersectを生成する共通単語ベクトルリスト生成手段と、
前記共通単語ベクトルリストM
intersectを次元削減し、出力単語ベクトル空間W
result,intersectを生成する出力ベクトル空間生成手段と、
前記単語ベクトルリストW
1,W
2の単語ベクトル空間W
1,intersect,W
2,intersectから前記出力単語ベクトル空間W
result,intersectへの変換行列T
1,T
2を計算する変換行列生成手段と、
前記変換行列T
1,T
2を使用して前記単語ベクトルリストW
1,W
2の全単語を出力単語ベクトル空間にマッピングして出力単語ベクトルリストW
resultを出力するマッピング手段と、
を有することを特徴とする単語ベクトルリスト生成装置。
【請求項2】
請求項1記載の単語ベクトルリスト生成装置であって、
前記出力単語ベクトルリストW
resultの行列に、知識ベースから自己関連性ウェイトと関連語の関連性ウェイトによる補正を行う知識注入手段、を有することを特徴とする単語ベクトルリスト生成装置。
【請求項3】
請求項1または2に記載の単語ベクトルリスト生成装置であって、
前記出力ベクトル空間生成手段は、SVD(特異値分解:singular value decomposition)、または、PCA(主成分分析:principal component analysis)により、前記共通単語ベクトルリストM
intersect(n+n次元ベクトル空間)を次元削減することを特徴とする単語ベクトルリスト生成装置。
【請求項4】
請求項1~3のいずれかに記載の単語ベクトルリスト生成装置であって、
前記次元調整手段は、SVD(特異値分解:singular value decomposition)、または、PCA(主成分分析:principal component analysis)により、次元削減することを特徴とする単語ベクトルリスト生成装置。
【請求項5】
入力手段と次元調整手段と共通単語ベクトルリスト生成手段と出力ベクトル空間生成手段と変換行列生成手段とマッピング手段がコンピュータにより実装されるとして、
前記入力手段が、結合対象の2つの単語ベクトルリストW
1(n次元ベクトル空間),W
2(m次元ベクトル空間)(n≦m)を入力する工程と、
前記次元調整手段が、前記単語ベクトルリストW
1,W
2の次元を同一次元になるように調整する工程と、
前記共通単語ベクトルリスト生成手段が、前記次元調整された単語ベクトルリストW
1と単語ベクトルリストW’
2の共通の単語の単語ベクトルを連結し、共通単語ベクトルリストM
intersectを生成する工程と、
前記出力ベクトル空間生成手段が、前記共通単語ベクトルリストM
intersectを次元削減し、出力単語ベクトル空間W
result,intersectを生成する工程と、
前記変換行列生成手段が、前記単語ベクトルリストW
1,W
2の単語ベクトル空間W
1,intersect,W
2,intersectから前記出力単語ベクトル空間W
result,intersectへの変換行列T
1,T
2を計算する工程と、
前記マッピング手段が、前記変換行列T
1,T
2を使用して前記単語ベクトルリストW
1,W
2の全単語を出力単語ベクトル空間にマッピングして出力単語ベクトルリストW
resultを出力する工程と、
を有することを特徴とする単語ベクトルリスト生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、単語ベクトルリストを生成する装置と方法に関する。
【背景技術】
【0002】
自然言語処理は、人間が意味を解する言語(自然言語)を、コンピュータを用いて解析する処理である。自然言語をコンピュータで解析しようとすると、文章を構成する単語、助詞等の単位を特定し、単位の意味を特定しなければならない。このため、従前からコンピュータによる自然言語処理の分野では、文章を最小単位(形態素)に分解する形態素解析や、構文解析や、語義判別等の処理が試みられていた。しかし、人間が使用する言語は、単語の区切り、語義、構文等に曖昧さを伴う。さらに、不完全な文章や間違った文章も使用される。このため、従前の技術では限界があった。
【0003】
これに対して近年は、機械学習によるディープラーニングの技術が急速に進展し、単語の属性や潜在的な意味まで考慮した自然言語処理が行われるようになった。このディープラーニングの自然言語処理の適用分野は、機械翻訳、対話、感情分析等に急速に拡大している。
【0004】
ディープラーニングによる自然言語処理は、単語とその要素との関係(単語の特徴量)を機械学習し、単語の特徴量に基づいて文章内の単語の正しさの評価等をするものである。ここで、単語の「要素」とは、単語と潜在的に関係を有する他の単語をいう。例えば、「東京」という単語に対して、地理的に潜在的な関係を有する「ヨーロッパ」や、地形的に潜在的な関係を有する「島」や、人口の集積度の面から潜在的な関係を有する「大都会」は、「東京」の要素である。「東京」という単語は、複数の要素との関係で特徴付けることができる。つまり、単語は、該単語を表す複数の要素との関係の強さを数値化して定義することができる。要素との関係を表した数値のセットにより、単語をベクトル化することができる。単語をベクトル化することによって単語間の近さを数値計算することができる。それによって、ある単語が所定の文章内で使用された場合に、その使用された文章(他の単語)との適合性から、単語の正しさや意味の推測等を行うことができる。
【0005】
現在、大量の文章から単語をベクトル化した「単語ベクトルリスト」が、複数の企業や研究所によって提供されている。これらの単語ベクトルリストは、大量の一般的な文章から機械学習されるため、汎用的な単語の単語ベクトル(汎用単語ベクトル)が生成される傾向にある。
【0006】
また、汎用単語ベクトルリストは、大量の文章から一括して機械学習されるため、膨大な量の機械学習の後は頻繁に追加の文章を取り入れて学習することは困難であった。
【0007】
汎用の単語に対して、現実の世界では新製品名や新組織名等が次々に生成され、新しい単語が生成される。また、特定の企業や組織内では従来から固有の単語を使用することが多い。このため、新しい単語や固有の単語(これらをまとめて「固有単語」という)について、特化した単語ベクトルリスト(固有単語ベクトルリスト)が個別的作成されている。
【0008】
しかし、固有単語が使用される分野でも汎用単語が使用されるため、汎用単語ベクトルリストを固有単語ベクトルリストで補完した単語ベクトルリストが必要であった。
【0009】
この要求に対して、非特許文献1は、異なる単語ベクトルリスト(単語ベクトル空間)を結合する技術を提案している。
【0010】
方法1として、結合する2つの単語ベクトルリストをW1(n次元ベクトル空間)、W2(m次元ベクトル空間)(n≦m)とする。単語waのW1におけるベクトルをwa,1、waのW2におけるベクトルをwa,2とする。最初に、W1,W2に共通して含まれる単語について、ベクトルを連結した単語ベクトルリストM(n+m次元ベクトル空間)を生成する。
【0011】
次に、W1にのみ含まれる単語ベクトルwa,1について、W1,W2に共通して含まれる単語ベクトルの中でwa,1との類似度が高い上位5つの単語ベクトルを取得する。取得した5つの単語ベクトルのW2でのベクトルの平均をwa,2とし、wa,1とwa,2を連結したベクトルをMに追加する。この処理をW1にのみ含まれる全単語ベクトルについて行う。同様に、W2にのみ含まれる単語ベクトルについても同じ処理を行う。
【0012】
このようにして得られたMについて、SVD(特異値分解:singular value decomposition)を用いて次元削減を行う。すなわち、
【0013】
【0014】
【0015】
ここで、Mがp×qの行列とすると、Uはp×pの直交行列、Vはq×qの直交行列、Σはp×qの行列であって、対角成分が非負で大きさの順に特異値が並んだ行列になる。sqrt(Σ)はΣの対角成分の平方根を示している。U・sqrt(Σ)は、行列Uと、行列Σの各特異ベクトルの特異値の二乗根の内積を示している。dim_reduct()は、次元削減するという意味のここで定義した関数であって、かっこ内の行列の特異値の大きいものから所定の次元を切り出して次元削減をするという意味である。
【0016】
方法2として、非特許文献1の技術は、結合する2つの単語ベクトルリストをW1(n次元ベクトル空間)、W2(m次元ベクトル空間)(n≦m)とし、W1とW2を連結して単語ベクトルリストM(n+m次元ベクトル空間)を生成する。
【0017】
次に、Mから一部をサンプリングしてMsampleを生成し、SVDを用いて変換行列を得る。すなわち、
【0018】
【0019】
【0020】
【0021】
ここで、dim_reduct()はすでに説明したここで定義した関数であって、n+m次元の行列から特異値の大きいk次元を切り出すという意味である。
【0022】
次に、得られた変換行列で、連結した単語ベクトルを射影して、sの各要素の二乗根で対応する行ベクトルを除算する。すなわち、
【0023】
【0024】
【先行技術文献】
【非特許文献】
【0025】
【文献】luminoso-beaudoin、他3名、“conceptnet5/conceptnet5/vectors/merge.py”、[online]、2018年6月6日、[2018年7月17日検索]、GitHub、インターネット〈URL:https://github.com/commonsense/conseptnet5/blob/master/conceptnet5/vectros/merge.py〉
【発明の概要】
【発明が解決しようとする課題】
【0026】
しかし、従来技術の方法1では、自然言語処理の精度を高くするのが困難であった。
【0027】
例えば、方法1は、W1にのみ含まれる単語ベクトルwa,1について、W1,W2に共通して含まれる単語ベクトルの中でwa,1との類似度が高い上位5つの単語ベクトルを得るようにしている。しかし、類似度が高い上位5つの単語ベクトルの選定にはばらつきがあり、その結果、平均すると自然言語処理の精度が低下する問題があった。
【0028】
また、方法1の技術によれば、単語数の二乗のオーダーの計算量となり、コンピュータの計算量が膨大になるという問題があった。
【0029】
方法2は、W1とW2を連結して単語ベクトルリストM(n+m次元ベクトル空間)を生成し、Mから一部をサンプリングしてSVDで変換行列を得るようにしている。
【0030】
しかし、方法2によれば、W1,W2に共通する単語しか出力することができず、単語数が減ってしまうという問題があった。
【0031】
そこで、本発明の目的は、コンピュータの計算量を抑えることができ、汎用単語ベクトルリストに固有単語ベクトルリストを簡単に加えられ、かつ、精度の高い自然言語処理を行うことができる単語ベクトルリストを生成する技術を提供することにある。
【課題を解決するための手段】
【0032】
上述した課題を解決するために、本発明の単語ベクトルリスト生成装置は、
結合対象の2つの単語ベクトルリストW1(n次元ベクトル空間),W2(m次元ベクトル空間)(n≦m)を入力する入力手段と、
前記単語ベクトルリストW1,W2の次元を同一次元になるように調整する次元調整手段と、
前記次元調整された単語ベクトルリストW1と単語ベクトルリストW’2の共通の単語の単語ベクトルを連結し、共通単語ベクトルリストMintersectを生成する共通単語ベクトルリスト生成手段と、
前記共通単語ベクトルリストMintersectを次元削減し、出力単語ベクトル空間Wresult,intersectを生成する出力ベクトル空間生成手段と、
前記単語ベクトルリストW1,W2の単語ベクトル空間W1,intersect,W2,intersectから前記出力単語ベクトル空間Wresult,intersectへの変換行列T1,T2を計算する変換行列生成手段と、
前記変換行列T1,T2を使用して前記単語ベクトルリストW1,W2の全単語を出力単語ベクトル空間にマッピングして出力単語ベクトルリストWresultを出力するマッピング手段と、
を有することを特徴とする。
【0033】
前記出力単語ベクトルリストWresultの行列に、知識ベースから自己関連性ウェイトと関連語の関連性ウェイトによる補正を行う知識注入手段、を有していてもよい。
【0034】
前記出力ベクトル空間生成手段は、SVD(特異値分解:singular value decomposition)、または、PCA(主成分分析:principal component analysis)により、前記共通単語ベクトルリストMintersectを次元削減してもよい。
【0035】
前記次元調整手段は、SVD(特異値分解:singular value decomposition)、または、PCA(主成分分析:principal component analysis)により、次元削減してもよい。
【0036】
本発明の単語ベクトルリスト生成方法は、
結合対象の2つの単語ベクトルリストW1(n次元ベクトル空間),W2(m次元ベクトル空間)(n≦m)を入力する工程と、
前記単語ベクトルリストW1,W2の次元を同一次元になるように調整する工程と、
前記次元調整された単語ベクトルリストW1と単語ベクトルリストW’2の共通の単語の単語ベクトルを連結し、共通単語ベクトルリストMintersectを生成する工程と、
前記共通単語ベクトルリストMintersectを次元削減し、出力単語ベクトル空間Wresult,intersectを生成する工程と、
前記単語ベクトルリストW1,W2の単語ベクトル空間W1,intersect,W2,intersectから前記出力単語ベクトル空間Wresult,intersectへの変換行列T1,T2を計算する工程と、
前記変換行列T1,T2を使用して前記単語ベクトルリストW1,W2の全単語を出力単語ベクトル空間にマッピングして出力単語ベクトルリストWresultを出力する工程と、
を有する。
【発明の効果】
【0037】
本発明によれば、コンピュータの計算量を抑えられ、汎用単語ベクトルリストに固有単語ベクトルリストを簡単に加えられ、かつ、精度の高い自然言語処理を行うことができる単語ベクトルリストを生成することができる。
【図面の簡単な説明】
【0038】
【
図1】本発明の一実施形態による単語ベクトルリストの生成の全体の流れを示した説明図。
【
図2】本発明の一実施形態による単語ベクトルリスト生成装置の構成と処理の流れを示したブロック図。
【
図4】知識ベースの関連性ウェイトを単語ベクトルリストに注入するための疎行列の例を示した説明図。
【
図5】知識ベースの関連性ウェイトを単語ベクトルリストに注入する方法を示した説明図。
【
図6】本発明による単語ベクトルリストの効果を示した説明図。
【発明を実施するための形態】
【0039】
以下に本発明の実施形態を、図面を用いて説明する。
【0040】
図1は、本発明の一実施形態による単語ベクトルリストの生成の全体の流れを示している。前述したように、複数の企業や研究所により、一般的な文章を含む大量の文章データから汎用単語ベクトルリストが作成されている。なお
図1においては、かかる汎用単語ベクトルリストを一つのみ示しているが、かかる汎用単語ベクトルリストは複数提供されている。一方、新しい分野を含む特定の企業や分野で使用される単語は、それらの用語を含む文章データから、個別に固有単語ベクトルリストが作成されている。
【0041】
汎用単語ベクトルリストは通常単語数が多く、これに対して固有単語ベクトルリストの単語数は相対的に少ないことが多い。単語を表す要素の数は区々である。また、汎用単語ベクトルリストと固有単語ベクトルリストでは、性質上元々含まれる単語が異なることが多い。さらに、同一単語であっても、異なるベクトルリストでは、各次元の表す意味が異なるため、一般に大きく異なるベクトルとなる。
【0042】
本発明による単語ベクトルリストの生成は、上記のような性質が異なる汎用単語ベクトルリストと固有単語ベクトルリストを結合する部分を有する(図中の「1.異なる単語ベクトル空間の結合技術」)。なお、「異なる単語ベクトル空間の結合技術」に関して、ここでは汎用単語ベクトルリストと固有単語ベクトルリストを結合することについて説明している。しかし、本発明による「異なる単語ベクトル空間の結合技術」の結合対象は、汎用単語ベクトルリストと固有単語ベクトルリストに限られず、任意の二つの単語ベクトルリストとすることができる。
【0043】
結合の方法は後に詳細に説明するが、最初にそれぞれの単語ベクトルリストに、知識ベースの関連性ウェイトの処理を行う。知識ベースとは、所定の単語間の関連性を有し、その関連性の強さを表すウェイトを有する知識ベースである。関連性ウェイトに関する処理は、元の単語ベクトルリストに含まれない単語を、関連のある単語のベクトルを使って追加する。また、関連性ウェイトに関する処理は、関連のある単語により類似するベクトルとなるように、単語ベクトルの調整を行う。これら二つの処理は下記の処理により同時に行われる。
【0044】
具体的には、本発明の知識ベースの関連性ウェイトに関する処理は、単語ベクトルリストの単語に知識ベースの単語を加え、単語間の関連性ウェイトを行列化する。関連性ウェイトの行列と、正規化した元の単語ベクトルリストの行列を掛け合わせることによって元の単語ベクトルリストの行列の要素に関連性ウェイトを加えることができる。次に得られた単語ベクトルリストの行列をL2正則化し、元の単語ベクトルとの平均を新たな単語ベクトルとする。これらの操作を数回繰り返すことによって、知識ベースの単語の関連性ウェイトを注入することができる(図中の「2.単語ベクトルと知識ベースの融合技術」)。
【0045】
次に、知識ベースの関連性ウェイトを注入した単語ベクトルを連結する。
【0046】
さらに次に、各単語の特徴量を可能な限り保存しながら単語ベクトル空間の次元を削減し、出力用の単語ベクトル空間上に配置する。
【0047】
以上の処理により、本発明は、膨大な再学習やサンプリング等を行うことなく、単語の特徴量を維持しながら汎用単語ベクトルリストと固有単語ベクトルリストを結合することができる。
【0048】
なお、知識ベースの関連性ウェイトの処理と、単語ベクトルの連結の処理は、順番を入れ替えて行うこともできる。順番を入れ替えた処理も本発明の範疇内である。
【0049】
次に、
図2を用いて、本発明による異なる単語ベクトル空間の結合技術について説明する。
【0050】
本発明による単語ベクトルリスト生成装置1は、結合対象の単語ベクトルリストを本装置に入力するための入力手段2を有している。入力手段2は、結合対象の単語ベクトルリストを単語ベクトルリスト生成装置1に取り込める範囲内のすべての公知の技術を含む。すなわち、入力手段2はその物理的な構成は限定されない。
【0051】
最初に、入力手段2により、結合対象の2つの単語ベクトルリストW1(n次元ベクトル空間)、W2(m次元ベクトル空間)(n≦m)を入力する。単語waのW1におけるベクトルをwa,1、単語waのW2におけるベクトルをwa,2とする。
【0052】
次に以下の順番に限られないが、知識注入手段9により、二つの単語ベクトルリストW1,W2に対して、既存の知識ベースの単語の関連性ウェイトを加味する。知識注入手段9による処理は、単語ベクトルリストW1,W2の結合後に追加的に行うことができ、この処理については後に詳細に説明する。
【0053】
次に、次元調整手段3により、W1(n次元ベクトル空間)とW2(m次元ベクトル空間)を、次元が同一になるように調整する。好ましくは、SVD(特異値分解:singular value decomposition)により、次元が大きい方のW2を次元が小さい方のn次元に次元削減する。たとえば、以下のように処理することができる。
【0054】
【0055】
ここで、W2がm×pの行列とすると、SVDによればW2は上式のように分解でき、Uはm×mの直交行列、Vはp×pの直交行列、Σはm×pの行列であって、対角成分が非負で大きさの順に特異値が並んだ行列になる。
【0056】
W2を次元削減または次元調整した行列をW’2とすると、W’2は以下のように求めることができる。
【0057】
【0058】
ここで、W’2はW2のn次元に次元調整された行列である。sqrt(Σ)はΣの対角成分の平方根を示している。U・sqrt(Σ)は、行列Uと、行列Σの各特異ベクトルの特異値の二乗根の内積を示している。dim_reduct()は、次元削減するという意味のここで定義した関数であって、かっこ内の行列の特異値の大きいものから所定の次元を切り出して次元削減をするという意味である。なお、行列Uと行列Σの内積による次元削減dim_reduct(U・Σ)ではなく、行列Uと行列Σの各特異ベクトルの特異値の二乗根の内積による次元削減dim_reduct(U・sqrt(Σ))を用いる理由は、後者の方が自然言語処理の分野でより精度が向上するからである。換言すると、精度の問題を別にすれば前者を用いることも可能であり、前者を用いる場合も本発明の範疇内である。
【0059】
なお、次元調整手段3は、ここではn次元に次元調整しているが、次元調整される単語ベクトルの次元数を自由に設定することができる。このため、処理を行う者が処理前に次元数を決定することが好ましい。
【0060】
次元調整手段3による次元削減は、W1とW2の次元を同一次元になるように調整できれば足り、双方のベクトル空間をn次以下の同次元に調整することも本発明の範疇内である。次元調整手段3により、後述する出力単語ベクトル空間の次元数に合わせてW1とW2の次元を削減することもできる。また、W1とW2の次元が大きく相違しないことが明らかな場合は、省略することもできる。
【0061】
次元調整手段3は、次元削減の方法としてPCA(主成分分析:principal component analysis)を採用することもできる。
【0062】
次に、次元調整されたW1とW’2の共通の単語から、共通単語ベクトルリスト生成手段4により、共通単語のベクトルを連結する。
【0063】
連結したベクトルリストを共通単語ベクトルリストMintersect(n+n次元ベクトル空間)とする。なお、ここで行うベクトルの連結は、2つの単語ベクトルリストの成分を並べるようにして連結する。この連結の際に、次元調整されたW1とW’2のいずれか重要視する方に加重的に所定の倍数を乗じて連結することができる。この倍数は、単語ベクトルリストの性質によって適宜採ることができる。
【0064】
共通単語ベクトルリストMintersectは、n+n次元を有しているので、W1とW’2から出力できる単語ベクトル空間(出力単語ベクトル空間)に次元削減を行う必要がある。
【0065】
そこで、出力ベクトル空間生成手段5により、Mintersectの次元削減を行う。好ましくは、SVDにより、以下のように共通単語ベクトルリストMintersectの次元を削減する。
【0066】
【0067】
【0068】
ここで、Mintersectがp×qの行列とすると、Uはp×pの直交行列、Vはq×qの直交行列、Σはp×qの行列であって、対角成分が非負で大きさの順に特異値が並んだ行列になる。dim_reduct()は前述したように、次元削減するという意味のここで定義した関数である。sqrt(Σ)はΣの対角成分の平方根を示している。U・sqrt(Σ)は、行列Uと、行列Σの各特異ベクトルの特異値の二乗根の内積を示している。
【0069】
Wresult,intersectは、W1とW’2から出力できる次元とするのが好ましい。例えば、Wresult,intersectはn次元とすることができる。
【0070】
なお、出力ベクトル空間生成手段5は、次元削減の方法としてPCA(主成分分析:principal component analysis)を用いることができる。
【0071】
次に、単語ベクトル空間W1とW’2と出力単語ベクトル空間Wresult,intersectの関係から、それぞれ変換行列T1及びT2を計算することができる。
【0072】
すなわち、変換行列生成手段6により、以下のようにして変換行列T1,T2を計算する。
【0073】
【0074】
【0075】
ここで、W1,intersect,W’2,intersectは共通単語のW1,W’2の単語ベクトル空間、Wresult,intersectは共通単語の出力単語ベクトル空間である。
【0076】
上記変換行列T1,T2は、W1とW’2の全単語に適用できるため、マッピング手段7により、以下のようにして全単語を出力ベクトル空間にマッピングすることができる。この結果、以下のように全単語を含む出力単語ベクトルリストWresultを得ることができる。
【0077】
【0078】
ここで、W1,uniqueはW1にのみ存在する単語の単語ベクトルリスト、W’2,uniqueはW’2にのみ存在する単語の単語ベクトルリスト、Wresult,intersectは共通単語の出力単語ベクトルリストである。出力単語ベクトルリストWresultはそれらの和集合となる。
【0079】
以上により、次元や要素や単語が異なる二つの単語ベクトルリストを、単語の特徴量を損なうことなく結合でき、汎用単語と固有単語の双方をカバーすることができる。また、類似語の選択やサンプリングを行うことなく、少ない計算量で単語ベクトルリストを結合することができる。
【0080】
なお、上述したSVDによる次元削減は、種々な式の表現をとり得る。このことについて以下に説明する。
【0081】
入力行列をA、出力行列をBとすると、入力行列Aは次のように特異値分解することができる。
【0082】
【0083】
これに続いて、出力行列Bを以下の式(1)~式(3)のいずれか一つのように求めることができる。
【0084】
【0085】
【0086】
【0087】
ここで、dim_reduct()は前述したように、次元削減するという意味のここで定義した関数である。sqrt(Σ)はΣの対角成分の平方根を示している。U・sqrt(Σ)は、行列Uと、行列Σの各特異ベクトルの特異値の二乗根の内積である。divide()は、かっこ内の行列を要素ごとに除算する関数である。sはΣの対角成分からなるベクトルである。Vmod
(n)は行列Vの要素を特異ベクトルΣの特異値の二乗根で除算した行列の最初のn列を採用した行列である。
【0088】
式(1)~式(3)は、表現は異なるが、本質的に同じ処理である。同一の入力行列Aに対して、算出される出力行列Bはすべて同じ値になる。
【0089】
本実施形態によるSVDによる次元削減は、式(1)の形で説明したが、式(2)または式(3)の形でもよい。
【0090】
【0091】
図3の知識ベース8は、携帯電話のキャリア(以下単に「キャリア」という。)に関する知識ベースの例を示している。キャリアは、通信会社と同義語であり、A,B,Cの3つの系列が存在するとする。各系列には、親会社キャリアA,B,Cと、親会社に所属するショップ(図中の「A社ショップ」と「B社ショップ」と「C社ショップ」)と、関連会社(図中の「系列会社A」と「関係会社B」と「関係会社C」)が存在する。各社のショップの上位概念として「キャリアショップ」が存在する。
【0092】
知識ベース8上の「単語」は、「コンセプト(Concept)」になっており、関連する単語は関連性ウェイトを有している。A系列の単語同士は、同系列であるため、高い関連性ウェイトを有している。B系列とC系列についても同様に、同じ系列同士は高い関連性ウェイトを有している。異なる系列の単語同士は低い関連性ウェイトを有している。同じ系列内であれば、距離が短いほど高い関連性ウェイトを有している。
【0093】
このような構成の知識ベースを用いて、単語ベクトルリストに関連性ウェイトを注入する方法について以下に説明する。なお、この知識ベースの関連性ウェイトの注入は、単語ベクトル空間の結合の後に
図2の知識注入手段9によって行われる。
【0094】
知識ベースの単語の関連性ウェイトを単語ベクトルリストに反映するには、知識ベース上の単語(知識ベースの「コンセプト(Concept)」になっている。)と単語ベクトルリストの単語から、疎行列を作る。
【0095】
まず、単語ベクトルリストの単語リスト(Labels)に、単語ベクトルリストにない知識ベース8の単語(Concept)を追加する。
図4の例では、知識ベースにのみ存在する「desktop」を単語リストに加えている。
【0096】
次に、Concept1とConcept2の間の関連性ウェイトを疎行列の要素にセットする。この場合、自Conceptとの関連性ウェイトは、他のConceptとの関連性ウェイトの合算をセットする。すなわち、疎行列の対角成分(自Conceptとの関連性ウェイトの成分)は、その行や列の合算値をセットする。また、Conceptの組合せで出現しない要素は“0”をセットする。
【0097】
図4の例では、「telephone」と「call」と「desktop」の関連性ウェイト(weight)を疎行列にセットしている。単語数をmとすると疎行列はm×mの行列となる。
【0098】
次に、上記疎行列を使用して、単語ベクトルリストに知識ベースの関連性ウェイトを注入する処理について説明する。
【0099】
図5において、「関連性ウェイト」と表示した行列は、
図4で説明した疎行列を示している。関連性ウェイトの要素は具体的な数値に代えてa,・・・,d,α,β,γとする。「元の単語ベクトルリスト」と表示した行列は、関連性ウェイトを注入する前の行列であって、単語数m、要素数を300の行列になっている。元の単語ベクトルリストは、行の平均値が0になるように正規化している。「単語ベクトルリスト」と表示した行列は、関連性ウェイトを注入した後の行列である。
【0100】
「関連性ウェイト」の行列と「元の単語ベクトルリスト」の行列をかけ合わせて「単語ベクトルリスト」の行列を得る。「単語ベクトルリスト」のある次元に着目すると、「自己Weight×元の値+関連性Weight×関連語の同次元の値」になっている。すなわち、「単語ベクトルリスト」の各単語の要素は、自己Weightをかけたものと、関連語の同次元の要素に関連性Weightをかけたものの和になっている。つまり、単語ベクトルリストの各成分は、元の単語の要素に、自己の関連性ウェイトの他に、関連語の同次元の要素の関連性Weightをかけて加えられている。これにより、単語ベクトルリストに、知識ベースの関連性ウェイトを注入する。
【0101】
「関連性ウェイト」の行列をかけて得られた「単語ベクトルリスト」の行列は、行の平均値が0になるように正規化し、ベクトル長さが1になるようにノルム化する。
【0102】
次に、ノルム化した「単語ベクトルリスト」の行列と「元の単語ベクトルリスト」の行列を加算し、ベクトルがある行は2で除し、ベクトルがない行はそのまま加算し、この計算を行った行列を「元の単語ベクトルリスト」の行列として使用する。
【0103】
【0104】
以上の処理を所定回、好ましくは5回繰り返すことによって、単語ベクトルリストに知識ベースの関連性ウェイトを注入することができる。これによって、さらに自然言語処理の精度を向上させることができる。
【0105】
本発明の発明者らは、本発明による結合と関連性ウェイト注入を行った後の単語ベクトルリストの評価を行った。
図6は日本語単語類似度データセットによるベンチマークの結果を示している。
【0106】
図6において、固有単語と全体の単語に分けて評価結果を示している。
図6に示すように、汎用単語ベクトルリスト(例:ConceptNet Numberbatch)は、ベンチマークのスコアが高いが、固有単語のカバー率が低い。一方、固有単語ベクトルリスト(例:nwjc2vic(word2vec版))は固有単語のカバー率が高いが、ベンチマークのスコアが低い。これに対して、本発明による単語ベクトルリストは、固有単語を100パーセントカバーし、かつ、ベンチマークのスコアが高い結果となった。
【0107】
以上のように、本発明の技術によれば、汎用単語ベクトルリストの膨大な再学習を行うことなく、既存の汎用単語ベクトルリストと特定の企業や分野で作成された固有単語ベクトルリストを結合して、高い単語カバー率を得ることができる。また、結合に際しては、単語の特徴量を損なうことなく結合でき、結果として精度の高い自然言語処理を行うことができる単語ベクトルリストを生成することができる。
【0108】
上記の記載に基づいて、当業者であれば、本発明の追加の効果や種々の変形を想到できるかもしれないが、本発明の態様は、上述した実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更及び部分的削除が可能である。
【符号の説明】
【0109】
1 単語ベクトルリスト生成装置
2 入力手段
3 次元調整手段
4 共通単語ベクトルリスト生成手段
5 出力ベクトル空間生成手段
6 変換行列生成手段
7 マッピング手段
8 知識ベース
9 知識注入手段