(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023037468
(43)【公開日】2023-03-15
(54)【発明の名称】文書処理装置、文書処理方法、及び、文書処理プログラム
(51)【国際特許分類】
G06F 40/216 20200101AFI20230308BHJP
【FI】
G06F40/216
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021144245
(22)【出願日】2021-09-03
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】内田 尚和
【テーマコード(参考)】
5B091
【Fターム(参考)】
5B091EA01
(57)【要約】
【課題】
事前学習済みの分散表現空間において十分に意味を表すことができない単語に対して、追加学習を行うことなしに、単語の意味を適切に埋め込むことを可能にする。
【解決手段】
文書処理装置は、単語の種別ごとのクラスベクトルを記憶するクラスベクトル記憶部と、外部から入力されたテキストを形態素解析によって単語列に分割する形態素解析部と、形態素解析部によって分割された単語列を、当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成部と、テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、当該学習不足単語に対する分散表現と当該学習不足単語が属する種別のクラスベクトルとを合成し、合成後の分散表現を、単語分散表現生成部による当該学習不足単語の分散表現に置換する単語分散表現修正部と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
外部から入力されたテキストに含まれる単語の分散表現を生成する文書処理装置であって、
単語の種別ごとの基準ベクトルであるクラスベクトルを記憶するクラスベクトル記憶部と、
前記テキストを形態素解析によって単語列に分割する形態素解析部と、
前記形態素解析部よって分割された前記単語列を当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成部と、
前記テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、当該学習不足単語に対する前記分散表現と当該学習不足単語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成部による当該学習不足単語の分散表現に置換する単語分散表現修正部と、
を備えることを特徴とする文書処理装置。
【請求項2】
前記学習不足単語の種別ごとに、同一種別の複数の前記学習不足単語の分散表現に基づいて、当該種別に属する前記学習不足単語のクラスベクトルを生成し、当該生成したクラスベクトルを前記クラスベクトル記憶部に登録するクラスベクトル生成部を、さらに備える
ことを特徴とする請求項1に記載の文書処理装置。
【請求項3】
前記クラスベクトル生成部は、
同一種別の複数の前記学習不足単語のうちの1つの単語に対して前記単語分散表現生成部によって変換された分散表現、または前記複数の学習不足単語に対して前記単語分散表現生成部によってそれぞれ変換された分散表現の平均を、当該種別に属する前記学習不足単語のクラスベクトルとして生成する
ことを特徴とする請求項2に記載の文書処理装置。
【請求項4】
前記単語分散表現修正部は、
前記単語分散表現生成部が変換した前記学習不足単語の分散表現に、合成後の分散表現が前記クラスベクトルの近傍となるように調整するための所定の係数を積算した上で、当該学習不足単語が属する種別の前記クラスベクトルと合成し、当該合成後の分散表現を、前記単語分散表現生成部による当該学習不足単語の分散表現に置換する
ことを特徴とする請求項3に記載の文書処理装置。
【請求項5】
前記クラスベクトル生成部によって生成された前記学習不足単語のクラスベクトルをクラスベクトル候補として出力してユーザによる確認を要求し、ユーザから補正の要求がなされた場合には当該要求に従って前記クラスベクトル候補を補正するクラスベクトル確認部をさらに備え、
前記クラスベクトル生成部は、前記クラスベクトル確認部で補正または確認された前記クラスベクトル候補を、前記学習不足単語のクラスベクトルとして前記クラスベクトル記憶部に登録する
ことを特徴とする請求項2に記載の文書処理装置。
【請求項6】
前記学習不足単語が、事前学習における出現頻度が所定程度よりも低い低頻度語である場合に、
前記形態素解析部は、前記テキストを単語列に分割した後、前記単語列に含まれる前記低頻度語を部分文字列のサブワードにさらに分割し、
前記単語分散表現修正部は、前記単語分散表現生成部が変換した前記低頻度語の複数の分散表現に、前記形態素解析部によって分割された当該低頻度語の前記サブワードの順番を固定する位置ベクトルを合成した上で、当該低頻度語が属する種別の前記クラスベクトルと合成し、当該合成後の分散表現を、前記単語分散表現生成部による当該低頻度語の分散表現に置換する
ことを特徴とする請求項1に記載の文書処理装置。
【請求項7】
前記学習不足単語が、事前学習において学習されていない未知語である場合に、
複数の前記未知語のそれぞれに対する説明文が保持され、
前記形態素解析部及び前記単語分散表現生成部を利用して、前記未知語ごとの分散表現を生成する拡張単語ベクトル生成部と、
前記拡張単語ベクトル生成部によって生成された前記未知語の分散表現を記憶する拡張単語ベクトル記憶部と、をさらに備え、
前記クラスベクトル生成部は、同一種別の前記未知語の分散表現に基づいて、前記未知語が属する種別ごとの前記クラスベクトルを生成し、当該生成したクラスベクトルを前記クラスベクトル記憶部に登録し、
前記単語分散表現修正部は、前記拡張単語ベクトル記憶部に記憶された前記未知語の前記分散表現と前記クラスベクトル記憶部に記憶された当該未知語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成部による当該未知語の分散表現に置換する
ことを特徴とする請求項2に記載の文書処理装置。
【請求項8】
前記テキストを構成する前記単語列に含まれる各単語に対して、前記単語分散表現生成部または前記単語分散表現修正部によって生成された前記分散表現を合成することにより、前記テキスト全体の分散表現を生成する文分散表現生成部と、
前記文分散表現生成部が生成した前記テキスト全体の分散表現を出力する出力部と、をさらに備える
ことを特徴とする請求項1に記載の文書処理装置。
【請求項9】
外部から入力されたテキストに含まれる単語の分散表現を生成する文書処理装置による文書制御方法であって、
前記文書処理装置は、単語の種別ごとの基準ベクトルであるクラスベクトルを記憶しており、
前記文書処理装置が、前記テキストを形態素解析によって単語列に分割する形態素解析ステップと、
前記文書処理装置が、前記形態素解析ステップで分割された前記単語列を当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成ステップと、
前記テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、前記文書処理装置が、当該学習不足単語に対する前記分散表現と当該学習不足単語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成ステップで生成される当該学習不足単語の分散表現に置換する単語分散表現修正ステップと、
を備えることを特徴とする文書処理方法。
【請求項10】
外部から入力されたテキストに含まれる単語の分散表現を生成する文書処理装置を構成する計算機に実行させる文書制御プログラムであって、
前記文書処理装置には、単語の種別ごとの基準ベクトルであるクラスベクトルが記憶され、
前記文書処理装置が、前記テキストを形態素解析によって単語列に分割する形態素解析処理と、
前記文書処理装置が、前記形態素解析処理で分割された前記単語列を当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成処理と、
前記テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、前記文書処理装置が、当該学習不足単語に対する前記分散表現と当該学習不足単語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成処理で生成される当該学習不足単語の分散表現に置換する単語分散表現修正処理と、
を前記計算機に実行させることを特徴とする文書処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文書処理装置、文書処理方法、及び、文書処理プログラムに関し、単語の分散表現を生成する文書処理装置、文書処理方法、及び、文書処理プログラムに適用して好適なものである。
【背景技術】
【0002】
従来、自然言語処理の分野では、単語を複数の連続値で構成されるベクトルで表し、単語間の特徴を表現できる分散表現の技術が知られている。
【0003】
この技術分野に関連する文献として、例えば特許文献1が挙げられる。特許文献1には、「単語の特徴を多次元ベクトルで表現する単語ベクトルの値を、簡便な方法で補正すること」を課題として、「単語のカテゴリーを記憶するシソーラス記憶部166と、単語の特徴を多次元ベクトルで表現する単語ベクトルを含む分散表現モデルを記憶する第1単語ベクトル記憶部164と、を備え、カテゴリーベクトル算出部144において同じカテゴリーに属する単語の単語ベクトルを代表するカテゴリーベクトルを算出し、単語ベクトル補正部146において単語ベクトルを、当該単語が属するカテゴリーベクトルに近づける補正を施す」自然言語装置が開示されている。
【0004】
ここで、分散表現は、大規模コーパスを用いて単語ごとにその前後の文脈から特徴を学習することで、単語の特徴や別の単語との関連性を表すベクトルを獲得することができる。しかし、学習対象のコーパスにおいて出現頻度の少ない単語や単語が現れる文脈が偏っている場合は、その単語の正確な特徴を獲得することができないという課題があった。
【0005】
上記課題に対し、特許文献1では、外部知識としてシソーラスを用いて、各単語の分散表現に対し、その単語が属するカテゴリーに応じて、カテゴリーを代表するカテゴリーベクトルに近づける補正を施す仕組みが記載されている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、特許文献1に開示された技術は、学習済みの分散表現空間で表されている単語に対して補正を加えるのみであり、当該分散表現空間に含まれていない単語(例えば、部分文字列に分割されたサブワードや未知の単語等、それ自体では十分な意味が表されない単語)に対する扱いが開示されていない。したがって、特許文献1に開示された自然言語装置は、シソーラスに含まれている単語であっても、学習済みの分散表現空間に含まれない単語については、分散表現を作ることができないという問題があった。
【0008】
本発明は以上の点を考慮してなされたもので、事前学習済みの分散表現空間において十分に意味を表すことができていない単語に対して、追加学習を行うことなしに、単語の意味を適切に埋め込むことが可能な文書処理装置、文書処理方法、及び、文書処理プログラムを提案しようとするものである。
【課題を解決するための手段】
【0009】
かかる課題を解決するため本発明においては、外部から入力されたテキストに含まれる単語の分散表現を生成する文書処理装置であって、単語の種別ごとの基準ベクトルであるクラスベクトルを記憶するクラスベクトル記憶部と、前記テキストを形態素解析によって単語列に分割する形態素解析部と、前記形態素解析部によって分割された前記単語列を当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成部と、前記テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、当該学習不足単語に対する前記分散表現と当該学習不足単語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成部による当該学習不足単語の分散表現に置換する単語分散表現修正部と、を備える文書処理装置が提供される。
【0010】
また、かかる課題を解決するため本発明においては、外部から入力されたテキストに含まれる単語の分散表現を生成する文書処理装置による文書制御方法であって、前記文書処理装置は、単語の種別ごとの基準ベクトルであるクラスベクトルを記憶しており、前記文書処理装置が、前記テキストを形態素解析によって単語列に分割する形態素解析ステップと、前記文書処理装置が、前記形態素解析ステップで分割された前記単語列を当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成ステップと、前記テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、前記文書処理装置が、当該学習不足単語に対する前記分散表現と当該学習不足単語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成ステップで生成される当該学習不足単語の分散表現に置換する単語分散表現修正ステップと、を備える文書処理方法が提供される。
【0011】
また、かかる課題を解決するため本発明においては、外部から入力されたテキストに含まれる単語の分散表現を生成する文書処理装置を構成する計算機に実行させる文書制御プログラムであって、前記文書処理装置には、単語の種別ごとの基準ベクトルであるクラスベクトルが記憶され、前記文書処理装置が、前記テキストを形態素解析によって単語列に分割する形態素解析処理と、前記文書処理装置が、前記形態素解析処理で分割された前記単語列を当該単語列に含まれる単語ごとの分散表現に変換する単語分散表現生成処理と、前記テキストに事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語が含まれる場合に、前記文書処理装置が、当該学習不足単語に対する前記分散表現と当該学習不足単語が属する種別の前記クラスベクトルとを合成し、当該合成後の分散表現を、前記単語分散表現生成処理で生成される当該学習不足単語の分散表現に置換する単語分散表現修正処理と、を前記計算機に実行させる文書処理プログラムが提供される。
【発明の効果】
【0012】
本発明によれば、事前学習済みの分散表現空間において十分に意味を表すことができない単語に対して、追加学習を行うことなしに、単語の意味を適切に埋め込むことができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】本発明の第1の実施形態に係る文書処理装置100の機能構成例を示すブロック図である。
【
図2】文書処理装置100を含む文書処理システム200の構成例を示す図である。
【
図3】文書処理装置100のハードウェア構成例を示すブロック図である。
【
図4】クラスベクトル作成処理の処理手順例を示すフローチャートである。
【
図5】固有名詞の単語分散表現の散布図の画面表示例を示す図である。
【
図6】クラスベクトル候補の補正時の画面表示例を示す図である。
【
図7】分散表現生成処理の処理手順例を示すフローチャートである。
【
図8】単語分散表現修正処理の処理手順例を示すフローチャートである。
【
図9】分散表現生成処理による入力文の処理過程の一例を説明する図である。
【
図10】本発明の第2の実施形態に係る文書処理装置1000の機能構成例を示すブロック図である。
【
図11】拡張単語ベクトル作成処理の処理手順例を示すフローチャートである。
【
図12】第2の実施形態における単語分散表現修正処理の処理手順例を示すフローチャートである。
【
図13】第2の実施形態における分散表現生成処理による入力文の処理過程の一例を説明する図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を詳述する。
【0015】
(1)第1の実施形態
第1の実施形態では、固有名詞の分散表現について、固有名詞の種別ごとにその種別を代表する基準ベクトル(クラスベクトル)を生成し、固有名詞を構成する単語の分散表現とクラスベクトルを合成して、意味を埋め込んだ固有名詞の分散表現を生成する文書処理装置の例を説明する。本実施形態で扱う固有名詞は、事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語であって、これまでの学習における出現頻度が低く、十分な精度が得られていない低頻度語の一例に相当する。
【0016】
(1-1)構成
図1は、本発明の第1の実施形態に係る文書処理装置100の機能構成例を示すブロック図である。文書処理装置100は、文書処理プログラムがインストールされたコンピュータ(情報処理装置)であって、
図1に示したように、入力部101、形態素解析部102、形態素解析辞書103、事前学習済みニューラル言語モデル104(単語分散表現生成部105,文分散表現生成部106)、出力部107、対象単語抽出部108、単語分散表現修正部109、クラスベクトル確認部110、位置ベクトル記憶部111、クラスベクトル記憶部112、及びクラスベクトル生成部113を備えて構成される。上記の各部については、
図2,
図3を説明した後に詳しく説明する。なお、
図1に示した構成間の接続関係は、代表的な接続例のみを表したものであり、全ての接続関係を表したものではない。
【0017】
図2は、文書処理装置100を含む文書処理システム200の構成例を示す図である。文書処理システム200は、例えばクライアントサーバシステムで実現されるとき、
図2に示すように、クライアントサーバであるサーバ201とユーザが使用する複数のユーザ端末203とが、ネットワーク202を介して通信可能に接続される。ユーザ端末203は、例えばパーソナルコンピュータ(PC)やスマートフォン等の情報処理装置である。ネットワーク202は、インターネット、LAN(Local Area Network)、またはWAN(Wide Area Network)等の任意のネットワークであってよい。
【0018】
文書処理システム200がクライアントサーバシステムで実現される場合、文書処理装置100で実行される文書処理プログラムは、サーバ201にインストールされる。したがって、サーバ201が文書処理装置100として、形態素解析、分散表現の生成、クラスベクトルの生成、及び拡張単語ベクトルの生成等を実行する。この場合、ユーザ端末203は、処理対象の文書の入力、処理対象の文書のサーバ201への送信、及びサーバ201からの処理結果の受信を実行するインタフェースとなる。
【0019】
なお、本実施形態において、文書処理システム200は、スタンドアロン型で実現することもできる。この場合、文書処理装置100で実行される文書処理プログラムは、ユーザ端末203にインストールされ、サーバ201及びネットワーク202は必須ではない。したがって、ユーザ端末203が文書処理装置100として、処理対象の文書の入力、入力した文書のデータ変換、及び処理結果の出力等を実行する。
【0020】
図3は、文書処理装置100のハードウェア構成例を示すブロック図である。
図3に示した情報処理装置300は、文書処理装置100を実現する情報処理装置であって、
図2に示したサーバ201やユーザ端末203に相当する。
【0021】
図3に示すように、情報処理装置300は、プロセッサ301と、記憶デバイス302と、入力デバイス303と、出力デバイス304と、通信インタフェース(通信IF)305と、を有する。プロセッサ301、記憶デバイス302、入力デバイス303、出力デバイス304、および通信IF305は、内部通信線であるバス306により接続される。
【0022】
プロセッサ301は、情報処理装置300を制御するプロセッサであり、例えばCPU(Central Processing Unit)やGPU(Graphics Processing Unit)である。記憶デバイス302は、プロセッサ301の作業エリアを提供するデバイスであり、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス302は、具体的には例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、またはフラッシュメモリ等である。なお、記憶デバイス302は、必ずしも情報処理装置300の内部に搭載された記録媒体である必要はなく、各種プログラム及びデータの一部またはその全てが、情報処理装置300に接続される外部(外部記憶媒体やクラウド等)に記憶される構成であってもよい。
図1に示した文書処理装置100の各処理部は、主に、プロセッサ301が所定の各種プログラムを読み出して実行することによって実現される。また、
図1に示した文書処理装置100の各記憶部(形態素解析辞書103を含む)は、記憶デバイス302によって実現される。入力デバイス303は、データを入力するためのデバイスであり、具体的には例えば、キーボード、マウス、タッチパネル、テンキー、スキャナ、マイク、または生体センサ等である。出力デバイス304は、データを出力するためのデバイスであり、具体的には例えば、ディスプレイ、プリンタ、またはスピーカ等である。通信IF305は、ネットワーク202に接続し、情報処理装置300の外部とデータを送受信するインタフェースであって、具体的には例えば、NIC(Network Interface Card)である。
【0023】
図1に示した文書処理装置100の機能構成について説明する。
【0024】
入力部101は、テキストデータを読み込むモジュールであり、テキストデータの加工及び登録は、すべて入力部101を介して行われる。以後の説明では、入力部101が読み込んだテキストデータに含まれるテキストを、単にテキストと表記することがある。
【0025】
形態素解析部102は、入力部101から入力されたテキストの形態素解析を行い、その結果を事前学習済みニューラル言語モデル104の単語分散表現生成部105と、対象単語抽出部108とに出力する。なお、形態素解析部102は、形態素解析の前処理として、英数字記号やカタカナの全角文字への統一、及び、漢字については旧字体などの異字体を常用漢字に変換する処理等を行い、文字単位で可能な正規化を行う。
【0026】
形態素解析では、形態素解析辞書103を用いてテキストを単語列に分割し、読みと品詞情報を付与する処理である。形態素解析辞書103は、単語ごとの読み・品詞情報と、大量のテキストコーパスから学習された単語の生起コストと単語間の連接コストを持つデータベースである。したがって、形態素解析部102による形態素解析処理では、形態素解析辞書103の情報をもとに、テキストデータのテキストを日本語として適切な位置で区切って単語列に分割する。
【0027】
形態素解析辞書103は、予めシステム側に用意された読み込み専用の辞書であるシステム辞書と、ユーザが任意に登録及び修正を行う読み書き可能な辞書であるユーザ辞書とで構成される。ユーザ辞書を編集することにより、ユーザは新たに固有名詞を形態素解析辞書103に登録することができる。なお、一部の固有名詞は、予めシステム辞書に登録されていてもよい。また、形態素解析辞書103のシステム辞書は、後述の事前学習済みニューラル言語モデル104を作成する際に使われた形態素解析辞書と同じ辞書とする。
【0028】
形態素解析部102は、さらに、後述の事前学習済みニューラル言語モデル104から語彙リストを取得し、語彙リストに合わせた単語の加工を行う。語彙リストは、事前学習済みニューラル言語モデル104に含まれる語彙のリストである。ニューラル言語モデルは、その仕組み上、語彙数を制限する必要があるため、通常の形態素解析によって分割された単語をさらに小さい部分文字列のサブワードに分割するサブワード分割や、低頻度語(それまでの学習における出現頻度が低い語)を未知語(十分に学習済みの単語として扱わない語)を示す特殊トークンに置換する未知語処理を行うことにより、全体の語彙数を削減している。
【0029】
したがって、形態素解析部102は、形態素解析辞書103を用いて形態素解析した結果を語彙リストに定義されたサブワード単位に再分割し、また、語彙リストに存在しない場合は未知語を示す特殊トークンに置換する。
【0030】
事前学習済みニューラル言語モデル104は、ニューラルネットワークを有し、大規模コーパスで学習された言語モデルであって、形態素解析部102が出力した単語列を多次元の実数ベクトルである分散表現に変換する。事前学習済みニューラル言語モデル104は、単語分散表現生成部105と文分散表現生成部106とを有する。
【0031】
単語分散表現生成部105と文分散表現生成部106とを有する事前学習済みニューラル言語モデル104としては、例えば、BERT(Bidirectional Encoder Representations from Transformers)がある。このとき、BERTにおけるエンベディング層が単語分散表現生成部105に相当し、エンコーダ層が文分散表現生成部106に相当する。
【0032】
単語分散表現生成部105は、形態素解析部102が出力した単語列をニューラルネットワークを介して単語ごとに多次元の実数ベクトルである分散表現(単語分散表現)に変換する。より具体的には、単語分散表現生成部105は、単語を単語IDに変換し、さらにこれをワンホットベクトルに変換した後、ワンホットベクトルをニューラルネットワークに入力することで、単語ごとの分散表現(単語分散表現)を得る。単語IDは、語彙リストの単語にユニークに与えられた連続する整数である。
【0033】
ワンホットベクトルは、1つの成分が「1」で、残りの成分がすべて「0」であるベクトルである。ワンホットベクトルは、単語IDの数と同じ次元のベクトルであり、単語IDが「n」の単語はn番目の要素が「1」であるワンホットベクトルに変換される。単語分散表現生成部105は、上記のように変換したワンホットベクトルをニューラルネットワークに入力し、実数ベクトルである単語分散表現に変換する。
【0034】
文分散表現生成部106は、単語分散表現生成部105が出力した(あるいは、後述する単語分散表現修正部109によって置換された)単語分散表現を合成し、文(または単語列)全体の分散表現を生成する。なお、事前学習済みニューラル言語モデル104は、BERTに限定するものではなく、単語列を単語ごとの分散表現と文全体の分散表現へ変換できればよく、BERTに類似したアーキテクチャの言語モデルを用いてもよい。また、単語分散表現生成部105にWord2Vecを用い、文分散表現生成部106として、単語分散表現生成部105が出力した単語分散表現の平均を取って文分散表現とする、といった構成としてもよい。
【0035】
出力部107は、文分散表現生成部106が生成した文(または単語列)全体の分散表現を、出力デバイス304によって所定の出力手段で出力する(ディスプレイへの表示出力や出力ファイルへのデータ出力等)。このとき、出力部107は、文全体で分散表現(分散ベクトル)を出力してもよいし、単語ごとに分散ベクトルを出力してもよい。
【0036】
対象単語抽出部108は、形態素解析部102が出力した単語列から、クラスベクトル記憶部112に格納されたクラスベクトルと対応する所定の品詞種別(例えば、地名、人名、レストラン名などの固有名詞)の単語を抽出する。なお、ここで抽出する単語は、前述した事前学習済みニューラル言語モデル104の語彙に合わせたサブワード分割や未知語処理を行う前の単語である。また、対象単語抽出部108は、併せて、単語分散表現生成部105が出力した単語分散表現の中から、抽出した固有名詞に相当する単語列の単語分散表現を抽出する。
【0037】
単語分散表現修正部109は、対象単語抽出部108が出力した固有名詞を構成する複数の単語の単語分散表現とクラスベクトル記憶部112に格納されたクラスベクトルと位置ベクトル記憶部111に格納された位置ベクトルとを合成して、固有名詞の単語分散表現を生成する。そして、単語分散表現修正部109は、生成した固有名詞の単語分散表現を単語分散表現生成部105に出力し、単語分散表現生成部105における当該固有名詞の単語分散表現群を上記生成した単語分散表現に置換し、置換後の単語分散表現を文分散表現生成部106に入力する。
【0038】
クラスベクトル確認部110は、後述するクラスベクトル生成部113によって生成されたクラスベクトルをクラスベクトル候補として出力デバイス304によって出力し、入力デバイス303によってユーザからクラスベクトル候補への手動補正を受け付ける機能を有する。クラスベクトル確認部110は、クラスベクトル候補への手動補正を受け付けると、手動補正後のクラスベクトル候補をクラスベクトル生成部113に転送し、当該クラスベクトル候補をクラスベクトルとしてクラスベクトル記憶部112に登録する(あるいは、クラスベクトル確認部110から直接、クラスベクトル記憶部112に登録するとしてもよい)。
【0039】
位置ベクトル記憶部111は、単語分散表現修正部109が単語分散表現に合成する位置ベクトルを格納する。位置ベクトルは、固有名詞を構成する各単語の分散表現に対して、その位置に対応した絶対的な値を足し合わせることで位置情報を与える役割を果たす。位置ベクトルを実現する技術には、例えば、Transformerの位置エンコーディングがある。
【0040】
クラスベクトル記憶部112は、単語分散表現修正部109が単語分散表現に合成するクラスベクトルを格納する。クラスベクトル記憶部112には、クラスベクトル生成部113による後述のクラスベクトル作成処理によって固有名詞の種別ごとに作成されたクラスベクトルが格納される。
【0041】
クラスベクトル生成部113は、単語分散表現修正部109が単語分散表現に合成するクラスベクトルを生成し、クラスベクトル記憶部112に格納する。クラスベクトルの生成は、文書処理装置100が文書処理を行う前に実行される。
【0042】
(1-2)クラスベクトル作成処理
図4は、クラスベクトル作成処理の処理手順例を示すフローチャートである。
図4に示すクラスベクトル作成処理は、後述する分散表現生成処理が実行されるよりも前の任意のタイミングで実行される処理であって、
図1に示した文書処理装置100がクラスベクトルを作成しクラスベクトル記憶部112に登録する処理である。
【0043】
図4によればまず、クラスベクトル生成部113が、入力部101を介して事前学習済みニューラル言語モデル104の語彙リストを読み込む(ステップS401)。語彙リストは、事前学習済みニューラル言語モデル104に含まれる全語彙(単語分散表現生成部105が保持する全ての語彙)のリストであり、事前学習済みニューラル言語モデル104から取得することができる。また、ステップS401で読み込んだ語彙リストにサブワードが含まれている場合、対象単語抽出部108が、サブワードを除外し、サブワードに分割されていない単語のみを抽出する(ステップS402)。語彙リストには、サブワードか否かの情報が含まれており、対象単語抽出部108は、この情報に基づいてサブワードの除外を行う。語彙リストにサブワードが含まれていない場合、ステップS402の処理は省略される。
【0044】
次に、形態素解析部102が、ステップS402で抽出されたサブワード以外の、ステップS401で読み込まれた語彙リストに含まれる単語に対して、形態素解析辞書103を参照して単語の品詞を調べ、固有名詞を抽出する(ステップS403)。そして、クラスベクトル生成部113が、単語分散表現生成部105を介して、ステップS403で形態素解析部102が抽出した固有名詞の単語を単語分散表現に変換する(ステップS404)。
【0045】
形態素解析部102が抽出したすべての固有名詞がステップS404で単語分散表現変換されると、クラスベクトル生成部113は、単語分散表現生成部105において固有名詞種別ごとの分散表現の平均をとって分散表現を作成し、これを各固有名詞種別のクラスベクトルとする(ステップS405)。なお、ステップS405でクラスベクトル生成部113が作成したクラスベクトルは、後述するステップS407においてユーザによる補正が可能である(すなわち、最終的にクラスベクトル記憶部112に登録されるクラスベクトルであるとは限らない)ことから、クラスベクトル候補と呼ぶこともできる。
【0046】
さらに、クラスベクトル生成部113は、ステップS405で作成した固有名詞の単語分散表現及びクラスベクトルの可視化を行うために、単語に分散表現の次元削減を行い、2次元の散布図を作成する(ステップS406)。次元削減には、例えば、主成分分析を用いることができるが、各固有名詞の分散表現の違いを表す特徴に集約できる方法であれば、別の方法であってもよい。
【0047】
次に、クラスベクトル生成部113は、ステップS406で作成した散布図をクラスベクトル確認部110に送信し、クラスベクトル確認部110が、出力デバイス304(ディスプレイ等の表示装置)を用いて出力する(ステップS407)。
【0048】
図5は、固有名詞の単語分散表現の散布図の画面表示例を示す図である。
図5に示した散布
図500は、
図4のステップS407で出力される散布図の具体例である。散布
図500には、「東京」や「大阪」といった地名の分散表現群501と、「○×カフェ」、「○△食堂」といったレストラン名の分散表現群502とが示されている。また、
図5に示した×印503,504は、地名及びレストラン名(図中ではレストラン)のそれぞれの固有名詞の分散表現から生成された、クラスベクトル候補の分散表現を表している。
【0049】
ここで、それぞれの固有名詞の分散表現群において、大多数の分散表現から大きく外れた値を有する分散表現が含まれている場合、分散表現群の平均がクラスベクトルとして適切とは限らない。そこで、クラスベクトル確認部110は、ステップS407において、出力した散布図に示すクラスベクトル候補(例えば
図5の散布
図500における×印503,504)について、入力デバイス303(マウスやキーボード等)を用いてユーザによる手動補正を受け付けるようにしてもよい。
【0050】
図6は、クラスベクトル候補の補正時の画面表示例を示す図である。
図6に示した散布
図600は、大部分は
図5の散布
図500と同じで、×印601が追加されている。×印601は、ユーザが適正と考える地名のクラスベクトルの位置であり、ユーザが所定の操作を行って散布
図600上で×印601を選択することにより、地名のクラスベクトル候補を×印503から×印601に補正することが決定される。なお、クラスベクトル候補の適正な位置は、ユーザが任意に決定することができ、具体的には例えば、それぞれの固有名詞の分散表現群におけるベクトルの平均を基に決定されるものでもよいし、何れかの分散表現を基に決定されるものでもよいし、その他の決定方法によるものでもよい。そして、クラスベクトル候補の補正が決定された場合は、クラスベクトル確認部110(あるいは、クラスベクトル確認部110から情報を受信したクラスベクトル生成部113)が、上記決定に従って、新たにクラスベクトル候補を作成する。また、各分散表現群のクラスベクトル候補についてユーザが補正の必要がないと判断した場合は、確認を示す所定の操作が行われることにより、ステップS407で散布
図500(または散布
図600)に表示したクラスベクトル候補の確認が終了する。
【0051】
そして、クラスベクトル生成部113は、ステップS407におけるクラスベクトル候補の補正または確認の結果に応じて、最終的に確認された各クラスベクトル候補を、クラスベクトルとしてクラスベクトル記憶部112に登録し(ステップS408)、クラスベクトル生成処理を完了する。なお、ステップS408において、クラスベクトルは、固有名詞種別と対のデータとしてクラスベクトル記憶部112に登録される。この結果、単語分散表現修正部109が、例えば「レストラン」や「地名」といった固有名詞種別をキーとしてクラスベクトル記憶部112を参照することにより、当該固有名詞種別のクラスベクトルを取得できるようになる。
【0052】
(1-3)分散表現修正処理
図7は、分散表現生成処理の処理手順例を示すフローチャートである。
図7に示す分散表現生成処理は、
図1に示した文書処理装置100がテキストデータに含まれるテキストを文分散表現に変換する処理である。分散表現生成処理は、
図4に示したクラスベクトル作成処理が完了した後の文書処理装置100の運用中に、例えば入力部101にテキストによる入力文(テキストデータ)が入力されるときに実行される。
【0053】
図8は、単語分散表現修正処理の処理手順例を示すフローチャートである。
図8に示す単語分散表現修正処理は、
図7に示す分散表現生成処理のステップS705の処理に相当し、対象単語抽出部108及び単語分散表現修正部109によって実行される。また、
図9は、分散表現生成処理による入力文の処理過程の一例を説明する図である。
【0054】
以下、本実施形態における分散表現生成処理について、
図7及び
図8のフローチャートに沿って、適宜、
図9の具体例を参照しながら詳しく説明する。
【0055】
図7によればまず、入力部101がテキストデータである入力文901を読み込む(ステップS701)。
図9には、入力文901が「○×△カフェはどこ」というテキストであることが示されている。
【0056】
次に、形態素解析部102が、ステップS701で入力された入力文901の形態素解析を行う(ステップS702)。
図9によれば、入力文901は、形態素解析によって、「○×△カフェ」、「は」、「どこ」という3つの形態素(単語)902~904に分割される。また、各形態素902~904には、品詞情報905~907が付与される。具体的には、「○×△カフェ」の形態素902には「固有名詞-レストラン」の品詞情報905が付与され、「は」の形態素903には「助詞」の品詞情報906が付与され、「どこ」の形態素904には「代名詞」の品詞情報907が付与される。
【0057】
次に、形態素解析部102は、事前学習済みニューラル言語モデル104の語彙リストを参照して、形態素902~904をサブワードに分割する(ステップS703)。
図9の場合、具体的には、固有名詞の「〇×△カフェ」(形態素902)は、「〇」、「×」、「△」、「カフェ」の4つのトークン908~911にサブワード分割される。また、助詞の「は」(形態素903)及び代名詞の「どこ」(形態素904)は、事前学習済みニューラル言語モデル104の語彙リストに登録されている事前学習済みの単語であって、現状より細かく分割する必要がない単語であるとした場合、サブワードへの分割は行われずに2つのトークン912,913が生成される。
【0058】
なお、事前学習済みニューラル言語モデル104の語彙リストは、事前学習済みニューラル言語モデル104の事前学習時に、学習コーパスの出現頻度から学習される。したがって、ステップS703においては、固有名詞であってもサブワードに分割されない場合もあれば、普通名詞であってもサブワードに分割される場合もある。すなわち、事前学習において高頻度で出現した固有名詞であれば、十分な精度が得られていることからサブワードへの分割が不要とされる一方、事前学習における出現頻度が低い普通名詞であれば、十分な精度が得られていないことからサブワードへの分割が行われる。
【0059】
次に、単語分散表現生成部105が、ステップS703の処理後のトークン(単語列)908~913をそれぞれ、単語分散表現914~919に変換する(ステップS704)。
【0060】
次に、対象単語抽出部108及び単語分散表現修正部109が、単語分散表現修正処理を実行する(ステップS705)。ステップS705で実行される単語分散表現修正処理は、ステップS702で出力された形態素(単語)902~904のうち、ステップS703で意味をなさないサブワードに分割された単語(本例では固有名詞の単語902)の分散表現を修正し、1つの単語による分散表現を生成する処理であって、前述したように
図8にその詳細な処理手順例が示される。以下、
図8を参照しながら、単語分散表現修正処理について詳しく説明する。
【0061】
図8によれば、まず、対象単語抽出部108が、ステップS702で形態素解析部102が出力した単語902~904のうち、最初の単語902に着目する(ステップS801)。
【0062】
次に、対象単語抽出部108は、着目した単語902の品詞情報905を参照し、処理対象の固有名詞であるか否かを判定する(ステップS802)。ステップS802の処理は、着目した単語902が、後述するステップS803~S807で行われる単語の分散表現の変換処理の対象とされる単語であるか否かを判定するものであり、この場合、
図7のステップS703でサブワードに分割された固有名詞の単語902は、処理対象の単語に相当する。ステップS802において、処理対象の固有名詞である場合は(ステップS802のYES)、ステップS803に進み、処理対象の固有名詞ではない場合は(ステップS802のNO)、後述するステップS808に進む。
【0063】
図9を参照すると、「固有名詞-レストラン」の品詞情報905は固有名詞であることから、ステップS802では「YES」と判定され、ステップS803に進む。ステップS803では、単語分散表現修正部109が、着目した単語902を構成する単語の単語分散表現914~917を単語分散表現生成部105から取得する。前述したように、単語分散表現914~917は、
図7のステップS704において、単語分散表現生成部105によって生成されている。
【0064】
次に、単語分散表現修正部109は、ステップS803で取得した単語分散表現914~917に対して、位置ベクトルを合成する(ステップS804)。
【0065】
ステップS804の処理を詳しく説明する。まず、単語分散表現修正部109は、位置ベクトル記憶部111から、単語分散表現914~917の各単語に合成する位置ベクトル(
図9に示す位置ベクトル920~923)を取得する。
図9によれば、位置ベクトル920~923は、順に「P1」、「P2」、「P3」、「P4」と表記されているが、これらは位置の順番を表している。すなわち、位置ベクトル920「P1」は、1番目を示すベクトルであり、位置ベクトル921~923は、それぞれ、2番目、3番目、4番目を示すベクトルである。
【0066】
さらにステップS804において、単語分散表現修正部109は、取得した位置ベクトル920~923を単語分散表現914~917に足し合わせる。具体的には、1番目の単語「○」の単語分散表現914には、1番目を示す「P1」の位置ベクトル920が合成され、2番目の単語「×」の単語分散表現915には、2番目を示す「P2」の位置ベクトル921が合成され、3番目、4番目も同様に合成される。上記合成処理は、一意のベクトルを生成するために必要な処理であって、単語分散表現914~917と位置ベクトル920~923との合成を行うことにより、単語902におけるサブワードの語順を維持することができる。
【0067】
そして、ステップS804においてすべての単語の単語分散表現914~917に位置ベクトル920~923を合成した後、単語分散表現修正部109は、位置ベクトルを合成したこれらの単語分散表現の相加平均を取り、1つの分散表現に合成する(ステップS805)。
【0068】
次に、単語分散表現修正部109は、ステップS805で合成した1つの分散表現と、当該分散表現に対応するクラスベクトル(
図9に示すクラスベクトル924)との合成を行う(ステップS806)。
【0069】
ステップS806の処理を詳しく説明すると、まず、単語分散表現修正部109は、品詞情報905をキーとしてクラスベクトル記憶部112を参照し、品詞情報905に対応する「固有名詞-レストラン」のクラスベクトル924を取得する。
【0070】
さらにステップS806において、単語分散表現修正部109は、ステップS805で生成した分散表現に所定の係数を積算してクラスベクトル924に足しこむ。この所定の係数は、合成した固有名詞の分散表現がクラスベクトルの近傍となるよう調整するためのものである。合成した固有名詞の分散表現がクラスベクトルの近傍となることで、当該クラスの意味を含みながら固有名詞ごとにユニークな分散表現を生成することができる。上記所定の係数は、例えば、次のような方法で決定することができる。まず、
図4のクラスベクトル作成処理において、予め、クラスベクトルとクラスベクトルの基となった固有名詞の分散表現とのユークリッド距離の最大値αを求めておく。さらに、クラスごとにすべての固有名詞について
図8のステップS803~S805の処理を行って分散表現を求める。そして、それらの平均を算出したうえで、この平均と各分散表現とのユークリッド距離の最大値βを求める。そして、求めたαとβの比率(α/β)を所定の係数とする。
【0071】
以上のようにして、ステップS806では、単語分散表現修正部109によって合成された分散表現922が生成される。
図9に示したように、分散表現922は、「○△×カフェ」という1つの固有名詞の分散表現を表すものとなる。
【0072】
次に、単語分散表現修正部109は、単語分散表現生成部105が有する単語分散表現914~917を、ステップS806で新たに生成した単語分散表現925に置換し、単語902に対するステップS802以降の処理を完了する(ステップS807)。
【0073】
次に、単語分散表現修正部109(あるいは対象単語抽出部108)は、
図7のステップS702で形態素解析部102が出力した単語902~904のうちに、未処理の単語(すなわち、ステップS801またはステップS809で着目していない単語)が存在するかを確認する(ステップS808)。未処理の単語が存在する場合には(ステップS808のYES)、そのうちの1つの単語に着目して(ステップS809)、ステップS802以降の処理を繰り返す。一方、未処理の単語が存在しない場合には(ステップS808のNO)、単語分散表現修正処理を終了する。
【0074】
具体的には例えば、単語902についてステップS802~S807の処理が終了した後のステップS808では、単語903,904について未処理(未着目)であることから、ステップS809で例えば単語903に着目し、ステップS802の処理が行われる。しかし、単語903の品詞情報906は「助詞」であることから、ステップS802において処理対象の固有名詞ではないと判定され(ステップS802のNO)、特段の変換処理が行われることなく、ステップS808に進む。この結果、
図9の例では、ステップS704で単語903から変換された単語分散表現918が単語分散表現926となる。次のステップS808では、単語904が未処理であることから、ステップS809において単語904に着目して、再びステップS802の処理が行われる。但し、単語904もまた、処理対象の固有名詞ではないため、ステップS802でNOと判定され、特段の変換処理が行われることなくステップS808に進む。この結果、
図9の例では、ステップS704で単語904から変換された単語分散表現919が単語分散表現927となる。以上の処理を経たステップS808では、未処理の単語が存在しなくなる(すなわち、全ての単語902~904の処理が完了している)ため、ステップS808でNOと判定されて、単語分散表現修正処理は終了する。
【0075】
図7の説明に戻る。ステップS705の単語分散表現修正処理が行われた後、文分散表現生成部106が、ステップS705で単語分散表現修正部109によって修正された後の単語分散表現(例えば
図9に示した単語分散表現925~927)を合成して、入力文901全体の文分散表現を生成し(ステップS706)、分散表現生成処理を終了する。
【0076】
以上に説明したように、本実施形態に係る文書処理装置100によれば、
図4のクラスベクトル作成処理により、事前学習において十分な意味の精度が得られていない低頻度語(例えば固有名詞)の分散表現について、低頻度語の種別ごとにその種別を代表するクラスベクトルを生成することができる。そして、
図7の分散表現生成処理のなかで行われる
図8の単語分散修正処理により、入力文に含まれる低頻度語について、低頻度語の分散表現にサブワードの順番を固定する位置ベクトルを合成したうえで上記クラスベクトルと合成することで、低頻度語に十分な意味を付与して低頻度語の単語分散表現を修正(置換)することができる。かくして、文書処理装置100は、
図4のクラスベクトル作成処理を経て
図7の分散表現生成処理を実行することにより、事前学習において十分な精度が得られていない低頻度語(例えば固有名詞)を含む文に対して、追加学習を行うことなしに、低頻度語の意味を適切に埋め込んだ一意な文分散表現を生成することができる。
【0077】
(2)第2の実施形態
第2の実施形態では、絵文字の記号の分散表現について、記号を代表する基準ベクトル(クラスベクトル)を生成し、絵文字の説明文の分散表現とクラスベクトルとを合成して、意味を埋め込んだ記号の分散表現を生成する文書処理装置の例を説明する。本実施形態で扱う絵文字は、事前学習済みの分散表現空間において十分に意味を表すことができない学習不足単語であって、事前学習されていない未知語の一例に相当する。
【0078】
(2-1)構成
図10は、本発明の第2の実施形態に係る文書処理装置1000の機能構成例を示すブロック図である。文書処理装置1000は、第1の実施形態に係る文書処理装置100の構成に、拡張単語ベクトル生成部1003及び拡張単語ベクトル記憶部1004を加えて構成される。なお、文書処理装置1000における対象単語抽出部1001及び単語分散表現修正部1002は、文書処理装置100における対象単語抽出部108及び単語分散表現修正部109に対応する処理部であるが、一部で異なる処理を行うため、新たな符号を付している。
【0079】
文書処理装置1000は、第1の実施形態に係る文書処理装置100と同様に、
図2に示した文書処理システム200に含まれることができる。また、文書処理装置1000は、第1の実施形態に係る文書処理装置100と同様に、
図3に示したハードウェア構成例を有する情報処理装置300で実現される。具体的には、拡張単語ベクトル生成部1003は、プロセッサ301が所定の各種プログラムを読み出して実行することによって実現され、拡張単語ベクトル記憶部1004は、記憶デバイス302によって実現される。
【0080】
拡張単語ベクトル生成部1003は、拡張単語ベクトルのもととなる単語(未知語であり、本例では絵文字を表す記号)の説明文の文分散表現を文分散表現生成部106を介して取得し、記号としての意味を付与した分散表現(拡張単語ベクトル)を生成して拡張単語ベクトル記憶部1004に登録する。拡張単語ベクトル記憶部1004は、拡張単語ベクトル生成部1003によって生成された拡張単語ベクトルを格納する。拡張単語ベクトルの生成については、後述する
図11に示す拡張単語ベクトル作成処理のなかで詳しく説明する。
【0081】
図14は、絵文字の説明文の一例を示す図である。
図14には、複数の絵文字1401と各絵文字1401の説明文1402とが、紐付けて示されている。絵文字1401がUNICODEに規定されている絵文字の記号である場合、説明文1402には、対応する記号のUNICODEの説明文が記載される。UNICODEに規定されている絵文字の記号及び説明文は、形態素解析辞書103のシステム辞書に登録されているとする。但し、説明文1402の記載はこれに限定されるものではなく、ユーザが独自に作成してもよい。また、UNICODEに規定された記号以外の記号でも、形態素解析辞書103のユーザ辞書に登録される等により、拡張単語ベクトルの生成対象とすることができる。
【0082】
前述したように、本実施形態では絵文字の記号を拡張単語(未知語)の一例とし、拡張単語ベクトル生成部1003は、事前処理で拡張単語ベクトル作成処理を実行することにより、それぞれの絵文字1401の拡張単語ベクトルを生成し、拡張単語ベクトル記憶部1004に登録する。
【0083】
(2-2)拡張単語ベクトル作成処理
図11は、拡張単語ベクトル作成処理の処理手順例を示すフローチャートである。
図11に示す拡張単語ベクトル作成処理は、第1の実施形態で
図4に示したクラスベクトル作成処理と同様に、分散表現生成処理が実行されるよりも前の任意のタイミングで実行される処理であり、文書処理装置1000が拡張単語ベクトルを作成し拡張単語ベクトル記憶部1004に登録する処理である。
【0084】
図11によればまず、クラスベクトル生成部113が、複数の記号(
図14の絵文字1401)を代表するクラスベクトルを生成する(ステップS1101)。ステップS1101におけるクラスベクトルの生成手順は、
図4に示したクラスベクトル作成処理の処理手順とほぼ同様であり、
図4のステップS403では固有名詞の代わりに記号を抽出する。ステップS1101で生成された記号のクラスベクトルは、クラスベクトル記憶部112に登録される。
【0085】
次に、クラスベクトル生成部113が、ステップS1101で生成した記号のクラスベクトルと各記号の分散表現とのユークリッド距離を算出し、ユークリッド距離の最大値を求める(ステップS1102)。
【0086】
次に、拡張単語ベクトル生成部1003が、入力部101、形態素解析部102、単語分散表現生成部105、及び文分散表現生成部106を介して、絵文字のすべての説明文1402を文分散表現に変換する(ステップS1103)。ステップS1103では、対象とする全ての絵文字1401の説明文1402について、文分散表現への変換を行う。ステップS1103における文分散表現の生成手順は、
図7に示した分散表現生成処理と同様である(但し、ステップS705における単語分散表現の修正は行わない)。
【0087】
次に、拡張単語ベクトル生成部1003は、ステップS1103で作成したすべての説明文の文分散表現の平均を算出する(ステップS1104)。そして、算出したすべての説明文の文分散表現の平均と各説明文の分散表現との間のユークリッド距離を算出し、ユークリッド距離の最大値を求める(ステップS1105)。
【0088】
次に、拡張単語ベクトル生成部1003は、ステップS1102で算出した記号分散表現のユークリッド距離の最大値とステップS1105で算出した説明文の文分散表現のユークリッド距離の最大値とを用いて、前者の最大値に対する後者の最大値の比率を求める(ステップS1106)。
【0089】
次に、拡張単語ベクトル生成部1003は、説明文の文分散表現に対して、すべての説明文の分散表現の平均を減算し、ステップS1106で求めたユークリッド距離の比率を積算することにより、各説明文に対応する絵文字の分散表現(拡張単語ベクトル)を生成する(ステップS1107)。
【0090】
最後に、拡張単語ベクトル生成部1003は、ステップS1107で生成した拡張単語ベクトルを拡張単語ベクトル記憶部1004に登録し(ステップS1108)、拡張単語ベクトル作成処理を終了する。
【0091】
以上のように拡張単語ベクトル作成処理を実行することにより、拡張単語ベクトル生成部1003は、記号としての性質を含みながら、説明文ごと(言い換えれば、説明文に対応する絵文字ごと)にユニークな分散表現(拡張単語ベクトル)を生成することができる。
【0092】
(2-3)単語分散表現生成処理
第2の実施形態において実行される分散表現生成処理について説明する。本実施形態における分散表現生成処理は、
図10に示した文書処理装置1000がテキストデータに含まれるテキストを文分散表現に変換する処理である。本実施形態における分散表現生成処理は、
図4に示したクラスベクトル作成処理及び
図11に示した拡張単語ベクトル作成処理が完了した後の文書処理装置1000の運用中に、例えば入力部101にテキストによる入力文(テキストデータ)が入力されるときに実行される。なお、第2の実施形態における分散表現生成処理は、大部分は第1の実施形態で
図7に示した分散表現生成処理と同様の処理手順で実行され、ステップS705の単語分散表現修正処理が第2の実施形態固有の処理手順で実行される。
【0093】
図12は、第2の実施形態における単語分散表現修正処理の処理手順例を示すフローチャートである。
図12に示す単語分散表現修正処理は、第2の実施形態において
図7に示す分散表現生成処理のステップS705の処理に相当し、対象単語抽出部1001及び単語分散表現修正部1002によって実行される。また、
図13は、第2の実施形態における分散表現生成処理による入力文の処理過程の一例を説明する図である。
【0094】
以下、本実施形態における分散表現生成処理について、
図7及び
図12のフローチャートに沿って、適宜、
図13の具体例を参照しながら詳しく説明する。なお、第1の実施形態と共通する
図7の処理については、詳細な説明を省略することがある。
【0095】
分散表現生成処理ではまず、入力部101がテキストデータである入力文1301を読み込む(ステップS701)。
図13には、絵文字1302を含むテキストの入力文1301が例示されている。なお、絵文字1302は、
図14において「微笑んでいる顔」という説明文1402が付けられた絵文字である。
【0096】
次に、形態素解析部102が、ステップS701で入力された入力文1301の形態素解析を行う(ステップS702)。
図13によれば、入力文1301は、形態素解析によって2つの形態素(単語)1303,1304に分割される。また、各形態素1303,1304には、品詞情報1305,1306が付与される。具体的には、形態素1303には「感動詞」の品詞情報1305が付与され、形態素1304には「記号-絵文字」の品詞情報1306が付与される。
【0097】
次に、形態素解析部102は、事前学習済みニューラル言語モデル104の語彙リストを参照して、形態素1303,1304をサブワードに分割する(ステップS703)。具体的には、感動詞である形態素1303は、語彙リストに存在することから、サブワードに分割されずに「ありがとう」というトークン1307に変換される。一方、絵文字の記号である形態素1304は、語彙リストに存在しないため、事前学習済みニューラル言語モデル104において未知語を表す特殊トークン「UNK」(トークン1308)に変換される。
【0098】
次に、単語分散表現生成部105が、ステップS703の処理後のトークン(単語列)1307,1308をそれぞれ、単語分散表現1309.1310に変換する(ステップS704)。
【0099】
次に、
図12に示す単語分散表現修正処理の処理が実行される(ステップS705)。本実施形態のステップS705で実行される単語分散表現修正処理は、ステップS702で出力された形態素(単語)1303,1304のうち、意味をなさないサブワードに分割された単語(本例では絵文字の単語1304)の分散表現を修正し、1つの単語による分散表現を生成する処理であって、前述したように
図12にその詳細な処理手順例が示される。以下、
図12を参照しながら、単語分散表現修正処理について詳しく説明する。
【0100】
図12によれば、まず、対象単語抽出部1001が、ステップS702で出力された単語1303,1304のうち、最初の単語1303に着目する(ステップ1201)。そして、対象単語抽出部1001は、着目した単語1303の品詞情報1305に基づいて、拡張単語ベクトル記憶部1004を参照し、処理対象の単語であるか否かを判定する(ステップS1202)。ステップS1202では、着目した単語1303の拡張単語ベクトルが拡張単語ベクトル記憶部1004に登録されている場合に、処理対象の単語であると判定することができる。ステップS1202において、処理対象の絵文字である場合は(ステップS1202のYES)、ステップS1203に進み、処理対象の絵文字ではない場合は(ステップS1202のNO)、ステップS1207に進む。
【0101】
具体的には、単語1303の場合、品詞情報1305は「感動詞」であることから、ステップS1202では処理対象外と判定され(ステップS1202のNO)、ステップS1207に進む。
【0102】
ステップS1207では、単語分散表現修正部1002(あるいは対象単語抽出部1001)が、ステップS702で出力された単語1303,1304のうちに、未処理の単語(すなわち、ステップS1201またはステップS1208で着目していない単語)が存在するかを確認する。未処理の単語が存在する場合には(ステップS1207のYES)、そのうちの1つの単語に着目して(ステップS1208)、ステップS1202以降の処理を繰り返す。一方、未処理の単語が存在しない場合には(ステップS1207のNO)、単語分散表現修正処理を終了する。
【0103】
具体的には、単語1303が着目されている場合には、単語1304に対して未処理であることから、ステップS1207で「NO」と判定され、ステップS1208で単語1304が着目されて、ステップS1202に進む。
【0104】
そして、単語1304が着目されたときのステップS1202では、品詞情報1306は「記号-絵文字」であり、拡張単語ベクトル記憶部1004にその拡張単語ベクトルが登録されていることから、処理対象と判定され(ステップS1202のYES)、ステップS1203に進む。
【0105】
ステップS1203では、単語分散表現修正部1002が、クラスベクトル記憶部112を参照して、ステップS1202で着目した単語1304の記号のクラスベクトル1312を取得する。また、単語分散表現修正部1002は、拡張単語ベクトル記憶部1004を参照し、絵文字(記号)の単語1304に対応する拡張単語ベクトル1311を取得する(ステップS1204)。
【0106】
次に、単語分散表現修正部1002は、ステップS1204で取得した拡張単語ベクトル1311とステップS1203で取得したクラスベクトル1312とを足し合わせて、絵文字の単語1304の単語分散表現1314を生成する(ステップS1205)。
【0107】
次に、単語分散表現修正部1002は、単語分散表現生成部105が有する単語分散表現1310を、ステップS1205で新たに生成した単語分散表現1314に置換する(ステップS1206)。
【0108】
ステップS1206の処理が終了すると、ステップS1207に進むが、この場合は、すべての単語1303,1304に対してステップS1202以降の処理が完了しているため、「NO」と判定され、単語分散表現修正処理は終了する。
【0109】
図7の説明に戻る。ステップS705の単語分散表現修正処理が行われた後、文分散表現生成部106が、ステップS705で単語分散表現修正部1002によって修正された後の単語分散表現(例えば
図13に示した単語分散表現1313,1314)を合成して、入力文1301全体の文分散表現を生成し(ステップS706)、分散表現生成処理を終了する。
【0110】
以上に説明したように、本実施形態に係る文書処理装置1000によれば、
図11の拡張単語ベクトル作成処理により、事前学習において十分な意味の精度が得られていない未知語(例えば絵文字の記号)の分散表現について、複数の未知語を代表するクラスベクトルを生成するとともに、複数の未知語の説明文を用いて未知語ごとにユニークな分散表現(拡張単語ベクトル)を生成することができる。そして、
図7の分散表現生成処理のなかで行われる
図12の単語分散修正処理により、入力文に含まれる未知語について、未知語の分散表現(拡張単語ベクトル)とクラスベクトルとを合成することで、未知語に十分な意味を付与して未知語の単語分散表現を修正(置換)することができる。かくして、文書処理装置1000は、
図11のクラスベクトル作成処理を経て
図7の分散表現生成処理を実行することにより、事前学習において十分な精度が得られていない未知語(例えば絵文字の記号)を含む文に対して、追加学習を行うことなしに、未知語の意味を適切に埋め込んだ一意な文分散表現を生成することができる。なお、上記説明では絵文字の記号を例としたが、本実施形態に係る文書処理装置1000は、
図14に示したように記号に対応する説明文があれば、記号で構成される顔文字などの未知語でも同様に処理を行うことができる。この場合、顔文字は形態素解析辞書103に登録しておくものとする。
【0111】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0112】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0113】
また、図面において制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0114】
100,1000 文書処理装置
101 入力部
102 形態素解析部
103 形態素解析辞書
104 事前学習済みニューラル言語モデル
105 単語分散表現生成部
106 文分散表現生成部
107 出力部
108,1001 対象単語抽出部
109,1002 単語分散表現修正部
110 クラスベクトル確認部
111 位置ベクトル記憶部
112 クラスベクトル記憶部
113 クラスベクトル生成部
200 文書処理システム
201 サーバ
202 ネットワーク
203 ユーザ端末
300 情報処理装置
301 プロセッサ
302 記憶デバイス
303 入力デバイス
304 出力デバイス
305 通信インタフェース
306 バス
1003 拡張単語ベクトル生成部
1004 拡張単語ベクトル記憶部