(57)【要約】【課題】統計量を利用して、入力した文字列である入力データを精度良く単語に分割する。【解決手段】処理対象の文字列を入力してそれを入力データとし（ステップ１００）、事前に準備した文書集合における文字列の出現頻度を示す上述の統計情報を利用することにより、その入力データに含まれる全ての文字列について文字列結束度を計算する（ステップ２００）。文字列結束度は、ある文字列とそれに含まれる任意の部分文字列それぞれとの間の出現頻度の割合をすべて調べ、それら全ての割合の平均を求めることによって算出する。全ての文字列について文字列結束度を算出した後、全ての文字列それぞれの文字列結束度に基づいて、入力データ全体として文字列結束度の総和が最大となる文字列の並びを求め（ステップ３００）、得られた文字列を単語とし単語分割の結果を出力する（ステップ４００）。【選択図】    図１
2004348584.tif 000002
【特許請求の範囲】
【請求項１】
入力した文字列である入力データを単語に分割する単語分割方法であって、
事前に準備した文書集合における文字列の出現頻度を利用することにより、入力データに含まれる全ての文字列について、該文字列と該文字列に含まれる任意の部分文字列それぞれとの間の出現頻度の割合の平均を該文字列の語らしさを示す文字列結束度として算出する処理を実行する文字列結束度計算ステップと、
前記文字列結束度計算ステップによって得られた前記全ての文字列それぞれの文字列結束度に基づいて前記入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定し、その決定された並びに対応する各文字列を単語として出力する最適文字列決定ステップとを具備することを特徴とする単語分割方法。
【請求項２】
前記文字列結束度計算ステップは、入力データに含まれる全ての文字列のうち文字列が１文字である文字列については、該文字列にその直前の文字列を付加した文字列と該直前の文字列との間の出現頻度の割合と、該文字列にその直後の文字列を付加した文字列と該直後の文字列との間の出現頻度との割合と、前記文書集合における該文字列の出現頻度の割合とに基づいて、該文字列の語らしさを示す文字列結束度を算出することを特徴とする請求項１記載の単語分割方法。
【請求項３】
入力した文字列である入力データを単語に分割する単語分割装置であって、
事前に準備した文書集合における文字列の出現頻度を利用することにより、入力データに含まれる全ての文字列について、該文字列と該文字列に含まれる任意の部分文字列それぞれとの間の出現頻度の割合の平均を該文字列の語らしさを示す文字列結束度として算出する処理を実行する文字列結束度計算手段と、
前記文字列結束度計算手段によって得られた前記全ての文字列それぞれの文字列結束度に基づいて前記入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定し、その決定された並びに対応する各文字列を単語として出力する最適文字列決定手段とを具備することを特徴とする単語分割装置。
【請求項４】
前記文字列結束度計算手段は、入力データに含まれる全ての文字列のうち文字列が１文字である文字列については、該文字列にその直前の文字列を付加した文字列と該直前の文字列との間の出現頻度の割合と、該文字列にその直後の文字列を付加した文字列と該直後の文字列との間の出現頻度との割合と、前記文書集合における該文字列の出現頻度の割合とに基づいて、該文字列の語らしさを示す文字列結束度を算出することを特徴とする請求項３記載の単語分割装置。
【請求項５】
入力した文字列である入力データを単語に分割する言語処理をコンピュータに実行させるプログラムが記憶されたコンピュータ読み取り可能な記憶媒体であって、
前記プログラムは、
事前に準備した文書集合における文字列の出現頻度を利用することにより、入力データに含まれる全ての文字列について、該文字列と該文字列に含まれる任意の部分文字列それぞれとの間の出現頻度の割合の平均を該文字列の語らしさを示す文字列結束度として算出する処理を実行する文字列結束度計算手順と、
前記文字列結束度計算手順によって得られた前記全ての文字列それぞれの文字列結束度に基づいて前記入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定し、その決定された並びに対応する各文字列を単語として出力する最適文字列決定手順とをコンピュータに実行させることを特徴とする記憶媒体。
【請求項６】
前記文字列結束度計算手順は、入力データに含まれる全ての文字列のうち文字列が１文字である文字列については、該文字列にその直前の文字列を付加した文字列と該直前の文字列との間の出現頻度の割合と、該文字列にその直後の文字列を付加した文字列と該直後の文字列との間の出現頻度との割合と、前記文書集合における該文字列の出現頻度の割合とに基づいて、該文字列の語らしさを示す文字列結束度を算出することを特徴とする請求項５記載の記憶媒体。
【請求項７】
入力した文字列である入力データを単語に分割する言語処理をコンピュータに実行させるプログラムであって、
事前に準備した文書集合における文字列の出現頻度を利用することにより、入力データに含まれる全ての文字列について、該文字列と該文字列に含まれる任意の部分文字列それぞれとの間の出現頻度の割合の平均を該文字列の語らしさを示す文字列結束度として算出する処理を実行する文字列結束度計算手順と、
前記文字列結束度計算手順によって得られた前記全ての文字列それぞれの文字列結束度に基づいて前記入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定し、その決定された並びに対応する各文字列を単語として出力する最適文字列決定手順とをコンピュータに実行させることを特徴とするプログラム。
【請求項８】
前記文字列結束度計算手順は、入力データに含まれる全ての文字列のうち文字列が１文字である文字列については、該文字列にその直前の文字列を付加した文字列と該直前の文字列との間の出現頻度の割合と、該文字列にその直後の文字列を付加した文字列と該直後の文字列との間の出現頻度との割合と、前記文書集合における該文字列の出現頻度の割合とに基づいて、該文字列の語らしさを示す文字列結束度を算出することを特徴とする請求項７記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力文字列を単語に分割するための方法、装置、記憶媒体およびプログラムに関する。
【０００２】
【従来の技術】
現在、世の中には大量の文書が新たに生まれ続けている。そのため、その文書中に出現する単語は、辞書には登録されていない語（未知語）が含まれている。従来、文書を単語分割する際には辞書を用いる手法が利用されてきた。しかしながら、文書中に辞書には登録されていない未知語が含まれていると単語分割を誤ってしまう可能性がある。そこで、辞書によらない統計量のみによる単語分割手法が提案されている。
【０００３】
例えば、事前に準備された文書集合中の文字列の統計量を用いて、入力文字列における任意の文字列の統計量とその長さから語らしさを求め、入力文字列全体として語らしさの総和が最大となる文字列の並びを求めることにより単語分割を行うものがある（例えば、非特許文献１参照。）。
【０００４】
また、事前に準備された文書集合中での文字列の出現頻度を用いて、入力文字列の先頭から順に単語境界を求めることにより単語分割を行うものがある（例えば、非特許文献２参照。）。
【０００５】
【非特許文献１】
小澤智裕、他３名、「情報検索の類似尺度を用いた検索要求文の単語分割」、言語処理学会第５回年次大会、１９９９、ｐｐ．３０６−３０８
【非特許文献２】
中渡瀬秀一、他２名、「統計的手法による辞書未登録語の獲得法」、電子情報通信学会論文誌、Ｄ−ＩＩ、Ｖｏｌ．Ｊ８１−Ｄ−ＩＩ、Ｎｏ．２、１９９８、ｐｐ．２３８−２４８
【０００６】
【発明が解決しようとする課題】
しかしながら、非特許文献１は、ある文字列の語らしさを求めるのにキーワードとなりやすいものを高い値とする統計量を用いているため、語であってもキーワードとなりにくいものに関しては値が低くなり、分割誤りを起こす原因となる。
【０００７】
また、非特許文献２は、ある文字列とそれに後続する１文字とそれらを連結した文字列の出現頻度を基にその間の語境界を調べるため、語境界を決めるのに用いる情報が局所的なものに偏っており、分割誤りを起こす場合がある。
【０００８】
本発明は上述の事情を考慮してなされたものであり、その目的とするところは、キーワードに依存せずに語らしさを求めることができ、また文字列に関する少数の偏った情報から計算されることによる語らしさの誤りを防止できるようにして、統計量による単語分割を精度良く行うことが可能な方法、装置、記憶媒体およびプログラムを提供することにある。
【０００９】
【課題を解決するための手段】
上記課題を解決するために、請求項１に係る本発明は、入力した文字列である入力データを単語に分割する単語分割方法であって、事前に準備した文書集合における文字列の出現頻度を利用することにより、入力データに含まれる全ての文字列について、該文字列と該文字列に含まれる任意の部分文字列それぞれとの間の出現頻度の割合の平均を該文字列の語らしさを示す文字列結束度として算出する処理を実行する文字列結束度計算ステップと、前記文字列結束度計算ステップによって得られた前記全ての文字列それぞれの文字列結束度に基づいて前記入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定し、その決定された並びに対応する各文字列を単語として出力する最適文字列決定ステップとを具備することを特徴とする。
【００１０】
この単語分割方法においては、事前に準備した文書集合における文字列の出現頻度を統計情報として利用して、入力文字列における全ての文字列の語らしさが求められる。この場合、各文字列の語らしさは、ある文字列とそれに含まれる任意の部分文字列それぞれとの間の出現頻度の割合を調べ、全ての割合の平均を該文字列の文字列結束度として算出することにより求められる。このような文字列結束度を利用することにより、キーワードに依存せず語らしさを計算することができる。また、文字列毎にそれに含まれる任意の部分文字列それぞれを考慮しているので、文字列に関する少数の偏った情報から計算されることによる語らしさの誤りを防ぐことが可能となり、統計情報のみを利用した単語分割を精度良く行うことが可能となる。
【００１１】
また、請求項２に係る本発明は、ある文字列が１文字である場合でもその語らしさを正しく計算できるようにするために、入力データに含まれる全ての文字列のうち文字列が１文字である文字列については、該文字列にその直前の文字列を付加した文字列と該直前の文字列との間の出現頻度の割合と、該文字列にその直後の文字列を付加した文字列と該直後の文字列との間の出現頻度との割合と、前記文書集合における該文字列の出現頻度の割合とに基づいて、該文字列の語らしさを示す文字列結束度を算出することを特徴とする。
【００１２】
これにより、１文字という特殊な場合の語らしさについても精度よく算出することが可能になる。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の一実施形態に係る単語分割方法の処理手順の概要を示すフローチャートである。この処理手順は、入力文字列を単語に分割するという分かち書きのための言語処理を実行する方法であり、辞書を用いずに統計情報のみを利用して単語分割を実行する。統計情報としては、事前に準備した文書集合における文字列の出現頻度が用いられる。
【００１４】
まず、処理対象の文字列を入力してそれを入力データとし（ステップ１００）、事前に準備した文書集合における文字列の出現頻度を示す上述の統計情報を利用することにより、その入力データに含まれる全ての文字列について文字列結束度を計算する（ステップ２００）。文字列結束度は該文字列の語らしさを図る指標であり、本実施形態においては、ある文字列とそれに含まれる任意の部分文字列それぞれとの間の出現頻度の割合をすべて調べ、それら全ての割合の平均を該文字列の文字列結束度とする。
【００１５】
全ての文字列について文字列結束度を算出した後、全ての文字列それぞれの文字列結束度に基づいて、入力データ全体として文字列結束度の総和が最大となる文字列の並びを求め（ステップ３００）、得られた文字列を単語とし、単語分割の結果を出力する（ステップ４００）。
【００１６】
図２は、本発明の一実施形態である単語分割装置の構成を示すブロック図である。
単語分割装置１０００は上述の単語分割処理を実行する装置であり、図示のように、文字列結束度計算部１１００および最適文字列決定部１２００を備えている。文字列結束度計算部１１００は入力データに含まれる全ての文字列それぞれの文字列結束度を算出するものであり、文字列を入力データとして入力し（上述のステップ１００）、その入力データに含まれる全ての文字列について文字列結束度を計算する（上述のステップ２００）。最適文字列決定部１２００は、全ての文字列の文字列結束度から入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定し（上述のステップ３００）、その決定された並びに対応する各文字列を単語分割の結果として出力する（上述のステップ４００）。
【００１７】
単語分割装置１０００は専用の言語処理装置によって実現することも出来るが、通常のコンピュータによっても実現することもできる。このコンピュータの構成の一例を図３に示す。
図３に示されているように、このコンピュータは、ＣＰＵ１１、主記憶装置（メモリ）１２、二次記憶装置（ディスク装置）１３、入力装置１４、および出力装置１５などから構成されている。これらＣＰＵ１１、メモリ１２、ディスク装置１３、入力装置１４、および出力装置１５はバス１０に接続されている。ＣＰＵ１１はメモリ１２上のプログラムに従って各種演算処理を実行する。本実施形態では、ＣＰＵ１１に上述の単語分割処理を実行させるために単語分割プログラム２１が用いられる。
【００１８】
単語分割プログラム２１はたとえばＣＤ−ＲＯＭなどのコンピュータ読み取り可能な記憶媒体を通じて本コンピュータにインストールされたものである。ＣＰＵ１１は、単語分割プログラム２１をディスク装置１３からメモリ１２にロードして実行する。またディスク装置１３には、文字列出現頻度情報２２も予め格納されている。この文字列出現頻度情報２２は大量のテキストデータなどの文書集合から予め求められた上述の統計情報であり、入力装置１４や他のプログラム等から入力される。入力装置１４は、単語分割プログラム２１によって処理される入力データや、ディスク装置１３の文字列出現頻度情報２２をコンピュータに入力するために用いられる。出力装置１５は、単語分割プログラム２１によって得られた単語分割の結果を出力するために用いられる。
【００１９】
単語分割プログラム２１は、それを構成するモジュールとして、文字列入力処理部３１、文字列結束度計算処理部３２、および最適文字列決定処理部３３を有している。文字列入力処理部３１は処理対象の文字列を例えば入力装置１４や他のプログラム等から入力データとして入力する処理をＣＰＵ１１に実行させるモジュールである。文字列結束度計算処理部３２は、入力データに含まれる全ての文字列に対して文字列結束度を求めるための演算処理をＣＰＵ１１に実行させるモジュールである。最適文字列決定処理部３３は、入力データに含まれる全ての文字列それぞれの文字列結束度から、入力データ全体として文字列結束度の総和が最大となる文字列の並びを決定して単語分割の結果を出力装置１５や他のプログラムに出力する演算処理をＣＰＵ１１に実行させるモジュールである。
【００２０】
単語分割の結果は、例えば文書検索のような様々な言語処理に利用される。例えば、検索対象とすべき文書データを構成する文字列を入力データとすることにより、当該文書データを検索するためのインデックスを作成することが出来、また検索用の質問文として入力された文字列を入力データとすることにより、当該質問文に対応する検索語を求めることも出来る。
【００２１】
以下、単語分割処理の具体的な例について説明する。なお、この例では対象となる言語を日本語として説明するが、対象となる言語はこれに限定されない。
以下では、図２の単語分割装置に基づいて説明する。
まず、図２の文字列結束度計算部１１００において、例えば、文字列“日本国民の”が入力される。また、入力された文字列を入力データとする。
【００２２】
次に、入力データに含まれる全ての文字列に対して、文字列結束度（以下、単に結束度という）を計算する。結束度は、上述した統計情報、つまり予め準備しておいた文書集合から求めておいた任意の文字列に対する出現頻度および文書集合全体の文字数を利用して計算する。例えば、図４のように文字列“日”の出現頻度は２０００００、文字列“日本”の出現頻度は８００００、文書全体の文字数（Ｎ）は１０００００００であったとする。続いて、結束度の計算を説明する前に、いくつかの事柄について事前に説明する。まず、入力データは順に１番目からｍ番目の文字の並びとする。また、ｗ（ｘ，ｙ）は、入力データの先頭から数えてｘ番目の文字からｙ番目の文字までの文字列とする。また、ｔｆ（ｗ（ｘ，ｙ））は、文字列ｗ（ｘ，ｙ）に対し、事前準備した文書集合中の出現頻度とする。また、結束度Ｋ（ｗ（ｘ，ｙ））は、文字列ｗ（ｘ，ｙ）の結束度を表わす。
【００２３】
次に、結束度の計算について詳しく説明する。
文字列が２文字以上の場合の結束度は、例えば、図５の（ａ）の式で求まるとする。この式は、文字列ｗ（ｉ，ｉ＋ｎ）における結束度である。ただし、１≦ｉ≦ｍであり、ｎは入力データの最大の文字数ｍからｉを引いた値を超えない範囲（ｎ≦ｍ−ｉ）の値である。
【００２４】
中括弧（“｛”と“｝”）で囲まれた第１項は、ある文字列ｗ（ｉ，ｉ＋ｎ）と任意の部分文字列ｗ（ａ，ｂ）それぞれとの間の出現頻度の割合の総和である。ここで、Ｃは部分文字列ｗ（ａ，ｂ）の最短の長さを規定する定数である。例えば、全ての長さの部分文字列ｗ（ａ，ｂ）を考慮する場合、文字列ｗ（ｉ，ｉ＋ｎ）に含まれる全ての任意の部分文字列ｗ（ａ，ｂ）それぞれに対し、文字列ｗ（ｉ，ｉ＋ｎ）と部分文字列ｗ（ａ，ｂ）との間の出現頻度の割合を求め、足しあわせる（なお、Ｃ＝ｋとすると、文字列ｗ（ｉ，ｉ＋ｎ）の部分文字列のうち最短の部分文字列の長さがｋ＋１となる。よって、例えば、Ｃ＝１とすると、１文字の部分文字列を計算から除外することもできる。）。最後に１引いているのは、文字列ｗ（ｉ，ｉ＋ｎ）自身が部分文字列ｗ（ａ，ｂ）と同じ場合の出現頻度の割合を含めないためである。
【００２５】
中括弧（“｛”と“｝”）で囲まれた第２項は、第１項で考慮した部分文字列の総数の逆数である。（ｉ＋ｎ）−（ａ＋Ｃ）＋１は第１項の最も内側のΣの総数（ａ＋Ｃからｉ＋ｎ）であり、それを第１項と同じ外側のΣによってｉからｉ＋ｎまで足し合わせている。最後に１引いているのは、第１項では、文字列ｗ（ｉ，ｉ＋ｎ）自身が部分文字列ｗ（ａ，ｂ）と同じ場合の出現頻度の割合を含めないためで、その分を総数から除いている。
【００２６】
以上から、結束度Ｋ（ｗ（ｉ，ｉ＋ｎ））は、文字列ｗ（ｉ，ｉ＋ｎ）とそれに含まれる任意の部分文字列ｗ（ａ，ｂ）それぞれとの間の出現頻度の割合を全て求め、全種類の部分文字列数で割ったものとなる。これにより、少数の文字列に関する偏った情報から語らしさを求めるよりも複数の任意の部分文字列を考慮することでより、結束度を精度良く求めることができる。
例えば、文字列“日本国民”の結束度Ｋ（ｗ（１，４））を図４の文字列の出現頻度を用いて求める。図５からｉ＝１、ｎ＝３となる。またＣ＝０（つまり、全ての部分文字列を考慮する）とする。
【００２７】
Ｋ（ｗ（１，４））の第１項は、ｔｆ（ｗ（１，４））／ｔｆ（ｗ（１，１））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（１，２））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（１，３））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（１，４））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（２，２））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（２，３））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（２，４））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（３，３））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（３，４））＋ｔｆ（ｗ（１，４））／ｔｆ（ｗ（４，４））−１＝３０／２０００００＋３０／８００００＋３０／７００＋３０／３０＋３０／１６００００＋３０／１０００＋３０／６０＋３０／１９００００＋３０／１００００＋３０／６００００−１＝０．５７７２となる。ここで、部分文字列ｗ（１，４）は対象としている文字列自身であり、その出現頻度はｔｆ（ｗ（１，４））＝３０／３０＝１となるので、これを含めないために最後で１引いている。
【００２８】
次に、Ｋ（ｗ（１，４））の第２項は、１／（（（１＋３）−（１＋０）＋１）＋（（１＋３）−（２＋０）＋１）＋（（１＋３）−（３＋０）＋１）＋（（１＋３）−（４＋０）＋１）−１）＝１／９となり、文字列ｗ（１，４）自身を除いた部分文字列の数は９通りである。
最終的に、文字列“日本国民”の結束度Ｋ（ｗ（１，４））＝０．５７７２×１／９＝０．０６４となる。
文字列が１文字の場合の結束度は、例えば、図５の（ｂ）の式を用いて算出する。この式は、ｗ（ｉ，ｉ）における結束度である。ただし、１≦ｉ≦ｍである。
【００２９】
中括弧（“｛”と“｝”）で囲まれた、第１項は、文字列ｗ（ｉ，ｉ）にその直前の文字ｗ（ｉ−１，ｉ−１）を付加した文字列ｗ（ｉ−１，ｉ）と当該直前の文字ｗ（ｉ−１，ｉ−１）との間の出現頻度の割合と、文字列ｗ（ｉ，ｉ）にその直後の文字ｗ（ｉ＋１，ｉ＋１）を付加した文字列ｗ（ｉ，ｉ＋１）と当該直後の文字ｗ（ｉ＋１，ｉ＋１）との間の出現頻度の割合、との平均である。これらは、現在注目している文字の前後の文字を考慮することで、文字列が２文字以上の場合と比べて結束度が極端に小さくなるのを防いでいる。なお、ｉが入力データの先頭の場合、第１項における先頭の項を０とし、ｉが入力データの末尾の場合、第１項における後の項を０としている。
中括弧（“｛”と“｝”）で囲まれた、第２項は、事前に準備された文書集合における文字列ｗ（ｉ，ｉ）の出現頻度の割合である。これは、ｉが入力データの先頭や末尾の場合、極端に値が小さくなるのを防ぐのに有効である。
【００３０】
図５の（ｂ）の式の全体としては、第１項に重みαを、第２項に重み（１−α）を掛けている。これにより、事前に準備された文書集合の規模に合わせて、１文字に対する扱いを調整することが可能となる。
例えば、α＝１／２とし、図４の文字列の出現頻度を用いると、入力データの先頭文字“日”の結束度は、Ｋ（ｗ（１，１））＝１／２×（０＋ｔｆ（ｗ（１，２））／ｔｆ（ｗ（２，２）））／２＋１／２×ｔｆ（ｗ（１，１））／Ｎ＝１／２×（０＋８００００／１６００００）／２＋１／２×２０００００／１０００００００＝０．１３５となる。
【００３１】
また、文字列“本”の結束度は、Ｋ（ｗ（２，２））＝１／２×（ｔｆ（ｗ（１，２））／ｔｆ（ｗ（１，１））＋ｔｆ（ｗ（２，３））／ｔｆ（ｗ（３，３）））／２＋１／２×ｔｆ（ｗ（２，２））／Ｎ＝１／２×（８００００／２０００００＋１０００／１９００００）／２＋１／２×１６００００／１０００００００＝０．１０９となる。
また、入力データの末尾文字“の”結束度は、Ｋ（ｗ（５，５））＝１／２×（ｔｆ（ｗ（４，５））／ｔｆ（ｗ（４，４））＋０）／２＋１／２×ｔｆ（ｗ（５，５））／Ｎ＝１／２×（５０００／６００００＋０）／２＋１／２×１６０００００／１０００００００＝０．１００となる。以上の結果、入力データ中に含まれる全ての文字列の結束度は図６のようになる。
【００３２】
なお、文字列が１文字である文字列について図５の（ｂ）の式を用いるのは、１文字という特殊な場合の語らしさについても精度よく算出するためであり、２文字以上の文字列の場合と同様に図５の（ａ）の式を利用することもできる。
図５の（ｂ）の式を利用する場合には、文字列結束度計算部１１００においては、入力データに含まれる全ての文字列が１文字の文字列であるか、２文字以上の文字列であるかが判別され、その判別結果に基づいて適用すべき式が選択される。
【００３３】
次に、図２の最適文字列決定部１２００では、全ての文字列それぞれの結束度から入力データ全体で文字列の結束度の総和が最大となる文字列の並びを求める。大まかには、入力データに含まれる全ての文字列について、その文字列の先頭からある文字までの結束度の総和が最大と文字列の並びを順に求めていき、末尾文字まで求まった時点で先頭から末尾まで結束度の総和が最大となる文字列の並びを選択する。
【００３４】
以下、図７を用いて、入力データ全体文字列の結束度の総和が最大となる文字列の並びの求め方の例を説明する。
図７の各四角は“日本国民の”に含まれる全ての文字列に関するデータを表わしている。四角の上段は、“文字列の識別ＩＤ，文字列”である。中段は“文字列の結束度，（入力データの先頭からその文字列までの文字列並びについて各結束度の総和が最大となるもの（最大連結結束度））”である。下段は、“最大連結結束度を選んだ場合の１つ前の文字列の識別ＩＤ”である。なお、上段および中段の文字列の結束度はあらかじめ、図６の結束度算出結果を利用して格納しておく。
【００３５】
次に、入力データの先頭文字から順に、先頭から現在注目している文字までの結束度の総和を求める。
例えば、最初に入力データの先頭“日”から始まる文字列を順に調べる。
文字列“日”の場合は先頭の文字列であるので、上段が“ｗ（１，１），日”であるデータに対し、ｗ（１，１）の結束度０．１３５をそのまま、最大連結結束度として中段の括弧に格納され、下段に“…”（先頭なので１つ前の文字列がないことを意味する）が格納される。ｗ（１，２）〜ｗ（１，５）についても同様に処理される。
【００３６】
次に、入力データの２番目の“本”から始まる文字列を順に調べる。
文字列“本”の場合は、上段が“ｗ（２，２），本”であるデータに対し、ｗ（２，２）の結束度は０．１０９である。ｗ（２，２）の最大連結結束度は、１つ前の文字列における最大連結結束度に、ｗ（２，２）の結束度を足したものだが、１つ前の文字列はｗ（１，１）しかない。よって、ｗ（２，２）の最大連結結束度は、０．１３５＋０．１０９＝０．２４４となり、中段の括弧に０．２４４が格納され、下段には“ｗ（１，１）”が格納される。ｗ（２，３）〜ｗ（２，５）についても同様に処理される。
【００３７】
次に、入力データの３番目の“国”から始まる文字列を順に調べる。
文字列“国”の場合は、上段が“ｗ（３，３），国”であるデータに対し、ｗ（３，３）の結束度は０．０５２である。ｗ（３，３）の最大連結結束度は、１つ前の文字列における最大連結結束度に、ｗ（３，３）の結束度を足したものだが、１つ前の文字列はｗ（２，２）とｗ（１，２）の２通りある。ｗ（２，２）の最大連結結束度は０．２４４であり、ｗ（１，２）の最大連結結束度は０．４５０であるので、最も大きなｗ（１，２）の方を選択する（図７では、選択された方を実線で、選択されなかった方を点線でつないでいる）。ｗ（３，３）の最大連結結束度は、０．４５０＋０．０５２＝０．５０２となり、中段の括弧に０．５０２が、下段には“ｗ（１，２）”が格納される。ｗ（３，４）、ｗ（３，５）についても同様に処理される。
同様に入力データの最後の文字から始まる文字列まで順に調べると、図７にあるようにｗ（５，５）までデータが格納される。
【００３８】
次に、入力データの最後の文字を含む文字列同士（図７の２重線で囲まれた複数の四角のデータ）で最大連結結束度を比較し、最大となった文字列並びを入力データにおいて最適な文字列の並びとして選択する。ｗ（１，５）、ｗ（２，５）、…、ｗ（５，５）について比較すると、中段の最大連結結束度が０．６６０となるｗ（５，５）が選択される。
【００３９】
次に、ｗ（５，５）から１つ前の文字列の識別ＩＤを入力データの先頭まで順に調べると、ｗ（５，５）の１つ前の文字列はｗ（３，４）、ｗ（３，４）の１つ前の文字列はｗ（１，２）であると分かる（図７では太線で連結された文字並びのもの）。
最後に、得られた文字列を単語とし、単語分割の結果を出力する。
例えば、“日本／国民／の”にように分割箇所に“／”（スラッシュ）を入れて出力する。なお、各文字列の結束度も同時出力しても構わない。
【００４０】
以上のように、本実施形態によれば、事前に準備された文書集合中の文字列の統計量を用いて、入力文字列における全ての文字列の語らしさを計算し、入力文字列全体として語らしさの総和が最大となる文字列の並びを求める単語分割において、ある文字列の語らしさ（結束度）をある文字列とそれに含まれる任意の部分文字列との出現頻度の割合を調べ、全ての割合の平均とすることで、キーワードに依存せず語らしさを計算でき、また、任意の部分文字列を考慮しているので、文字列に関する少数の偏った情報から計算されることによる語らしさの誤りを防ぐことが可能となる。
【００４１】
また、上記のある文字列が１文字である場合は部分文字列が該文字列自身のため、常に語らしさが変わらないという問題について、該文字列に前（後）の文字列追加した文字列と該文字列の前（後）の文字列との出現頻度の割合や、事前に準備された文書集合中における該文字列の出現頻度の割合を用いることで、１文字という特殊な場合の語らしさを精度よく計算できる。
【００４２】
なお、図３の構成においては、以上の各処理は全て、演算手段としてのＣＰＵ１１によって実行される。よって、以上の各処理の手順をＣＰＵ１１に実行させる上述の単語分割プログラム２１をコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータに導入するだけで、本実施形態と同様の効果を容易に得ることが出来る。
【００４３】
また、実際には上述の統計情報を生成するための手順をＣＰＵ１１に実行させるモジュールについても単語分割プログラム２１の一部として設けておくこともできる。
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、キーワードに依存せずに語らしさを求めることができるとともに、文字列に関する少数の偏った情報から計算されることによる語らしさの誤りを防止できるようなり、統計量による単語分割を精度良く行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る単語分割処理の処理手順の概要を示すフローチャート。
【図２】本発明の一実施形態に係る単語分割装置の構成例を示すブロック図。
【図３】本発明の一実施形態に係るプログラムの構成およびそのプログラムを実行するコンピュータの構成例を示すブロック図。
【図４】文書集合から求めておいた任意の文字列に対する出現頻度および文書集合全体の文字数の一例を示す図。
【図５】上記単語分割処理で使用される文字列結束度の計算式の一例を示す図。
【図６】上記単語分割処理で算出される文字列結束度の一例を示す図。
【図７】上記単語分割処理で行われる、入力データ全体での文字列結束度の総和を計算する処理を説明するための図。
【符号の説明】
１００〜４００…ステップ、１０００…単語分割装置、１１００…文字列結束度計算部、１２００…最適文字列決定部、１１…ＣＰＵ、１２…メモリ、２１…単語分割プログラム、３１…文字列入力処理部、３２…文字列結束度計算処理部、３３…最適文字列決定処理部。
【図１】
2004348584.tif 000003
【図２】
2004348584.tif 000004
【図３】
2004348584.tif 000005
【図４】
2004348584.tif 000006
【図５】
2004348584.tif 000007
【図６】
2004348584.tif 000008
【図７】
2004348584.tif 000009