(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、単語分割装置、辞書登録装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
【0017】
(実施の形態1)
本実施の形態において、文を2以上の単語に分割する単語分割装置1について説明する。
【0018】
図1は、本実施の形態における単語分割装置1のブロック図である。単語分割装置1は、単語分割用辞書11、受付部12、第一分割部13、および出力部14を備える。
【0019】
単語分割用辞書11は、1以上の単語と1以上の分割情報とを格納し得る。分割情報は、単語と2以上の分割単語の組である。分割単語は、単語を分割した結果である。分割情報は、例えば、「自由形式:自由/形式」「はないか:は/ない/か」である。分割情報「自由形式:自由/形式」の「自由形式」は単語であり、「自由/形式」の「自由」「形式」は、それぞれ分割単語である。また、分割情報「はないか:は/ない/か」の「はないか」は単語であり、「は/ない/か」の「は」「ない」「か」はそれぞれ分割単語である。なお、単語は、形態素や連語など、意味を持つあらゆる用語を含む、と考えても良い。また、分割単語も単語と言える。
【0020】
また、単語分割用辞書11において、1以上の単語と1以上の分割情報とを同一ファイルや同一データベースに保持されていていることが好適である。但し、1以上の単語と1以上の分割情報とは、別ファイルや別のデータベースに保持されていても良い。つまり、単語分割用辞書11の具体的なデータ構造は問わない。単語分割用辞書11は、1以上の単語と1以上の分割情報とを保持していれば良い。
【0021】
単語分割用辞書11は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。単語分割用辞書11に単語や分割情報が記憶される過程は問わない。例えば、記録媒体を介して単語や分割情報が単語分割用辞書11で記憶されるようになってもよく、通信回線等を介して送信された単語や分割情報が単語分割用辞書11で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された単語や分割情報が単語分割用辞書11で記憶されるようになってもよい。
【0022】
受付部12は、1以上の文字を有する文を受け付ける。文は不完全な文でも良い。つまり、文は連語などでもよい。また、文の言語は、問わない。文は、通常、日本語、中国語、韓国語、モンゴル語等、分かち書きしない言語の文である。ただし、文は、英語等の分かち書きしない言語でも良い。文は、例えば、URLを示す文字列、ファイル名を示す文字列などでも良い。また、ここで、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【0023】
文の入力手段は、キーボードやマウスやメニュー画面によるもの等、何でも良い。受付部12は、キーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【0024】
第一分割部13は、受付部12が受け付けた文を分割し、2以上の単語の集合である第一分割結果を取得する。
さらに具体的には、第一分割部13は、単語分割用辞書を用いて、受付部12が受け付けた文を構成する文字列と一致する最大長の単語を、単語分割用辞書から取得し、当該取得した単語に対応する2以上の分割単語を取得して、文を分割して得られる2以上の単語の集合である第一分割結果を取得する。かかる処理をさらに詳細に説明すると、以下のような処理になる。第一分割部13は、単語分割用辞書を用いて、受付部12が受け付けた文を構成する1以上の文字列を取得する。そして、第一分割部13は、当該1以上の各文字列と一致する最大長の単語を単語分割用辞書から取得する。そして、第一分割部13は、単語分割用辞書から取得した1以上の各単語ごとに、単語に対応する2以上の分割単語を取得して、文を分割して得られる2以上の単語の集合である第一分割結果を取得する。
【0025】
第一分割部13は、さらに具体的には、例えば、以下のように処理を行う。まず、第一分割部13は、受付部12が受け付けた文の先頭である文のポインタから最大長の文字列に一致する単語を、単語分割用辞書11から取得する第一の処理を行う。そして、第一分割部13は、取得した単語に対応する2以上の分割単語を有する場合は、一致する単語に変えて2以上の分割単語を取得する第二の処理を行う。この第一の処理と第二の処理とを含めて、分割単語取得処理という。そして、第一分割部13は、文のポインタを、前記一致する単語の次の文字に移動する。そして、第一分割部13は、上記の分割単語取得処理を文の最後の文字を含む単語まで行う。その結果、第一分割部13は、文を分割して得られる2以上の単語の集合である第一分割結果が取得できる。なお、第一の処理において取得した単語が、分割情報に含まれる単語ではない場合、第一分割部13は、当該第一の処理において取得した単語をそのまま保持する。また、第一分割結果は、2以上の単語の集合であるが、当該2以上の区切りが判断できる態様のデータ構造を有する。
【0026】
また、第一分割部13が行う第一の処理の方法は問わない。第一分割部13が行う第一の処理は、いわゆる最長一致法(longest matchあるいはmaximum matchとも言う。)等の公知技術が利用可能である。最長一致法は、「岩波書店,岩波講座,ソフトウェア科学15 自然言語処理 126-127ページ 長尾真編」等に記載されている。
【0027】
また、第一分割部13は、文のポインタから最大長の文字列を、当該文のポインタが示す文字から文の最後の文字(文のポインタからN番目の文字だとする)までの文字列(これを文字列Aとする。)と一致する単語が単語分割用辞書11に存在するか否かを判断し、存在すれば当該文字列Aを取得し、存在しなければ、当該文のポインタが示す文字から文のポインタから(N−1)番目の文字までの文字列(これを文字列Bとする。)と一致する単語が単語分割用辞書11に存在するか否かを判断し、存在すれば当該文字列Bを取得する。存在しなければ、上記の処理と同様に、1文字ずつ文字列を少なくしていって、文のポインタが示す文字を先頭とする文字列の中で、最大長の文字列の単語を、単語分割用辞書11から検索する。つまり、第一分割部13は、文の中の未処理の文字列の最長文字列から、1文字ずつ減らしながら、順に単語分割用辞書11を検索して、ポインタpから最長の文字列を取得しても良い。
なお、第一分割部13は、文の中から最大長の文字列を検出するためのデータ構造として、公知技術である「トライ(trie)」が存在する。トライについて、以下の(1)〜(3)に記載されているので詳細な説明を省略する。
(1)徳永拓之著「日本語入力を支える技術」,89-99ページ
(2)インターネット ウェブページ,URL「http://www.slideshare.net/higashiyama/ss-8738479」
(3)インターネット ウェブページ,URL「http://nanika.osonae.com/DArray/dary.html」
【0028】
第一分割部13は、通常、MPUやメモリ等から実現され得る。第一分割部13の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0029】
出力部14は、第一分割部13が取得した第一分割結果を出力する。ここで、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。処理結果を他のプログラムに引渡す場合、単語分割装置1と他のプログラムとは、例えば、音声認識装置、機械翻訳装置などを実現する。つまり、文を分割して得られた第一分割結果は、例えば、音声認識処理、機械翻訳処理等に利用され得る。
【0030】
出力部14は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部14は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【0031】
次に、単語分割装置1の動作について、
図2のフローチャートを用いて説明する。
【0032】
(ステップS201)受付部12は、文を受け付けたか否かを判断する。文を受け付ければステップS202に行き、文を受け付けなければステップS201に戻る。
【0033】
(ステップS202)第一分割部13は、文のポインタpを1に設定する。文のポインタpは、文の中における、単語取得の先頭の位置を示す。
【0034】
(ステップS203)第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字から、最大長の文字列と一致する単語を検索する。そして、第一分割部13は、最大長の文字列である単語を単語分割用辞書11から取得する。
【0035】
(ステップS204)第一分割部13は、ステップS203で取得した単語が、分割情報に含まれる単語であるか否かを判断する。分割情報に含まれる単語であればステップS205に行き、分割情報に含まれる単語でなければステップS206に行く。
【0036】
(ステップS205)第一分割部13は、ステップS203で取得した単語に対応する2以上の分割単語を、単語分割用辞書11から取得する。そして、第一分割部13は、2以上の分割単語をバッファに追記する。なお、バッファの初期値はNULLである。また、第一分割部13は、2以上の各分割単語に区切り文字を入れて、2以上の分割単語をバッファに追記する。区切り文字は、例えば、「/」「 (スペース)」「,」等、何でも良い。ステップS207に行く。
【0037】
(ステップS206)第一分割部13は、ステップS203で取得した単語をバッファに追記する。なお、第一分割部13は、ステップS203で取得した単語と、前または/および後の単語との間には、区切り文字を配置する。
【0038】
(ステップS207)第一分割部13は、ポインタpを、最大長の文字列長の分だけ進める。
【0039】
(ステップS208)第一分割部13は、すべての分割処理が終了したか否かを判断する。すべての分割処理が終了していればステップS209に行き、終了していなければステップS203に戻る。なお、ポインタpが文の最後の文字の次の位置である場合、すべての分割処理が終了した、と言える。
【0040】
(ステップS209)出力部14は、バッファ内の2以上の単語を出力する。ステップS201に戻る。
【0041】
なお、
図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
また、
図2のフローチャートにおいて、受け付けられた文の先頭から処理を開始し、文の終わりまで順に処理を行った。しかし、例えば、受け付けられた文の最後から処理を開始し、文の後から前の方向に処理を進めて行っても良い。つまり、ステップS202で、第一分割部13は、文のポインタpを文の最後に設定し、ステップS207で、ポインタpを、最大長の文字列長の分だけ、文の前に戻っても良い。かかる場合、ステップS203で、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字から前にポインタを進めて、最大長の文字列と一致する単語を検索する。そして、第一分割部13は、最大長の文字列である単語を単語分割用辞書11から取得する。
【0042】
以下、本実施の形態における単語分割装置1の具体的な動作について説明する。
【0043】
今、
図3が単語分割用辞書11である。単語分割用辞書11を構成するレコードは、「ID」「単語」「分割単語」を有する。単語分割用辞書11のレコードは、品詞や出現確率等の他の情報を有しても良い。また、単語分割用辞書11のレコードは、単語、または単語と分割情報の対を有する。
【0044】
単語に該当するレコードは、属性「分割単語」の値がNULL(
図3の「−」)である。また、単語に該当するレコードは、例えば、
図3の「ID=5,6,8,9,10,11,12,13」のレコードである。また、単語と分割情報の対に該当するレコードは、属性「分割単語」の値が2以上の分割単語を有する。属性「分割単語」における分割単語は、ここでは、区切り文字「/」で区切られている。さらに、単語と分割情報の対に該当するレコードは、例えば、
図3の「ID=1,2,3,4,7」のレコードである。なお、単語分割用辞書11のレコードは、「単語か、単語と分割情報の対かを示すフラグ」を属性値として有しても良い。
【0045】
(具体例1)
かかる状況において、受付部12は、文「正夫はしっかり者だ」を受け付けた、とする。次に、第一分割部13は、文のポインタpを1に設定する。つまり、ポインタpは文の「正」の位置に設定された。
【0046】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「正」から、最大長の文字列と一致する単語「正夫」を検索し、取得する。
【0047】
次に、第一分割部13は、取得した単語「正夫」が、分割情報に含まれる単語であるか否かを判断する。つまり、第一分割部13は、単語「正夫」に対応する分割情報が「−(NULL)」であると判断する。
【0048】
そして、第一分割部13は、取得した単語「正夫」をバッファに追記する。
【0049】
次に、第一分割部13は、単語「正夫」の文字列長「2」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「2」だけ進め、ポインタpを文の「は」の位置に設定する。
【0050】
次に、第一分割部13は、まだ、分割処理が終了していない、と判断する。
【0051】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「は」から、最大長の文字列と一致する単語「は」を検索し、取得する。
【0052】
次に、第一分割部13は、取得した単語「は」が、分割情報に含まれる単語であるか否かを判断する。つまり、第一分割部13は、単語「は」に対応する分割情報が「−(NULL)」であると判断する。
【0053】
そして、第一分割部13は、取得した単語「は」をバッファに追記する。なお、第一分割部13は、単語「は」の前に区切り文字「/」を入れて、バッファに追記する。そして、現在のバッファには「正夫/は」が格納された。
【0054】
次に、第一分割部13は、単語「は」の文字列長「1」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「1」だけ進め、ポインタpを文の「し」の位置に設定する。
【0055】
次に、第一分割部13は、まだ、分割処理が終了していない、と判断する。
【0056】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「し」から、最大長の文字列と一致する単語「しっかり者」を検索し、取得する。
【0057】
次に、第一分割部13は、取得した単語「しっかり者」が、分割情報に含まれる単語であるか否かを判断する。つまり、単語「しっかり者」に対応する分割単語がNULLでないので、第一分割部13は、単語「しっかり者」が、分割情報に含まれる単語であると判断する。
【0058】
そして、第一分割部13は、単語「しっかり者」に対応する分割情報「しっかり/者」を、単語分割用辞書11から取得する。
【0059】
そして、第一分割部13は、区切り文字「/」と取得した単語「しっかり/者」とをバッファに追記する。そして、現在のバッファには「正夫/は/しっかり/者」が格納された。
【0060】
次に、第一分割部13は、単語「しっかり者」の文字列長「5」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「5」だけ進め、ポインタpを文の「だ」の位置に設定する。
【0061】
次に、第一分割部13は、まだ、分割処理が終了していない、と判断する。
【0062】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「だ」から、最大長の文字列と一致する単語「だ」を検索し、取得する。
【0063】
次に、第一分割部13は、取得した単語「だ」が、分割情報に含まれる単語であるか否かを判断する。つまり、第一分割部13は、単語「だ」に対応する分割情報が「−(NULL)」であると判断する。
【0064】
そして、第一分割部13は、区切り文字「/」と取得した単語「だ」とをバッファに追記する。そして、現在のバッファには「正夫/は/しっかり/者/だ」が格納された。
【0065】
次に、第一分割部13は、単語「だ」の文字列長「1」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「1」だけ進め、ポインタpを文の「だ」の次の位置に設定する。
【0066】
次に、第一分割部13は、分割処理が終了した、と判断する。
【0067】
そして、出力部14は、バッファ内の2以上の分割された単語列「正夫/は/しっかり/者/だ」を出力する。
【0068】
(具体例2)
受付部12は、文「そうはいってもまだ子供」を受け付けた、とする。次に、第一分割部13は、文のポインタpを1に設定する。つまり、ポインタpは文の「そ」の位置に設定された。
【0069】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「そ」から、最大長の文字列と一致する単語「そうはいっても」を検索し、取得する。
【0070】
次に、第一分割部13は、取得した単語「そうはいっても」が、分割情報に含まれる単語であるか否かを判断する。つまり、単語「そうはいっても」に対応する分割単語がNULLでないので、第一分割部13は、単語「そうはいっても」が、分割情報に含まれる単語であると判断する。
【0071】
そして、第一分割部13は、単語「そうはいっても」に対応する分割情報「そう/は/いって/も」を、単語分割用辞書11から取得する。
【0072】
そして、第一分割部13は、取得した単語「そう/は/いって/も」をバッファに追記する。そして、現在のバッファには「そう/は/いって/も」が格納された。
【0073】
次に、第一分割部13は、単語「そうはいっても」の文字列長「7」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「7」だけ進め、ポインタpを文の「ま」の位置に設定する。
【0074】
次に、第一分割部13は、まだ、分割処理が終了していない、と判断する。
【0075】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「ま」から、最大長の文字列と一致する単語「まだ」を検索し、取得する。
【0076】
次に、第一分割部13は、取得した単語「まだ」が、分割情報に含まれる単語であるか否かを判断する。つまり、第一分割部13は、単語「は」に対応する分割情報が「−(NULL)」であると判断する。
【0077】
そして、第一分割部13は、区切り文字「/」と取得した単語「まだ」とをバッファに追記する。そして、現在のバッファには「そう/は/いって/も/まだ」が格納された。
【0078】
次に、第一分割部13は、単語「まだ」の文字列長「2」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「2」だけ進め、ポインタpを文の「子」の位置に設定する。
【0079】
次に、第一分割部13は、まだ、分割処理が終了していない、と判断する。
【0080】
次に、第一分割部13は、単語分割用辞書11に存在する単語であり、文の中のpに対応する文字「子」から、最大長の文字列と一致する単語「子供」を検索し、取得する。
【0081】
次に、第一分割部13は、取得した単語「子供」が、分割情報に含まれる単語であるか否かを判断する。つまり、第一分割部13は、単語「は」に対応する分割情報が「−(NULL)」であると判断する。
【0082】
そして、第一分割部13は、区切り文字「/」と取得した単語「子供」とをバッファに追記する。そして、現在のバッファには「そう/は/いって/も/まだ/子供」が格納された。
【0083】
次に、第一分割部13は、単語「まだ」の文字列長「2」を算出する。次に、第一分割部13は、ポインタpを、最大長の文字列長の分「2」だけ進め、ポインタpを文の「供」の次の位置に設定する。
【0084】
次に、第一分割部13は、分割処理が終了した、と判断する。
【0085】
そして、出力部14は、バッファ内の2以上の分割された単語列「そう/は/いって/も/まだ/子供」を出力する。
【0086】
以上、本実施の形態によれば、非常に簡易な処理により、文を2以上の単語に分割できる。そのため、文の単語への分割が非常に高速に行える。
【0087】
なお、本実施の形態において、第一分割部13が最大長の文字列である単語を単語分割用辞書11から取得するアルゴリズムは問わない。
【0088】
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における単語分割装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、1以上の単語と、単語と当該単語を分割した結果である2以上の分割単語の組である1以上の分割情報とを有する単語分割用辞書を格納しており、コンピュータを、1以上の文字を有する文を受け付ける受付部と、前記受付部が受け付けた文の先頭である文のポインタから最大長の文字列に一致する単語を、前記単語分割用辞書から取得し、当該取得した単語に対応する2以上の分割単語を有する場合は、前記一致する単語に変えて前記2以上の分割単語を取得する分割単語取得処理を行い、前記文のポインタを前記一致する単語の次の文字に移動した後、前記分割単語取得処理を文の最後の文字を含む単語まで行い、文を分割して得られる2以上の単語の集合である第一分割結果を取得する第一分割部と、前記第一分割結果を出力する出力部として機能させるためのプログラム、である。
【0089】
また、以下、単語分割装置1を用いた実験結果について説明する。実験において、単語分割装置1を実現するソフトウェアは、「MA-2」という名称である。
(実験1)
【0090】
実験1における他の単語分割装置として、公知技術である「MeCab 0.98」を用いた。「MeCab 0.98」は、「http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html」に記載されている。また、他の単語分割装置として、出願人が開発した単語分割装置であり、Viterbiアルゴリズムを用いた単語分割装置「MA-1」も用いた。
図4に、上記の3つの装置に、UTF−8日本語テキスト388.5MBを入力し、各装置の処理速度(KB/sec)を測定した結果を示す。単語分割装置1である「MA-2」は、「MeCab 0.98」の4.3倍の処理速度であった。なお、単語分割装置1である「MA-2」によれば、新聞1年分を約30秒で解析可能であることが分かる(
図4参照)。
(実験2)
【0091】
次に、単語分割装置1「MA-2」を用いた実験2の結果について説明する。実験2の結果を、
図5に記載する。実験2における他の単語分割装置として、公知技術である「JUMAN 6.0」「MeCab 0.98」「KyTea 0.3.0」「ChaSen 2.3.3」を用いた。「JUMAN 6.0」は「http://nlp.ist.i.kyoto-u.ac.jp/index.php?cmd=read&page=JUMAN&alias%5B%5D=%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0JUMAN」、「KyTea 0.3.0」は「http://www.phontron.com/kytea/index-ja.html」、「ChaSen 2.3.3」は「http://chasen.naist.jp/hiki/ChaSen/」に記載されている。また、本実験において、上記の5つの装置に、ウェブ・テキスト8万文を入力し、各装置に解析させた場合の処理時間を測定した(
図5参照)。
図5により、単語分割装置1「MA-2」の処理速度は他より極めて速いことが分かる。なお、単語分割装置1のアルゴリズムおよびモデルは、
図5に示す「深さ優先探索+連語」である。
【0092】
(実施の形態2)
本実施の形態において、一の単語分割装置の分割結果と、他の複数の単語分割装置との相違部分が所定の条件を満たす場合、単語分割用辞書11に分割情報を登録する辞書登録装置2について説明する。なお、他の単語分割装置は、従来の単語分割装置であり、高い精度で単語に分割できることが確認できている単語分割装置であることは好適である。
【0093】
図6は、本実施の形態における辞書登録装置2のブロック図である。辞書登録装置2は、単語分割用辞書11、第一分割結果取得部22、他分割結果取得部23、相違部分取得部24、分割情報取得部25、および辞書登録部26を備える。
【0094】
第一分割結果取得部22は、第一分割結果を取得する。第一分割結果とは、一の単語分割装置が一の文を分割した結果である。第一分割結果は、1または2以上の単語の集合であり、通常、単語間が区切られていることを認識できる構造を有する。また、一の単語分割装置は、例えば、単語分割装置1である。第一分割結果取得部22は、一の単語分割装置から第一分割結果を受信しても良いし、図示しない記録媒体に格納されている第一分割結果を読み出しても良いし、受け付けられた一の文を分割し、第一分割結果を取得しても良い。第一分割結果取得部22が受け付けられた一の文を分割し、第一分割結果を取得する場合、第一分割結果取得部22は第一分割部13と同等の機能を有する。
【0095】
他分割結果取得部23は、2以上の他分割結果を取得する。他分割結果は、他単語分割装置が一の文を分割した結果である。他分割結果は、2以上の単語の集合であり、単語間が区切られていることを認識できる構造を有する。なお、他単語分割装置は、上記の一の単語分割装置ではない単語分割装置である。
【0096】
他分割結果取得部23は、2つの他分割結果である、第二分割結果および第三分割結果を取得しても良い。
【0097】
相違部分取得部24は、1以上の相違部分を取得する。相違部分とは、第一分割結果と他分割結果との相違する部分である。また、相違部分は、他分割結果に含まれる部分である。なお、相違部分取得部24は、2以上の相違部分を取得しても良い。また、相違部分取得部24は、一の文に対して、2箇所以上の相違部分を取得しても良い。相違部分は、通常、2以上の分割単語を有する。
【0098】
他単語分割装置が、例えば、第二単語分割装置および第三単語分割装置であり、第二単語分割装置が取得した分割結果が第二分割結果、第三単語分割装置が取得した分割結果が第三分割結果である場合、相違部分取得部24は、例えば、第一分割結果と第二分割結果との相違部分である第一相違部分と、第一分割結果と第三分割結果との相違部分である第二相違部分とを取得しても良い。
【0099】
分割情報取得部25は、相違部分取得部24が取得した1以上の相違部分が予め決められた条件を満たす場合、1以上のいずれかの相違部分を用いて、分割情報を構成する。分割情報は、相違部分に対応する文字列である単語と、相違部分である2以上の単語とを有する情報である。予め決められた条件を満たすか否かが判断される相違部分は、文の中の同一の相違する箇所における相違部分である。また、相違部分とは、単語への分割の仕方が相違する部分である。
【0100】
ここで、予め決められた条件は、例えば、2以上のすべての相違部分が同じことである。また、予め決められた条件は、例えば、2以上の相違部分のうち、N(Nは、例えば、50%)以上の相違部分が同じことであっても良い。
【0101】
つまり、例えば、分割情報取得部25は、第一相違部分と第二相違部分とが共通する場合、第一相違部分を用いて、第一相違部分(または第二相違部分)に対応する文字列である単語と、第一相違部分(または第二相違部分)である2以上の単語とを有する分割情報を構成する。ここで、第一相違部分と第二相違部分とは同じであるので、どちらを用いて分割情報を構成しても、分割情報は同じになる。
【0102】
辞書登録部26は、分割情報取得部25が取得した分割情報を単語分割用辞書11に蓄積する。
【0103】
第一分割結果取得部22、および他分割結果取得部23は、例えば、無線または有線の通信手段により実現され得る。また、第一分割結果取得部22等は、MPUやメモリ等から実現されても良い。
【0104】
相違部分取得部24、分割情報取得部25、辞書登録部26は、通常、MPUやメモリ等から実現され得る。相違部分取得部24の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0105】
次に、辞書登録装置2の動作について、
図7のフローチャートを用いて説明する。
【0106】
(ステップS701)第一分割結果取得部22は、第一分割結果を取得する。
【0107】
(ステップS702)他分割結果取得部23は、2以上の他分割結果を取得する。
【0108】
(ステップS703)相違部分取得部24は、カウンタiに1を代入する。
【0109】
(ステップS704)相違部分取得部24は、ステップS702で取得した他分割結果の中に、i番目の他分割結果が存在するか否かを判断する。i番目の他分割結果が存在すればステップS705に行き、i番目の他分割結果が存在しなければステップS709に行く。
【0110】
(ステップS705)相違部分取得部24は、第一分割結果とi番目の他分割結果との相違部分を取得する。かかる処理を相違部分取得処理という。相違部分取得処理について、
図8のフローチャートを用いて説明する。
【0111】
(ステップS706)相違部分取得部24は、ステップS705で相違部分が取得できたか否かを判断する。相違部分を取得できればステップS707に行き、取得できなければステップS708に行く。
【0112】
(ステップS707)相違部分取得部24は、ステップS706で取得した相違部分を、図示しないバッファに一時蓄積する。なお、相違部分を蓄積することは、相違部分を示す情報を蓄積することと同意義である。また、相違部分を示す情報とは、例えば、相違部分の開始文字、終了文字を示すポインタ等である。さらに、一の文において2箇所以上の相違する箇所が存在する場合、相違部分取得部24は、箇所ごとに、相違部分を一時蓄積する。
【0113】
(ステップS708)相違部分取得部24は、カウンタiを1、インクリメントする。ステップS704に戻る。
【0114】
(ステップS709)分割情報取得部25は、カウンタjに1を代入する。
【0115】
(ステップS710)分割情報取得部25は、j番目の相違する箇所が存在するか否かを判断する。j番目の相違する箇所が存在すればステップS711に行き、存在しなければ処理を終了する。
【0116】
(ステップS711)分割情報取得部25は、j番目の相違箇所に関して、バッファ内の1以上の相違部分が予め決められた条件を満たすか否かを判断する。予め決められた条件を満たす場合はステップS712に行き、予め決められた条件を満たさない場合はステップS716に行く。
【0117】
(ステップS712)分割情報取得部25は、j番目の相違箇所に関して、相違部分に対応する文字列である単語を取得する。なお、この単語は、通常、連語であり、分割情報を構成する単語である。
【0118】
(ステップS713)分割情報取得部25は、相違部分である2以上の分割単語を取得する。
【0119】
(ステップS714)分割情報取得部25は、ステップS712で取得した単語と、ステップS713で取得した2以上の分割単語を用いて、分割情報を構成する。
【0120】
(ステップS715)辞書登録部26は、ステップS714で構成された分割情報を単語分割用辞書11に蓄積する。
【0121】
(ステップS716)分割情報取得部25は、カウンタjを1、インクリメントする。ステップS710に戻る。
【0122】
なお、
図7のフローチャートにおいて、第一分割結果と他分割結果との相違部分は、通常、一箇所であるが、2箇所以上存在しても良い。
【0123】
次に、ステップS705の相違部分取得処理について、
図8のフローチャートを用いて説明する。
【0124】
(ステップS801)相違部分取得部24は、カウンタi、およびjに1を代入する。ここで、カウンタiは第一分割結果の中の分割単語のカウンタであり、カウンタjは第二分割結果の中の分割単語のカウンタである。
【0125】
(ステップS802)相違部分取得部24は、第一分割結果の中にi番目の分割単語が存在するか否かを判断する。i番目の分割単語が存在すればステップS803に行き、i番目の分割単語が存在しなければ処理を終了する。
【0126】
(ステップS803)相違部分取得部24は、第一分割結果の中のi番目の分割単語を取得する。
【0127】
(ステップS804)相違部分取得部24は、他分割結果の中のj番目の分割単語を取得する。
【0128】
(ステップS805)相違部分取得部24は、ステップS803で取得したi番目の分割単語と、ステップS804で取得したj番目の分割単語とが同一か否かを判断する。2つの分割単語が同一であればステップS806に行き、同一でなければステップS807に行く。
【0129】
(ステップS806)相違部分取得部24は、カウンタi、およびjを、1インクリメントする。ステップS802に戻る。
【0130】
(ステップS807)相違部分取得部24は、第一分割結果の分割単語の最後の文字と、他分割結果の分割単語の最後の文字とが一致するまで、または文の終了まで、iとjとを進める。なお、分割単語の最後の文字が一致するとは、文字コードが一致する意味ではなく、分割対象の文の中の文字が同じ位置の文字であることである。なお、位置が同じ位置の文字は、文字コードも同じである。また、iとjとを進めるとは、現在のi,jの位置から、それぞれ進めていくことである。
【0131】
(ステップS808)相違部分取得部24は、ステップS807でjを進める前の分割単語から、jを進めた後の分割単語までを、相違部分として取得する。ステップS806に戻る。
【0132】
以下、本実施の形態における辞書登録装置2の具体的な動作について説明する。具体例において、他の単語分割装置は、単語分割装置Aと単語分割装置Bの2つであり、辞書登録するための予め決められた条件は相違部分が一致すること、として説明する。つまり、他分割結果取得部23は、第二分割結果および第三分割結果を取得する。また、相違部分取得部24は、第一分割結果と第二分割結果との相違部分である第一相違部分と、第一分割結果と第三分割結果との相違部分である第二相違部分とを取得するものとする。さらに、第一分割結果を取得する装置は、上述した単語分割装置1である、とする。なお、
なお、単語分割装置Aと単語分割装置Bは、例えば、上述した「MeCab 0.98」「JUMAN 6.0」「KyTea 0.3.0」「ChaSen 2.3.3」等である。また、単語分割装置Aと単語分割装置Bとは、異なる単語分割装置である。
【0133】
ここで、単語分割装置1、および他の2つの単語分割装置は、文「自由形式で間違いはないか」を受け付けたとする。
【0134】
次に、単語分割装置1は、第一分割結果「自由形/式/で/間違い/はな/いか」を取得した、とする。また、他の単語分割装置Aは、「自由形/式/で/間違い/は/ない/か」を取得した、とする。さらに、他の単語分割装置Bは、「自由/形式/で/間違い/は/ない/か」を取得した、とする。
【0135】
かかる状況において、辞書登録装置2の第一分割結果取得部22は、第一分割結果「自由形/式/で/間違い/はな/いか」を、単語分割装置1から取得する。
【0136】
次に、他分割結果取得部23は、単語分割装置Aから他分割結果A「自由形/式/で/間違い/は/ない/か」を取得する。また、他分割結果取得部23は、単語分割装置Bから他分割結果A「自由/形式/で/間違い/は/ない/か」を取得する。
【0137】
次に、相違部分取得部24は、第一分割結果と他分割結果Aとの相違部分「は/ない/か」を取得する。そして、相違部分取得部24は、相違部分「は/ない/か」をバッファに一時蓄積する。なお、相違部分「は/ない/か」の文中における箇所を他の箇所と区別するため、相違部分取得部24は、相違部分「は/ない/か」と、文中の位置を示す「9」とを対応付けて蓄積することは好適である。ここで、「9」は、「は/ない/か」の最初の文字「は」の文中でのオフセット(最初からの文字数)である。また、第一分割結果と他分割結果Aとは、「自由形/式/で/間違い」までの分割単語は同一であり、相違部分取得部24は、「自由形/式/で/間違い」までの分割単語に関して、相違部分を取得しない。
【0138】
次に、相違部分取得部24は、第一分割結果と他分割結果Bとの相違部分「自由/形式」、および「は/ない/か」を取得する。そして、相違部分取得部24は、相違部分「自由/形式」、および「は/ない/か」をバッファに一時蓄積する。なお、相違部分取得部24は、相違部分「自由/形式」と、文中の位置を示す「1」とを対応付けて蓄積することは好適である。また、相違部分取得部24は、相違部分「は/ない/か」と、文中の位置を示す「9」とを対応付けて蓄積することは好適である。また、第一分割結果と他分割結果Bとは、「で/間違い」の中の分割単語は同一であり、相違部分取得部24は、「で/間違い」の分割単語に関して、相違部分を取得しない。
【0139】
次に、分割情報取得部25は、1箇所目の相違部分「自由/形式」をバッファから取得する。ここで、分割情報取得部25は、相違部分「自由/形式」を一つだけ取得する。しかし、1箇所目の相違部分「自由/形式」に関して、他分割結果Aから取得された相違部分と他分割結果Bから取得された相違部分とが共通しないので、予め決められた条件を満たさない、と分割情報取得部25は判断する。そして、分割情報取得部25は、1箇所目の相違部分「自由/形式」に関して、分割情報を構成しない。
【0140】
次に、分割情報取得部25は、2箇所目の相違部分「は/ない/か」をバッファから取得する。ここで、分割情報取得部25は、相違部分「は/ない/か」を二つ取得する。そして、2箇所目の相違部分「は/ない/か」に関して、他分割結果Aから取得された相違部分と他分割結果Bから取得された相違部分とが共通するので、予め決められた条件を満たす、と分割情報取得部25は判断する。
【0141】
次に、分割情報取得部25は、2箇所目の相違部分「は/ない/か」に対応する文字列「はないか」を取得する。また、分割情報取得部25は、相違部分である2以上の分割単語「は/ない/か」を取得する。次に、分割情報取得部25は、単語「はないか」と2以上の分割単語「は/ない/か」を用いて、分割情報「はないか:は/ない/か」を構成する。
【0142】
次に、辞書登録部26は、構成された分割情報「はないか:は/ない/か」を単語分割用辞書11に蓄積する。
【0143】
以上、本実施の形態によれば、精度の高い単語分割用辞書を得ることができる。
【0144】
なお、本実施の形態によれば、分割情報を登録する条件は、上述したように種々考えられる。
【0145】
また、本実施の形態によれば、他の単語分割装置が3以上の多数存在し、共通する相違部分の割合(数でも良い)の閾値を大きくすれば、大きくするほど、精度の高い単語分割用辞書を構築できる。
【0146】
さらに、本実施の形態における辞書登録装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、1以上の単語と、単語と当該単語を分割した結果である2以上の分割単語の組である1以上の分割情報とを格納し得る単語分割用辞書を格納しており、コンピュータを、一の単語分割装置が一の文を分割した結果である第一分割結果を取得する第一分割結果取得部と、前記一の単語分割装置ではない単語分割装置である2以上の他単語分割装置が、前記一の文を分割した結果である2以上の他分割結果を取得する他分割結果取得部と、前記2以上の各他分割結果に含まれる部分であり、前記第一分割結果と前記2以上の各他分割結果との相違する部分である1以上の相違部分を取得する相違部分取得部と、前記相違部分取得部が取得した1以上の相違部分が予め決められた条件を満たす場合、1以上のいずれかの相違部分を用いて、当該相違部分に対応する文字列である単語と、当該相違部分である2以上の単語とを有する分割情報を構成する分割情報取得部と、前記分割情報を前記単語分割用辞書に蓄積する辞書登録部として機能させるためのプログラム、である。
【0147】
また、上記プログラムにおいて、前記他分割結果取得部は、2つの他分割結果である、第二分割結果および第三分割結果を取得し、前記相違部分取得部は、前記第一分割結果と前記第二分割結果との相違部分である第一相違部分と、前記第一分割結果と前記第三分割結果との相違部分である第二相違部分とを取得し、前記分割情報取得部は、前記第一相違部分と前記第二相違部分とが共通する場合、当該第一相違部分を用いて、当該第一相違部分に対応する文字列である単語と、当該第一相違部分である2以上の単語とを有する分割情報を構成するものとして、コンピュータを機能させることは好適である。
【0148】
(実施の形態3)
本実施の形態において、実施の形態2で説明した辞書登録装置2が含まれる単語分割装置3について説明する。
【0149】
また、本実施の形態において、他単語分割装置も含まれていても良い。なお、他単語分割装置は、例えば、上述した「MeCab 0.98」「JUMAN 6.0」「KyTea 0.3.0」「ChaSen 2.3.3」等である。
【0150】
図9は、本実施の形態における単語分割装置3のブロック図である。単語分割装置3は、辞書登録装置2、2以上の他単語分割装置31、受付部12、第一分割部13、出力部14を備える。
【0151】
次に、単語分割装置3の動作について、
図10のフローチャートを用いて説明する。
図10のフローチャートにおいて、
図2のフローチャートと同一のステップについて説明を省略する。
【0152】
(ステップS1001)受付部12は、カウンタiに、1を代入する。
【0153】
(ステップS1002)受付部12は、i番目の他単語分割装置31が存在するか否かを判断する。i番目の他単語分割装置31が存在すればステップS1003に行き、i番目の他単語分割装置31が存在しなければステップS1005に行く。
【0154】
(ステップS1003)i番目の他単語分割装置31は、受付部12から文を受け付け、当該文に対して、単語に分割する処理を行う。そして、i番目の他単語分割装置31は、他分割結果を取得する。
【0155】
(ステップS1004)受付部12は、カウンタiを1、インクリメントする。ステップS1002に戻る。
【0156】
(ステップS1005)辞書登録装置2は、辞書登録処理を行う。辞書登録処理は、
図7を用いて説明した処理である。ステップS201に戻る。
【0157】
なお、
図10のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【0158】
以上、本実施の形態によれば、精度の高い単語分割用辞書を用いて、文を2以上の単語に高速に分割できる。
【0159】
また、本実施の形態によれば、文を2以上の単語に分割する処理を行いながら、単語分割用辞書を充実させていくことができる。
【0160】
なお、本実施の形態によれば、単語分割装置3は、2以上の他単語分割装置31を具備した。しかし、2以上の他単語分割装置31は、単語分割装置3の外部に存在しても良い。かかる場合、単語分割装置3は、辞書登録装置2、受付部12、第一分割部13、出力部14を備える。そして、かかる場合、単語分割装置3は、2以上の各他単語分割装置31から、他分割結果を取得する。
【0161】
さらに、本実施の形態における単語分割装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、1以上の単語と、単語と当該単語を分割した結果である2以上の分割単語の組である1以上の分割情報とを格納し得る単語分割用辞書を格納しており、コンピュータを、一の単語分割装置が一の文を分割した結果である第一分割結果を取得する第一分割結果取得部と、前記一の単語分割装置ではない単語分割装置である2以上の他単語分割装置が、前記一の文を分割した結果である2以上の他分割結果を取得する他分割結果取得部と、前記2以上の各他分割結果に含まれる部分であり、前記第一分割結果と前記2以上の各他分割結果との相違する部分である1以上の相違部分を取得する相違部分取得部と、前記相違部分取得部が取得した1以上の相違部分が予め決められた条件を満たす場合、1以上のいずれかの相違部分を用いて、当該相違部分に対応する文字列である単語と、当該相違部分である2以上の単語とを有する分割情報を構成する分割情報取得部と、前記分割情報を前記単語分割用辞書に蓄積する辞書登録部として機能させるためのプログラム、である。
【0162】
また、上記プログラムにおいて、2以上の他単語分割装置として、コンピュータをさらに機能させることは好適である。
【0163】
また、
図11は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の辞書登録装置等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。
図11は、このコンピュータシステム300の概観図であり、
図12は、システム300のブロック図である。
【0164】
図11において、コンピュータシステム300は、CD−ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
【0165】
図12において、コンピュータ301は、CD−ROMドライブ3012に加えて、MPU3013と、MPU3013、CD−ROMドライブ3012に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
【0166】
コンピュータシステム300に、上述した実施の形態の辞書登録装置等の機能を実行させるプログラムは、CD−ROM3101に記憶されて、CD−ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD−ROM3101またはネットワークから直接、ロードされても良い。
【0167】
プログラムは、コンピュータ301に、上述した実施の形態の辞書登録装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
【0168】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
【0169】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【0170】
また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されても良いことは言うまでもない。
【0171】
また、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【0172】
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。