(57)【要約】【課題】本発明は、簡略な構成に従いつつ、分割方法が未知の記号列であっても、記号列を分割できるようにする新たな記号列分割技術の提供を目的とする。【解決手段】入力記号列を記号単位に分割することで結合対象となる記号要素を生成する。続いて、基本記号列を参照することで、記号要素および隣接する記号要素対の出現頻度を取得し、それらの出現頻度を用いてそれらの記号要素対の結合度を評価することで、それらの記号要素対の中から高い結合度を示すものを結合対象として決定する。続いて、その高い結合度を示す記号要素対を結合して新たな記号要素として、高い結合度を示す記号要素対がなくなるまでこの処理を繰り返すことで、入力記号列を分割する。基本記号列に現れる記号単位や記号列の出現頻度を利用するだけで記号列を自動分割できることから、簡略な構成に従いつつ、分割方法が未知の記号列であっても自動分割できるようになる。【選択図】　　　　　図１
2004013759.tif 000002
【特許請求の範囲】
【請求項１】
処理対象の記号列を分割する記号列分割装置において、
基本記号列を格納する手段と、
処理対象の記号列を記号単位に分割することで、結合対象となる記号要素を生成する手段と、
上記基本記号列を参照することで、上記記号要素の出現頻度と、隣接する上記記号要素の連結により定義される記号要素対の出現頻度とを取得する手段と、
上記出現頻度を使って上記記号要素対の結合度を評価することで、上記記号要素対の結合を行うのか否かを決定するとともに、その結合を行うことを決定する場合には、上記記号要素対の中から結合対象を決定する手段と、
上記決定した記号要素対を結合することで新たな記号要素を生成して、上記出現頻度の取得から処理を繰り返すことを指示する手段とを備えることを、
特徴とする記号列分割装置。
【請求項２】
請求項１記載の記号列分割装置において、
上記決定する手段は、全ての上記結合度が規定の閾値よりも小さな値を示す場合には、上記記号要素対の結合を行わないことを決定することを、
特徴とする記号列分割装置。
【請求項３】
請求項１記載の記号列分割装置において、
上記決定する手段は、上記記号要素対の結合を決定する場合に、最大の結合度を示す１つの上記記号要素対を結合対象として決定することを、
特徴とする記号列分割装置。
【請求項４】
処理対象の記号列を分割する記号列分割方法において、
処理対象の記号列を記号単位に分割することで、結合対象となる記号要素を生成する過程と、
予め用意される基本記号列を参照することで、上記記号要素の出現頻度と、隣接する上記記号要素の連結により定義される記号要素対の出現頻度とを取得する過程と、
上記出現頻度を使って上記記号要素対の結合度を評価することで、上記記号要素対の結合を行うのか否かを決定するとともに、その結合を行うことを決定する場合には、上記記号要素対の中から結合対象を決定する過程と、
上記決定した記号要素対を結合することで新たな記号要素を生成して、上記出現頻度の取得から処理を繰り返すことを指示する過程とを備えることを、
特徴とする記号列分割方法。
【請求項５】
請求項４記載の記号列分割方法において、
上記決定する過程では、全ての上記結合度が規定の閾値よりも小さな値を示す場合には、上記記号要素対の結合を行わないことを決定することを、
特徴とする記号列分割方法。
【請求項６】
請求項４記載の記号列分割方法において、
上記決定する過程では、上記記号要素対の結合を決定する場合に、最大の結合度を示す１つの上記記号要素対を結合対象として決定することを、
特徴とする記号列分割方法。
【請求項７】
請求項４ないし６のいずれか１項に記載の記号列分割方法の実現に用いられる処理をコンピュータに実行させるための記号列分割プログラム。
【請求項８】
請求項４ないし６のいずれか１項に記載の記号列分割方法の実現に用いられる処理をコンピュータに実行させるための記号列分割プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、処理対象の記号列を分割する記号列分割装置及びその方法と、その記号列分割方法の実現に用いられる記号列分割プログラム及びそのプログラムを記録した記録媒体とに関し、特に、簡略な構成に従いつつ、分割方法が未知の記号列であっても、処理対象の記号列を分割できるようにする記号列分割装置及びその方法と、その記号列分割方法の実現に用いられる記号列分割プログラム及びそのプログラムを記録した記録媒体とに関する。
【０００２】
自然言語処理システム、言語処理システム、情報検索システム、情報抽出システム、遺伝子情報システム等では、記号列を分割する技術が用いられている。この記号列分割技術については、分割方法が未知の記号列であっても、記号列を分割できるようにしていくことが好ましい。
【０００３】
【従来の技術】
記号列を分割するための従来の記号列分割装置は、Ｃ言語やＰｅｒｌ言語などのプログラミングやルール記述言語を用いて記号列の分割を行なう方法や、分割すべき記号列の辞書を用いて記号列を分割する方法や、分割に関する正しい事例と間違った事例とを与えることにより分割法を機械学習する方法により実現されていた。
【０００４】
【発明が解決しようとする課題】
しかしながら、このような従来技術に従っていると、分割の方法を人間が分析して、コンピュータプログラムとして構成しなければならないとか、大規模の辞書を用意しなければならないとか、大量の正しい事例と間違った事例とを用意しなければならないという問題があった。
【０００５】
さらに、このような従来技術に従っていると、分割方法が未知の記号列については分割できないという大きな欠点があった。
【０００６】
本発明はかかる事情に鑑みてなされたものであって、簡略な構成に従いつつ、分割方法が未知の記号列であっても、処理対象の記号列を分割できるようにする新たな記号列分割技術の提供を目的とする。
【０００７】
【課題を解決するための手段】
この目的を達成するために、本発明の記号列分割装置は、簡略な構成に従いつつ、分割方法が未知の記号列であってもそれを分割できるようにするために、▲１▼基本記号列を格納する手段と、▲２▼処理対象の記号列を記号単位に分割することで、結合対象となる記号要素を生成する手段と、▲３▼基本記号列を参照することで、生成した記号要素の出現頻度と、隣接する記号要素の連結により定義される記号要素対の出現頻度とを取得する手段と、▲４▼取得した出現頻度を使って記号要素対の結合度を評価することで、記号要素対の結合を行うのか否かを決定するとともに、その結合を行うことを決定する場合には、記号要素対の中から結合対象を決定する手段と、▲５▼結合対象として決定した記号要素対を結合することで新たな記号要素を生成して、出現頻度の取得から処理を繰り返すことを指示する手段とを備えるように構成する。
【０００８】
以上の各処理手段により実現される本発明の記号列分割方法はコンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリなどの記録媒体に記録して提供することができる。
【０００９】
このように構成される本発明の記号列分割装置では、処理対象の記号列が与えられると、それを記号単位に分割することで、結合対象となる記号要素（記号単位や記号列で構成されるが、この処理段階では記号単位で構成されている）を生成する。
【００１０】
続いて、予め用意される基本記号列を参照することで、その生成した記号要素の出現頻度と、隣接する記号要素の連結により定義される記号要素対の出現頻度とを取得する。
【００１１】
続いて、その取得した出現頻度を使って各記号要素対の結合度を評価することで、記号要素対の結合を行うのか否かを決定するとともに、その結合を行うことを決定する場合には、記号要素対の中から結合対象となるものを決定する。
【００１２】
例えば、取得した出現頻度を使って隣接する記号要素間の結合度を評価して、全ての結合度が規定の値よりも小さな値を示す場合には、記号要素対の結合を行わないことを決定するとともに、記号要素対の結合を行うことを決定する場合に、最大の結合度を示す１つの記号要素対を結合対象として決定するのである。
【００１３】
続いて、結合対象として決定した記号要素対を結合することで新たな記号要素（記号列で構成されることになる）を生成して、出現頻度の取得から処理を繰り返すことを指示する。
【００１４】
このようにして、本発明では、予め用意される基本記号列に現れる記号単位や記号列の出現頻度を利用することで、処理対象の記号列を自動的に分割することができるようになることから、記号列の分割のためにプログラムやルールを作成する必要がなくなり、また、大規模の辞書を用意したり、大量の正しい事例と間違った事例とを用意する必要もなくなるので、記号列の分割を実現するために必要となる労力や費用や時間を大幅に削減できるようになる。
【００１５】
そして、本発明では、予め用意される基本記号列に現れる記号単位や記号列の出現頻度を利用することで、処理対象の記号列を自動的に分割することができるようになることから、分割法が未知の記号列や、分割法が部分的にしか判明していない記号列であっても、それを分割できるようになる。
【００１６】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
【００１７】
図１に、本発明の記号列分割装置１の一実施形態例を図示する。
【００１８】
この図に示すように、本発明の記号列分割装置１は、入力部１０と、記号列分割部１１と、基本記号列格納部１２と、記号列頻度計算部１３と、出力部１４とを備える。
【００１９】
この入力部１０は、処理対象となる入力記号列を入力して記号列分割部１１に受け渡す処理を行うとともに、その処理に先立って、基本記号列を入力して基本記号列格納部１２に格納する処理を実行する。
【００２０】
記号列分割部１１は、入力部１０から受け取った入力記号列を分割する処理を行う。
【００２１】
この分割処理を実現するために、記号列分割部１１は、▲１▼入力部１０から受け取った入力記号列を記号単位に分割する『分割機能』と、▲２▼入力記号列を構成する結合対象となる記号要素の出現頻度と、隣接する記号要素の連結により定義される記号要素対の出現頻度とに従って、それらの記号要素対の結合度を示す相互情報量ＭＩを計算する『ＭＩ計算機能』と、▲３▼ＭＩ計算機能の計算した相互情報量ＭＩに従って、入力記号列の分割が終了したのか否かを判断する『判断機能』と、▲４▼判断機能が入力記号列の分割が終了していないことを判断する場合に、結合する記号要素対を決定する『決定機能』と、▲５▼決定機能の決定した記号要素対を結合することで結合対象となる新たな記号要素を生成して、ＭＩ計算機能に処理を依頼する『結合機能』とを備える。
【００２２】
基本記号列格納部１２は、入力部１０の入力した基本記号列を保存する処理を行う。
【００２３】
記号列頻度計算部１３は、記号列分割部１１から記号要素や記号要素対を指定して出現頻度の取得要求が発行されると、基本記号列格納部１２に格納される基本記号列を参照することで、その指定される記号要素や記号要素対の出現頻度を計算して、記号列分割部１１に返す処理を行う。
【００２４】
出力部１４は、記号列分割部１１による入力記号列の分割が終了したときに、その分割結果を出力する処理を行う。
【００２５】
図２に、このように構成される本発明の記号列分割装置１が実行する処理フローの一実施形態例を図示する。
【００２６】
次に、この処理フローに従って、本発明の記号列分割装置１が実行する入力記号列の分割処理について詳細に説明する。
【００２７】
本発明の記号列分割装置１は、起動されると、先ず最初に、ステップ１で、基本記号列を入力して基本記号列格納部１２に保存する。このとき、基本記号列の長さＮを検出する。
【００２８】
例えば、「さくらがさく．さくらがさくころ．」という基本記号列が与えられるときには、この「さくらがさく．さくらがさくころ．」という基本記号列を入力して基本記号列格納部１２に保存するとともに、“Ｎ＝１６”を検出するのである。
【００２９】
続いて、ステップ２で、分割の処理対象となる入力記号列を入力する。このとき、入力記号列の長さＭを検出する。
【００３０】
例えば、「さくらさくらさく」という入力記号列が与えられるときには、この「さくらさくらさく」という入力記号列を入力するとともに、“Ｍ＝８”を検出するのである。
【００３１】
続いて、ステップ３で、入力記号列を記号単位に分割することでリストｒを生成する。
【００３２】
すなわち、入力記号列を構成するＭ個の記号単位をｔｉ（ｉ＝１〜Ｍ−１）で表すならば、
リストｒ＝＜ｔ０，ｔ１，ｔ２，・・・・・，ｔＭ−１＞
というリストｒを生成するのである。
【００３３】
例えば、「さくらさくらさく」という入力記号列を入力するときには、
リストｒ＝＜さ，く，ら，さ，く，ら，さ，く＞
というリストｒを生成することになる。
【００３４】
後述することから分かるように、リストｒのリスト要素としては、記号単位の他に、記号単位が結合することで構成される記号列がある。これから、リストｒのリスト要素ｔｉのことを記号要素と称している。
【００３５】
続いて、ステップ４で、基本記号列格納部１２に保存される基本記号列を使って、リストｒを構成する各記号要素ｔｉ（この処理段階では記号要素は記号単位となる）について、基本記号列に現れる出現頻度　ｆｒｅｑ［ｔｉ］　を計算するとともに、その記号要素ｔｉとそれに隣接する記号要素ｔｉ＋１との記号要素対の出現頻度　ｆｒｅｑ［ｔｉｔｉ＋１］を計算する。
【００３６】
ここで、このステップ４の処理については、後述するステップ８を経由してくる場合があり、その場合には、既に出現頻度を計算している場合があるので、そのような出現頻度については再計算する必要はない。
【００３７】
この記号要素ｔｉの出現頻度の計算（記号要素対の計算も同様）は、基本記号列の全体について、記号要素ｔｉが何回現れるのかを数えればよい。高速化のため、基本記号列が大規模な場合には、ｓｕｆｆｉｘ　ａｒｒａｙと呼ばれるインデックスが利用できる。なお、ｓｕｆｆｉｘ　ａｒｒａｙについては、文献（Ｍａｎｂｅｒ　ａｎｄ　Ｍｙｅｒｓ著，「Ｓｕｆｆｉｘ　Ａｒｒａｙｓ　：Ａ　Ｎｅｗ　Ｍｅｔｈｏｄ　ｆｏｒ　Ｏｎ−Ｌｉｎｅ　Ｓｔｒｉｎｇ　Ｓｅａｒｃｈｅｓ」，ＳＩＡＭ　Ｊｏｕｒｎａｌ　ｏｆ　Ｃｏｍｐｕｔｉｎｇ　，Ｖｏｌ．２２，Ｎｏ．５，ｐｐ．９３５−９４８，１９９３）に書かれている。
【００３８】
ｓｕｆｆｉｘ　ａｒｒａｙは、記号列の第ｎ番目の記号から始まり最後で終わる部分記号列を辞書式順序で昇順にソートしたものである。例えば、「さくらがさく．さくらがさくころ．」のｓｕｆｆｉｘ　ａｒｒａｙは、図３に示すものとなる。
【００３９】
ある記号列が与えられたとき、このｓｕｆｆｉｘ　ａｒｒａｙを２分検索することにより、その記号列が何回現れるかの出現頻度を計算できる。例えば、「さく」は、順位９番目から１２番目までの部分文字列の先頭に含まれるため、出現頻度は４回と計算できる。
【００４０】
このようにして、この処理段階では、ステップ４で、リストｒを構成する記号要素「さ」の出現頻度については、“ｆｒｅｑ〔さ〕＝４”と計算し、リストｒを構成する記号要素「く」の出現頻度については、“ｆｒｅｑ〔く〕＝４”と計算し、リストｒを構成する記号要素「ら」の出現頻度については、“ｆｒｅｑ〔ら〕＝２”と計算することになる。
【００４１】
そして、これに加えて、記号要素対「さ，く」の出現頻度については、“ｆｒｅｑ〔さく〕＝４”と計算し、記号要素対「く，ら」の出現頻度については、“ｆｒｅｑ〔くら〕＝２”と計算し、記号要素対「ら，さ」の出現頻度については、“ｆｒｅｑ〔らさ〕＝０”と計算することになる。
【００４２】
続いて、ステップ５で、計算した出現頻度を使って、ｉ＝１〜（Ｍ−２）となる全てのｉについて、相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算する。
【００４３】
すなわち、記号要素ｘ，ｙの相互情報量ＭＩ（ｘ，ｙ）については、
【００４４】
【数１】
2004013759.tif 000003
【００４５】
と計算（但し、ｌｏｇ　の底は２）できるので、この計算式に従って、記号要素ｔｉとそれに隣接する記号要素ｔｉ＋１の相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算するのである。
【００４６】
ここで、ｆｒｅｑ〔ｘｙ〕は記号要素ｘとｙを連結してできた記号要素対ｘｙの出現頻度を表しており、ｆｒｅｑ〔ｘ〕は記号要素ｘの出現頻度を表しており、ｆｒｅｑ〔ｙ〕は記号要素ｙの出現頻度を表している。また、ｆｒｅｑ〔ｘｙ〕、ｆｒｅｑ〔ｘ〕、ｆｒｅｑ〔ｙ〕のいずれかが０の場合には、ＭＩ（ｘ，ｙ）＝０と定義することにする。
【００４７】
この相互情報量ＭＩ（ｘ，ｙ）は、記号要素ｘとｙが単独で出現する場合よりも、記号要素対ｘｙとして出現する場合が多いときには、大きな値を示すことになる。従って、相互情報量ＭＩ（ｘ，ｙ）は、記号要素ｘとｙとの間の結合度を示すものとなる。
【００４８】
なお、この算出式は一例であり、相互情報量の計算式を同値な式に変形して計算してもよいし、相互情報量の計算式の別のバリエーションを用いてもよいことは言うまでもない。
【００４９】
このようにして、この処理段階では、ステップ５で、リストｒ＝＜さ，く，ら，さ，く，ら，さ，く＞の中に存在する（さ，く）、（く，ら）、（ら，さ）という記号要素対について相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することで、
ＭＩ（さ，く）＝２．０００
ＭＩ（く，ら）＝２．０００
ＭＩ（ら，さ）＝０
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することになる。
【００５０】
続いて、ステップ６で、計算した全ての相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が規定の閾値ｔよりも小さいのか否かを判断する。
【００５１】
例えば、この閾値ｔとして０が設定されるときには、相互情報量ＭＩ（ｔｉ，ｔｉ＋１）として、計算した全ての相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が０よりも小さいのか否かを判断するのである。
【００５２】
この判断処理に従って、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）の中に０よりも大きいものがあることを判断する場合には、ステップ７に進んで、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が最大となるｔｉとｔｉ＋１のペアを探し出して、リストｒからそのペアを削除し、その同じ場所に、そのペアを順に結合したｔｉｔｉ＋１を新たな記号要素として挿入してから、ステップ４に戻る。
【００５３】
このとき、最大となる相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が複数存在する場合には、例えば、先頭のものを最大のものとして選択することになる。
【００５４】
この処理段階では、リストｒ＝＜さ，く，ら，さ，く，ら，さ，く＞の中に存在する（さ，く）、（く，ら）、（ら，さ）という記号要素対について、
ＭＩ（さ，く）＝２．０００
ＭＩ（く，ら）＝２．０００
ＭＩ（ら，さ）＝０
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算しているので、先頭の「さ」と「く」をリストｒから取り除いて、その同じ場所に、「さく」を挿入することになる。
【００５５】
その結果、リストｒは、
ｒ＝＜さく，ら，さ，く，ら，さ，く＞
となる。
【００５６】
なお、最大となる相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が複数存在する場合に、どの相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を選ぶのかについては、別の方法を用いるようにしてもよい。また、そのいくつかを結合するように拡張することもできる。
【００５７】
このようにして、ステップ４に戻ると、計算した全ての相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が規定の閾値ｔよりも小さくなることを判断することになるまで、ステップ４〜ステップ７の処理を繰り返していくことになる。
【００５８】
〔１〕ステップ４に戻る第１回目の戻り処理
ステップ７を経由してステップ４に戻る（第１回目の戻り）と、ステップ４で、記号要素対「さく，ら」の出現頻度については、“ｆｒｅｑ〔さくら〕＝２”と計算する。
【００５９】
それ以外の出現頻度（記号要素の出現頻度と、記号要素対の出現頻度）については前回の処理までに計算しているので、それを使うことになる。
【００６０】
続いて、ステップ５で、リストｒ＝＜さく，ら，さ，く，ら，さ，く＞の中に存在する（さく，ら）、（ら，さ）、（さ，く）、（く，ら）という記号要素対について相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することで、
ＭＩ（さく，ら）＝２．０００
ＭＩ（ら，さ）＝０
ＭＩ（さ，く）＝２．０００
ＭＩ（く，ら）＝２．０００
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算する。
【００６１】
続いて、ステップ６で、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）の中に０よりも大きいものがあることを判断することで、ステップ７に進むと、相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が最大となる「さく」と「ら」を結合してから、再びステップ４に戻る。
【００６２】
その結果、リストｒは、
ｒ＝＜さくら，さ，く，ら，さ，く＞
となる。
【００６３】
〔２〕ステップ４に戻る第２回目の戻り処理
ステップ７を経由してステップ４に戻る（第２回目の戻り）と、ステップ４で、記号要素対「さくら，さ」の出現頻度については、“ｆｒｅｑ〔さくらさ〕＝０”と計算する。
【００６４】
それ以外の出現頻度（記号要素の出現頻度と、記号要素対の出現頻度）については前回の処理までに計算しているので、それを使うことになる。
【００６５】
続いて、ステップ５で、リストｒ＝＜さくら，さ，く，ら，さ，く＞の中に存在する（さくら，さ）、（さ，く）、（く，ら）、（ら，さ）という記号要素対について相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することで、
ＭＩ（さくら，さ）＝０
ＭＩ（さ，く）＝２．０００
ＭＩ（く，ら）＝２．０００
ＭＩ（ら，さ）＝０
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算する。
【００６６】
続いて、ステップ６で、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）の中に０よりも大きいものがあることを判断することで、ステップ７に進むと、相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が最大となる「さ」と「く」を結合してから、再びステップ４に戻る。
【００６７】
その結果、リストｒは、
ｒ＝＜さくら，さく，ら，さ，く＞
となる。
【００６８】
〔３〕ステップ４に戻る第３回目の戻り処理
ステップ７を経由してステップ４に戻る（第３回目の戻り）と、ステップ４で、記号要素対「さくら，さく」の出現頻度については、“ｆｒｅｑ〔さくらさく〕＝０”と計算する。
【００６９】
それ以外の出現頻度（記号要素の出現頻度と、記号要素対の出現頻度）については前回の処理までに計算しているので、それを使うことになる。
【００７０】
続いて、ステップ５で、リストｒ＝＜さくら，さく，ら，さ，く＞の中に存在する（さくら，さく）、（さく，ら）、（ら，さ）、（さ，く）という記号要素対について相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することで、
ＭＩ（さくら，さく）＝０
ＭＩ（さく，ら）＝２．０００
ＭＩ（ら，さ）＝０
ＭＩ（さ，く）＝２．０００
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算する。
【００７１】
続いて、ステップ６で、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）の中に０よりも大きいものがあることを判断することで、ステップ７に進むと、相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が最大となる「さく」と「ら」を結合してから、再びステップ４に戻る。
【００７２】
その結果、リストｒは、
ｒ＝＜さくら，さくら，さ，く＞
となる。
【００７３】
〔４〕ステップ４に戻る第４回目の戻り処理
ステップ７を経由してステップ４に戻る（第４回目の戻り）と、ステップ４で、記号要素対「さくら，さくら」の出現頻度については、“ｆｒｅｑ〔さくらさくら〕＝０”と計算と計算する。
【００７４】
それ以外の出現頻度（記号要素の出現頻度と、記号要素対の出現頻度）については前回の処理までに計算しているので、それを使うことになる。
【００７５】
続いて、ステップ５で、リストｒ＝＜さくら，さくら，さ，く＞の中に存在する（さくら，さくら）、（さくら，さ）、（さく）という記号要素対について相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することで、
ＭＩ（さくら，さくら）＝０
ＭＩ（さくら，さ）＝０
ＭＩ（さ，く）＝２．０００
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算する。
【００７６】
続いて、ステップ６で、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）の中に０よりも大きいものがあることを判断することで、ステップ７に進むと、相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が最大となる「さ」と「く」を結合してから、再びステップ４に戻る。
【００７７】
その結果、リストｒは、
ｒ＝＜さくら，さくら，さく＞
となる。
【００７８】
〔５〕ステップ４に戻る第５回目の戻り処理
ステップ７を経由してステップ４に戻る（第５回目の戻り）と、記号要素「さくら」の出現頻度と、記号要素「さく」の出現頻度と、記号要素対「さくら，さくら」の出現頻度と、記号要素対「さくら，さく」の出現頻度とについては、前回の処理までに全て０と計算しているので、それを使うことになる。
【００７９】
続いて、ステップ５で、リストｒ＝＜さくら，さくら，さく＞の中に存在する（さくら，さくら）、（さくら，さく）という記号要素対について相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算することで、
ＭＩ（さくら，さくら）＝０
ＭＩ（さくら，さく）＝０
という相互情報量ＭＩ（ｔｉ，ｔｉ＋１）を計算する。
【００８０】
続いて、ステップ６で、計算した相互情報量ＭＩ（ｔｉ，ｔｉ＋１）の中に０よりも大きいものがないことを判断することで、ステップ８に進む。
【００８１】
このようにして、このステップ４〜ステップ７の処理を繰り返していくときに、ステップ６で、計算した全ての相互情報量ＭＩ（ｔｉ，ｔｉ＋１）が規定の閾値ｔよりも小さくなることを判断するときには、ステップ８に進んで、リストｒを入力記号列の分割結果として出力して、処理を終了する。
【００８２】
上述の具体例で説明するならば、
ｒ＝＜さくら，さくら，さく＞
というリストｒを出力して、処理を終了するのである。
【００８３】
このようにして、本発明の記号列分割装置１は、「さくらさくらさく」という入力記号列が与えられると、予め入力しておいた「さくらがさく．さくらがさくころ．」という基本記号列を使って、その入力記号列「さくらさくらさく」を、図４に示すように処理していくことで、「さくら，さくら，さく」というように分割するのである。
【００８４】
本実施形態例では詳細に説明しなかったが、入力部１０や出力部１４は、キーボードやディスプレイなどの入出力装置に加えて、変数との入出力や、プロセス間での入出力や、サーバ・クライアント間での入出力などさまざまな入出力を含むものである。
【００８５】
また、本実施形態例では、記号列の結合度の指標となる関数として相互情報量を用いたが、記号列の結合度を表す関数であれば、どのようなものを用いてもよい。例えば、文献（Ｓｕｎ　Ｍａｏｓｏｎ，Ｓｈｅｎ　Ｄａｙａｎｇ，ａｎｄ　Ｂｅｎｊａｍｉｎ　Ｋ　Ｔｓｏｕ　著：「Ｃｈｉｎｅｓｅ　Ｗｏｒｄ　Ｓｅｇｍｅｎｔａｔｉｏｎ　ｗｉｔｈｏｕｔ　Ｕｓｉｎｇ　Ｌｅｘｉｃｏｎ　ａｎｄ　Ｈａｎｄ−ｃｒａｆｔｅｄ　Ｔｒａｉｎｉｎｇ　Ｄａｔａ」ＣＯＬＩＮＧ−ＡＣＬ’９８　予稿集，ｐｐ．１２６５−１２７１，１９９８）に書かれでいる、ｔ検定値の差分ｄｔｓを−ｄｔｓ（ｘ：ｙ）として用いでも良い。
【００８６】
また、本実施形態例では、１つの記号列の分割を行ない処理を終了するという処理例を説明したが、これを繰り返し行なうようにすることも容易に拡張できる。このとき、基本記号列については、毎回入力されなくても、基本記号列格納部１２に一度蓄積されていればよい。
【００８７】
また、基本記号列は分割されている必要はないが、部分記号列に分割されていても、実施形態例と同様に利用できる。例えば、「さくらがさく．」「さくらがさくころ．」に分割されている場合には、「さくらがさく．／さくらがさくころ．」のように、区切り記号「／」を間に入れて１つの記号列に連結すれば、本実施形態例と同様に扱える。
【００８８】
さらに、本発明を構成する装置は、論理的に接続されていればよく、各装置が、１つのプログラムの中のサブルーチンであってもよいし、いくつかのプロセスに分かれていてもよい。また、サーバとクライアントとして、別のコンピュータ上で動作してもよい。
【００８９】
【発明の効果】
以上説明したように、本発明では、予め用意される基本記号列に現れる記号単位や記号列の出現頻度を利用することで、処理対象の記号列を自動的に分割することができるようになることから、記号列の分割のためにプログラムやルールを作成する必要がなくなり、また、大規模の辞書を用意したり、大量の正しい事例と間違った事例とを用意する必要もなくなるので、記号列の分割を実現するために必要となる労力や費用や時間を大幅に削減できるようになる。
【００９０】
そして、本発明では、予め用意される基本記号列に現れる記号単位や記号列の出現頻度を利用することで、処理対象の記号列を自動的に分割することができるようになることから、分割法が未知の記号列や、分割法が部分的にしか判明していない記号列であっても、それを分割できるようになる。
【図面の簡単な説明】
【図１】本発明の記号列分割装置の一実施形態例である。
【図２】本発明の記号列分割装置が実行する処理フローの一実施形態例である。
【図３】ｓｕｆｆｉｘ　ａｒｒａｙの説明図である。
【図４】本発明による記号列分割処理の説明図である。
【符号の説明】
１　　記号列分割装置
１０　入力部
１１　記号列分割部
１２　基本記号列格納部
１３　記号列頻度計算部
１４　出力部
【図１】
2004013759.tif 000004
【図２】
2004013759.tif 000005
【図３】
2004013759.tif 000006
【図４】
2004013759.tif 000007