(57)【特許請求の範囲】
【請求項１】
１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を、単語辞書を用いて１以上の単語に分割することなく１文字ずつ分割し、該分割により得られる個々の文字に、少なくとも単語の品詞を示すタグを設定する解析部であって、前記分割モデルが、文字と前記タグとの対応を示す出力素性のスコアと、連続する二つの文字に対応する二つの前記タグの組合せを示す遷移素性のスコアとを含む、該解析部と、
前記解析部により得られた解析結果で示されるタグと、前記一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも低くすることで、前記解析部による次の文の形態素解析で用いられる前記分割モデルを修正する修正部と
を備える自然言語処理システム。
【請求項２】
前記分割モデルが、ハッシュ関数により数値化された前記出力素性を含む、
請求項１に記載の自然言語処理システム。
【請求項３】
前記出力素性のスコアおよび前記遷移素性のスコアのそれぞれが値の範囲を有し、各スコアについて分散が設定され、
前記修正部が、各スコアの分散に基づいて、該スコアを高くまたは低くする際の該スコアの変化量を決定する、
請求項１または２に記載の自然言語処理システム。
【請求項４】
前記解析部が、正則化または量子化により前記スコアが所定値以下になった前記素性を用いることなく前記形態素解析を実行する、
請求項１〜３のいずれか一項に記載の自然言語処理システム。
【請求項５】
プロセッサを備える自然言語処理システムにより実行される自然言語処理方法であって、
１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を、単語辞書を用いて１以上の単語に分割することなく１文字ずつ分割し、該分割により得られる個々の文字に、少なくとも単語の品詞を示すタグを設定する解析ステップであって、前記分割モデルが、文字と前記タグとの対応を示す出力素性のスコアと、連続する二つの文字に対応する二つの前記タグの組合せを示す遷移素性のスコアとを含む、該解析ステップと、
前記解析ステップにおいて得られた解析結果で示されるタグと、前記一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも低くすることで、前記解析ステップにおける次の文の形態素解析で用いられる前記分割モデルを修正する修正ステップと
を含む自然言語処理方法。
【請求項６】
１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を、単語辞書を用いて１以上の単語に分割することなく１文字ずつ分割し、該分割により得られる個々の文字に、少なくとも単語の品詞を示すタグを設定する解析部であって、前記分割モデルが、文字と前記タグとの対応を示す出力素性のスコアと、連続する二つの文字に対応する二つの前記タグの組合せを示す遷移素性のスコアとを含む、該解析部と、
前記解析部により得られた解析結果で示されるタグと、前記一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する前記出力素性のスコアおよび前記遷移素性のスコアを現在値よりも低くすることで、前記解析部による次の文の形態素解析で用いられる前記分割モデルを修正する修正部としてコンピュータを機能させる自然言語処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一側面は、自然言語処理システム、自然言語処理方法、および自然言語処理プログラムに関する。
【背景技術】
【０００２】
自然言語処理の基礎技術の一つとして、文を形態素の列に分割して各形態素の品詞を判定する形態素解析が知られている。これに関連して下記特許文献１には、入力されたテキストデータを形態素に分解し、形態素辞書を参照して当該分解された形態素に対応する位置の情報を取得し、位置情報を用いたコスト関数により、当該分解で得られた形態素列の候補から形態素列を決定する形態素解析装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２１０８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
形態素解析は、各素性のスコアを含む分割モデルを用いて実行される。形態素解析のための知識ともいえるその分割モデルは一般に予め固定されているので、その分割モデルでは網羅していない新たな分野に属する文または新たな性質を持つ文を形態素解析しようとすると、当然ながら正しい結果を得ることは非常に困難である。一方で、分割モデルを機械学習などの手法により修正しようとすると、その修正に要する時間が予測の付かないほどに増大する可能性がある。そこで、形態素解析の分割モデルを一定の時間内に自動的に修正することが望まれている。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る自然言語処理システムは、１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析部であって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析部と、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する修正部とを備える。【０００６】
本発明の一側面に係る自然言語処理方法は、プロセッサを備える自然言語処理システムにより実行される自然言語処理方法であって、１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析ステップであって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析ステップと、解析ステップにおいて得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析ステップにおける次の文の形態素解析で用いられる分割モデルを修正する修正ステップとを含む。【０００７】
本発明の一側面に係る自然言語処理プログラムは、１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析部であって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析部と、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する修正部としてコンピュータを機能させる。【０００８】
このような側面においては、一つの文を形態素解析する度に、その解析結果と正解データとが比較され、これらの差に基づいて分割モデルが修正される。このように一文毎に分割モデルを修正することで、複数の文を処理した場合の分割モデルの修正に要する時間が、文の個数に応じてほぼ線形的に増大する程度に抑えられるので、形態素解析の分割モデルを一定の時間内に（言い換えると、予測できる時間の範囲内に）自動的に修正することができる。
【発明の効果】
【０００９】
本発明の一側面によれば、形態素解析の分割モデルを一定の時間内に自動的に修正することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る自然言語処理システムでの処理の概念図である。
【図２】実施形態における形態素解析の例を示す図である。
【図３】実施形態に係る自然言語処理システムを構成するコンピュータのハードウェア構成を示す図である。
【図４】実施形態に係る自然言語処理システムの機能構成を示すブロック図である。
【図５】タグ付けの一例を概念的に示す図である。
【図６】（ａ），（ｂ）はそれぞれ、スコアの更新の一例を模式的に示す図である。
【図７】実施形態に係る自然言語処理システムの動作を示すフローチャートである。
【図８】実施形態に係る自然言語処理プログラムの構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
まず、図１〜５を用いて、実施形態に係る自然言語処理システム１０の機能及び構成を説明する。自然言語処理システム１０は、形態素解析を実行するコンピュータシステムである。形態素解析とは、文を形態素の列に分割して各形態素の品詞を判定する処理である。文とは、一つの完結した言明を表す言語表現の単位であり、文字列で表現される。形態素とは、意味を有する最小の言語単位である。形態素の列とは、文を１以上の形態素に分割して得られる該１以上の形態素の並びである。品詞とは、文法上の機能または形態による単語の区分けである。
【００１３】
自然言語処理システム１０は、分割モデル２０を用いて個々の文を形態素解析する。自然言語処理システム１０の特徴の一つとして、分割モデル２０を学習する際には個々の文を形態素解析する度にその分割モデル２０を修正する点が挙げられる。分割モデル２０の修正が終われば、確定した分割モデル２０を備える自然言語処理システム１０がユーザに提供される。ユーザはその自然言語処理システム１０に形態素解析を実行させることができ、この際には、分割モデル２０の修正が行われることなく、形態素解析が実行される。本明細書における「分割モデル」とは、文を１以上の形態素に分割する際の基準（手掛かり）であり、各素性のスコアで示される。この分割モデルは、１以上のトレーニングデータを用いた機械学習により得られる。トレーニングデータは、各単語に分割された文と、その文を分割して得られる各単語の品詞とを少なくとも示すデータである。素性（ｆｅａｔｕｒｅ）とは、形態素解析において正しい結果を得るための手掛かりである。一般に、何を素性（手掛かり）として用いるかは限定されない。素性のスコアとは、当該素性の尤もらしさを表す数値である。
【００１４】
図１に、本実施形態に係る自然言語処理システム１０での処理の概念を簡潔に示す。なお、図１における歯車Ｍは形態素解析の実行を示す。ある時点において、自然言語処理システム１０は分割モデルｗ１を用いた形態素解析を実行することで文ｓ１を１以上の形態素に分割する。本実施形態では、自然言語処理システム１０は文を個々の文字に分割して文字単位の処理を実行することで文を１以上の形態素に分割する。すなわち、本実施形態では、処理対象となる被分割要素は文字である。自然言語処理システム１０は、個々の文字（被分割要素）にタグを設定することで、形態素解析の結果を示す。本明細書における「タグ」とは、文字の属性または機能を示すラベルである。タグについては後でさらに詳しく説明する。
【００１５】
形態素解析を実行すると、自然言語処理システム１０はその文ｓ１の形態素解析の正解を示すデータ（正解データ）を受け付け、解析結果とその正解データとを比較して分割モデルｗ１を修正することで新たな分割モデルｗ２を得る。具体的には、自然言語処理システム１０は、文ｓ１の形態素解析の少なくとも一部のタグ付けが間違った場合には、解析結果の全体が間違いであったと評価する。そして、自然言語処理システム１０は、正解データ内の各タグに対応する素性を「正しい（＋１）」と評価してその素性のスコアを現在値よりも高くし、解析結果内の各タグに対応する素性を「間違い（−１）」と評価してその素性のスコアを現在値よりも低くすることで、分割モデルｗ２を得る。解析結果内で一部のタグが正解であった場合には、当該一部のタグ（正解のタグ）に関連する素性の二つの評価「正しい（＋１）」「間違い（＋１）」は結果的に相殺される。したがって、上記のように素性のスコアを低くまたは高くする処理は、不正解のタグに対応する正解のタグ（不正解部分に対応する正解のタグ）に関連する素性のスコアを高くし、該不正解のタグ（不正解部分のタグ）に関連する素性のスコアを低くする処理であるといえる。
【００１６】
なお、自然言語処理システム１０は、正解データ内の各タグを「正しい（＋１）」と評価する一方で、解析結果内の各文字に関するタグを「間違い（−１）」と評価し、各タグについて二つの評価結果を相殺した上で、「正しい（＋１）」と評価されたタグに対応する素性のスコアを高くし、「間違い（−１）」と評価されたタグに対応する素性のスコアを低くしてもよい。
【００１７】
例えば、文ｓ１内に５個の文字ｘａ，ｘｂ，ｘｃ，ｘｄ，ｘｅが存在するものとする。そして、文字ｘａ，ｘｂ，ｘｃ，ｘｄ，ｘｅの正解のタグがそれぞれｔａ，ｔｂ，ｔｃ，ｔｄ，ｔｅであり、形態素解析により各文字のタグがｔａ，ｔｇ，ｔｈ，ｔｄ，ｔｅであったとする。この場合には、自然言語処理システム１０は、正解データ内のタグｔａ，ｔｂ，ｔｃ，ｔｄ，ｔｅに対応する素性を「正しい（＋１）」と評価してその素性のスコアを現在値よりも高くし、実行結果内のタグｔａ，ｔｇ，ｔｈ，ｔｄ，ｔｅに対応する素性を「間違い（−１）」と評価してその素性のスコアを現在値よりも低くする。この場合、タグｔａ，ｔｄ，ｔｃに対応する素性のスコアは結果的には更新前と変わらず、正解のタグｔｂ，ｔｃに対応する素性のスコアが高くなり、不正解のタグｔｇ、ｔｈに対応する素性のスコアが低くなる。
【００１８】
次の文ｓ２に対する形態素解析を実行する場合には、自然言語処理システム１０はその分割モデルｗ２を用いる。そして、自然言語処理システム１０はその文ｓ２の形態素解析の正解データを受け付け、実行結果とその正解データとを比較し、分割モデルｗ１を修正する場合と同様に分割モデルｗ２を修正することで新たな分割モデルｗ３を得る。
【００１９】
自然言語処理システム１０はこのように一つの文（ｓ１，ｓ２，…，ｓｔ）を処理する度に分割モデルを修正し（ｗ１→ｗ２，ｗ２→ｗ３，…，ｗｔ→ｗｔ＋１）、次の文の形態素解析で修正後の分割モデルを用いる。このように一つのトレーニングデータを処理する度にモデルを更新する手法は、「オンライン学習」または「オンラインの機械学習」ともいわれる。
【００２０】
自然言語処理システム１０による形態素解析の結果の例を図２に示す。この例では、自然言語処理システム１０は、「Ｉ  ｂｏｕｇｈｔ  ａ  ｂｏｏｋ」という英文に相当する、「本を買って（ｈｏｎ  ｗｏ  ｋａｔｔｅ）」という日本語の文を、５個の文字ｘ１：「本（ｈｏｎ）」，ｘ２：「を（ｗｏ）」，ｘ３：「買（ｋａ）」，ｘ４：「っ（ｔ）」，ｘ５：「て（ｔｅ）」に分割する。そして、自然言語処理システム１０は形態素解析を実行することで、各文字にタグを設定する。本実施形態では、タグは、単語内での文字の出現態様と、その単語の品詞と、その単語の品詞のサブクラスとの組合せであり、「Ｓ−Ｎ−ｎｃ」などのようにアルファベットを用いて表現される。
【００２１】
出現態様は、ある文字が単独で一つの単語となるかそれとも他の文字との組合せで一つの単語になるかということと、文字が、２文字以上から成る単語の一部である場合に、その文字が単語内のどこに位置するかということとを示す情報である。本実施形態では、出現態様はＳ，Ｂ，Ｉ，Ｅのいずれかで示される。出現態様「Ｓ」は、文字がそれ単独で一つの単語になることを示す。出現態様「Ｂ」は、文字が、２文字以上から成る単語の先頭に位置することを示す。出現態様「Ｉ」は、文字が、３文字以上から成る単語の途中に位置することを示す。出現態様「Ｅ」は、文字が、２文字以上から成る単語の末尾に位置することを示す。図２の例は、文字ｘ１，ｘ２，ｘ５が単独で一つの単語であり、文字ｘ３，ｘ４で１単語が形成されることを示している。
【００２２】
なお、出現態様についてのスキームは限定されない。本実施形態では、「ＳＢＩＥＯ」というスキームを用いているが、例えば、当業者に周知である「ＩＯＢ２」というスキームを用いてもよい。
【００２３】
品詞の例としては、名詞、動詞、助詞、形容詞、形容動詞、接続詞などが挙げられる。本実施形態では、名詞は「Ｎ」で表され、助詞は「Ｐ」で表され、動詞は「Ｖ」で表される。図２の例は、文字ｘ１が名詞であり、文字ｘ２が助詞であり、文字ｘ３，ｘ４から成る単語が動詞であり、文字ｘ５が助詞であることを示している。
【００２４】
品詞のサブクラスは、対応する品詞の下位概念を示す。例えば、名詞は一般名詞と固有名詞とにさらに分類することができ、助詞は格助詞、接続助詞、係助詞などにさらに分類することができる。本実施形態では、一般名詞は「ｎｃ」で表され、固有名詞は「ｎｐ」で表され、格助詞は「ｋ」で表され、接続助詞は「ｓｊ」で表され、一般動詞は「ｃ」で表される。図２の例は、文字ｘ１が一般名詞であり、文字ｘ２が格助詞であり、文字ｘ３，ｘ４から成る単語が一般動詞であり、文字ｘ５が接続助詞であることを示している。
【００２５】
分割モデル２０が記憶する素性のスコアは、出力素性（ｅｍｉｓｓｉｏｎ  ｆｅａｔｕｒｅ）のスコアおよび遷移素性（ｔｒａｎｓｉｔｉｏｎ  ｆｅａｔｕｒｅ）のスコアである。
【００２６】
出力素性とは、タグと文字または文字種との対応を示す手掛かりである。言い換えると、出力素性とは、どのようなタグに対してどのような文字または文字種が対応しやすいかを示す手掛かりである。出力素性は、隠れマルコフモデルの出力行列の素性表現に対応する。本実施形態では、ユニグラム（１文字のみから成る文字列）の出力素性と、バイグラム（連続する２文字から成る文字列）の出力素性とを用いる。
【００２７】
ここで、文字種とはある言語における文字の種類のことである。日本語の文字種として、例えば、漢字、平仮名、片仮名、アルファベット（大文字および小文字）、アラビア数字、漢数字、および中黒（・）が挙げられる。なお、本実施形態では、文字種をアルファベットで表す。例えば、「Ｃ」は漢字を示し、「Ｈ」は平仮名を示し、「Ｋ」は片仮名を示し、「Ｌ」はアルファベットを示し、「Ａ」はアラビア数字を示す。図２の例は、文字ｘ１，ｘ３が漢字であり、文字ｘ２，ｘ４，ｘ５が平仮名であることを示している。
【００２８】
文字に関するユニグラムの出力素性は、タグｔと文字ｘとの対応を示す手掛かりである。また、文字種に関するユニグラムの出力素性は、タグｔと文字種ｃとの対応を示す手掛かりである。本実施形態では、タグｔと文字ｘとの対応の尤もらしさのスコアｓを｛ｔ／ｘ，ｓ｝で示す。また、タグｔと文字種ｃとの対応の尤もらしさのスコアｓを｛ｔ／ｃ，ｓ｝で示す。分割モデル２０は、一つの文字または文字種に対して複数のタグに関するスコアを含む。一つの文字または文字種に対して、すべての種類のタグに関するデータが用意される場合には、分割モデル２０は、文法上、実際には起こりえないタグと文字または文字種との組合せについてのスコアも含む。ただし、文法上有り得ない素性のスコアは、相対的に低くなる。
【００２９】
以下に、日本語の「本（ｈｏｎ）」という文字に関する出力素性のスコアの例を示す。この文字が助詞であることは日本語の文法上有り得ないが、上述した通り、文法上存在しない「Ｓ−Ｐ−ｋ／本（ｈｏｎ）」のような素性についてもデータが用意され得る。
｛Ｓ−Ｎ−ｎｃ／本（ｈｏｎ），０．０４２０｝
｛Ｂ−Ｎ−ｎｃ／本（ｈｏｎ），０．０３１０｝
｛Ｓ−Ｐ−ｋ／本（ｈｏｎ），０．０００３｝
｛Ｂ−Ｖ−ｃ／本（ｈｏｎ），０．００３１｝
【００３０】
また、文字種「漢字」に関する出力素性のスコアの例を示す。
｛Ｓ−Ｎ−ｎｃ／Ｃ，０．０２５５｝
｛Ｅ−Ｎ−ｎｐ／Ｃ，０．０４８８｝
｛Ｓ−Ｐ−ｋ／Ｃ，０．００００｝
｛Ｂ−Ｖ−ｃ／Ｃ，０．０２９９｝
【００３１】
文字種に関しても、文法上存在しない素性を示すデータが用意され得る。例えば、アラビア数字で表される単語が助詞になることは日本語の文法上有り得ないが、「Ｓ−Ｐ−ｋ／Ａ」のような素性についてもデータが用意され得る。
【００３２】
文字に関するバイグラムの出力素性は、タグｔと文字列ｘｉｘｉ＋１との対応を示す手掛かりである。また、文字種に関するバイグラムの出力素性は、タグｔと文字種の列ｃｉｃｉ＋１との対応を示す手掛かりである。本実施形態では、タグｔおよび文字ｘｉ，ｘｉ＋１の尤もらしさのスコアｓを｛ｔ／ｘｉ／ｘｉ＋１，ｓ｝で示す。また、タグｔおよび文字種ｃｉ，ｃｉ＋１の尤もらしさのスコアｓを｛ｔ／ｃｉ／ｃｉ＋１，ｓ｝で示す。一つのバイグラムに対して、存在し得るすべてのタグに関するデータを用意する場合には、分割モデル２０は、文法上、実際には起こりえないタグとバイグラムとの組合せについてのデータも記憶する。
【００３３】
以下に、「本を（ｈｏｎ  ｗｏ）」というバイグラムに関する出力素性のスコアの例を示す。
｛Ｓ−Ｎ−ｎｃ／本（ｈｏｎ）／を（ｗｏ），０．０４２０｝
｛Ｂ−Ｎ−ｎｃ／本（ｈｏｎ）／を（ｗｏ），０．００００｝
｛Ｓ−Ｐ−ｋ／本（ｈｏｎ）／を（ｗｏ），０．０００１｝
｛Ｂ−Ｖ−ｃ／本（ｈｏｎ）／を（ｗｏ），０．０００９｝
【００３４】
また、漢字の次に平仮名が現れるバイグラムに関する出力素性のスコアの例を示す。
｛Ｓ−Ｎ−ｎｃ／Ｃ／Ｈ，０．０４５５｝
｛Ｅ−Ｎ−ｎｐ／Ｃ／Ｈ，０．０４１２｝
｛Ｓ−Ｐ−ｋ／Ｃ／Ｈ，０．００００｝
｛Ｂ−Ｖ−ｃ／Ｃ／Ｈ，０．００５４｝
【００３５】
遷移素性とは、文字ｘｉのタグｔｉとその次の文字ｘｉ＋１のタグｔｉ＋１との組合せ（連続する２文字に対応する二つのタグから成る組合せ）を示す手掛かりである。この遷移素性はバイグラムに関する素性である。遷移素性は、隠れマルコフモデルの遷移行列の素性表現に対応する。本実施形態では、タグｔｉとタグｔｉ＋１との組合せの尤もらしさのスコアｓを｛ｔｉ／ｔｉ＋１，ｓ｝で示す。存在し得るすべての組合せに関する遷移素性のデータを用意する場合には、分割モデル２０は、文法上、実際には起こりえない二つのタグの組合せについてのデータも記憶する。
【００３６】
以下に、遷移素性のスコアのいくつかの例を示す。
｛Ｓ−Ｎ−ｎｃ／Ｓ−Ｐ−ｋ，０．０５１２｝
｛Ｅ−Ｎ−ｎｃ／Ｅ−Ｎ−ｎｃ，０．００００｝
｛Ｓ−Ｐ−ｋ／Ｂ−Ｖ−ｃ，０．０４２５｝
｛Ｂ−Ｖ−ｃ／Ｉ−Ｖ−ｃ，０．０３８７｝
【００３７】
自然言語処理システム１０は１台以上のコンピュータを備え、複数台のコンピュータを備える場合には、後述する自然言語処理システム１０の各機能要素は分散処理により実現される。個々のコンピュータの種類は限定されない。例えば、据置型または携帯型のパーソナルコンピュータ（ＰＣ）を用いてもよいし、ワークステーションを用いてもよいし、高機能携帯電話機（スマートフォン）や携帯電話機、携帯情報端末（ＰＤＡ）などの携帯端末を用いてもよい。あるいは、様々な種類のコンピュータを組み合わせて自然言語処理システム１０を構築してもよい。複数台のコンピュータを用いる場合には、これらのコンピュータはインターネットやイントラネットなどの通信ネットワークを介して接続される。
【００３８】
自然言語処理システム１０内の個々のコンピュータ１００の一般的なハードウェア構成を図３に示す。コンピュータ１００は、オペレーティングシステムやアプリケーション・プログラムなどを実行するＣＰＵ（プロセッサ）１０１と、ＲＯＭ及びＲＡＭで構成される主記憶部１０２と、ハードディスクやフラッシュメモリなどで構成される補助記憶部１０３と、ネットワークカードあるいは無線通信モジュールで構成される通信制御部１０４と、キーボードやマウスなどの入力装置１０５と、ディスプレイやプリンタなどの出力装置１０６とを備える。当然ながら、搭載されるハードウェアモジュールはコンピュータ１００の種類により異なる。例えば、据置型のＰＣおよびワークステーションは入力装置および出力装置としてキーボード、マウス、およびモニタを備えることが多いが、スマートフォンはタッチパネルが入力装置および出力装置として機能することが多い。
【００３９】
後述する自然言語処理システム１０の各機能要素は、ＣＰＵ１０１または主記憶部１０２の上に所定のソフトウェアを読み込ませ、ＣＰＵ１０１の制御の下で通信制御部１０４や入力装置１０５、出力装置１０６などを動作させ、主記憶部１０２または補助記憶部１０３におけるデータの読み出し及び書き込みを行うことで実現される。処理に必要なデータやデータベースは主記憶部１０２または補助記憶部１０３内に格納される。
【００４０】
一方、分割モデル２０は予め記憶装置に記憶される。分割モデル２０の具体的な実装方法は限定されず、例えば分割モデル２０は関係データベースあるいはテキストファイルとして用意されてもよい。また、分割モデル２０の設置場所は限定されず、例えば、分割モデル２０は自然言語処理システム１０の内部に存在してもよいし、自然言語処理システム１０とは異なる他のコンピュータシステム内に存在してもよい。分割モデル２０が他の自然言語処理システム内にある場合には、自然言語処理システム１０は通信ネットワークを介して分割モデル２０にアクセスする。
【００４１】
上述したように、分割モデル２０は様々な素性のスコアの集合であるともいえる。数式上では、ｎ個の素性のスコアｗ１，ｗ２，…，ｗｎを含む分割モデル２０をベクトルｗ＝｛ｗ１，ｗ２，…，ｗｎ｝で示すことができる。分割モデル２０が新規に作成された時点での各素性のスコアはすべて０である。すなわち、ｗ＝｛０，０，…，０｝である。後述する自然言語処理システム１０の処理により、そのスコアは少しずつ更新されていく。ある程度多くの文が処理された後には、上記のように個々の素性のスコアの間に差が生じてくる。
【００４２】
図４に示すように、自然言語処理システム１０は機能的構成要素として取得部１１、解析部１２、および修正部１３を備える。自然言語処理システム１０は必要に応じて分割モデル２０にアクセスする。以下に各機能要素について説明するが、本実施形態では自然言語処理システム１０が日本語の文を処理することを前提に説明する。もっとも、自然言語処理システム１０が処理する文の言語は日本語に限定されず、中国語などの他の言語の文を解析することも可能である。
【００４３】
取得部１１は、形態素の列に分割しようとする文を取得する機能要素である。取得部１１による文の取得方法は限定されない。例えば、取得部１１はインターネット上の任意のウェブサイトから文を収集してもよい（いわゆる、クローリング（ｃｒａｗｌｉｎｇ））。あるいは、取得部１１は自然言語処理システム１０内のデータベースに予め蓄積された文を読み出してもよいし、自然言語処理システム１０以外のコンピュータシステム上にあるデータベースに予め蓄積された文を通信ネットワーク経由でアクセスして読み出してもよい。あるいは、取得部１１は自然言語処理システム１０のユーザが入力した文を受け付けてもよい。最初の文の解析の指示が入力されると、取得部１１は一つの文を取得して解析部１２に出力する。その後、後述する修正部１３から完了通知が入力されると、取得部１１は次の文を取得して解析部１２に出力する。
【００４４】
解析部１２は個々の文に対して形態素解析を実行する機能要素である。解析部１２は一つの文が入力される度に以下の処理を実行する。
【００４５】
まず、解析部１２は一つの文を個々の文字に分割し、各文字の文字種を判定する。解析部１２は、文字と文字種との対比表、または文字種を判定するための正規表現を予め記憶しており、その対比表または正規表現を用いて文字種を判定する。
【００４６】
続いて、解析部１２はビタビ・アルゴリズム（Ｖｉｔｅｒｂｉ  ａｌｇｏｒｉｔｈｍ）を用いて各文字のタグを決定する。ｉ番目の文字に対して、解析部１２は、最終的に選択される可能性があるタグ（候補タグ）のそれぞれついて、（ｉ−１）番目の文字の複数の候補タグのうちどの候補タグと接続した場合にスコア（これを「接続スコア」ともいう）がいちばん高くなるかを判定する。ここで、接続スコアは、計算対象のタグに関する各種スコア（ユニグラムの出力素性のスコア、バイグラムの出力素性のスコア、および遷移素性のスコア）の合計値である。例えば、解析部１２は、ｉ番目のタグが「Ｓ−Ｎ−ｎｃ」の場合には、（ｉ−１）番目のタグが「Ｓ−Ｐ−ｋ」である場合に接続スコアが一番高くなり、ｉ番目のタグが「Ｓ−Ｖ−ｃ」の場合には、（ｉ−１）番目のタグが「Ｅ−Ｎ−ｎｃ」である場合に接続スコアが一番高くなる、などと判定する。そして、解析部１２は、接続スコアが最も高くなる組合せ（例えば、（Ｓ−Ｐ−ｋ，Ｓ−Ｎ−ｎｃ）、（Ｅ−Ｎ−ｎｃ，Ｓ−Ｖ−ｃ）など）をすべて記憶する。解析部１２は、最初の文字から文末記号まで１文字ずつ進みながらこのような処理を実行する。
【００４７】
文末記号に対しては一種類のタグ（ＥＯＳ）しか存在しないので、接続スコアが最も高い、最後の文字と文末記号とのタグとの組合せは一つに決まる（例えば、その組合せが（Ｅ−Ｖ−ｃ，ＥＯＳ）であると決まる）。そうすると、最後の文字のタグが決まり（例えば、そのタグは「Ｅ−Ｖ−ｃ」であると決まる）、その結果、最後から２番目の文字のタグも決まる。結果として、文の最後から先頭に向かって順番に、芋づる式にタグが確定する。
【００４８】
このような解析部１２による処理を模式的に図５に示す。図５は、４文字から成る文のタグ付けをする一例を示す。説明を簡単にするために、この例ではタグを「Ａ１」「Ｂ２」などのように簡略化して示し、各文字の候補タグの個数を３としている。図５における太線は、文を前方から処理することで得られる、接続スコアが最も高いと判定されたタグとタグとの組合せを示す。例えば３文字目の処理では、タグＣ１についてはタグＢ１との接続スコアが最も高く、タグＣ２についてはタグＢ１との接続スコアが最も高く、タグＣ３についてはタグＢ２との接続スコアが最も高い。図５の例では、文の最後（ＥＯＳ）まで処理すると、組合せ（Ｄ１，ＥＯＳ）が確定し、続いて、組合せ（Ｃ２，Ｄ１）が確定し、その後、組合せ（Ｂ１，Ｃ２）、（Ａ２，Ｂ１）が順次確定する。したがって、解析部１２は、１〜４文字目のタグがそれぞれＡ２，Ｂ１，Ｃ２，Ｄ１であると判定する。
【００４９】
解析部１２は各文字がタグ付けされた文を解析結果として出力する。解析部１２は解析結果を少なくとも修正部１３に出力するが、この理由は、その解析結果が分割モデル２０の修正に必要だからである。解析部１２は更なる出力を実行してもよい。例えば、解析部１２は解析結果をモニタ上に表示したりプリンタに印刷したりしてもよいし、解析結果をテキストファイルに書き出してもよいし、解析結果をメモリやデータベースなどの記憶装置に格納してもよい。あるいは、解析部１２は解析結果を通信ネットワーク経由で自然言語処理システム１０以外の他の任意のコンピュータシステムに送信してもよい。
【００５０】
修正部１３は、解析部１２から得られた解析結果と、その文の形態素解析の正解との差に基づいて分割モデル２０を修正する機能要素である。本明細書における「分割モデルの修正」とは、分割モデル内の少なくとも一つの素性のスコアを変更する処理である。なお、場合によっては、あるスコアを変更しようとしても結果的に値が変わらない場合があり得る。修正部１３は解析結果が一つ入力される度に以下の処理を実行する。
【００５１】
まず、修正部１３は入力された解析結果に対応する正解データ、すなわち、解析部１２により処理された文の形態素解析の正解を示すデータを取得する。本実施形態における正解データとは、文を形成する各文字のタグ（出現態様、品詞、および、品詞のサブクラスの組合せ）を示すデータである。この正解データは人手により作成される。修正部１３による正解データの取得方法は限定されない。例えば、修正部１３は自然言語処理システム１０内のデータベースに予め蓄積された正解データを読み出してもよいし、自然言語処理システム１０以外のコンピュータシステム上にあるデータベースに予め蓄積された文を通信ネットワーク経由でアクセスして読み出してもよい。あるいは、修正部１３は自然言語処理システム１０のユーザが入力した正解データを受け付けてもよい。
【００５２】
正解データを取得すると、修正部１３は入力された解析結果とその正解データとを比較してこれらの間の差を特定する。
【００５３】
解析結果が正解データと完全に一致して差が無い場合には、修正部１３は分割モデル２０を修正することなく処理を終了し、完了通知を生成して取得部１１に出力する。この完了通知は、修正部１３での処理が終了して次の文に対する形態素解析が実行可能になったことを示す信号である。解析結果が正解データと完全に一致したということは、少なくともこの時点で分割モデル２０を修正する必要がないので、自然言語処理システム１０（より具体的には解析部１２）は現在の分割モデル２０をそのまま用いて次の文を解析する。
【００５４】
例えば、上述した日本語の文「本を買って（ｈｏｎ  ｗｏ  ｋａｔｔｅ）」についての正解データは以下の通りである。なお、便宜的に、各文字をｘ１〜ｘ５とも表す。
ｘ１：｛Ｓ−Ｎ−ｎｃ｝
ｘ２：｛Ｓ−Ｐ−ｋ｝
ｘ３：｛Ｂ−Ｖ−ｃ｝
ｘ４：｛Ｅ−Ｖ−ｃ｝
ｘ５：｛Ｓ−Ｐ−ｓｊ｝
【００５５】
したがって、図２に示す解析結果が入力された場合には、修正部１３はその解析結果と正解データとが完全に一致すると判定し、解析部１２を修正することなく完了通知を取得部１１に出力する。
【００５６】
一方、解析結果が正解データと完全に一致しない場合（すなわち、解析結果と正解データとに差がある場合）には、修正部１３は分割モデル２０の少なくとも一部のスコアを更新する。より具体的には、修正部１３は不正解のタグに対応する正解のタグに関連する素性のスコアを現在値よりも高くするとともに、該不正解のタグに関する素性のスコアを現在値よりも低くする。
【００５７】
例えば、解析部１２が日本語の文「本を買って（ｈｏｎ  ｗｏ  ｋａｔｔｅ）」から下記の解析結果を得たとする。
ｘ１：｛Ｓ−Ｎ−ｎｃ｝
ｘ２：｛Ｓ−Ｐ−ｋ｝
ｘ３：｛Ｂ−Ｖ−ｃ｝
ｘ４：｛Ｉ−Ｖ−ｃ｝
ｘ５：｛Ｅ−Ｖ−ｃ｝
【００５８】
この場合、解析結果が全体として間違っているので、修正部１３は、正解データ内の各タグに対応する素性を「正しい（＋１）」と評価してその素性のスコアを現在値よりも高くし、解析結果内の各タグに対応する素性を「間違い（−１）」と評価してその素性のスコアを現在値よりも低くする。結果的に相殺される部分を考慮すると、修正部１３は最終的に以下の処理を行うと言い換えることができる。
【００５９】
修正部１３は文字ｘ４，ｘ５の正解のタグに対応する出力素性「Ｅ−Ｖ−ｃ／っ（ｔ）」「Ｓ−Ｐ−ｓｊ／て（ｔｅ）」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「Ｉ−Ｖ−ｃ／っ（ｔ）」「Ｅ−Ｖ−ｃ／て（ｔｅ）」についてのスコアを現在値より小さくする。これにより、解析された文に関連するユニグラムの出力素性のスコア（文字に関するスコア）が更新される。
【００６０】
また、修正部１３は、不正解だった文字ｘ４，ｘ５の正解のタグに関連する出力素性「Ｅ−Ｖ−ｃ／Ｈ」「Ｓ−Ｐ−ｓｊ／Ｈ」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「Ｉ−Ｖ−ｃ／Ｈ」「Ｅ−Ｖ−ｃ／Ｈ」についてのスコアを現在値より小さくする。これにより、解析された文に関連するユニグラムの出力素性のスコア（文字種に関するスコア）が更新される。
【００６１】
また、修正部１３は、不正解だった文字ｘ４，ｘ５の正解のタグに関連する出力素性「Ｅ−Ｖ−ｃ／っ（ｔ）／て（ｔｅ）」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「Ｉ−Ｖ−ｃ／っ（ｔ）／て（ｔｅ）」についてのスコアを現在値より小さくする。これにより、解析された文に関連するバイグラムの出力素性のスコア（文字に関するスコア）が更新される。
【００６２】
また、修正部１３は、不正解だった文字ｘ４，ｘ５の正解のタグに関連する出力素性「Ｅ−Ｖ−ｃ／Ｈ／Ｈ」についてのスコアを現在値より大きくし、不正解のタグに関連する出力素性「Ｉ−Ｖ−ｃ／Ｈ／Ｈ」についてのスコアを現在値より小さくする。これにより、解析された文に関連するバイグラムの出力素性のスコア（文字種に関するスコア）が更新される。
【００６３】
また、修正部１３は不正解だった文字ｘ４，ｘ５の正解のタグに関連する遷移素性「Ｂ−Ｖ−ｃ／Ｅ−Ｖ−ｃ」「Ｅ−Ｖ−ｃ／Ｓ−Ｐ−ｓｊ」についてのスコアを現在値より大きくし、不正解のタグに関連する遷移素性「Ｂ−Ｖ−ｃ／Ｉ−Ｖ−ｃ」「Ｉ−Ｖ−ｃ／Ｅ−Ｖ−ｃ」についてのスコアを現在値より小さくする。これにより、解析された文に関連する遷移素性のスコアが更新される。
【００６４】
なお、上述したように、修正部１３は、正解データ内の各タグを「正しい（＋１）」と評価する一方で、解析結果内の各文字に関するタグを「間違い（−１）」と評価し、各タグについての二つの評価結果を相殺した上で、「正しい（＋１）」と評価されたタグに対応する素性のスコアを高くし、「間違い（−１）」と評価されたタグに対応する素性のスコアを低くしてもよい。
【００６５】
素性のスコアを更新する際に、修正部１３はＳＣＷ（Ｓｏｆｔ  Ｃｏｎｆｉｄｅｎｃｅ−Ｗｅｉｇｈｔｅｄ  ｌｅａｒｎｉｎｇ）を用いてもよい。このＳＣＷは、分散の大きいパラメータについてはまだ自信がない（正確でない）とみなしてそのパラメータを大きく更新し、分散の小さいパラメータについてはある程度正確であるとみなしてそのパラメータを小さく更新するという手法である。修正部１３は、値の範囲を有するスコアの分散に基づいて該スコアの変化量を決定する。このＳＣＷを実行するために、分割モデル２０（ベクトルｗ）にガウス分布を導入し、修正部１３は各スコアの更新に加えてそのスコアの平均および共分散行列も同時に更新する。各スコアの平均の初期値は０である。各スコアの共分散行列の初期値については、対角要素が１であり、それ以外の要素（非対角要素）は０である。図６（ａ）は、分散の大きいスコアを大きく変更する（すなわち、スコアの変化量が大きい）態様を示し、図６（ｂ）は、分散の小さいスコアを少しだけ変更する（すなわち、スコアの変化量が小さい）態様を示している。図６（ａ）および図６（ｂ）はそれぞれ、スコアをＳａからＳｂに更新した際に共分散行列Σも更新することを示している。なお、共分散行列の更新に関していうと、ある素性と他の素性との相関関係を考慮しなくてもスコアの計算の精度を保つことができるので、本実施形態では共分散行列の非対角要素を計算することなく対角要素のみを計算する。これにより、スコアの更新速度を上げることができる。
【００６６】
なお、修正部１３はＳＣＷ以外の手法を用いて素性のスコアを更新してもよい。ＳＣＷ以外の手法の例としては、Ｐｅｒｃｅｐｔｒｏｎ、Ｐａｓｓｉｖｅ  Ａｇｇｒｅｓｓｉｖｅ（ＰＡ）、Ｃｏｎｆｉｄｅｎｃｅ  Ｗｅｉｇｈｔｅｄ（ＣＷ）、Ａｄａｐｔｉｖｅ  Ｒｅｇｕｌａｒｉｚａｔｉｏｎ  ｏｆ  Ｗｅｉｇｈｔ  Ｖｅｃｔｏｒｓ（ＡＲＯＷ）が挙げられる。
【００６７】
解析された文に関連する素性のスコアを更新することで分割モデル２０を修正すると、修正部１３は完了通知を生成して取得部１１に出力する。この場合には、自然言語処理システム１０（より具体的には解析部１２）は修正された分割モデル２０を用いて次の文を解析する。
【００６８】
次に、図７を用いて、自然言語処理システム１０の動作を説明するとともに本実施形態に係る自然言語処理方法について説明する。
【００６９】
まず、取得部１１が一つの文を取得する（ステップＳ１１）。続いて、解析部１２が分割モデル２０を用いてその文を形態素解析する（ステップＳ１２、解析ステップ）。この形態素解析により、文の各文字に「Ｓ−Ｎ−ｎｃ」などのようなタグが付与される。
【００７０】
続いて、修正部１３が解析部１２による形態素解析の結果と、その形態素解析の正解データとの差を求める（ステップＳ１３）。その差がない場合（ステップＳ１４；ＮＯ）、すなわち、解析部１２による形態素解析が完全に正しい場合には、修正部１３は分割モデル２０を修正することなく処理を終了する。一方、解析結果と正解データとに差がある場合（ステップＳ１４；ＹＥＳ）、すなわち、解析部１２による形態素解析の少なくとも一部が正しくない場合には、修正部１３は解析された文に関連する素性のスコアを更新することで分割モデル２０を修正する（ステップＳ１５、修正ステップ）。具体的には、修正部１３は、不正解のタグに対応する正解のタグに関連する素性のスコアを現在値よりも高くするとともに、該不正解のタグに関連する素性のスコアを現在値よりも低くする。
【００７１】
修正部１３での処理が完了すると、ステップＳ１１の処理に戻り（ステップＳ１６参照）。取得部１１が次の文を取得し（ステップＳ１１）、解析部１２がその文を形態素解析する（ステップＳ１２）。このとき、前の文の処理において分割モデル２０の修正（ステップＳ１５）が実行されていた場合には、解析部１２は修正された分割モデル２０を用いて形態素解析を実行する。その後、修正部１３がステップＳ１３以降の処理を実行する。このような繰り返しは、処理対象の文が存在する限り続く（ステップＳ１６参照）。
【００７２】
自然言語処理システム１０の動作を示すアルゴリズムの一例を以下に示す。
Ｉｎｉｔｉａｌｉｚｅ  ｗ１
Ｆｏｒ  ｔ＝１，２，…
Ｒｅｃｉｅｖｅ  ｉｎｓｔａｎｃｅ  ｘｔ
Ｐｒｅｄｉｃｔ  ｓｔｒｕｃｔｕｒｅ  ｙ＾ｔ  ｂａｓｅｄ  ｏｎ  ｗｔ
Ｒｅｃｅｉｖｅ  ｃｏｒｒｅｃｔ  ｓｔｒｕｃｔｕｒｅ  ｙｔ
Ｉｆ  ｙ＾ｔ≠ｙｔ，  ｕｐｄａｔｅ
ｗｔ＋１＝ｕｐｄａｔｅ（ｗｔ，ｙｔ，＋１）
ｗｔ＋１＝ｕｐｄａｔｅ（ｗｔ，ｙ＾ｔ，−１）
【００７３】
上記アルゴリズムにおける１行目は分割モデル２０（変数ｗ１）の初期化を意味し、この処理により、例えば各素性のスコアが０に設定される。２行目のＦｏｒループは、３行目以降の処理を一文ずつ実行することを示す。３行目は、文ｘｔを取得することを意味し、上記のステップＳ１１に相当する。４行目は、その時点の分割モデル２０（ｗｔ）に基づく形態素解析をすることで各文字にタグを付与する処理を示し、上記のステップＳ１２に相当する。ｙ＾ｔは解析結果を示す。５行目は、文ｘｔの形態素解析の正解データｙｔを取得することを意味する。６行目は、解析結果ｙ＾ｔと正解データｙｔとに差がある場合には分割モデル２０を更新（修正）することを意味する。７行目は、正解データｙｔを正例として学習することを示し、８行目は、誤りを含む解析結果ｙ＾ｔを負例として学習することを示す。７，８行目の処理は上記のステップＳ１５に相当する。
【００７４】
次に、図８を用いて、自然言語処理システム１０を実現するための自然言語処理プログラムＰ１を説明する。
【００７５】
自然言語処理プログラムＰ１は、メインモジュールＰ１０、取得モジュールＰ１１、解析モジュールＰ１２、および修正モジュールＰ１３を備える。
【００７６】
メインモジュールＰ１０は、形態素解析およびこの関連処理を統括的に制御する部分である。取得モジュールＰ１１、解析モジュールＰ１２、および修正モジュールＰ１３を実行することにより実現される機能はそれぞれ、上記の取得部１１、解析部１２、および修正部１３の機能と同様である。
【００７７】
自然言語処理プログラムＰ１は、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。また、自然言語処理プログラムＰ１は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【００７８】
以上説明したように、本発明の一側面に係る自然言語処理システムは、１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析部であって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析部と、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する修正部とを備える。
【００７９】
本発明の一側面に係る自然言語処理方法は、プロセッサを備える自然言語処理システムにより実行される自然言語処理方法であって、１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析ステップであって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析ステップと、解析ステップにおいて得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析ステップにおける次の文の形態素解析で用いられる分割モデルを修正する修正ステップとを含む。
【００８０】
本発明の一側面に係る自然言語処理プログラムは、１以上のトレーニングデータを用いた機械学習により得られる分割モデルを用いて、一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素に、少なくとも単語の品詞を示すタグを設定する解析部であって、分割モデルが、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む、該解析部と、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも高くし、該不正解のタグに関連する出力素性のスコアおよび遷移素性のスコアを現在値よりも低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する修正部としてコンピュータを機能させる。
【００８１】
このような側面においては、一つの文を形態素解析する度に、その解析結果と正解データとが比較され、これらの差に基づいて分割モデルが修正される。このように一文毎に分割モデルを修正することで、複数の文を処理した場合の分割モデルの修正に要する時間が、文の個数に応じてほぼ線形的に増大する程度に抑えられるので、形態素解析の分割モデルを一定の時間内に（言い換えると、予測できる時間の範囲内に）自動的に修正することができる。
【００８２】
また、正解したタグに関する素性スコアを高くし、不正解だったタグに関する素性のスコアを低くすることで、次の文の形態素解析の精度をより高くすることができる。
【００８３】
他の側面に係る自然言語処理システムでは、被分割要素が文字であってもよい。文字単位での知識（出力素性および遷移素性）を用いて文字毎に処理することで、一般的に大規模になってしまう単語辞書を用いることなく、形態素解析を実行することができる。また、単語の知識ではなく文字単位での知識を用いて一文毎に分割モデルが修正されるので、次の文が、これまで解析されたいずれの文とも分野または性質が異なったものであるとしても、当該次の文を高精度に形態素解析することが可能である。すなわち、本発明の一側面に係る自然言語処理システムは、未知の分野の文または未知の性質を持つ文に対する適応性を有する。
【００８４】
他の側面に係る自然言語処理システムでは、出力素性のスコアおよび遷移素性のスコアのそれぞれが値の範囲を有し、各スコアについて分散が設定され、修正部が、各スコアの分散に基づいて、該スコアを高くまたは低く際の該スコアの変化量を決定してもよい。この手法を用いることで、各素性のスコアを早く収束させることが可能になる。
【００８５】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【００８６】
一般に、分割モデル２０に含まれる素性の個数は取り扱う文字の個数に応じて増えるので、日本語や中国語などのように文字が多い言語では分割モデル２０が非常に大規模になり、分割モデル２０のための記憶容量も非常に大きくなってしまう。そこで、フィーチャー・ハッシング（Ｆｅａｔｕｒｅ  Ｈａｓｈｉｎｇ）という手法を導入して、個々の素性をハッシュ関数により数値化してもよい。特に、素性の一部を表す文字および文字列を数値化することの効果が高い。その一方で、遷移素性はハッシュ化しても分割モデル２０の容量の圧縮にはそれほど貢献せず、処理速度が却って遅くなる可能性がある。したがって、遷移素性をハッシュ化することなく出力素性のみをハッシュ化してもよい。なお、ハッシュ関数については、一種類のみを用いてもよいし、出力素性と遷移素性とで異なるハッシュ関数を用いてもよい。
【００８７】
この場合には、分割モデル２０は、個々の文字が数値で表された素性についてのデータを記憶する。例えば、「本（ｈｏｎ）」という文字が３４という数値に変換され、「を（ｗｏ）」という文字が４７８８という数値に変換される。この数値化により、有界な（ｂｏｕｎｄｅｄ）素性の集合を形成することができる。なお、このフィーチャー・ハッシングにより、複数の文字または文字列に同じ数値が割り当てられることがあり得るが、出現頻度が高い文字または文字列同士に同じ数値が割り当てられる蓋然性は非常に低いので、このような衝突は無視することができる。
【００８８】
すなわち、他の側面に係る自然言語処理システムでは、分割モデルが、ハッシュ関数により数値化された出力素性を含んでもよい。文字を数値で扱うことで、分割モデルの記憶に必要なメモリ容量を節約することができる。
【００８９】
解析部１２は、スコアが相対的に低い素性を用いることなく（そのような素性を無視して）、スコアが相対的に高い素性を用いて形態素解析を実行してもよい。スコアが相対的に低い素性を無視する手法として、例えば、フォワード・バックワード・スプリッティング（Ｆｏｒｗａｒｄ−Ｂａｃｋｗａｒｄ  Ｓｐｌｉｔｔｉｎｇ（ＦＯＢＯＳ））と、素性の量子化（Ｆｅａｔｕｒｅ  Ｑｕａｎｔｉｚａｔｉｏｎ）とが挙げられる。
【００９０】
ＦＯＢＯＳは、正則化（例えばＬ１正則化）によりスコアを０の方に圧縮する手法である。ＦＯＢＯＳを用いることで、スコアが所定値以下の素性（例えば、スコアが０の素性、またはスコアが０に近い素性）を無視することが可能になる。
【００９１】
素性の量子化は、小数点以下の値に１０ｎ（ｎは１以上の自然数）を乗ずることで素性のスコアを整数化する手法である。例えば、「０．１２３４５６７８９」というスコアに１０００を乗じて整数化するとスコアは「１２３」する。スコアを量子化することで、そのスコアをテキストで記憶するために必要なメモリ容量を節約することができる。また、この手法により、スコアが所定値以下の素性（例えば、整数化後のスコアが０の素性、または該スコアが０に近い素性）を無視することが可能になる。例えば、ある素性Ｆａ，Ｆｂのスコアがそれぞれ０．０５１２、０．０００３であるとして、これらのスコアに１０００を乗じて整数化した場合には、素性Ｆａ，Ｆｂはそれぞれ５１、０になる。この場合には、解析部１２は素性Ｆｂを用いることなく形態素解析を実行する。
【００９２】
正則化または量子化の処理は、例えば、修正部１３、自然言語処理システム１０内の他の機能要素、あるいは自然言語処理システム１０とは別のコンピュータシステムで実行される。修正部１３が正則化または量子化の処理を実行する場合には、修正部１３は自然言語処理システム１０において１セットの文（例えば、ある程度多くの文）が形態素解析されて分割モデル２０が何度も修正された後に、正則化または量子化の処理を一回実行する。
【００９３】
すなわち、他の側面に係る自然言語処理システムでは、解析部が、正則化または量子化によりスコアが所定値以下になった素性を用いることなく形態素解析を実行してもよい。スコアが相対的に低い素性（例えば、正則化または量子化によりスコアが０になる素性、または該スコアが０に近い素性）を使わないことで、分割モデルのデータ量を抑えたり形態素解析の時間を短縮したりすることができる。
【００９４】
上記実施形態では解析部１２が文を個々の文字に分割して各文字にタグを設定したが、被分割要素は文字ではなく単語であってもよい。これに伴い、解析部は、文字ではなく単語に関する素性のスコアを示す分割モデルと単語辞書とを用いて形態素解析を実行してもよい。
【００９５】
上述した通り、本発明に係る自然言語処理システムは、任意の言語の形態素解析に適用することができる。
【符号の説明】
【００９６】
１０…自然言語処理システム、１１…取得部、１２…解析部、１３…修正部、２０…分割モデル、Ｐ１…自然言語処理プログラム、Ｐ１０…メインモジュール、Ｐ１１…取得モジュール、Ｐ１２…解析モジュール、Ｐ１３…修正モジュール。
【要約】
一実施形態に係る自然言語処理システムは、解析部および修正部を備える。解析部は、分割モデルを用いて一つの文に対する形態素解析を実行することで、該一つの文を分割して得られる個々の被分割要素にタグを設定する。分割モデルは、被分割要素とタグとの対応を示す出力素性のスコアと、連続する二つの被分割要素に対応する二つのタグの組合せを示す遷移素性のスコアとを含む。修正部は、解析部により得られた解析結果で示されるタグと、一つの文の正解のタグを示す正解データとを比較し、不正解のタグに対応する正解のタグに関連する素性のスコアを高くし、該不正解のタグに関連する素性のスコアを低くすることで、解析部による次の文の形態素解析で用いられる分割モデルを修正する。【図１】
0005809381.tif 000002
【図２】
0005809381.tif 000003
【図３】
0005809381.tif 000004
【図４】
0005809381.tif 000005
【図５】
0005809381.tif 000006
【図６】
0005809381.tif 000007
【図７】
0005809381.tif 000008
【図８】
0005809381.tif 000009