【文献】
バード スティーブン,入門 自然言語処理 初版,日本,株式会社オライリー・ジャパン,2010年11月 8日,第1版,p.480-491
(58)【調査した分野】(Int.Cl.,DB名)
1以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を、単語辞書を用いて1以上の単語に分割することなく1文字ずつ分割し、該分割により得られる個々の文字に、少なくとも単語の品詞を示すタグを設定する解析部であって、前記分割モデルが、文字と前記タグとの対応を示す出力素性のスコアと、連続する二つの文字に対応する二つの前記タグの組合せを示す遷移素性のスコアとを含む、該解析部と、
前記解析部により得られた解析結果で示されるタグと、前記一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも低くすることで、前記解析部による次の文の形態素解析で用いられる前記分割モデルを修正する修正部と
を備える自然言語処理システム。
1以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を、単語辞書を用いて1以上の単語に分割することなく1文字ずつ分割し、該分割により得られる個々の文字に、少なくとも単語の品詞を示すタグを設定する解析部であって、前記分割モデルが、文字と前記タグとの対応を示す出力素性のスコアと、連続する二つの文字に対応する二つの前記タグの組合せを示す遷移素性のスコアとを含む、該解析部と、
前記解析部により得られた解析結果で示されるタグと、前記一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも低くすることで、前記解析部による次の文の形態素解析で用いられる前記分割モデルを修正する修正部としてコンピュータを機能させる自然言語処理プログラム。
【発明を実施するための形態】
【0011】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【0012】
まず、
図1〜5を用いて、実施形態に係る自然言語処理システム10の機能及び構成を説明する。自然言語処理システム10は、形態素解析を実行するコンピュータシステムである。形態素解析とは、文を形態素の列に分割して各形態素の品詞を判定する処理である。文とは、一つの完結した言明を表す言語表現の単位であり、文字列で表現される。形態素とは、意味を有する最小の言語単位である。形態素の列とは、文を1以上の形態素に分割して得られる該1以上の形態素の並びである。品詞とは、文法上の機能または形態による単語の区分けである。
【0013】
自然言語処理システム10は、分割モデル20を用いて個々の文を形態素解析する。自然言語処理システム10の特徴の一つとして、分割モデル20を学習する際には個々の文を形態素解析する度にその分割モデル20を修正する点が挙げられる。分割モデル20の修正が終われば、確定した分割モデル20を備える自然言語処理システム10がユーザに提供される。ユーザはその自然言語処理システム10に形態素解析を実行させることができ、この際には、分割モデル20の修正が行われることなく、形態素解析が実行される。本明細書における「分割モデル」とは、文を1以上の形態素に分割する際の基準(手掛かり)であり、各素性のスコアで示される。この分割モデルは、1以上のトレーニングデータを用いた機械学習により得られる。トレーニングデータは、各単語に分割された文と、その文を分割して得られる各単語の品詞とを少なくとも示すデータである。素性(feature)とは、形態素解析において正しい結果を得るための手掛かりである。一般に、何を素性(手掛かり)として用いるかは限定されない。素性のスコアとは、当該素性の尤もらしさを表す数値である。
【0014】
図1に、本実施形態に係る自然言語処理システム10での処理の概念を簡潔に示す。なお、
図1における歯車Mは形態素解析の実行を示す。ある時点において、自然言語処理システム10は分割モデルw
1を用いた形態素解析を実行することで文s
1を1以上の形態素に分割する。本実施形態では、自然言語処理システム10は文を個々の文字に分割して文字単位の処理を実行することで文を1以上の形態素に分割する。すなわち、本実施形態では、処理対象となる被分割要素は文字である。自然言語処理システム10は、個々の文字(被分割要素)にタグを設定することで、形態素解析の結果を示す。本明細書における「タグ」とは、文字の属性または機能を示すラベルである。タグについては後でさらに詳しく説明する。
【0015】
形態素解析を実行すると、自然言語処理システム10はその文s
1の形態素解析の正解を示すデータ(正解データ)を受け付け、解析結果とその正解データとを比較して分割モデルw
1を修正することで新たな分割モデルw
2を得る。具体的には、自然言語処理システム10は、文s
1の形態素解析の少なくとも一部のタグ付けが間違った場合には、解析結果の全体が間違いであったと評価する。そして、自然言語処理システム10は、正解データ内の各タグに対応する素性を「正しい(+1)」と評価してその素性のスコアを現在値よりも高くし、解析結果内の各タグに対応する素性を「間違い(−1)」と評価してその素性のスコアを現在値よりも低くすることで、分割モデルw
2を得る。解析結果内で一部のタグが正解であった場合には、当該一部のタグ(正解のタグ)に関連する素性の二つの評価「正しい(+1)」「間違い(+1)」は結果的に相殺される。したがって、上記のように素性のスコアを低くまたは高くする処理は、不正解のタグに対応する正解のタグ(不正解部分に対応する正解のタグ)に関連する素性のスコアを高くし、該不正解のタグ(不正解部分のタグ)に関連する素性のスコアを低くする処理であるといえる。
【0016】
なお、自然言語処理システム10は、正解データ内の各タグを「正しい(+1)」と評価する一方で、解析結果内の各文字に関するタグを「間違い(−1)」と評価し、各タグについて二つの評価結果を相殺した上で、「正しい(+1)」と評価されたタグに対応する素性のスコアを高くし、「間違い(−1)」と評価されたタグに対応する素性のスコアを低くしてもよい。
【0017】
例えば、文s
1内に5個の文字x
a,x
b,x
c,x
d,x
eが存在するものとする。そして、文字x
a,x
b,x
c,x
d,x
eの正解のタグがそれぞれt
a,t
b,t
c,t
d,t
eであり、形態素解析により各文字のタグがt
a,t
g,t
h,t
d,t
eであったとする。この場合には、自然言語処理システム10は、正解データ内のタグt
a,t
b,t
c,t
d,t
eに対応する素性を「正しい(+1)」と評価してその素性のスコアを現在値よりも高くし、実行結果内のタグt
a,t
g,t
h,t
d,t
eに対応する素性を「間違い(−1)」と評価してその素性のスコアを現在値よりも低くする。この場合、タグt
a,t
d,t
cに対応する素性のスコアは結果的には更新前と変わらず、正解のタグt
b,t
cに対応する素性のスコアが高くなり、不正解のタグt
g、t
hに対応する素性のスコアが低くなる。
【0018】
次の文s
2に対する形態素解析を実行する場合には、自然言語処理システム10はその分割モデルw
2を用いる。そして、自然言語処理システム10はその文s
2の形態素解析の正解データを受け付け、実行結果とその正解データとを比較し、分割モデルw
1を修正する場合と同様に分割モデルw
2を修正することで新たな分割モデルw
3を得る。
【0019】
自然言語処理システム10はこのように一つの文(s
1,s
2,…,s
t)を処理する度に分割モデルを修正し(w
1→w
2,w
2→w
3,…,w
t→w
t+1)、次の文の形態素解析で修正後の分割モデルを用いる。このように一つのトレーニングデータを処理する度にモデルを更新する手法は、「オンライン学習」または「オンラインの機械学習」ともいわれる。
【0020】
自然言語処理システム10による形態素解析の結果の例を
図2に示す。この例では、自然言語処理システム10は、「I bought a book」という英文に相当する、「本を買って(hon wo katte)」という日本語の文を、5個の文字x
1:「本(hon)」,x
2:「を(wo)」,x
3:「買(ka)」,x
4:「っ(t)」,x
5:「て(te)」に分割する。そして、自然言語処理システム10は形態素解析を実行することで、各文字にタグを設定する。本実施形態では、タグは、単語内での文字の出現態様と、その単語の品詞と、その単語の品詞のサブクラスとの組合せであり、「S−N−nc」などのようにアルファベットを用いて表現される。
【0021】
出現態様は、ある文字が単独で一つの単語となるかそれとも他の文字との組合せで一つの単語になるかということと、文字が、2文字以上から成る単語の一部である場合に、その文字が単語内のどこに位置するかということとを示す情報である。本実施形態では、出現態様はS,B,I,Eのいずれかで示される。出現態様「S」は、文字がそれ単独で一つの単語になることを示す。出現態様「B」は、文字が、2文字以上から成る単語の先頭に位置することを示す。出現態様「I」は、文字が、3文字以上から成る単語の途中に位置することを示す。出現態様「E」は、文字が、2文字以上から成る単語の末尾に位置することを示す。
図2の例は、文字x
1,x
2,x
5が単独で一つの単語であり、文字x
3,x
4で1単語が形成されることを示している。
【0022】
なお、出現態様についてのスキームは限定されない。本実施形態では、「SBIEO」というスキームを用いているが、例えば、当業者に周知である「IOB2」というスキームを用いてもよい。
【0023】
品詞の例としては、名詞、動詞、助詞、形容詞、形容動詞、接続詞などが挙げられる。本実施形態では、名詞は「N」で表され、助詞は「P」で表され、動詞は「V」で表される。
図2の例は、文字x
1が名詞であり、文字x
2が助詞であり、文字x
3,x
4から成る単語が動詞であり、文字x
5が助詞であることを示している。
【0024】
品詞のサブクラスは、対応する品詞の下位概念を示す。例えば、名詞は一般名詞と固有名詞とにさらに分類することができ、助詞は格助詞、接続助詞、係助詞などにさらに分類することができる。本実施形態では、一般名詞は「nc」で表され、固有名詞は「np」で表され、格助詞は「k」で表され、接続助詞は「sj」で表され、一般動詞は「c」で表される。
図2の例は、文字x
1が一般名詞であり、文字x
2が格助詞であり、文字x
3,x
4から成る単語が一般動詞であり、文字x
5が接続助詞であることを示している。
【0025】
分割モデル20が記憶する素性のスコアは、出力素性(emission feature)のスコアおよび遷移素性(transition feature)のスコアである。
【0026】
出力素性とは、タグと文字または文字種との対応を示す手掛かりである。言い換えると、出力素性とは、どのようなタグに対してどのような文字または文字種が対応しやすいかを示す手掛かりである。出力素性は、隠れマルコフモデルの出力行列の素性表現に対応する。本実施形態では、ユニグラム(1文字のみから成る文字列)の出力素性と、バイグラム(連続する2文字から成る文字列)の出力素性とを用いる。
【0027】
ここで、文字種とはある言語における文字の種類のことである。日本語の文字種として、例えば、漢字、平仮名、片仮名、アルファベット(大文字および小文字)、アラビア数字、漢数字、および中黒(・)が挙げられる。なお、本実施形態では、文字種をアルファベットで表す。例えば、「C」は漢字を示し、「H」は平仮名を示し、「K」は片仮名を示し、「L」はアルファベットを示し、「A」はアラビア数字を示す。
図2の例は、文字x
1,x
3が漢字であり、文字x
2,x
4,x
5が平仮名であることを示している。
【0028】
文字に関するユニグラムの出力素性は、タグtと文字xとの対応を示す手掛かりである。また、文字種に関するユニグラムの出力素性は、タグtと文字種cとの対応を示す手掛かりである。本実施形態では、タグtと文字xとの対応の尤もらしさのスコアsを{t/x,s}で示す。また、タグtと文字種cとの対応の尤もらしさのスコアsを{t/c,s}で示す。分割モデル20は、一つの文字または文字種に対して複数のタグに関するスコアを含む。一つの文字または文字種に対して、すべての種類のタグに関するデータが用意される場合には、分割モデル20は、文法上、実際には起こりえないタグと文字または文字種との組合せについてのスコアも含む。ただし、文法上有り得ない素性のスコアは、相対的に低くなる。
【0029】
以下に、日本語の「本(hon)」という文字に関する出力素性のスコアの例を示す。この文字が助詞であることは日本語の文法上有り得ないが、上述した通り、文法上存在しない「S−P−k/本(hon)」のような素性についてもデータが用意され得る。
{S−N−nc/本(hon),0.0420}
{B−N−nc/本(hon),0.0310}
{S−P−k/本(hon),0.0003}
{B−V−c/本(hon),0.0031}
【0030】
また、文字種「漢字」に関する出力素性のスコアの例を示す。
{S−N−nc/C,0.0255}
{E−N−np/C,0.0488}
{S−P−k/C,0.0000}
{B−V−c/C,0.0299}
【0031】
文字種に関しても、文法上存在しない素性を示すデータが用意され得る。例えば、アラビア数字で表される単語が助詞になることは日本語の文法上有り得ないが、「S−P−k/A」のような素性についてもデータが用意され得る。
【0032】
文字に関するバイグラムの出力素性は、タグtと文字列x
ix
i+1との対応を示す手掛かりである。また、文字種に関するバイグラムの出力素性は、タグtと文字種の列c
ic
i+1との対応を示す手掛かりである。本実施形態では、タグtおよび文字x
i,x
i+1の尤もらしさのスコアsを{t/x
i/x
i+1,s}で示す。また、タグtおよび文字種c
i,c
i+1の尤もらしさのスコアsを{t/c
i/c
i+1,s}で示す。一つのバイグラムに対して、存在し得るすべてのタグに関するデータを用意する場合には、分割モデル20は、文法上、実際には起こりえないタグとバイグラムとの組合せについてのデータも記憶する。
【0033】
以下に、「本を(hon wo)」というバイグラムに関する出力素性のスコアの例を示す。
{S−N−nc/本(hon)/を(wo),0.0420}
{B−N−nc/本(hon)/を(wo),0.0000}
{S−P−k/本(hon)/を(wo),0.0001}
{B−V−c/本(hon)/を(wo),0.0009}
【0034】
また、漢字の次に平仮名が現れるバイグラムに関する出力素性のスコアの例を示す。
{S−N−nc/C/H,0.0455}
{E−N−np/C/H,0.0412}
{S−P−k/C/H,0.0000}
{B−V−c/C/H,0.0054}
【0035】
遷移素性とは、文字x
iのタグt
iとその次の文字x
i+1のタグt
i+1との組合せ(連続する2文字に対応する二つのタグから成る組合せ)を示す手掛かりである。この遷移素性はバイグラムに関する素性である。遷移素性は、隠れマルコフモデルの遷移行列の素性表現に対応する。本実施形態では、タグt
iとタグt
i+1との組合せの尤もらしさのスコアsを{t
i/t
i+1,s}で示す。存在し得るすべての組合せに関する遷移素性のデータを用意する場合には、分割モデル20は、文法上、実際には起こりえない二つのタグの組合せについてのデータも記憶する。
【0036】
以下に、遷移素性のスコアのいくつかの例を示す。
{S−N−nc/S−P−k,0.0512}
{E−N−nc/E−N−nc,0.0000}
{S−P−k/B−V−c,0.0425}
{B−V−c/I−V−c,0.0387}
【0037】
自然言語処理システム10は1台以上のコンピュータを備え、複数台のコンピュータを備える場合には、後述する自然言語処理システム10の各機能要素は分散処理により実現される。個々のコンピュータの種類は限定されない。例えば、据置型または携帯型のパーソナルコンピュータ(PC)を用いてもよいし、ワークステーションを用いてもよいし、高機能携帯電話機(スマートフォン)や携帯電話機、携帯情報端末(PDA)などの携帯端末を用いてもよい。あるいは、様々な種類のコンピュータを組み合わせて自然言語処理システム10を構築してもよい。複数台のコンピュータを用いる場合には、これらのコンピュータはインターネットやイントラネットなどの通信ネットワークを介して接続される。
【0038】
自然言語処理システム10内の個々のコンピュータ100の一般的なハードウェア構成を
図3に示す。コンピュータ100は、オペレーティングシステムやアプリケーション・プログラムなどを実行するCPU(プロセッサ)101と、ROM及びRAMで構成される主記憶部102と、ハードディスクやフラッシュメモリなどで構成される補助記憶部103と、ネットワークカードあるいは無線通信モジュールで構成される通信制御部104と、キーボードやマウスなどの入力装置105と、ディスプレイやプリンタなどの出力装置106とを備える。当然ながら、搭載されるハードウェアモジュールはコンピュータ100の種類により異なる。例えば、据置型のPCおよびワークステーションは入力装置および出力装置としてキーボード、マウス、およびモニタを備えることが多いが、スマートフォンはタッチパネルが入力装置および出力装置として機能することが多い。
【0039】
後述する自然言語処理システム10の各機能要素は、CPU101または主記憶部102の上に所定のソフトウェアを読み込ませ、CPU101の制御の下で通信制御部104や入力装置105、出力装置106などを動作させ、主記憶部102または補助記憶部103におけるデータの読み出し及び書き込みを行うことで実現される。処理に必要なデータやデータベースは主記憶部102または補助記憶部103内に格納される。
【0040】
一方、分割モデル20は予め記憶装置に記憶される。分割モデル20の具体的な実装方法は限定されず、例えば分割モデル20は関係データベースあるいはテキストファイルとして用意されてもよい。また、分割モデル20の設置場所は限定されず、例えば、分割モデル20は自然言語処理システム10の内部に存在してもよいし、自然言語処理システム10とは異なる他のコンピュータシステム内に存在してもよい。分割モデル20が他の自然言語処理システム内にある場合には、自然言語処理システム10は通信ネットワークを介して分割モデル20にアクセスする。
【0041】
上述したように、分割モデル20は様々な素性のスコアの集合であるともいえる。数式上では、n個の素性のスコアw
1,w
2,…,w
nを含む分割モデル20をベクトルw={w
1,w
2,…,w
n}で示すことができる。分割モデル20が新規に作成された時点での各素性のスコアはすべて0である。すなわち、w={0,0,…,0}である。後述する自然言語処理システム10の処理により、そのスコアは少しずつ更新されていく。ある程度多くの文が処理された後には、上記のように個々の素性のスコアの間に差が生じてくる。
【0042】
図4に示すように、自然言語処理システム10は機能的構成要素として取得部11、解析部12、および修正部13を備える。自然言語処理システム10は必要に応じて分割モデル20にアクセスする。以下に各機能要素について説明するが、本実施形態では自然言語処理システム10が日本語の文を処理することを前提に説明する。もっとも、自然言語処理システム10が処理する文の言語は日本語に限定されず、中国語などの他の言語の文を解析することも可能である。
【0043】
取得部11は、形態素の列に分割しようとする文を取得する機能要素である。取得部11による文の取得方法は限定されない。例えば、取得部11はインターネット上の任意のウェブサイトから文を収集してもよい(いわゆる、クローリング(crawling))。あるいは、取得部11は自然言語処理システム10内のデータベースに予め蓄積された文を読み出してもよいし、自然言語処理システム10以外のコンピュータシステム上にあるデータベースに予め蓄積された文を通信ネットワーク経由でアクセスして読み出してもよい。あるいは、取得部11は自然言語処理システム10のユーザが入力した文を受け付けてもよい。最初の文の解析の指示が入力されると、取得部11は一つの文を取得して解析部12に出力する。その後、後述する修正部13から完了通知が入力されると、取得部11は次の文を取得して解析部12に出力する。
【0044】
解析部12は個々の文に対して形態素解析を実行する機能要素である。解析部12は一つの文が入力される度に以下の処理を実行する。
【0045】
まず、解析部12は一つの文を個々の文字に分割し、各文字の文字種を判定する。解析部12は、文字と文字種との対比表、または文字種を判定するための正規表現を予め記憶しており、その対比表または正規表現を用いて文字種を判定する。
【0046】
続いて、解析部12はビタビ・アルゴリズム(Viterbi algorithm)を用いて各文字のタグを決定する。i番目の文字に対して、解析部12は、最終的に選択される可能性があるタグ(候補タグ)のそれぞれついて、(i−1)番目の文字の複数の候補タグのうちどの候補タグと接続した場合にスコア(これを「接続スコア」ともいう)がいちばん高くなるかを判定する。ここで、接続スコアは、計算対象のタグに関する各種スコア(ユニグラムの出力素性のスコア、バイグラムの出力素性のスコア、および遷移素性のスコア)の合計値である。例えば、解析部12は、i番目のタグが「S−N−nc」の場合には、(i−1)番目のタグが「S−P−k」である場合に接続スコアが一番高くなり、i番目のタグが「S−V−c」の場合には、(i−1)番目のタグが「E−N−nc」である場合に接続スコアが一番高くなる、などと判定する。そして、解析部12は、接続スコアが最も高くなる組合せ(例えば、(S−P−k,S−N−nc)、(E−N−nc,S−V−c)など)をすべて記憶する。解析部12は、最初の文字から文末記号まで1文字ずつ進みながらこのような処理を実行する。
【0047】
文末記号に対しては一種類のタグ(EOS)しか存在しないので、接続スコアが最も高い、最後の文字と文末記号とのタグとの組合せは一つに決まる(例えば、その組合せが(E−V−c,EOS)であると決まる)。そうすると、最後の文字のタグが決まり(例えば、そのタグは「E−V−c」であると決まる)、その結果、最後から2番目の文字のタグも決まる。結果として、文の最後から先頭に向かって順番に、芋づる式にタグが確定する。
【0048】
このような解析部12による処理を模式的に
図5に示す。
図5は、4文字から成る文のタグ付けをする一例を示す。説明を簡単にするために、この例ではタグを「A1」「B2」などのように簡略化して示し、各文字の候補タグの個数を3としている。
図5における太線は、文を前方から処理することで得られる、接続スコアが最も高いと判定されたタグとタグとの組合せを示す。例えば3文字目の処理では、タグC1についてはタグB1との接続スコアが最も高く、タグC2についてはタグB1との接続スコアが最も高く、タグC3についてはタグB2との接続スコアが最も高い。
図5の例では、文の最後(EOS)まで処理すると、組合せ(D1,EOS)が確定し、続いて、組合せ(C2,D1)が確定し、その後、組合せ(B1,C2)、(A2,B1)が順次確定する。したがって、解析部12は、1〜4文字目のタグがそれぞれA2,B1,C2,D1であると判定する。
【0049】
解析部12は各文字がタグ付けされた文を解析結果として出力する。解析部12は解析結果を少なくとも修正部13に出力するが、この理由は、その解析結果が分割モデル20の修正に必要だからである。解析部12は更なる出力を実行してもよい。例えば、解析部12は解析結果をモニタ上に表示したりプリンタに印刷したりしてもよいし、解析結果をテキストファイルに書き出してもよいし、解析結果をメモリやデータベースなどの記憶装置に格納してもよい。あるいは、解析部12は解析結果を通信ネットワーク経由で自然言語処理システム10以外の他の任意のコンピュータシステムに送信してもよい。
【0050】
修正部13は、解析部12から得られた解析結果と、その文の形態素解析の正解との差に基づいて分割モデル20を修正する機能要素である。本明細書における「分割モデルの修正」とは、分割モデル内の少なくとも一つの素性のスコアを変更する処理である。なお、場合によっては、あるスコアを変更しようとしても結果的に値が変わらない場合があり得る。修正部13は解析結果が一つ入力される度に以下の処理を実行する。
【0051】
まず、修正部13は入力された解析結果に対応する正解データ、すなわち、解析部12により処理された文の形態素解析の正解を示すデータを取得する。本実施形態における正解データとは、文を形成する各文字のタグ(出現態様、品詞、および、品詞のサブクラスの組合せ)を示すデータである。この正解データは人手により作成される。修正部13による正解データの取得方法は限定されない。例えば、修正部13は自然言語処理システム10内のデータベースに予め蓄積された正解データを読み出してもよいし、自然言語処理システム10以外のコンピュータシステム上にあるデータベースに予め蓄積された文を通信ネットワーク経由でアクセスして読み出してもよい。あるいは、修正部13は自然言語処理システム10のユーザが入力した正解データを受け付けてもよい。
【0052】
正解データを取得すると、修正部13は入力された解析結果とその正解データとを比較してこれらの間の差を特定する。
【0053】
解析結果が正解データと完全に一致して差が無い場合には、修正部13は分割モデル20を修正することなく処理を終了し、完了通知を生成して取得部11に出力する。この完了通知は、修正部13での処理が終了して次の文に対する形態素解析が実行可能になったことを示す信号である。解析結果が正解データと完全に一致したということは、少なくともこの時点で分割モデル20を修正する必要がないので、自然言語処理システム10(より具体的には解析部12)は現在の分割モデル20をそのまま用いて次の文を解析する。
【0054】
例えば、上述した日本語の文「本を買って(hon wo katte)」についての正解データは以下の通りである。なお、便宜的に、各文字をx
1〜x
5とも表す。
x
1:{S−N−nc}
x
2:{S−P−k}
x
3:{B−V−c}
x
4:{E−V−c}
x
5:{S−P−sj}
【0055】
したがって、
図2に示す解析結果が入力された場合には、修正部13はその解析結果と正解データとが完全に一致すると判定し、解析部12を修正することなく完了通知を取得部11に出力する。
【0056】
一方、解析結果が正解データと完全に一致しない場合(すなわち、解析結果と正解データとに差がある場合)には、修正部13は分割モデル20の少なくとも一部のスコアを更新する。より具体的には、修正部13は不正解のタグに対応する正解のタグに関連する素性のスコアを現在値よりも高くするとともに、該不正解のタグに関する素性のスコアを現在値よりも低くする。
【0057】
例えば、解析部12が日本語の文「本を買って(hon wo katte)」から下記の解析結果を得たとする。
x
1:{S−N−nc}
x
2:{S−P−k}
x
3:{B−V−c}
x
4:{I−V−c}
x
5:{E−V−c}
【0058】
この場合、解析結果が全体として間違っているので、修正部13は、正解データ内の各タグに対応する素性を「正しい(+1)」と評価してその素性のスコアを現在値よりも高くし、解析結果内の各タグに対応する素性を「間違い(−1)」と評価してその素性のスコアを現在値よりも低くする。結果的に相殺される部分を考慮すると、修正部13は最終的に以下の処理を行うと言い換えることができる。
【0059】
修正部13は文字x
4,x
5の正解のタグに対応する出力素性「E−V−c/っ(t)」「S−P−sj/て(te)」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「I−V−c/っ(t)」「E−V−c/て(te)」についてのスコアを現在値より小さくする。これにより、解析された文に関連するユニグラムの出力素性のスコア(文字に関するスコア)が更新される。
【0060】
また、修正部13は、不正解だった文字x
4,x
5の正解のタグに関連する出力素性「E−V−c/H」「S−P−sj/H」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「I−V−c/H」「E−V−c/H」についてのスコアを現在値より小さくする。これにより、解析された文に関連するユニグラムの出力素性のスコア(文字種に関するスコア)が更新される。
【0061】
また、修正部13は、不正解だった文字x
4,x
5の正解のタグに関連する出力素性「E−V−c/っ(t)/て(te)」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「I−V−c/っ(t)/て(te)」についてのスコアを現在値より小さくする。これにより、解析された文に関連するバイグラムの出力素性のスコア(文字に関するスコア)が更新される。
【0062】
また、修正部13は、不正解だった文字x
4,x
5の正解のタグに関連する出力素性「E−V−c/H/H」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「I−V−c/H/H」についてのスコアを現在値より小さくする。これにより、解析された文に関連するバイグラムの出力素性のスコア(文字種に関するスコア)が更新される。
【0063】
また、修正部13は不正解だった文字x
4,x
5の正解のタグに関連する遷移素性「B−V−c/E−V−c」「E−V−c/S−P−sj」についてのスコアを現在値より大きくし、不正解のタグに関連する遷移素性「B−V−c/I−V−c」「I−V−c/E−V−c」についてのスコアを現在値より小さくする。これにより、解析された文に関連する遷移素性のスコアが更新される。
【0064】
なお、上述したように、修正部13は、正解データ内の各タグを「正しい(+1)」と評価する一方で、解析結果内の各文字に関するタグを「間違い(−1)」と評価し、各タグについての二つの評価結果を相殺した上で、「正しい(+1)」と評価されたタグに対応する素性のスコアを高くし、「間違い(−1)」と評価されたタグに対応する素性のスコアを低くしてもよい。
【0065】
素性のスコアを更新する際に、修正部13はSCW(Soft Confidence−Weighted learning)を用いてもよい。このSCWは、分散の大きいパラメータについてはまだ自信がない(正確でない)とみなしてそのパラメータを大きく更新し、分散の小さいパラメータについてはある程度正確であるとみなしてそのパラメータを小さく更新するという手法である。修正部13は、値の範囲を有するスコアの分散に基づいて該スコアの変化量を決定する。このSCWを実行するために、分割モデル20(ベクトルw)にガウス分布を導入し、修正部13は各スコアの更新に加えてそのスコアの平均および共分散行列も同時に更新する。各スコアの平均の初期値は0である。各スコアの共分散行列の初期値については、対角要素が1であり、それ以外の要素(非対角要素)は0である。
図6(a)は、分散の大きいスコアを大きく変更する(すなわち、スコアの変化量が大きい)態様を示し、
図6(b)は、分散の小さいスコアを少しだけ変更する(すなわち、スコアの変化量が小さい)態様を示している。
図6(a)および
図6(b)はそれぞれ、スコアをSaからSbに更新した際に共分散行列Σも更新することを示している。なお、共分散行列の更新に関していうと、ある素性と他の素性との相関関係を考慮しなくてもスコアの計算の精度を保つことができるので、本実施形態では共分散行列の非対角要素を計算することなく対角要素のみを計算する。これにより、スコアの更新速度を上げることができる。
【0066】
なお、修正部13はSCW以外の手法を用いて素性のスコアを更新してもよい。SCW以外の手法の例としては、Perceptron、Passive Aggressive(PA)、Confidence Weighted(CW)、Adaptive Regularization of Weight Vectors(AROW)が挙げられる。
【0067】
解析された文に関連する素性のスコアを更新することで分割モデル20を修正すると、修正部13は完了通知を生成して取得部11に出力する。この場合には、自然言語処理システム10(より具体的には解析部12)は修正された分割モデル20を用いて次の文を解析する。
【0068】
次に、
図7を用いて、自然言語処理システム10の動作を説明するとともに本実施形態に係る自然言語処理方法について説明する。
【0069】
まず、取得部11が一つの文を取得する(ステップS11)。続いて、解析部12が分割モデル20を用いてその文を形態素解析する(ステップS12、解析ステップ)。この形態素解析により、文の各文字に「S−N−nc」などのようなタグが付与される。
【0070】
続いて、修正部13が解析部12による形態素解析の結果と、その形態素解析の正解データとの差を求める(ステップS13)。その差がない場合(ステップS14;NO)、すなわち、解析部12による形態素解析が完全に正しい場合には、修正部13は分割モデル20を修正することなく処理を終了する。一方、解析結果と正解データとに差がある場合(ステップS14;YES)、すなわち、解析部12による形態素解析の少なくとも一部が正しくない場合には、修正部13は解析された文に関連する素性のスコアを更新することで分割モデル20を修正する(ステップS15、修正ステップ)。具体的には、修正部13は、不正解のタグに対応する正解のタグに関連する素性のスコアを現在値よりも高くするとともに、該不正解のタグに関連する素性のスコアを現在値よりも低くする。
【0071】
修正部13での処理が完了すると、ステップS11の処理に戻り(ステップS16参照)。取得部11が次の文を取得し(ステップS11)、解析部12がその文を形態素解析する(ステップS12)。このとき、前の文の処理において分割モデル20の修正(ステップS15)が実行されていた場合には、解析部12は修正された分割モデル20を用いて形態素解析を実行する。その後、修正部13がステップS13以降の処理を実行する。このような繰り返しは、処理対象の文が存在する限り続く(ステップS16参照)。
【0072】
自然言語処理システム10の動作を示すアルゴリズムの一例を以下に示す。
Initialize w
1
For t=1,2,…
Recieve instance x
t
Predict structure y^
t based on w
t
Receive correct structure y
t
If y^
t≠y
t, update
w
t+1=update(w
t,y
t,+1)
w
t+1=update(w
t,y^
t,−1)
【0073】
上記アルゴリズムにおける1行目は分割モデル20(変数w
1)の初期化を意味し、この処理により、例えば各素性のスコアが0に設定される。2行目のForループは、3行目以降の処理を一文ずつ実行することを示す。3行目は、文x
tを取得することを意味し、上記のステップS11に相当する。4行目は、その時点の分割モデル20(w
t)に基づく形態素解析をすることで各文字にタグを付与する処理を示し、上記のステップS12に相当する。y^
tは解析結果を示す。5行目は、文x
tの形態素解析の正解データy
tを取得することを意味する。6行目は、解析結果y^
tと正解データy
tとに差がある場合には分割モデル20を更新(修正)することを意味する。7行目は、正解データy
tを正例として学習することを示し、8行目は、誤りを含む解析結果y^
tを負例として学習することを示す。7,8行目の処理は上記のステップS15に相当する。
【0074】
次に、
図8を用いて、自然言語処理システム10を実現するための自然言語処理プログラムP1を説明する。
【0075】
自然言語処理プログラムP1は、メインモジュールP10、取得モジュールP11、解析モジュールP12、および修正モジュールP13を備える。
【0076】
メインモジュールP10は、形態素解析およびこの関連処理を統括的に制御する部分である。取得モジュールP11、解析モジュールP12、および修正モジュールP13を実行することにより実現される機能はそれぞれ、上記の取得部11、解析部12、および修正部13の機能と同様である。
【0077】
自然言語処理プログラムP1は、例えば、CD−ROMやDVD−ROM、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。また、自然言語処理プログラムP1は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0078】
以上説明したように、本発明の一側面に係る自然言語処理システムは、1以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析部であって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析部と、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する修正部とを備える。
【0079】
本発明の一側面に係る自然言語処理方法は、プロセッサを備える自然言語処理システムにより実行される自然言語処理方法であって、1以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析ステップであって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析ステップと、解析ステップにおいて得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析ステップにおける次の文の形態素解析で用いられる分割モデルを修正する修正ステップとを含む。
【0080】
本発明の一側面に係る自然言語処理プログラムは、1以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析部であって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析部と、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する修正部としてコンピュータを機能させる。
【0081】
このような側面においては、一つの文を形態素解析する度に、その解析結果と正解データとが比較され、これらの差に基づいて分割モデルが修正される。このように一文毎に分割モデルを修正することで、複数の文を処理した場合の分割モデルの修正に要する時間が、文の個数に応じてほぼ線形的に増大する程度に抑えられるので、形態素解析の分割モデルを一定の時間内に(言い換えると、予測できる時間の範囲内に)自動的に修正することができる。
【0082】
また、正解したタグに関する素性スコアを高くし、不正解だったタグに関する素性のスコアを低くすることで、次の文の形態素解析の精度をより高くすることができる。
【0083】
他の側面に係る自然言語処理システムでは、被分割要素が文字であってもよい。文字単位での知識(出力素性および遷移素性)を用いて文字毎に処理することで、一般的に大規模になってしまう単語辞書を用いることなく、形態素解析を実行することができる。また、単語の知識ではなく文字単位での知識を用いて一文毎に分割モデルが修正されるので、次の文が、これまで解析されたいずれの文とも分野または性質が異なったものであるとしても、当該次の文を高精度に形態素解析することが可能である。すなわち、本発明の一側面に係る自然言語処理システムは、未知の分野の文または未知の性質を持つ文に対する適応性を有する。
【0084】
他の側面に係る自然言語処理システムでは、出力素性のスコアおよび遷移素性のスコアのそれぞれが値の範囲を有し、各スコアについて分散が設定され、修正部が、各スコアの分散に基づいて、該スコアを高くまたは低く際の該スコアの変化量を決定してもよい。この手法を用いることで、各素性のスコアを早く収束させることが可能になる。
【0085】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0086】
一般に、分割モデル20に含まれる素性の個数は取り扱う文字の個数に応じて増えるので、日本語や中国語などのように文字が多い言語では分割モデル20が非常に大規模になり、分割モデル20のための記憶容量も非常に大きくなってしまう。そこで、フィーチャー・ハッシング(Feature Hashing)という手法を導入して、個々の素性をハッシュ関数により数値化してもよい。特に、素性の一部を表す文字および文字列を数値化することの効果が高い。その一方で、遷移素性はハッシュ化しても分割モデル20の容量の圧縮にはそれほど貢献せず、処理速度が却って遅くなる可能性がある。したがって、遷移素性をハッシュ化することなく出力素性のみをハッシュ化してもよい。なお、ハッシュ関数については、一種類のみを用いてもよいし、出力素性と遷移素性とで異なるハッシュ関数を用いてもよい。
【0087】
この場合には、分割モデル20は、個々の文字が数値で表された素性についてのデータを記憶する。例えば、「本(hon)」という文字が34という数値に変換され、「を(wo)」という文字が4788という数値に変換される。この数値化により、有界な(bounded)素性の集合を形成することができる。なお、このフィーチャー・ハッシングにより、複数の文字または文字列に同じ数値が割り当てられることがあり得るが、出現頻度が高い文字または文字列同士に同じ数値が割り当てられる蓋然性は非常に低いので、このような衝突は無視することができる。
【0088】
すなわち、他の側面に係る自然言語処理システムでは、分割モデルが、ハッシュ関数により数値化された出力素性を含んでもよい。文字を数値で扱うことで、分割モデルの記憶に必要なメモリ容量を節約することができる。
【0089】
解析部12は、スコアが相対的に低い素性を用いることなく(そのような素性を無視して)、スコアが相対的に高い素性を用いて形態素解析を実行してもよい。スコアが相対的に低い素性を無視する手法として、例えば、フォワード・バックワード・スプリッティング(Forward−Backward Splitting(FOBOS))と、素性の量子化(Feature Quantization)とが挙げられる。
【0090】
FOBOSは、正則化(例えばL1正則化)によりスコアを0の方に圧縮する手法である。FOBOSを用いることで、スコアが所定値以下の素性(例えば、スコアが0の素性、またはスコアが0に近い素性)を無視することが可能になる。
【0091】
素性の量子化は、小数点以下の値に10
n(nは1以上の自然数)を乗ずることで素性のスコアを整数化する手法である。例えば、「0.123456789」というスコアに1000を乗じて整数化するとスコアは「123」する。スコアを量子化することで、そのスコアをテキストで記憶するために必要なメモリ容量を節約することができる。また、この手法により、スコアが所定値以下の素性(例えば、整数化後のスコアが0の素性、または該スコアが0に近い素性)を無視することが可能になる。例えば、ある素性Fa,Fbのスコアがそれぞれ0.0512、0.0003であるとして、これらのスコアに1000を乗じて整数化した場合には、素性Fa,Fbはそれぞれ51、0になる。この場合には、解析部12は素性Fbを用いることなく形態素解析を実行する。
【0092】
正則化または量子化の処理は、例えば、修正部13、自然言語処理システム10内の他の機能要素、あるいは自然言語処理システム10とは別のコンピュータシステムで実行される。修正部13が正則化または量子化の処理を実行する場合には、修正部13は自然言語処理システム10において1セットの文(例えば、ある程度多くの文)が形態素解析されて分割モデル20が何度も修正された後に、正則化または量子化の処理を一回実行する。
【0093】
すなわち、他の側面に係る自然言語処理システムでは、解析部が、正則化または量子化によりスコアが所定値以下になった素性を用いることなく形態素解析を実行してもよい。スコアが相対的に低い素性(例えば、正則化または量子化によりスコアが0になる素性、または該スコアが0に近い素性)を使わないことで、分割モデルのデータ量を抑えたり形態素解析の時間を短縮したりすることができる。
【0094】
上記実施形態では解析部12が文を個々の文字に分割して各文字にタグを設定したが、被分割要素は文字ではなく単語であってもよい。これに伴い、解析部は、文字ではなく単語に関する素性のスコアを示す分割モデルと単語辞書とを用いて形態素解析を実行してもよい。
【0095】
上述した通り、本発明に係る自然言語処理システムは、任意の言語の形態素解析に適用することができる。
一実施形態に係る自然言語処理システムは、解析部および修正部を備える。解析部は、分割モデルを用いて一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素にタグを設定する。分割モデルは、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む。修正部は、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する素性のスコアを高くし、該不正解のタグに関連する素性のスコアを低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する。