(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-20
(45)【発行日】2023-03-29
(54)【発明の名称】情報処理方法、情報処理プログラムおよび情報処理装置
(51)【国際特許分類】
G06F 40/279 20200101AFI20230322BHJP
G06F 40/44 20200101ALI20230322BHJP
G06F 40/242 20200101ALI20230322BHJP
【FI】
G06F40/279
G06F40/44
G06F40/242
(21)【出願番号】P 2021541920
(86)(22)【出願日】2019-08-30
(86)【国際出願番号】 JP2019034100
(87)【国際公開番号】W WO2021038827
(87)【国際公開日】2021-03-04
【審査請求日】2021-12-03
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岩倉 友哉
(72)【発明者】
【氏名】牧野 拓哉
【審査官】成瀬 博之
(56)【参考文献】
【文献】特開2019-016239(JP,A)
【文献】米国特許出願公開第2018/0329883(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/20-40/58
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
第一の文書のうち、第二の文書に含まれていない単語を抽出し、
抽出した前記単語を第一の辞書に登録し、
第二の文書を構成する単語を再帰型のエンコーダに順番に入力することで中間表現ベクトルを算出し、
前記第一の辞書に登録された各単語の確率分布を算出する再帰型のデコーダに、前記中間表現ベクトルを入力した結果を基にして、第一の確率分布
の算出を反復し、
第二の文書を構成する各単語を前記再帰型のエンコーダに入力することで算出される隠れ状態ベクトルと、前記再帰型のデコーダから出力される隠れ状態ベクトルとを基にして、
第二の辞書に登録される、前記第二の文書を構成
する各単語
の確率分布である第二の確率分布
の算出を反復し、
前記第一の確率分布と、前記第二の確率分布とを基にして、
単語の生成を反復し、
前記生成が反復される単語ごとに、前記単語と、前記第一の文書のうち前記単語が生成される順番に対応する単語とを基にして、前記再帰型のエンコーダおよび前記再帰型のデコーダのパラメータを訓練する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項2】
前記単語を抽出する処理は、入力文と、前記入力文を要約した要約文との組を取得し、前記要約文のうち、前記入力文に含まれていない単語を抽出することを特徴とする請求項1に記載の情報処理方法。
【請求項3】
前記単語を辞書に登録する処理は、前記要約文のうち、前記入力文に含まれていない単語の頻度を集計し、頻度が所定の頻度以上となる単語を、前記第一の辞書に登録することを特徴とする請求項2に記載の情報処理方法。
【請求項4】
前記単語を生成する処理は、第一の重みを乗算した前記第一の確率分布と、前記第一の重みよりも小さい第二の重みを乗算した前記第二の確率分布とを加算した確率分布を基にして、前記第一の文書を構成する単語を生成することを特徴とする請求項1、2または3に記載の情報処理方法。
【請求項5】
第一の文書のうち、第二の文書に含まれていない単語を抽出し、
抽出した前記単語を第一の辞書に登録し、
第二の文書を構成する単語を再帰型のエンコーダに順番に入力することで中間表現ベクトルを算出し、
前記第一の辞書に登録された各単語の確率分布を算出する再帰型のデコーダに、前記中間表現ベクトルを入力した結果を基にして、第一の確率分布
の算出を反復し、
第二の文書を構成する各単語を前記再帰型のエンコーダに入力することで算出される隠れ状態ベクトルと、前記再帰型のデコーダから出力される隠れ状態ベクトルとを基にして、
第二の辞書に登録される、前記第二の文書を構成
する各単語
の確率分布である第二の確率分布
の算出を反復し、
前記第一の確率分布と、前記第二の確率分布とを基にして、
単語の生成を反復し、
前記生成が反復される単語ごとに、前記単語と、前記第一の文書のうち前記単語が生成される順番に対応する単語とを基にして、前記再帰型のエンコーダおよび前記再帰型のデコーダのパラメータを訓練する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項6】
第一の文書のうち、第二の文書に含まれていない単語を抽出し、
抽出した前記単語を第一の辞書に登録
し、
第二の文書を構成する単語を再帰型のエンコーダに順番に入力することで中間表現ベクトルを算出
し、
前記第一の辞書に登録された各単語の確率分布を算出する再帰型のデコーダに、前記中間表現ベクトルを入力した結果を基にして、第一の確率分布
の算出を反復し、
第二の文書を構成する各単語を前記再帰型のエンコーダに入力することで算出される隠れ状態ベクトルと、前記再帰型のデコーダから出力される隠れ状態ベクトルとを基にして、
第二の辞書に登録される、前記第二の文書を構成
する各単語
の確率分布である第二の確率分布
の算出を反復し、
前記第一の確率分布と、前記第二の確率分布とを基にして、
単語の生成を反復し、
前記生成が反復される単語ごとに、前記単語と、前記第一の文書のうち前記単語が生成される順番に対応する単語とを基にして、前記再帰型のエンコーダおよび前記再帰型のデコーダのパラメータを訓練する、
処理を実行する制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理方法等に関する。
【背景技術】
【0002】
新聞やWebサイト、電光掲示板などの文書から要約文を生成する自動要約にNN(Neural Network)等の機械学習が利用されることがある。たとえば、入力文をベクトル化するRNN(Recurrent Neural Networks)エンコーダと、入力文のベクトルを参照して要約文の単語の生成を繰り返すRNNデコーダとが接続されたモデルが要約文の生成に用いられる。
【0003】
この他、RNNとPointer機能を組み合わせることにより、RNNデコーダが要約文の単語を出力する際、入力文の単語を要約文の単語としてコピーすることができるPointer-Generatorも提案されている(Pointer Generator Networks)。
【0004】
図16~
図21は、従来のPointer-Generatorを説明するための図である。
図16~
図21では、学習済みのエンコーダ20、デコーダ30を用いて、入力文10aから、要約文10bを生成する場合について説明する。従来のPointer-Generatorを実行する装置を「従来装置」と表記する。入力文10aを「自然言語処理の方向性発表」とする。
【0005】
図16について説明する。従来装置は、入力文10aをエンコーダ20に入力することで、中間表現を算出する。従来装置は、中間表現(ベクトル)と、単語の文頭記号BOSを、デコーダ30のLSTM(Long short-term memory)31-T1に入力することで、要約単語辞書に含まれる各単語の確率分布D2を算出する。要約単語辞書は、要約文に含まれる単語を定義する辞書であり、メモリに展開されて用いられる。
【0006】
従来装置は、入力文10aをエンコーダ20に入力した際に算出される隠れ状態ベクトルhと、LSTM31-T1から出力される隠れ状態ベクトルH1とを基にして、入力文10aからコピーされる各単語の確率分布D1を算出する。
【0007】
図17について説明する。従来装置は、確率分布D1に重み「0.2」を乗算した確率分布と、確率分布D2に重み「0.8」を乗算した確率分布とを加算した確率分布D3を算出する。そうすると、確率分布D3において、単語「NLP」の確率が最大となるため、従来装置は、要約文10bの1文字目を「NLP」に設定する。なお、「0.2」、「0.8」といった重みは学習により決定されるものである。また、状態に応じて動的に変えることもできるが、説明の簡単化のために固定の値とする。
【0008】
図18について説明する。従来装置は、「NLP」のベクトルと、LSTM31-T1から出力される隠れ状態ベクトルH1とをLSTM31-T2に入力することで、要約単語辞書に含まれる各単語の確率分布D2を算出する。
【0009】
従来装置は、隠れ状態ベクトルhと、LSTM31-T2から出力される隠れ状態ベクトルH2とを基にして、入力文10aからコピーされる各単語の確率分布D1を算出する。
【0010】
図19について説明する。従来装置は、確率分布D1に重み「0.2」を乗算した確率分布と、確率分布D2に重み「0.8」を乗算した確率分布とを加算した確率分布D3を算出する。そうすると、確率分布D3において、単語「の」の確率が最大となるため、従来装置は、要約文10bの2文字目を「の」に設定する。
【0011】
図20について説明する。従来装置は、「の」のベクトルと、LSTM31-T2から出力される隠れ状態ベクトルH2とをLSTM31-T3に入力することで、要約単語辞書に含まれる各単語の確率分布D2を算出する。
【0012】
従来装置は、隠れ状態ベクトルhと、LSTM31-T3から出力される隠れ状態ベクトルH3とを基にして、入力文10aからコピーされる各単語の確率分布D1を算出する。
【0013】
図21について説明する。従来装置は、確率分布D1に重み「0.2」を乗算した確率分布と、確率分布D2に重み「0.8」を乗算した確率分布とを加算した確率分布D3を算出する。そうすると、確率分布D3において、単語「方向」の確率が最大となるため、従来装置は、要約文10bの3文字目を「方向」に設定する。
【0014】
上記のように、従来装置は、
図16~
図21の処理を実行することで、入力文10a「自然言語処理の方向性発表」から要約文10b「NLPの方向」を生成する。
【0015】
ここで、従来装置で用いられる要約単語辞書の生成処理の一例について説明する。
図22は、従来の要約書辞書の生成処理を説明するための図である。従来装置は、入力文と要約文とがペアとなった学習データ40を取得すると、学習データ40に含まれる各要約文を基にして、要約単語辞書を生成する。たとえば、従来装置は、要約文に含まれる各単語の頻度を特定し、頻度が閾値以上となる単語を、要約単語辞書に登録する。各要約文に含まれる単語と頻度との関係は、テーブル41に示すものとなる。
【先行技術文献】
【特許文献】
【0016】
【発明の概要】
【発明が解決しようとする課題】
【0017】
図16~
図21で説明したように、従来装置は、要約単語辞書をメモリに展開し、入力文10aからコピーされる各単語の確率分布D1と、要約単語辞書に含まれる各単語の確率分布D2とを基にして、要約文10bの単語を特定している。
【0018】
ここで、入力文10aからコピーされる単語には、要約単語辞書に登録された単語と同一の単語が含まれており、入力文10aのコピーで対応できる単語が、要約単語辞書に含まれてしまう。このため、要約単語辞書に登録する単語を削減し、メモリ使用量を削減する余地がある。たとえば、
図16~
図21では、要約単語辞書に含まれる「の」が、入力文10aの単語のコピーに含まれている。
【0019】
1つの側面では、本発明は、メモリ使用量を削減することができる情報処理方法、情報処理プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0020】
第1の案では、コンピュータは、次の処理を実行する。コンピュータは、第一の文書のうち、第二の文書に含まれていない単語を抽出し、抽出した単語を第一の辞書に登録し、第二の文書を構成する単語を再帰型のエンコーダに順番に入力することで中間表現ベクトルを算出する。コンピュータは、第一の辞書に登録された各単語の確率分布を算出する再帰型のデコーダに、中間表現ベクトルを入力した結果を基にして、第一の確率分布を算出する。コンピュータは、第二の文書を構成する各単語を再帰型のエンコーダに入力することで算出される隠れ状態ベクトルと、再帰型のデコーダから出力される隠れ状態ベクトルとを基にして、第二の文書を構成される単語の第二の辞書の第二の確率分布を算出する。コンピュータは、第一の確率分布と、第二の確率分布とを基にして、第一の文書を構成する単語を生成または学習する。
【発明の効果】
【0021】
メモリ使用量を削減することができる。
【図面の簡単な説明】
【0022】
【
図1】
図1は、本実施例に係る情報処理装置が、要約単語辞書を生成する処理を説明するための図である。
【
図2】
図2は、入力文と要約文とのペアを比較する理由を説明するための図である。
【
図3】
図3は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図(1)である。
【
図4】
図4は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図(2)である。
【
図5】
図5は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図(3)である。
【
図6】
図6は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図(4)である。
【
図7】
図7は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図(5)である。
【
図8】
図8は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図(6)である。
【
図9】
図9は、本実施例に係る情報処理装置の学習処理を説明するための図である。
【
図10】
図10は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
【
図11】
図11は、要約単語辞書のデータ構造の一例を示す図である。
【
図12】
図12は、元テキスト辞書のデータ構造の一例を示す図である。
【
図13】
図13は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
【
図14】
図14は、要約単語辞書生成処理の処理手順を示すフローチャートである。
【
図15】
図15は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【
図16】
図16は、従来のPointer-Generatorを説明するための図(1)である。
【
図17】
図17は、従来のPointer-Generatorを説明するための図(2)である。
【
図18】
図18は、従来のPointer-Generatorを説明するための図(3)である。
【
図19】
図19は、従来のPointer-Generatorを説明するための図(4)である。
【
図20】
図20は、従来のPointer-Generatorを説明するための図(5)である。
【
図21】
図21は、従来のPointer-Generatorを説明するための図(6)である。
【
図22】
図22は、従来の要約単語辞書の生成処理を説明するための図である。
【発明を実施するための形態】
【0023】
以下に、本発明にかかる情報処理方法、情報処理プログラムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【0024】
本実施例に係る情報処理装置が、Pointer-Generatorで使用する要約単語辞書を生成する処理の一例について説明する。
図1は、本実施例に係る情報処理装置が、要約単語辞書を生成する処理を説明するための図である。本実施例に係る情報処理装置は、入力文と要約文とのペアをそれぞれ比較し、要約文にしか含まれない単語を、要約単語辞書に登録する。入力文は「第二の文書」に対応する。要約文は「第一の文書」に対応する。
【0025】
図1において、学習データ70には、入力文11aと要約文11bとのペア、入力文12aと要約文12bとのペア、入力文13aと要約文13bとのペアが含まれる。学習データ70には、他の入力文と他の要約文とのペアが含まれていてもよい。
【0026】
情報処理装置は、入力文11aの各単語と、要約文11bの各単語とを比較し、要約文11bにのみ含まれる単語「分類」を抽出する。抽出結果11cには、抽出した単語「分類」と、頻度「1」とが含まれる。
【0027】
情報処理装置は、入力文12aの各単語と、要約文12bの各単語とを比較し、要約文12bにのみ含まれる単語「分類」を抽出する。抽出結果12cには、抽出した単語「分類」と、頻度「1」とが含まれる。
【0028】
情報処理装置は、入力文13aの各単語と、要約文13bの各単語とを比較し、要約文13bにのみ含まれる単語「NLP」を抽出する。抽出結果13cには、抽出した単語「NLP」と、頻度「1」とが含まれる。
【0029】
情報処理装置は、他の入力文と他の要約文とのペアについても、要約文にのみ含まれる単語を抽出し、抽出した単語と、頻度とを対応付ける処理を繰り返し実行する。情報処理装置は、各抽出結果11c~13c(他の抽出結果)を集計することで、単語と、頻度とを対応付けた集計結果15を生成する。情報処理装置は、集計結果に含まれる単語を、要約単語辞書に登録する。情報処理装置は、集計結果に含まれる単語のうち、頻度が閾値以上となる単語を、要約単語辞書に登録してもよい。要約単語辞書は「第一の辞書」に対応する。
【0030】
本実施例に係る情報処理装置は、
図1で説明した処理を実行する。情報処理装置は、要約単語辞書を生成することで、入力文と、要約文とのペアにおいて、要約文にのみ存在する単語を、要約単語辞書に登録するため、要約単語辞書のデータ量を削減することができ、メモリ使用量を削減することができる。
【0031】
なお、情報処理装置は、全ての入力文の単語の集合と、全ての要約文の単語の集合とを比較しているわけではない。仮に、全ての入力文の単語の集合と、全ての要約文の単語の集合とを比較して、要約文側にのみ存在する単語を、要約単語辞書に登録すると、要約単語辞書を用いて、要約文を適切に生成できない場合がある。
【0032】
図2は、入力文と要約文とのペアを比較する理由を説明するための図である。
図2において、各入力文11a~13a(学習データ70に含まれる他の入力文)から、単語と頻度とを抽出すると、抽出結果15aとなる。学習データ70に含まれる各要約文11b~13b(学習データ70に含まれる他の要約文)から、単語と頻度とを抽出すると、抽出結果15bとなる。抽出結果15aに存在し、抽出結果15bにしない単語は、抽出結果15cに示すものとなる。
【0033】
たとえば、抽出結果15cに含まれる単語「分類」、「開始」を要約単語辞書に登録し、かかる要約単語辞書を用いて、入力文13aの要約文を生成する場合を想定する。この場合には、要約単語辞書に、「自然言語処理」に対応する「NLP」が登録されていないので、対応が取れず、適切な要約文を生成できない。これに対して、
図1で説明した処理では、要約単語辞書に「NLP」が登録されるため、適切な要約文が生成できる。
【0034】
続いて、本実施例に係る情報処理装置が、
図1で説明した処理によって生成した要約単語辞書を用いて、入力文から要約文を生成する処理の一例について説明する。
図3~
図8は、本実施例に係る情報処理装置が要約文を生成する処理を説明するための図である。
【0035】
図3について説明する。情報処理装置は、入力文10aをエンコーダ50に入力することで、中間表現を算出する。情報処理装置は、中間表現(ベクトル)と、単語の文頭記号<BOS(Begin Of Sentence)>を、デコーダ60のLSTM(Long short-term memory)61-T1に入力することで、要約単語辞書に含まれる各単語の確率分布D2を算出する。確率分布D2は、「第一の確率分布」に対応する。
【0036】
本実施例で用いる要約単語辞書は、
図1で説明した処理によって生成された要約単語辞書であり、入力文と要約文とのペアをそれぞれ比較した結果、要約文にしか含まれない単語を、要約単語辞書に登録している。このため、
図16~
図21で説明した従来装置が用いる要約単語辞書と比較して、本実施例で用いる要約単語辞書は、サイズが小さい。
【0037】
情報処理装置は、入力文10aをエンコーダ50に入力した際に算出される隠れ状態ベクトルhと、LSTM61-T1から出力される隠れ状態ベクトルH1とを基にして、入力文10aからコピーされる各単語の確率分布D1を算出する。確率分布D1は、「第二の確率分布」に対応する。
【0038】
図4について説明する。情報処理装置は、確率分布D1に重み「0.2」を乗算した確率分布と、確率分布D2に重み「0.8」を乗算した確率分布とを加算した確率分布D3を算出する。そうすると、確率分布D3において、単語「NLP」の確率が最大となるため、情報処理装置は、要約文10bの1文字目を「NLP」に設定する。
【0039】
確率分布D1に対する重み、確率分布D1に対する重みは、予め設定される。情報処理装置は、要約単語辞書の優先度を高める場合、確率分布D1の重みよりも、確率分布D2の重みを大きくする。
【0040】
図5について説明する。情報処理装置は、「NLP」のベクトルと、LSTM61-T1から出力される隠れ状態ベクトルH1とをLSTM61-T2に入力することで、要約単語辞書に含まれる各単語の確率分布D2を算出する。
【0041】
情報処理装置は、隠れ状態ベクトルhと、LSTM61-T2から出力される隠れ状態ベクトルH2とを基にして、入力文10aからコピーされる各単語の確率分布D1を算出する。
【0042】
図6について説明する。情報処理装置は、確率分布D1に重み「0.2」を乗算した確率分布と、確率分布D2に重み「0.8」を乗算した確率分布とを加算した確率分布D3を算出する。そうすると、確率分布D3において、単語「の」の確率が最大となるため、情報処理装置は、要約文10bの2文字目を「の」に設定する。
【0043】
図7について説明する。情報処理装置は、「の」のベクトルと、LSTM61-T2から出力される隠れ状態ベクトルH2とをLSTM61-T3に入力することで、要約単語辞書に含まれる各単語の確率分布D2を算出する。
【0044】
情報処理装置は、隠れ状態ベクトルhと、LSTM61-T3から出力される隠れ状態ベクトルH3とを基にして、入力文10aからコピーされる各単語の確率分布D1を算出する。
【0045】
図8について説明する。情報処理装置は、確率分布D1に重み「0.2」を乗算した確率分布と、確率分布D2に重み「0.8」を乗算した確率分布とを加算した確率分布D3を算出する。そうすると、確率分布D3において、単語「方向」の確率が最大となるため、情報処理装置は、要約文10bの3文字目を「方向」に設定する。
【0046】
上記のように、本実施例に係る情報処理装置によれば、
図1~
図8の処理を実行することで、入力文10a「自然言語処理の方向性発表」から要約文10b「NLPの方向」を生成することができる。
【0047】
本実施例で用いる要約単語辞書は、
図1で説明した処理によって生成された要約単語辞書であり、入力文と要約文とのペアをそれぞれ比較した結果、要約文にしか含まれない単語を、要約単語辞書に登録している。このため、
図16~
図21で説明した従来装置が用いる要約単語辞書と比較して、本実施例で用いる要約単語辞書は、サイズが小さいため、メモリ使用量を削減することができる。また、要約単語辞書のサイズが小さくなるため、従来装置と比較して、処理速度を改善することができる。
【0048】
次に、本実施例に係る情報処理装置が、
図3~
図8に示したエンコーダ50およびデコーダ60を学習する処理の一例について説明する。
図9は、本実施例に係る情報処理装置の学習処理を説明するための図である。
図9では一例として、学習用の入力文14aを「自然言語処理の方向性発表」とし、入力文14aとペアとなる要約文14bを「NLPの方向」とする。
【0049】
エンコーダ50には、LSTM51が含まれる。LSTM51は、入力文14aの各単語のベクトルの入力を順に受け付ける。LSTM51は、単語のベクトルと、LSTM51のパラメータθ51に基づく計算を行って、隠れ状態ベクトルを次のLSTM51に出力する。次のLSTM51では、前のLSTM51によって算出された隠れ状態ベクトルと、次の単語のベクトルとを基にして、次の隠れ状態ベクトルを算出する。LSTM51は、入力文14aの各単語に対して、上記処理を繰り返し実行する。LSTM51は、入力文14aの最後の単語が入力された際に算出する隠れ状態ベクトルを、中間表現として、デコーダ60に出力する。
【0050】
デコーダ60には、LSTM61-T1,61-T2,61-T3,61-T4が含まれる。LSTM61-T1,61-T2,61-T3,61-T4をまとめて、LSTM61と表記する。
【0051】
LSTM61は、エンコーダ50から中間表現(ベクトル)を受け付け、要約文14bの単語のベクトルの入力を受け付ける。LSTM61は、中間表現と、単語のベクトルと、LSTM61のパラメータθ61に基づく計算を行って、隠れ状態ベクトルを算出する。LSTM61は、隠れ状態ベクトルを、次の単語のLSTM61に渡す。LSTM22は、単語のベクトルが入力される度に、上記処理を繰り返し実行する。
【0052】
情報処理装置は、LSTM61から出力される隠れ状態ベクトルと、要約単語辞書とを基にして、要約単語辞書に含まれる各単語の確率分布D2(図示略)を算出する。また、情報処理装置は、入力文14aをエンコーダ50に入力した際に算出される隠れ状態ベクトルと、LSTM61から出力される隠れ状態ベクトルとを基にして、入力文14aからコピーされる各単語の確率分布D1(図示略)を算出する。情報処理装置は、確率分布D1と、確率分布D2を加算した確率分布D3(図示略)を算出する。情報処理装置は、LSTM61に、要約文14bの各単語のベクトルを入力する度に、確率分布D3を算出する。
【0053】
ここで、情報処理装置は、要約文14bの各単語を、LSTM61に入力する場合に、始めに文の先頭を示す単語として「BOS(Begin Of Sentence)」を入力する。また、情報処理装置は、確率分布D3との損失を算出する場合に比較する要約文14bの最後を示す単語として、「EOS(End Of Sentence)」を設定する。
【0054】
情報処理装置は、エンコーダ50から出力される中間表現によって、LSTM61の中間表現を更新したうえで、次の1時刻目~4時刻目までの処理を順に実行する。
【0055】
情報処理装置は、1時刻目に、エンコーダ50のLSTM51の出力(中間表現)と、単語「BOS」のベクトルを、LSTM61-T1に入力することで、隠れ状態ベクトルを算出する。情報処理装置は、各単語の確率分布D3を算出する。情報処理装置は、算出した確率分布と、正解単語「NLP」とを比較して、1時刻目の損失を算出する。
【0056】
情報処理装置は、2時刻目に、ひとつ前のLSTM61-T1の出力と、単語「NLP」のベクトルを、LSTM61-T2に入力することで、隠れ状態ベクトルを算出する。情報処理装置は、各単語の確率分布D3を算出する。情報処理装置は、算出した確率分布と、正解単語「の」とを比較して、2時刻目の損失を算出する。
【0057】
情報処理装置は、3時刻目に、ひとつ前のLSTM61-T2の出力と、単語「の」のベクトルを、LSTM61-T3に入力することで、隠れ状態ベクトルを算出する。情報処理装置は、各単語の確率分布D3を算出する。情報処理装置は、算出した確率分布と、正解単語「方向」とを比較して、3時刻目の損失を算出する。
【0058】
情報処理装置は、4時刻目に、ひとつ前のLSTM61-T3の出力と、単語「方向」のベクトルを、LSTM61-T4に入力することで、隠れ状態ベクトルを算出する。情報処理装置は、各単語の確率分布D3を算出する。情報処理装置は、算出した確率分布と、正解単語「EOS」とを比較して、4時刻目の損失を算出する。
【0059】
情報処理装置は、1時刻目~4時刻目に算出した損失が最小化されるように、LSTM51のパラメータθ51、LSTM61のパラメータθ61を更新する。たとえば、情報処理装置は、1時刻目~4時刻目の損失に基づいて、対数尤度の最適化を実行することにより、LSTM51のパラメータθ51、LSTM61のパラメータθ61のパラメータを更新する。
【0060】
情報処理装置は、学習データに含まれる、入力文、要約文のペアを用いて、上記処理を繰り返し実行することで、LSTM51のパラメータθ51、LSTM61のパラメータθ61のパラメータを学習する。
【0061】
次に、本実施例に係る情報処理装置の構成の一例ついて説明する。
図10は、本実施例に係る情報処理装置の構成を示す機能ブロック図である。
図10に示すように、この情報処理装置100は、学習部100Aと、生成部100Bとを有する。学習部100Aに含まれる損失計算部107、更新部108、生成部100Bに含まれる生成部113は、「情報処理部」の一例である。
【0062】
たとえば、学習部110A、生成部100Bは、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、学習部110A、生成部100Bは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
【0063】
学習データ記憶部101、辞書情報記憶部103、モデル記憶部104は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
【0064】
学習部100Aは、
図1で説明した要約単語辞書を生成する。また、学習部100Aは、
図9で説明した学習処理を実行する。学習部100Aは、学習データ記憶部101と、辞書生成部102と、辞書情報記憶部103と、モデル記憶部104と、エンコーダ実行部105aと、デコーダ実行部105bと、算出部106と、損失計算部107と、更新部とを有する。
【0065】
学習データ記憶部101は、
図1で説明した学習データ70を記憶する記憶装置である。
図1で説明したように、学習データ70には、入力文11aと要約文11bとのペア、入力文12aと要約文12bとのペア、入力文13aと要約文13bとのペアが含まれる。学習データ70には、他の入力文と他の要約文とのペアが含まれていてもよい。
【0066】
辞書生成部102は、学習データ記憶部101に格納された学習データ70の入力文と要約文とのペアをそれぞれ比較し、要約文にしか含まれない単語を、要約単語辞書に登録することで、要約単語辞書を生成する処理部である。辞書生成部102が、要約単語辞書を生成する処理は、
図1で説明した処理に対応する。辞書生成部102は、要約単語辞書の情報を、辞書情報記憶部103に格納する。辞書生成部102は、頻度が閾値未満となる単語については、要約単語辞書から除外してもよい。
【0067】
また、辞書生成部102は、学習データ70に含まれる各入力文を基にして、元テキスト辞書を生成する。元テキスト辞書は、「第二の辞書」の一例である。辞書生成部102は、生成した元テキスト辞書の情報を、辞書情報記憶部103に格納する。たとえば、辞書生成部102は、学習データ70に含まれる各入力文の単語を集計することで、元テキスト辞書を生成する。辞書生成部102は、頻度が閾値未満となる単語については、元テキスト辞書から除外してもよい。
【0068】
辞書情報記憶部103は、要約単語辞書および元テキスト辞書を記憶する記憶装置である。
図11は、要約単語辞書のデータ構造の一例を示す図である。
図11に示すように、要約単語辞書103aは、単語と、頻度とを対応付ける。要約単語辞書103aの単語は、学習データ70の入力文と要約文とのペアを比較した結果、要約文にしか含まれない単語である。頻度は、要約文に出現する単語の出現頻度である。
【0069】
図12は、元テキスト辞書のデータ構造の一例を示す図である。
図12に示すように、元テキスト辞書103bは、単語と、頻度とを対応付ける。元テキスト辞書103bの単語は、学習データ70の各入力文に含まれる単語である。頻度は、入力文に出現する単語の出現頻度である。
【0070】
図10の説明に戻る。モデル記憶部104は、エンコーダ50のパラメータおよびデコーダ60のパラメータを記憶する記憶装置である。たとえば、エンコーダ50のパラメータには、LSTM51のパラメータθ
51が含まれる。デコーダ60のパラメータには、LSTM61のパラメータθ
61が含まれる。
【0071】
エンコーダ実行部105aは、
図9で説明したエンコーダ50を実行する処理部である。たとえば、エンコーダ実行部105aは、LSTM51等をワークエリア(メモリ等)上に展開する。エンコーダ実行部105aは、モデル記憶部104に記憶されたLSTM51のパラメータθ
51を、LSTM51に設定する。エンコーダ実行部105aは、後述する更新部108によって、LSTM51のパラメータθ
51が更新された場合、更新されたパラメータθ
51を、LSTM51に設定する。
【0072】
ここで、エンコーダ実行部105aは、辞書情報記憶部103に記憶された元テキスト辞書104bを取得する。エンコーダ実行部105aは、学習データ70の入力文の各単語(ベクトル)を、エンコーダ50に入力する場合に、入力する単語が、元テキスト辞書103bに存在するか否かを判定する。エンコーダ実行部105aは、入力する単語が、元テキスト辞書103bに存在する場合、単語のベクトルを、エンコーダ50に入力する。
【0073】
一方、エンコーダ実行部105aは、入力する単語が、元テキスト辞書103bに存在しない場合には、「Unknown」のベクトルを、エンコーダ50に入力する。
【0074】
デコーダ実行部105bは、
図9で説明したデコーダ60を実行する処理部である。たとえば、デコーダ実行部105bは、LSTM61等をワークエリア(メモリ等)上に展開する。デコーダ実行部105bは、モデル記憶部104に記憶されたLSTM61のパラメータθ
61を、LSTM61に設定する。デコーダ実行部105bは、後述する更新部108によって、LSTM61のパラメータθ
61が更新された場合、更新されたパラメータθ
61を、LSTM61に設定する。
【0075】
デコーダ実行部105bは、エンコーダ実行部105aがエンコーダ50に入力した入力文とペアとなる要約文を、学習データ70から取得し、デコーダ60に入力する。デコーダ実行部105bが、デコーダ60に入力する単語を「BOS」とする。デコーダ実行部105bは、デコーダ60に順に入力した正解単語の情報を、損失計算部107に出力する。
【0076】
算出部106は、エンコーダ実行部105aが実行するエンコーダ50の出力結果と、デコーダ実行部105bが実行するデコーダ60の出力結果とを基にして、各種の確率分布を算出する処理部である。
【0077】
算出部106は、要約単語辞書103aをワークエリア(メモリ等)に展開する。算出部106は、LSTM61から出力される隠れ状態ベクトルと、要約単語辞書103aとを基にして、要約単語辞書103aに含まれる各単語の確率分布D2を算出する。また、算出部106は、入力文をエンコーダ50に入力した際に算出される隠れ状態ベクトルと、LSTM61から出力される隠れ状態ベクトルとを基にして、入力文からコピーされる各単語の確率分布D1を算出する。情報処理装置は、確率分布D1と、確率分布D2を加算した確率分布D3を算出する。
【0078】
なお、入力文からコピーされる単語のうち、元テキスト辞書103bに含まれない単語は、「Unknown」として、確率分布D1に含まれ、確率が算出される。また、確率分布D1の単語に「Unknown」が含まれる場合、かかる「Unknown」には、入力文の先頭から何番目の単語であるかを示す情報が付与される。この先頭から何番目の単語かの情報を用いて、入力文からのコピーを行う。
【0079】
たとえば、算出部106は、
図9で説明したように、1時刻目~4時刻目について、それぞれ確率分布D3を算出し、各時刻の確率分布D3を、損失計算部107に出力する。
【0080】
損失計算部107は、算出部106から取得する各時刻の確率分布D3と、デコーダ105実行部bから取得する正解単語とを比較して、各時刻の損失を算出する処理部である。損失計算部107は、各時刻の損失の情報を、更新部108に出力する。
【0081】
更新部108は、損失計算部107から取得する各時刻の損失が最小化されるように、LSTM51のパラメータθ51、LSTM61のパラメータθ61を更新する処理部である。たとえば、更新部108は、1時刻目~4時刻目の損失に基づいて、対数尤度の最適化を実行することにより、モデル記憶部104に格納されたLSTM51のパラメータθ51、LSTM61のパラメータθ61のパラメータを更新する。
【0082】
生成部100Bは、
図3~
図8で説明したように、学習済みのエンコーダ50、デコーダ60を用いて、入力文から要約文を生成する処理部である。生成部100Bは、取得部110と、エンコーダ実行部111aと、デコーダ実行部111bと、算出部112と、生成部113とを有する。
【0083】
取得部110は、入力装置等を介して、要約対象となる入力文を取得する処理部である。取得部110は、取得した入力文を、エンコーダ実行部111aに出力する。
【0084】
エンコーダ実行部111aは、
図3~
図8で説明したエンコーダ50を実行する処理部である。たとえば、エンコーダ実行部111aは、LSTM51等をワークエリア(メモリ等)上に展開する。エンコーダ実行部111aは、モデル記憶部104に記憶されたLSTM51のパラメータθ
51を、LSTM51に設定する。
【0085】
エンコーダ実行部111aは、辞書情報記憶部103に記憶された元テキスト辞書104bを取得する。エンコーダ実行部105aは、取得部110から受け付けた入力文の各単語(ベクトル)を、エンコーダ50に入力する場合に、入力する単語が、元テキスト辞書103bに存在するか否かを判定する。エンコーダ実行部111aは、入力する単語が、元テキスト辞書103bに存在する場合、単語のベクトルを、エンコーダ50に入力する。
【0086】
一方、エンコーダ実行部111aは、入力する単語が、元テキスト辞書103bに存在しない場合には、「Unknown」のベクトルを、エンコーダ50に入力する。
【0087】
デコーダ実行部111bは、
図3~
図8で説明したデコーダ60を実行する処理部である。たとえば、デコーダ実行部111bは、LSTM61等をワークエリア(メモリ等)上に展開する。デコーダ実行部111bは、モデル記憶部104に記憶されたLSTM61のパラメータθ
61を、LSTM61に設定する。
【0088】
算出部112は、エンコーダ実行部111aが実行するエンコーダ50の出力結果と、デコーダ実行部111bが実行するデコーダ60の出力結果とを基にして、各種の確率分布を算出する処理部である。
【0089】
算出部112は、要約単語辞書103aをワークエリア(メモリ等)に展開する。算出部112は、LSTM61から出力される隠れ状態ベクトルと、要約単語辞書103aとを基にして、要約単語辞書103aに含まれる各単語の確率分布D2を算出する。また、算出部112は、入力文をエンコーダ50に入力した際に算出される隠れ状態ベクトルと、LSTM61から出力される隠れ状態ベクトルとを基にして、入力文からコピーされる各単語の確率分布D1を算出する。情報処理装置は、確率分布D1と、確率分布D2を加算した確率分布D3を算出する。
【0090】
算出部112は、各時刻の確率分布D3を、生成部113に出力する。
【0091】
生成部113は、算出部112から出力される各時刻の確率分布D3を基にして、要約文の単語を生成する処理部である。生成部113は、各時刻において、確率分布D3に確率のうち、最大の確率に対応する単語を要約文の単語として生成する処理を繰り返し実行する。たとえば、l時刻目において、確率分布D3の各単語の確率のうち、「NLP」の確率が最大となる場合には、要約文の先頭からl番目の単語として「NLP」を生成する。
【0092】
次に、本実施例に係る情報処理装置100の処理手順の一例について説明する。
図13は、本実施例に係る情報処理装置の処理手順を示すフローチャートである。
図13に示すように、情報処理装置100の学習部100Aは、学習データを取得し、学習データ記憶部101に格納する(ステップS101)。
【0093】
情報処理装置100の辞書生成部102は、学習データの入力文に出現した単語を基にして、元テキスト辞書103bを生成し、辞書情報記憶部103に格納する(ステップS102)。
【0094】
辞書生成部102は、要約単語辞書生成処理を実行する(ステップS103)。辞書生成部102は、要約単語辞書103aを、辞書情報記憶部103に格納する(ステップS104)。
【0095】
学習部100Aは、学習処理を実行する(ステップS105)。情報処理装置100の取得部110は、要約文の生成対象となる入力文を取得する(ステップS106)。生成部100Bは、生成処理を実行する(ステップS107)。生成部100Bは、要約文を出力する(ステップS108)。
【0096】
次に、
図13のステップS103で説明した要約単語辞書生成処理の一例について説明する。
図14は、要約単語辞書生成処理の処理手順を示すフローチャートである。
図14に示すように、情報処理装置100の辞書生成部102は、学習データ記憶部101から、学習データと、出現頻度の閾値Fとの取得する(ステップS201)。
【0097】
辞書生成部102は、学習データから、未処理の入力文と要約文とのペアtを取得する(ステップS202)。ペアtの要約文中の未処理の単語wを取得する(ステップS203)。辞書生成部102は、単語wがペアtの入力文の単語集合に含まれる場合には(ステップS204,Yes)、ステップS206に移行する。
【0098】
一方、辞書生成部102は、単語wがペアtの入力文の単語集合に含まれない場合には(ステップS204,No)、要約単語辞書の単語wの出現回数に1を加算する(ステップS205)。
【0099】
辞書生成部102は、ペアt中の要約文に未処理の単語が含まれる場合には(ステップS206,Yes)、ステップS203に移行する。一方、辞書生成部102は、ペアt中の要約文に未処理の単語が含まれない場合には(ステップS206,No)、ステップS207に移行する。
【0100】
辞書生成部102は、学習データに未処理のペアがある場合には(ステップS207,Yes)、ステップS202に移行する。一方、辞書生成部102は、学習データに未処理のペアが場合には(ステップS207,No)、ステップS208に移行する。
【0101】
辞書生成部102は、出現回数が閾値F以上の要約単語辞書中の単語を最終の要約単語辞書として出力する(ステップS208)。
【0102】
次に、本実施例に係る情報処理装置100の効果について説明する。情報処理装置100は、Pointer-Generatorで使用する要約単語辞書103aを生成する場合に、入力文と要約文とのペアをそれぞれ比較し、要約文にしか含まれない単語を、要約単語辞書103aに登録する。これによって、要約単語辞書103aのデータ量を削減することができ、メモリ使用量を削減することができる。
【0103】
情報処理装置100は、要約文のうち、入力文に含まれていない単語の頻度を集計し、頻度が所定の頻度以上となる単語を、要約単語辞書103aに登録することで、要約単語辞書103aのデータ量を更に削減することができる。
【0104】
情報処理装置100は、入力文からコピーされる各単語の確率分布D1と、要約単語辞書103aに含まれる各単語の確率分布D2とを加算した確率分布D3を基にして、要約文の単語を特定する。これによって、要約単語辞書103aに含まれる単語、または、入力文の単語によって、要約文を生成することができる。
【0105】
次に、上記実施例に示した情報処理装置100と同様の機能を実現するコンピュータのハードウェア構成の一例について順に説明する。
【0106】
図15は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図15に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203と、読み取り装置204とを有する。また、コンピュータ200は、ネットワークを介して、外部装置との間でデータの授受を行う通信装置205とを有する。コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207とを有する。そして、各装置201~207は、バス208に接続される。
【0107】
ハードディスク装置207は、辞書生成プログラム207a、学習プログラム207b、生成プログラム207cを有する。CPU201は、辞書生成プログラム207aと、学習プログラム207bと、生成プログラム207cとを読み出してRAM206に展開する。
【0108】
辞書プログラム207aは、辞書生成プロセス206aとして機能する。学習プログラム207bは、学習プロセス206bとして機能する。生成プログラム207cは、生成プロセス206cとして機能する。
【0109】
辞書生成プロセス206aの処理は、辞書生成部102の処理に対応する。学習プロセス206bの処理は、学習部100A(辞書生成部102を除く)の処理に対応する。生成プロセス206cの処理は、生成部100Bの処理に対応する。
【0110】
なお、各プログラム207a~207cについては、必ずしも最初からハードディスク装置207に記憶させておかなくてもよい。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200が各プログラム207a~207cを読み出して実行するようにしてもよい。
【符号の説明】
【0111】
100 情報処理装置
100A 学習部
100B 生成部
101 学習データ記憶部
102 辞書生成部
103 辞書情報記憶部
104 モデル記憶部
105a,111a エンコーダ実行部
105b,111b デコーダ実行部
106、112 算出部
107 損失計算部
108 更新部
110 取得部
113 生成部