JP3938234B2 - 自然言語処理装置 - Google Patents
自然言語処理装置 Download PDFInfo
- Publication number
- JP3938234B2 JP3938234B2 JP33398897A JP33398897A JP3938234B2 JP 3938234 B2 JP3938234 B2 JP 3938234B2 JP 33398897 A JP33398897 A JP 33398897A JP 33398897 A JP33398897 A JP 33398897A JP 3938234 B2 JP3938234 B2 JP 3938234B2
- Authority
- JP
- Japan
- Prior art keywords
- extended
- extended character
- character string
- partial
- chain probability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Machine Translation (AREA)
Description
【発明の属する技術分野】
本発明は自然言語処理装置に関し、特に、確率的手法を利用することによって、辞書を用いることなく電子化された自然言語テキストを処理(例えば形態素解析)する装置に適用し得るものである。
【0002】
【従来の技術】
ワードプロセッサによるテキスト作成機会の増大や、インターネット対応機器の普及により、大量の電子化された自然言語テキストが容易に入手可能となってきた。文字認識システム、機械翻訳システム、情報検索システム、情報抽出システム等の大量の自然言語テキストを扱う自然言語処理を応用した各種アプリケーションシステムにとって、形態素解析処理は、各種アプリケーションが目的とする専門処理を実施する前に共通して実施され、単語や句等の文中の意味単位、すなわち、形態素を確定する極めて重要な処理である。
【0003】
各種アプリケーションシステムの初段に位置付けられる形態素解析を誤ると、その誤りが、後段での認識、翻訳、検索、抽出等の処理に波及し、その処理精度に大きく影響する。一般に、後段の処理においては、形態素解析が正しく行われることを前提としているため、その誤りを修復することは非常に困難である。また、たとえその修復が可能であったとしても、その修復処理は複雑化し、従って、大量の自然言語テキストを期待された時間内に処理することができなくなってしまう。
【0004】
このように、形態素解析処理においては、単語分割(形態素分割)の精度の高さが要求されるとともに、大量の自然言語テキストを高速に処理するという処理速度も要求される。
【0005】
単語が単語区切り(スペース)によって分かち書きされており、品詞等のタグを単語に与えるだけで良い、例えば英語ような言語の形態素解析手法においては、大量のテキストから品詞やその配列であるタグ系列の確率モデルを推定し、さらに、例に基づく誤り訂正を加えた手法が確立されている。
【0006】
一方、単語が分かち書きされていない、例えば日本語のような言語においても、確率モデルを用いた英語に対する手法を応用した例がいくつか提案されている。確率モデルを用いた形態素解析の一例としては、下記文献に開示された手法がある。
【0007】
文献『山本幹雄、増山正和著、「品詞・区切り情報を含む拡張文字の連鎖確率を用いた日本語形態素解析」、言語処理学会第3回年次大会発表論文集、1997年3月』
この文献は、単語区切りを明確に持たない日本語に確率モデルを用いた形態素解析手法を適用する場合に、次に示す課題があることを記載している。
【0008】
(課題A)英語の場合、未知語があっても単語分割には影響を与えないが、日本語の場合は、未知語が単語分割に影響を与えるので、精度への影響がより深刻になる。
【0009】
(課題B)日本語の場合は、区切りの曖昧さがあるため、単語分割数が一定であることを前提とした英語の確率モデルをそのまま適用するには問題がある。
【0010】
上記の課題に対して、上記文献は、文字をベースにした形態素解析手法を提案している。日本語の文字は、一般的に使われているもので約3000種程度あり、また、平均単語長も2文字程度であるため、日本語の1文字は単語に近い情報をもっているという性質に基づき、日本語の各文字に形態素解析の情報を付与した拡張文字による連鎖確率モデルを提案している。この手法によれば、文字をベースにしているため、複数文字列を単語として登録した単語辞書を用いる必要がなくなり、単語辞書を用いなければ、未知語の概念自体がなくなり、(課題A)が解決される。また、文字の長さは常に1で1文において一定であり、英語の場合の単語分割数に相当する1文あたりの文字数も一定となり、英語の確率モデルを適用することが可能なり、(課題B)が解決される。
【0011】
前記文献に開示された方法によれば、基本的には、文字をベースにして形態素解析を行うに当たり、自然言語テキストが入力文として与えられたときに、この入力文を構成する単語列として、各文字の直後が単語境界であるか否かのあらゆる組み合わせの中から最も確からしい単語列の並びを出力させることを特徴とする。この方法を実現する手段として、(1)式に定義される拡張文字ei及び(2)式に定義される拡張文字の連鎖確率(以下、部分連鎖確率とも称する)p(W,T)を用いた拡張文字列の連鎖確率モデルを用いる。ここで、拡張文字eiとは、「私」、「は」等の通常の文字とは異なり、文字に対して少なくとも単語区切り(形態素区切り)の情報を含む拡張情報を付加したものである。
【0012】
【数1】
ここで、ciは、入力文字列(入力テキスト列)の位置iにおける文字であり、diは、文字ciの後(又は前)における区切り情報であるとする。
【0013】
【数2】
ここで、nは入力文字列の長さであり、NはN−gramのN、すなわち最適解を求めるために参照する文字組の長さ(文字組を構成する文字数)、eiは形態素列W及びタグTの情報から決定される拡張文字である。
【0014】
また、前記文献に記載の形態素解析方法を実施する装置は、以下の通りである(例えば、特願平9−68300号明細書及び図面参照)。
【0015】
すなわち、(a)テキストを入力文として読み込んできて、この入力文の入力文字列の文字毎に、少なくとも単語区切り情報を含む拡張情報を付加して拡張文字を形成し、この形成された拡張文字を用いて前記入力文字列に関する全ての拡張文字列を候補として生成する拡張文字列生成部、(b)生成された全ての拡張文字列の連鎖確率を候補として求める連鎖確率計算部、(c)得られた連鎖確率の候補の中から最大の値の連鎖確率を求め、この最大連鎖確率を与える拡張文字列を最適拡張文字列として選択し、この最適拡張文字列に対応する単語列の並びを含む解析結果を形態素解析結果として出力する最適経路探索部を構成要件として備える。
【0016】
前記各構成要件が、以下の動作を行うことにより形態素解析を実施する。
【0017】
すなわち、(S1)拡張文字列生成部は、テキストを入力文として読み込んできて、この入力文の入力文字列の文字毎に、少なくとも単語区切り情報を含む拡張情報を付加して拡張文字を形成し、形成された拡張文字を用いて前記入力文字列に関する全ての入力文の文頭から文末までの全ての拡張文字列の経路を候補として生成しスコアテーブルに格納する。
【0018】
(S2)次に、連鎖確率計算部は、事前に訓練(学習)により作成しておいた拡張文字テーブルに格納されている一定文字数からなる部分拡張文字列に対応する部分連鎖確率に基づき、前記拡張文字列の経路に対応する拡張文字列の連鎖確率p(W,T)を計算し、スコアテーブルに格納しておく。
【0019】
(S3)しかる後に、最適経路探索部が、スコアテーブルの拡張文字列の連鎖確率の候補を参照し、候補の中から最大の値の連鎖確率を求め、この最大連鎖確率を与える拡張文字列を最適拡張文字列として選択し、この最適拡張文字列に対応する単語列の並びを含む解析結果を形態素解析結果として出力する。
【0020】
【発明が解決しようとする課題】
例えば、文字認識装置等の入力装置の性能限界により、入力テキストの任意の文字が別の予期せぬ文字に置き換わってしまう現象(以下、文字化けと称する)が発生することは、通常の利用形態において普通に起こることである。また、入力テキストが電子化されたものである場合にも、テキストの電子化の過程においてオペレータの入力誤りにより予期せぬ単語綴り(以下、ミスタイプと称する)が入力テキストに含まれることがよく発生する。
【0021】
一般的には、入力テキストに混在するこの種の誤り文字を含む文字列部分は未知語として扱われるが、本来、自然言語として存在するはずもないこの種の未知語は、自然言語としては存在するが形態素解析装置が知り得なかった単語とは区別して扱うべきである。
【0022】
しかしながら、従来の形態素解析装置においては、文字化けやミスタイプにより入力テキスト中の本来未知語でなかった文字列が未知語として扱われることになった場合に、未知語は未知語というカテゴリとして包括して扱うだけで、当該未知語部分を正しい単語に復元するという概念もなく、復元する手段も備えていない。つまり、従来の形態素解析方法及び装置においては、入力装置の性能限界あるいは入力手段の不備により入力されるテキストの品質が既定値より劣る場合の形態素解析を、すなわち、本来、自然言語として存在するはずのない単語を合むテキストの形態素解析を想定していないので、文字化けやミスタイプにより入力テキスト中の本来未知語でなかった文字列が未知語として扱われることになった場合に、当該未知語部分を正しい単語に復元することができず、所望の形態素解析結果を得ることができないという課題がある。
【0023】
そのため、文字化けやミスタイプ等による未知語部分を検出し、当該部分を正しい文字列に復元することができる、言い換えると、正しい文字列を推定することができる自然言語処理装置や、正しい文字列を推定できなくても所定の自然言語処理を実行できる自然言語処理装置が求められている。
【0024】
【課題を解決するための手段】
本発明の自然言語処理装置は、(1)読み込んだ入力テキストの文字列の文字毎に少なくとも単語区切り情報を含む拡張情報を付加して拡張文字を形成し、該拡張文字を用いて前記入力テキストの文字列に関する全ての組み合わせの拡張文字列を生成する拡張文字列生成部と、(2)一定文字数からなる部分拡張文字列とこの部分拡張文字列に対する部分連鎖確率情報を格納している拡張文字記憶部と、(3)前記入力テキストの先頭から末尾までの全ての部分拡張文字列の経路と前記拡張文字記憶部に格納されている部分連鎖確率に基づき、前記拡張文字列生成部で生成された全ての前記拡張文字列のそれぞれについて、連鎖確率情報を求める連鎖確率計算部と、(4)得られた連鎖確率情報を格納するスコア記憶部と、(5)得られた連鎖確率情報の中から最適の連鎖確率を与える拡張文字列を選択し、該拡張文字列に対応する単語列の並びを含む解析結果を形態素解析結果として出力する最適経路探索部と、(6)前記拡張文字列生成部が生成した拡張文字列の部分拡張文字列が前記拡張文字記憶部に存在しない場合に、前記拡張文字記憶部に格納されている当該部分拡張文字列の一部の拡張文字と共通の拡張文字を有する他の部分拡張文字列の部分連鎖確率情報から、当該部分拡張文字列の部分連鎖確率情報を推定する拡張文字推定部とを備えることを特徴とする。
【0026】
【発明の実施の形態】
(A)第1の実施形態
以下、本発明による自然言語処理装置を形態素解析装置に適用した第1の実施形態を図面を参照しながら詳述する。
【0027】
(A−1)第1の実施形態の構成
図1は、第1の実施形態の形態素解析装置の構成を示す機能ブロック図である。すなわち、第1の実施形態の形態素解析装置は、実際上、入出力装置や処理装置や記憶装置(や通信装置)等を有するワークステーションやパソコン等の情報処理装置上に実現されるものであるが、機能的には、図1に示す構成を有するものである。
【0028】
図1において、この第1の実施形態の形態素解析装置は、入力装置1、拡張文字テーブル2、スコアテーブル3、拡張文字列生成部4、拡張文字推定部5、連鎖確率計算部6、最適経路探索部7及び出力装置8を有する。
【0029】
入力装置1は、自然言語テキストを当該形態素解析装置へ入力させるためのキーボード、マウス、OCR(光学式文字認識装置)、音声認識装置等の任意の手段で構成しても良いし、ネットワーク等の通信媒体を経て外部からの通信信号を受信する手段として構成しても良い。
【0030】
拡張文字テーブル2は、拡張文字列とその連鎖確率(部分連鎖確率)を格納するものであり、訓練テキスト(コーパス)により予め学習されて作成されている記憶装置である。
【0031】
スコアテーブル3は、入力テキストの文頭から文末までの全ての拡張文字列(N−gram)の経路と、拡張文字テーブル2に格納されている部分連鎖確率とに基づき求めた拡張文字列の経路に対応する拡張文字列の連鎖確率p(W,T)を格納する記憶装置である。
【0032】
拡張文字列生成部4は、事前に訓練により作成してある拡張文字テーブル2を参照して、入力テキストの拡張文字列を生成し、当該拡張文字列の経路を格納するものである。
【0033】
拡張文字推定部5は、拡張文字列生成部4が入力テキストから拡張文字列の経路を作成する際に、入力テキスト中に拡張文字テーブル2に格納されていない文字が含まれている場合に、当該不明文字を含む部分拡張文字列の部分連鎖確率を推定するものである。
【0034】
連鎖確率計算部6は、拡張文字テーブル2に格納されている部分連鎖確率に基づき、スコアテーブル3に格納されている拡張文字列の経路に対する連鎖確率を計算するものである。
【0035】
最適経路探索部7は、連鎖確率計算部6により計算された連鎖確率の中から、最適な条件(例えば最大値の連鎖確率を与えるなど)を満たす拡張文字列を、最適拡張文字列として選択するものである。
【0036】
出力装置8は、通常の情報処理装置の場合と同様に、当該形態素解析装置で得られた形態素解析結果を、外部の種々の表示手段や通信手段等へ出力するものである。
【0037】
図2は、拡張文字テーブル2の構成例を示す説明図である。図2において、拡張文字テーブル2には、上述した(1)式で定義される拡張文字eiに対応する文字ciと拡張情報(ここでは区切り情報)diとが対になって順次記載されている。具体的には、拡張文字テーブル2の1レコードを構成する各拡張文字ei-N+1,ei-N+2,…,eiは、対応する文字ci-N+1,ci-N+2,…,ciと、拡張情報di-N+1,di-N+2,…,diが対になって記載されている。また、レコードの右側の欄には、この拡張文字列に対応する部分連鎖確率p(ei|ei-1、ei-2,…,ei-N+1)が記載されている。以下、拡張文字eiの記法を、<ci,di>とする。また、拡張情報である区切り情報は、文字位置iの直後で形態素が分割される場合(di=1)と、分割されない場合(di=0)とで2値をとるものとする。
【0038】
図3は、拡張文字テーブル2の具体例を示す図である。この例では、文字組の数Nが3の場合、すなわち、N=3の場合のN−gramである部分拡張文字列ei-2,ei-1,eiに対応する部分連鎖確率p(ei|ei-1,ei-2)が各レコードに格納されている。
【0039】
例えば、レコードL309は、<東,0>、<京,1>,<都,0>からなる部分拡張文字列とその部分拡張文字列に対応する部分連鎖確率が0.12であることを示している。また、例えば、レコードL301等に現われる<#,1>なる記法は、入力テキストの先頭又は末尾において部分連鎖確率を計算する際に、他の部分拡張文字列と同等の効果を奏するように便宜的に挿入する特別な(ダミーの)拡張文字である。
【0040】
図4は、スコアテーブル3の構成例を示す説明図である。図4において、各拡張文字e-(N-1)+1,e-(N-1)+2,…,e1,e2…,en,…,en+(N-1)はそれぞれ、対応する文字c-(N-1)+1,c-(N-1)+2,…,c1,c2…,cn,…,cn+(N-1)と、拡張情報(ここでは区切り情報)d-(N-1)+1,d-(N-1)+2,…,d1,d2…,dn,…,dn+(N-1)が対になって、拡張文字列の全ての組み合わせ(各組み合わせを経路とも呼ぶ)に対して順次記録される。スコアテーブル3のレコードの右側の欄には、当該レコードに格納されている拡張文字列の経路に対する連鎖確率p(W,T)が格納される。
【0041】
図5は、格納処理が終了した後のスコアテーブル3の具体例を示す図である。この例では、「南京市」なるテキストが入力された場合の対応する拡張文字列の全て(「南京市」は3文字であるので、区切る、区切らないの2値の拡張情報の3乗で8種類)の経路と連鎖確率が格納されている。
【0042】
(A−2)第1の実施形態の動作
以下、第1の実施形態の形態素解析装置の動作(形態素解析方法)を図面を参照しながら説明する。
【0043】
まず、第1の実施形態の形態素解析装置の全体の動作を、図6に示すフローチャートを参照しながら説明する。
【0044】
第1の実施形態の形態素解析装置においては、入力テキストの部分文字列に対応するN−gram部分拡張文字列のレコードが拡張文字テーブル2に存在しない場合、すなわち、当該部分文字列が未知語である場合に、当該部分文字列の部分連鎖確率を求めることができないので、形態素解析の精度が著しく低くなるという現象を、図6に示す以下の動作によって解決する。
【0045】
(ステップS601) 入力装置1を介して入力テキストを本形態素解析装置に読み込む。
【0046】
(ステップS602) 読み込んだテキストの各文字から拡張文字を生成し、入力テキストの先頭から末尾に至る拡張文字列の経路をもとめてスコアテーブル3に格納する。このステップS602では、入力テキスト中に拡張文字テーブル2に存在しない一定文字数を持つ文字列(N−gram文字列)が存在する場合に、対応する部分拡張文字列、すなわち、未知語に対応した部分拡張文字列のレコードを推定する。
【0047】
(ステップS603) 生成された全ての拡張文字列の経路に対する連鎖確率を求める。拡張文字列の連鎖確率は、当該拡張文字列を構成する部分拡張文字列のそれぞれに対応する部分連鎖確率を拡張文字テーブル2を参照することにより求めて、それぞれの部分連鎖確率の積として求める(上述した(2)式参照)。求めた連鎖確率は、スコアテーブル3の対応する拡張文字列の経路のレコードに格納しておく。
【0048】
(ステップS604) スコアテーブル3を参照し、得られた連鎖確率の中から最適な条件(例えば最大の値の連鎖確率を与えるなど)を満たす拡張文字列を最適拡張文字列として選択する。
【0049】
(ステップS605) 出力装置8を介して、最適拡張文字列により決定される単語列の並びを含む形態素解析結果を出力する。
【0050】
図7は、上述したステップS602の拡張文字列生成動作を詳細に説明するフローチャートである。
【0051】
拡張文字列生成部4には、入力装置1を介してテキストが入力され、入力テキストの各文字毎に拡張情報(例えば区切り情報)を付加することにより拡張文字を形成する(ステップS701)。例えば、「南京市」という3文字の入力テキストに対しては、<南、0>、<南、1>、<京、0>、<京、1>、<市、0>、<市、1>の6種類の拡張文字が生成される。
【0052】
次に、生成された拡張文字から入力テキストに対応する拡張文字列の一つの経路を作成し、スコアテーブル3に格納する(ステップS702)。この際には、経路全体に対する連鎖確率の格納(図8参照)は実行されない。このステップS702が後述するように繰り返されるので、図7に示す一連の処理が終了したときには、拡張文字列の組み合わせで定まる全ての経路がスコアテーブル3に格納される。この第1の実施形態では、拡張情報として2値の区切り情報を付加するので、M文字の入力テキストからは、2のM乗種類の経路が作成される。また、テキストの先頭と末尾の特殊拡張文字を考慮して、1つの拡張文字列はM+2*(N−1)文字とする。
【0053】
例えば、N−gramが3−gramであれば、「南京市」という3文字の入力テキストに対しては、図5に示したように、<#,1>−<#,1>−<南,0>−<京,0>−<市,0>−<#,1>−<#,1>,<#,1>−<#,1>−<南,0>−<京,0>−<市,1>−<#,1>−<#,1>,…,<#,1>−<#,1>−<南,1>−<京,1>−<市,1>−<#,1>−<#,1>の7拡張文字でなる8種類の拡張文字列が生成される。
【0054】
ある経路についてのスコアテーブル3への格納が終了すると、次に、拡張文字推定部5がi番目の文字位置を表わすカウンタを初期化(i=1)する(ステップS703)。
【0055】
続いて、拡張文字推定部5は、直前のステップS702において拡張文字列生成部4が作成した拡張文字列(経路)の中から、カウンタiで定まる位置のN個の格納文字列部分(N−gram拡張文字列)e-(N-1)+i,…,eiを取り出す(ステップS704)。この実施形態では、N=3の場合のN−gramを想定しているので、取り出されるN−gram拡張文字列はei-2,ei-1,eiとなる。例えば,<#,1>−<#,1>−<南,0>−<京,0>−<市,0>−<#,1>−<#,1>なる拡張文字列(経路)に対して、i=1の場合には、e-1,e0,e1、すなわち、<#,1>,<#,1>,<南,0>がN−gram拡張文字列として取り出される。
【0056】
次に、取り出したN−gram拡張文字列のパターンが、拡張文字テーブル2に存在するかどうかを検査する(ステップS705)。
【0057】
存在しなければ、当該N−gram拡張文字列の連鎖確率を推定する(ステップS706)。連鎖確率の推定は、例えば、当該N−gram拡張文字列の拡張文字テーブル2に存在しない拡張文字(特殊拡張文字を除く)を、全ての文字と照合する汎用文字とみなし、拡張文字テーブル2の照合可能なレコードの連鎖確率の平均値を当該N−gram拡張文字列の連鎖確率とする方法により行う。
【0058】
次に、拡張文字推定部5は、推定した部分連鎖確率をもつN−gram拡張文字列を拡張文字テーブル2に追加格納する(ステップS707)。
【0059】
取り出したN−gram拡張文字列のパターンが拡張文字テーブル2に存在すると(ステップS705で否定結果)、又は、N−gram拡張文字列を拡張文字テーブル2に追加格納すると(ステップS707)、次に、文字位置を表わすカウンタiを1インクリメントした後(ステップS708)、カウンタiの値を値M+N−1(Mは入力テキストの文字数、NはN−gram文字列の文字数)とを比較することを通じて、現在処理対象となっている拡張文字列(経路)についての全てのN−gram拡張文字列部分についての拡張文字テーブル2の存在有無の確認を終了したか否かを判定する(ステップS709)。
【0060】
現在処理対象となっている拡張文字列(経路)についての全てのN−gram拡張文字列部分についての拡張文字テーブル2の存在有無の確認を終了していなければ、上述したステップS704に戻る。
【0061】
一方、1つの拡張文字列の経路を構成する全ての部分拡張文字列を処理した場合には(ステップS709で肯定結果)、拡張文字推定部5は動作を完了し、次に拡張文字列生成部4が未処理の拡張文字列の経路が残されているかどうかを検査し(ステップS710)、まだ、未処理の経路が残されているならば、上述したステップS702〜S710を繰り返す。全ての経路を処理したならば、拡張文字列生成部4は動作を終了する。
【0062】
上述したステップS704〜S707の動作を、実例にて具体的に説明する。ここでは、N−gram拡張文字列とその連鎖確率が格納されている拡張文字テーブル2の初期状態が、図3のレコードL301〜L334が格納されている状態であるとする。また、入力テキストが「南京市」であるとする。
【0063】
ここで、「南京市」という入力テキストに対する拡張文字列(経路)の−つである<#、1>−<#,1>−<南,0>−<京,0>−<市,0>−<#,1>−<#,1>なる拡張文字列に対して、i=1の場合には、N−gram拡張文字列e-1,e0,e1として、<#,1>,<#,1>,<南,0>が取り出される(ステップS704)。図3に示す拡張文字テーブル2のレコードL301〜L334の中には、このパターン<#,1>,<#,1>,<南,0>が存在しないので(ステップS705)、当該N−gram拡張文字列の拡張文字テーブル2に存在しない拡張文字<南,0>を汎用文字とみなし(このパターンの前半2拡張文字部分を有する当該N−gram拡張文字列は拡張文字テーブル2に存在する)、拡張文字テーブル2に照合するレコードを探すと、レコードL301の<#,1>、<#,1>,<東,0>と、レコードL321の<#,1>,<#,1>,<北,0>とが検索される。その結果、レコードL301及びL321の連鎖確率の平均値(0.06+0.06)/2=0.06が当該N−gram拡張文字列<#,1>,<#,1>,<南,0>の連鎖確率として推定される(ステップS706)。しかる後に、当該N−gram拡張文字列<#,1>,<#,1>,<南,0>とその連鎖確率0.06とが拡張文字テーブル2に追加格納される(ステップS707)。この動作により、拡張文字テーブル2には、図3のレコードL351が追加される。
【0064】
その後、カウンタiの値を変化させてステップS704〜S708が繰り返し実行されるが、上述したと同様にして、レコードL352〜L364が新たに拡張文字テーブル2に追加される。
【0065】
図8は、上述したステップS603の拡張文字列(経路)の連鎖確率の計算動作を詳細に説明するフローチャートである。
【0066】
連鎖確率計算部6は、まず、スコアテーブル3に格納されている拡張文字列レコードを1つ取り出す(ステップS801)。次に、文字位置を表わすカウンタiを初期化(i=1)する(ステップS802)。
【0067】
そして、当該レコードから、カウンタiの値で定まるe-(N-1)+iからeiまでのN文字の部分拡張文字列、すなわちN−gram拡張文字列を取り出し、拡張文字テーブル2中の当該N−gram拡張文字列に照合するレコードの連鎖確率p(ei)を取り出す(ステップS803)。
【0068】
ここで、文字位置カウンタiが1である(テキストの先頭のN−gram拡張文字列である)ならば(ステップS804で肯定結果)、当該拡張文字列レコードの連鎖確率p(W,T)に前記部分連鎖確率p(ei)を格納する(ステップS805)。また、N−gram拡張文字列が入力テキストの先頭でない場合には(ステップS804で否定結果)、当該拡張文字列レコードの連鎖確率p(W,T)に前記部分連鎖確率p(ei)を乗じて、新しい連鎖確率p(W,T)とする(ステップS806)。
【0069】
次に、文字位置カウンタiを1インクリメントした後(ステップS807)、カウンタiの値を値M+N−1(Mは入力テキストの文字数、NはN−gram文字列の文字数)とを比較することを通じて、現在処理対象となっている拡張文字列(経路)についての全てのN−gram拡張文字列部分についての部分連鎖確率p(ei)の取り出し、及び、それを反映した連鎖確率p(W,T)の更新処理が終了したか否かを判定する(ステップS808)。
【0070】
終了していなければ、上述したステップ808に戻る。一方、終了したならば、すなわち、1つの拡張文字列の経路の全てを構成する部分拡張文字列の部分連鎖確率を処理した場合には、当該拡張文字列の連鎖確率p(W,T)をスコアテーブル3の該当する位置に格納する(ステップS809)。
【0071】
連鎖確率p(W,T)の計算(ステップS801〜S809)は、スコアテーブル3に格納されている全てのレコードについて行い、全てのレコードを処理したならば(ステップS810)、連鎖確率計算部6は、動作を終了する。
【0072】
以下、具体例で連鎖確率の計算動作を説明する。入力テキストは「南京市」であるとする。また、拡張文字テーブル2には、図3の状態の部分拡張文字及び部分連鎖確率が格納されているものとする。また、スコアテーブル3には、図5に示すように「南京市」に対応する拡張文字列の経路が格納されているものとする。但し、図5に示す拡張文字列の各レコードの連鎖確率の欄は、初期状態では、空欄であるものとする。
【0073】
まず、スコアテーブル3から1レコードを取り出す。例えば、図5のレコードL501を取り出す。レコードL501は、<#,1>,<#,1>,<南,0>,<京,0>,<市,0>,<#,1>,<#,1>となっており、まず、i=1の場合のN−gram拡張文字列<#,1>,<#,1>,<南,0>の連鎖確率を拡張文字テーブル2から探す。図3のレコードL351が該当し、部分連鎖確率p(e1)として0.06が得られる(ステップS803)。今、i=1であるので、当該拡張文字列の連鎖確率p(W,T)にp(ei)を格納し、p(W,T)=0.06となる。
【0074】
次に、iを1だけ増やしてi=2とする(ステップS807)。i(=2)<M+N−1(=5)であるので(ステップS808)、ステップS803へ戻り、次のN−gram拡張文字列<#,1>,<南,0>,<京,0>の連鎖確率を拡張文字テーブル2から探す。図3のレコードL353が該当し、部分連鎖確率p(e2)として0.01が得られる(ステップS803)。今、i=2であるので、当該拡張文字列の連鎖確率p(W,T)は、元のp(W,T)(=0.06)にp(e2)(=0.01)を乗じた値となる。すなわち、新しい連鎖確率は、p(W,T)=p(e1)×p(e2)である。同様な処理が、i>M+N−1(=5)となるまで繰り返される。
【0075】
その結果、最終的には、<#,1>,<#,1>,<南,0>と、<#,1>,<南,0>,<京,0>と、<南,0>,<京,0>,<市,0>と、<京,0>,<市,0>,<#,1>と、<市,0>,<#,1>,<#,1>の5種の部分連鎖確率を乗じた値が、当該拡張文字列(レコードL501)の連鎖確率p(W,T)となる。この連鎖確率をスコアテーブル3のレコードL501の連鎖確率の欄に格納する(ステップS809)。
【0076】
以上の動作を、スコアテーブルの全てのレコードに対して行う(ステップS810)。
【0077】
図9は、上述したステップS604の最適拡張文字列の選択動作を詳細に説明するフローチャートである。
【0078】
まず、最適経路探索部7は、拡張文字列の選択条件を決定する(ステップS901)。選択条件としては、例えば、スコアテーブル3中で最大の連鎖確率をもつ拡張文字列のレコードを選択するなど、任意の選択条件を設定できるものとする。以後、拡張文字の選択条件としては、便宜的に最大連鎖確率をもつレコードを選択することにする。
【0079】
次に、スコアテーブル3を参照し、最大の連鎖確率をもつレコードを取り出す(ステップS902)。例えば、図5に示すスコアテーブルの例では、最大の連鎖確率(=0.459×10EXP−3(EXP−3は−3乗を意味する))をもつレコードL504<#,1>,<#,1>,<南,0>,<京,1>,<市,1>,<#,1>,<#,1>が取り出される。
【0080】
次に、文字位置を示すカウンタiを初期化し(ステップS903)、拡張文字ei=<ci,di>の文字ciを出力する(ステップS904)。ここで、当該拡張文字の拡張情報(区切り情報)diが1ならば(ステップS905)、続けて単語区切り記号(例えば「/」等)を出力し(ステップS906)、拡張情報(区切り情報)diが0ならば直ちにステップS907に進む。
【0081】
次に、カウンタiを1インクリメントした後(ステップS907)、カウンタiの値を値M+N−1とを比較することを通じて、全て拡張文字についての出力処理を終了していないことを確認してステップS904に戻って次の拡張文字についての出力処理に移行する(ステップS908)。
【0082】
このような繰り返し処理により、拡張文字列の全ての拡張文字についての出力処理が完了したら、テキスト区切り記号(例えば、改行コード等)を出力する(ステップS909)。その結果、例えば、拡張文字列のレコードL504では、「#/#/南京/市/#/#/」が出力され、「南京」と「市」が形態素として抽出されたことになる。
【0083】
最後に、上述したステップS901の選択条件に適合する拡張文字列(経路;レコード)が残っているかどうかを検査し(ステップS910)、選択条件に適合する全てのレコードを処理したならば、最適拡張文字列の一連の選択動作を終了する。
【0084】
(A−3)第1の実施形態の効果
以上、説明した第1の実施形態の形態素解析装置によれば、以下の効果を奏することができる。
【0085】
入力テキスト中に拡張文字テーブルに存在しない、未知のN−gram文字列が存在したとしても、拡張文字推定部を備え、拡張文字テーブルから未知の部分拡張文字列とその連鎖確率を推定するようにしたので、従来ならば未知語として扱われていた文字列を形態素解析の精度を損なうことなく推定することができる。
【0086】
また、入力テキスト中に拡張文字テーブルに存在しない、未知のN−gram文字列が存在したとしても、拡張文字推定部を備え、推定した拡張文字列の部分拡張文字列及び連鎖確率を拡張文字テーブルに格納するようにしたので、次回の形態素解析時からは、拡張文字の推定が必要なくなり、効率的な形態素解析を実施することができる。
【0087】
(A−4)第1の実施形態の変形実施形態
第1の実施形態においては、スコアテーブル3から選択する拡張文字列の選択条件を最大の連鎖確率をもつ拡張文字列としたが、この選択条件を、任意の閾値以上の連鎖確率をもつ拡張文字列とすれば、複数の候補の形態素解析結果を出力することができる。
【0088】
また、上記第1の実施形態においては、拡張文字推定部5が、取り出したN−gram拡張文字列のパターンが、拡張文字テーブル2に存在しない場合に、そのうちの1個の拡張文字(特殊拡張文字を除く)を、全ての文字と照合する汎用文字とみなし、拡張文字テーブル2から照合するレコードを取り出して、その連鎖確率の平均値(相加平均値)を当該N−gram拡張文字列の連鎖確率とするものであったが、相乗平均を用いるようにしても良い。
【0089】
さらに、N−gram拡張文字列のNが大きい場合には、1個の拡張文字(特殊拡張文字を除く)を全ての文字と照合する汎用文字とみなして求めた平均値と、2個の拡張文字(特殊拡張文字を除く)を全ての文字と照合する汎用文字とみなして求めた平均値との重み付け平均処理等をさらに行うようにしても良い。
【0090】
さらにまた、取り出したN−gram拡張文字列のパターンが拡張文字テーブル2に存在しない場合において、そのN−gram拡張文字列について推定した連鎖確率に応じて、他の連鎖確率を修正するようにしても良い。例えば、N−gram拡張文字列を拡張文字テーブル2に格納する場合、一般的には、先頭側のN−1個の拡張文字が同じ全てのN−gram拡張文字列の連鎖確率の和が1になるようになされているが、そのN−gram拡張文字列について推定した連鎖確率に応じ、この条件を満足するように、他のN−gram拡張文字列の連鎖確率を修正するようにしても良い。
【0091】
ところで、拡張文字テーブル2に、N−gram拡張文字列の情報だけでなく、(N−X)−gram拡張文字列とX−gram拡張文字列との情報も格納しておき、拡張文字列(ある経路)から取り出したN−gram拡張文字列のパターンが拡張文字テーブル2に存在しない場合には、そのN−gram拡張文字列の連鎖確率を、N−gram拡張文字列を分割した(N−X)−gram拡張文字列とX−gram拡張文字列の連鎖確率から求める方法も提案されている。
【0092】
上記実施形態において、例えば、平均処理に供するレコード数が少ない場合等には、上述したN−gram拡張文字列の連鎖確率を、N−gram拡張文字列を分割した(N−X)−gram拡張文字列とX−gram拡張文字列の連鎖確率から求める方法に切り替えるようにしても良い。
【0093】
なお、N−gram拡張文字列の連鎖確率を、N−gram拡張文字列を分割した(N−X)−gram拡張文字列とX−gram拡張文字列の連鎖確率から求める方法は、実際上、必要とするメモリ容量が膨大であり、また、N−gram拡張文字列という枠組みだけで処理できないので、上述した実施形態の連鎖確率の推定方法より、実製品への適用が難しいものである。
【0094】
また、第1の実施形態においては、拡張文字が文字(文字種)と区切り情報とでなるものを示したが、さらに、品詞情報(活用形を含んでいても良い)を含む拡張文字であっても良い。この場合、拡張文字推定部5が行う連鎖確率の推定処理(平均化処理)は、品詞情報が一致するレコード群毎に行うこととなり、拡張文字テーブル2への追加も、品詞情報が異なれば全て追加することになる。なお、照合するレコードの数が少ない品詞情報に係る、拡張文字テーブル2に存在しない入力テキストのN−gram拡張文字列に対しては、拡張文字テーブル2への追加を実行しないようにしても良い。
【0095】
(B)第2の実施形態
以下、本発明による自然言語処理装置を形態素解析装置に適用した第2の実施形態を図面を参照しながら詳述する。
【0096】
(B−1)第2の実施形態の構成
図10は、第2の実施形態の形態素解析装置の構成を示す機能ブロック図であり、上述した第1の実施形態に係る図1との同一、対応部分には同一符号を付して示している。
【0097】
図10において、この第2の実施形態の形態素解析装置は、第1の実施形態と同様な入力装置1、拡張文字テーブル2(図2参照)、スコアテーブル3(図4参照)、拡張文字列生成部4、拡張文字推定部5、連鎖確率計算部6、最適経路探索部7及び出力装置8に加えて、さらに、未知語検出部9、非対象文字パターンメモリ10、入力制御部11、入力バッファメモリ12、未知語バッファメモリ13及び出力合成部14を有する。
【0098】
第1の実施形態と同様な入力装置1、拡張文字テーブル2、スコアテーブル3、拡張文字列生成部4、拡張文字推定部5、連鎖確率計算部6、最適経路探索部7及び出力装置8の機能は、第1の実施形態と同様であるので、その説明は省略する。
【0099】
第2の実施形態において新たに設けられた未知語検出部9、非対象文字パターンメモリ10、入力制御部11、入力バッファメモリ12、未知語バッファメモリ13及び出力合成部14は、入力テキスト中に存在する未知語文字列を検出し、当該未知語文字列を推定し、それを形態素解析結果に反映させるために設けられたものである。
【0100】
未知語検出部9は、入力装置1からの入力テキスト中の未知語部分を非対象文字パターンメモリ10に格納されている情報に基づいて検出し、拡張文字テーブル2の格納内容を参照して、検出した未知語文字列に対して正しいと思われる文字列を推定するものである。
【0101】
非対象文字パターンメモリ10は、未知語検出部9が、未知語を検出する際に利用する、当該形態素解析装置の形態素解析の対象となり得ない文字(非対象文字)のパターンを格納しているものである。
【0102】
入力制御部11は、未知語検出部9により入力テキスト中に未知語が検出され、正しいと推定された入力テキストを制御するものである。
【0103】
入力バッファメモリ12は、未知語検出部9や入力制御部11が新たに作成した(推定した)1又は複数の入力テキストを一時保存するものである。
【0104】
未知語バッファメモリ13は、入力制御部11の制御下で、未知語検出部9が検出した未知語部分の文字列を一時退避保存しておくものである。
【0105】
出力合成部14は、入力制御部11が制御する複数の入力テキストについての最適経路探索部7からの形態素解析結果と、未知語バッファメモリ13に退避されている未知語部分の文字列をを合成し、所望の形態素解析結果を得るための処理を行うものである。
【0106】
図11は、第2の実施形態における非対象文字パターンテーブル10の構成例を示す説明図である。
【0107】
非対象文字とは、当該形態素解析装置への入力テキスト中に含まれるはずがないと考えられる文字のことであり、例えば、文字化けやミスタイプ等によって入力テキスト中に生じる可能性が高いものである。非対象文字パターンメモリ10には、非対象文字の集合が予め設定格納されている。
【0108】
図11において、例えば、レコードL1101には「∬‰♪¶‡」という通常の文章では生じることが考えられない非対象文字の集合が登録されており、入力テキスト中に現われる「∬‰♪¶‡」の各文字は、非対象文字であることが示されている。また、レコードL1102に示すように、非対象文字パターンとして、[辧−咨]や[嵌−巍]のように、[開始文字コード−終了文字コード]の表現による文字コード(テキスト)の範囲で指定することもできる。すなわち、入力テキスト中に、このコード範囲のコードを有する文字がある場合には、その文字は非対象文字であることが示されている。現在の文章の多くは、第2水準の漢字を含むことはごく稀であり、含まれていてもその第2水準の漢字はある程度限られたものとなり、第2水準の漢字の多くを非対象文字として登録することは実際的である。
【0109】
図12は、第2の実施形態における入力バッファメモリ12の格納例を示す説明図である。
【0110】
図12(A)は、未知語検出部9によって、入力テキスト中の未知語が検出され、当該未知語候補の推定が行われた後の入力テキスト(ここでは2種類)が格納されている状態を示している。レコードL1201の「この形態素の答における利点は」とレコードL1202の「この形態素解析における利点は」との差分である「の答」と「解析」の部分が、未知語検出部9によって推定された未知語部分である。
【0111】
図12(B)は、未知語検出部9をもってしても推定できなかった未知語部分が存在した場合に、未知語検出部9によって未知語部分にマークして格納されている状態である。実際の入力テキストが「この形態♪‰¶∬おける利点は」であった場合に、未知語検出部9が検出した未知語「♪‰¶∬」の文字長(=4)が、当該形態素解析装置の未知語推定能力である3文字(N=3のN−gram文字列を扱うようにしている)を超えていると(後述する図15参照)、未知語部分を推定できないので、未知語部分の領域を規定するかっこ{}でマークして格納される。
【0112】
なお、入力バッファメモリ12は、例えば、FIFO(First In First Out)形式のバッファ、すなわち、先入れ先出し形式のバッファとなっており、例えば、レコードL1201が取り出されて処理されると、レコードL1202がレコードL1201の位置にシフトしてレコードL1202の今までの位置が空となるように、次々と上位レコードのエリアへシフトする構成となっている。
【0113】
図13は、第2の実施形態における未知語バッファメモリ13の格納例を示す説明図である。
【0114】
未知語バッファメモリ13には、図12(B)について説明したような、未知語検出部9をもってしても推定できなかった未知語部分が存在した場合に、入力制御部11によって当該未知語部分が取り出されて格納されるものである。実際の入力テキストが「この形態♪‰¶∬おける利点は」であった場合には、その未知語部分「♪‰¶∬」が、未知語バッファメモリ13に格納される。
【0115】
(B−2)第2の実施形態の動作
以下、第2の実施形態の形態素解析装置の動作(形態素解析方法)を図面を参照しながら説明する。
【0116】
まず、第2の実施形態の形態素解析装置の全体の動作を、図14に示すフローチャートを参照しながら説明する。なお、図14において、図6との同一、対応ステップには同一符号を付して示している。
【0117】
第2の実施形態においては、入力テキストの部分文字列に、自然言語の通常の文章には存在し得ない文字列としての未知語が存在する場合に、当該未知語部分を検出し、可能な限り復元することを以下の動作によって実施する。なお、(ステップS601)〜(ステップS605)の各ステップは、第1の実施形態と同様の動作である。
【0118】
(ステップS601) 入力装置1を介して入力テキストを本形態素解析装置に読み込む。
【0119】
(ステップS1401) 入力テキストの未知語部分を検出し、可能な限り未知語部分を復元したテキスト(以下、推定テキストと称する)を生成して入力バッファメモリ12に格納する。また、未知語部分の推定ができない場合には、当該未知語部分にマークを付したテキスト(以下、マークテキストと称する)を入力バッファメモリ12に格納する。なお、入力テキストの未知語部分が検出できない場合には、当然に復元やマーク付与処理は実行されない。また、次のステップS1402の処理も省略される。
【0120】
(ステップS1402) ステップS1401にて生成された推定テキスト又はマークテキストが格納されている入力バッファメモリ12を制御し、以下のステップにテキストを渡す。また、推定できない未知語部分は、未知語バッファメモリ13に格納する。
【0121】
(ステップS602) 入力バッファメモリ12から読み込んだテキストの各文字から拡張文字を生成し、入力テキストの先頭から末尾に至る拡張文字列の経路をもとめてスコアテーブル3に格納する。このステップでは、入力テキスト中に拡張文字テーブル2に存在しない一定文字数を持つ文字列(N−gram文字列)が存在する場合に、対応する部分拡張文字列、すなわち、未知語に対応した部分拡張文字列のレコードを推定する。
【0122】
(ステップS603) 生成された全ての拡張文字列の経路に対する連鎖確率を求める。拡張文字列の連鎖確率は、当該拡張文字列を構成する部分拡張文字列のそれぞれに対応する部分連鎖確率を拡張文字テーブル2を参照することにより求めて、それぞれの部分連鎖確率の積として求める。求めた連鎖確率は、スコアテーブル3の対応する拡張文字列の経路のレコードに格納しておく。
【0123】
(ステップS604) スコアテーブル3を参照し、得られた連鎖確率の中から最適な条件(例えば最大の値の連鎖確率を与えるなど)を満たす拡張文字列を最適拡張文字列として選択する。
【0124】
(ステップS1403) 入力制御部11によって制御された複数のテキストの形態素解析結果を出力として合成する。なお、入力テキストに未知語(非対象文字)部分がない場合には、このステップは、最適経路探索部7からの形態素解析結果をそのまま出力装置8に引き渡す処理となる。
【0125】
(ステップS605) 出力装置8を介して単語列の並びを含む形態素解析結果として出力する。
【0126】
図15は、ステップS1401による未知語(非対象文字)の検出動作を詳細に説明するフローチャートである。
【0127】
未知語検出部9は、非対象文字パターンメモリ10を参照することにより、入力テキスト中の全ての非対象文字連続部分と、各非対象文字連続部分の非対象文字数Lを検出する(ステップS1501)。なお、この処理により、非対象文字が1個も検出できない場合には、分岐線の図示は省略しているが、一連の処理を終了する。
【0128】
次に、拡張文字テーブル2に格納されているN−gram拡張文字列の次数(文字数)Nと、ある1個の非対象文字連続部分についての非対象文字数Lと比較する(ステップS1502)。この比較は、現在処理対象の非対象文字連続部分について、拡張文字テーブル2の格納内容を利用して正しいと思われる文字列が推定できるか否かの判定を意味する。
【0129】
未知語検出部9は、L<Nであるならば(ステップS1502で肯定結果)、現在処理対象の非対象文字連続部分の前又は及び後の非対象文字以外の文字を含み、非対象文字部分がいずれの文字であっても良い、N−gram文字列(拡張情報は何れでも良い)に合致するレコードが拡張文字テーブル2に存在するかを検索し(ステップS1503)、照合したレコードで定まる、非対象文字列部分に置き換え可能な文字列パターンが存在するか否かを判定する(ステップS1504)。
【0130】
そして、非対象文字列部分に置き換え可能な文字列パターンが存在するならば(ステップS1504で肯定結果)、当該非対象文字列部分に代えて、その文字列パターンを適用した推定テキストを生成して入力バッファメモリ12に格納する(ステップS1505)。ここで、ステップS1503の検索において、非対象文字列部分に置き換え可能な文字列パターンとして複数のものが得られる場合も想定され、この場合には、異なる文字列パターンを有する複数の推定テキストを生成して入力バッファメモリ12に格納する。
【0131】
なお、入力バッファメモリ12に格納し得る推定テキストであるか否かを連鎖確率を利用して判定するようにしても良い。このことについては、後述する具体例を用いた処理で説明する。
【0132】
一方、非対象文字数LがN−gram文字列の次数N以上である場合(ステップS1502で否定結果)や、非対象文字列部分に置き換え可能な文字列パターンが存在しない場合(ステップS1504で否定結果)には、未知語(非対象文字列)の本来の文字列への推定が不可能であるので、入力テキストの非対象文字列に未知語マーカを付与してマークテキストを生成し、入力バッファメモリ12に格納する(ステップS1506)。
【0133】
しかる後に、入力テキスト中の非対象文字の全ての連続部分を処理したかどうかを判定し(ステップS1507)、未処理の非対象文字の連続部分が存在する場合には、上述したステップS1502〜S1507の処理を他の非対象文字の連続部分に対して繰り返し、入力テキスト中の非対象文字の全ての連続部分を処理した場合には、未知語検出部9は一連の動作を終了する。
【0134】
例えば、「この形態素‰¶における利点は」という入力テキストに対して、未知語検出部9が、図11に示す非対象文字パターンメモリ10を参照すると、レコードL1101より「‰」及び「¶」が非対象文字であることが判り、前記入力テキストの「‰¶」が未知語(非対象文字連続部分)であると検出し、その長さLが2であると検出する(ステップS1501)。
【0135】
ここで、N−gram文字列の次数Nを3とすると、L<Nとなり(ステップS1502)、拡張文字テーブル2を検索する(ステップS1503)。
【0136】
今、この検索が、非対象文字連続部分「‰¶」の前側の非対象文字以外の文字「素」と、非対象文字連続部分「‰¶」に対する2個の汎用文字とのN−gram文字列(3−gram文字列)で行われたとする。また、拡張文字テーブル2には、例えば「<素,1><の,0><答,1>」及び「<素,1><解,0><析,1>」なるN−gram文字列のレコードが存在したとする。
【0137】
この場合には、拡張文字テーブル2の検索により、非対象文字連続部分「‰¶」に置き換えられる文字列パターンとして、「の答」及び「解析」の存在が確認され(ステップS1504)、推定テキスト「この形態素の答における利点は」と「この形態素解析における利点は」が生成されてこれらが入力バッファメモリ12に格納される(ステップS1505)。この格納状態での入力バッファメモリ12は、上述した図12(A)に示すようになる。
【0138】
なお、検索により発見した「<素,1><の,0><答,1>」及び「<素,1><解,0><析,1>」なるN−gram文字列の連鎖確率を取り出し、その連鎖確率を閾値と比較し、閾値を越えている場合にのみ、推定テキストの生成を行うようにしても良い。
【0139】
また、非対象文字連続部分「‰¶」の前側の非対象文字以外の文字「素」と、非対象文字連続部分「‰¶」に対する2個の汎用文字とのN−gram文字列(3−gram文字列)での検索で「<素,1><の,0><答,1>」というN−gram文字列が得られた場合、非対象文字連続部分「‰¶」に置き換え可能な検索文字列「<の,0><答,1>」と、入力テキストにおける非対象文字連続部分「‰¶」の後側の非対象文字以外の文字「に」とのN−gram文字列(3−gram文字列)で再度拡張文字テーブル2を照合し、このN−gram文字列(3−gram文字列)が検索できたことで、非対象文字連続部分「‰¶」が「の答」と推定するようにしても良い。この場合においても、例えば、前側の非対象文字以外の文字「素」を含むN−gram文字列の検索で発見できたN−gram文字列の連鎖確率と、後側の非対象文字以外の文字「に」を含むN−gram文字列の検索で発見できたN−gram文字列の連鎖確率とを乗算した後、その乗算値を閾値と比較し、閾値を越えている場合にのみ、推定テキストの生成を行うようにしても良い。
【0140】
一方、入力テキストが、例えば、「この形態♪‰¶∬おける利点は」であった場合には、未知語検出部9は、以下のように動作する。未知語検出部9が、図11に示す非対象文字パターンメモリ10を参照すると、レコードL1101より「♪」、「‰」、「¶」及び「∬」が非対象文字であることが判り、前記入力テキストの「♪‰¶∬」が未知語(非対象文字連続部分)であると検出し、その長さLが4であると検出する(ステップS1501)。なお、通信手段で受信したテキストが入力テキストの場合等では、バーストエラーが発生し易く、多くの非対象文字が連続することも発生する恐れがある。
【0141】
この場合にはL>Nとなるので(ステップS1502)、未知語部分にマーカを付与したマーカテキスト「この形態{♪‰¶∬}おける利点は」が生成されて入力バッファメモリ12に格納される(ステップS1506)。上述した図12(B)は、この場合の入力バッファメモリ12の格納状態を示している。
【0142】
図16は、上述したステップS1402の入力制御の動作を詳細に説明するフローチャートである。
【0143】
入力制御部11は、入力バッファメモリ12からレコードを1つ取り出す(ステップS1602)。そして、取り出したレコード中に、未知語マーカが付与されているか否かを判定する。
【0144】
未知語マーカが付与されている(すなわち、取り出したレコードがマーカテキストである)ならば(ステップS1602で肯定結果)、当該レコードより未知語マーカ部分を切り出し、マーカを除去して未知語バッファメモリ13に格納する(ステップS1603;図13参照)。この場合、マーカテキストは、未知語部分が除去されて2つに分割される。
【0145】
一方、ステップS1602にて未知語マーカが検出されなかった場合(すなわち、取り出したレコードが推定テキストである場合)には、未知語なし記号(例えば、「@」など)を未知語バッファメモリ13に格納する(ステップS1604)。
【0146】
しかる後に、当該マーカテキストの未知語部分より前半の部分又は当該推定テキストを拡張文字列生成部4に渡す(ステップS1605)。ここで、後述する出力合成部14の動作と同期するために、入力制御部11は、未知語バッファメモリ13が空になるのを監視し(ステップS1606)、未知語バッファメモリ13が空になれば、当該レコードの全てを処理したかどうかをチェックする(ステップS1607)。
【0147】
当該レコードの全てを処理していなければ、すなわち、マーカテキストの未知語部分より後半の部分が残されているならば(ステップS1607で否定結果)、ステップS1602〜S1607を繰り返す。
【0148】
また、当該レコードを全て処理したならば、入力バッファメモリ12中に、テキストが残されていないかチェックし(ステップS1608)、未処理のレコードが入力バッファメモリ12中に残されているならば、ステップS1601〜S1608を繰り返し、未処理のレコードが入力バッファメモリ12中に残されていないならば、最後に、入力終了記号(例えば、「$」など)を未知語バッファメモリ13に格納し(ステップS1609)、入力制御部11は一連の動作を終了する。
【0149】
例えば、入力バッファメモリ12が図12(A)の状態であるならば、最初に、「この形態素の答における利点は」(レコードL1201)が取り出され(ステップS1601)、当該レコード中に未知語マーカはないので(ステップS1602)、未知語なし記号「@」が未知語バッファメモリ13に格納される(ステップS1604)。そして、当該レコード「この形態素の答における利点は」が拡張文字列生成部4に渡され(ステップS1605)、以降は、第1の実施形態と同様に形態素解析が行われる。一方、入力バッファメモリ12が図12(B)の状態であるならば、「この形態{♪‰¶∬}おける利点は」(レコードL1203)が取り出され(ステップS1601)、未知語マーカが検出され(ステップS1602)、当該未知語部分「♪‰¶∬」が未知語バッファメモリ13に格納される(ステップS1603)。そして、当該マーカテキストの未知語部分より前半の部分「この形態」が拡張文字列生成部4に渡され(ステップS1605)、以降は、第1の実施形態と同様に形態素解析が行われる。
【0150】
しかる後に、未知語バッファメモリ13を監視することにより、後述する出力合成の動作と同期を図り(ステップS1606)、出力合成の動作が完了すれば、次の推定テキスト(L1202「この形態素解析における利点は」)又は、マーカテキストの未知語部分より後半の部分(「おける利点は」)が同様に処理される。最後に、入力終了記号(例えば、「$」など)が未知語バッファメモリ13に格納される(ステップS1609)。
【0151】
図17は、上述したステップS1403の出力合成の動作を詳細に説明するフローチャートである。
【0152】
出力合成部14は、未知語バッファメモリ13が空であるかどうかで、入力制御部11と同期する(ステップS1701)。すなわち、未知語バッファメモリ13に未知語又は未知語なし記号「@」が格納された時点で動作を開始し、未知語バッファメモリ13から未知語テキストを取り出す(ステップS1702)。そして、取り出した未知語テキストが、入力終了記号「$」か否かを判定する(ステップS1703)。入力終了記号「$」であれば一連の出力制御動作を終了し、入力終了記号「$」でなければ(ステップS1703で否定結果)、最適経路探索部7から出力テキストを受け取る(ステップS1704)。
【0153】
その後、ステップS1702で取り出した未知語テキストが未知語なし記号「@」か否かを判定する(ステップS1705)。未知語なし記号「@」でなければ、最適経路探索部7からの出力テキストに未知語テキストを付加した後(ステップS1706)。未知語なし記号「@」であれば、最適経路探索部7からの出力テキストをそのまま出力装置8へ渡す(ステップS1707)。
【0154】
最後に、未知語バッファメモリ13をクリアし(ステップS1708)、上述したステップS1701へ戻る。未知語バッファメモリ13がクリアされることにより、入力制御部11は次の動作を開始する。
【0155】
例えば、入力バッファメモリ12が図12(B)の状態であるならば、未知語部分「♪‰¶∬」が未知語バッファメモリ13に格納される(ステップS1603)。そして、当該マーカテキストの未知語部分より前半の部分「この形態」が拡張文字列生成部4に渡され(ステップS1605)、以降は、第1の実施形態と同様に形態素解析が行われる。出力合成部14は、未知語バッファメモリ13に未知語部分「♪‰¶∬」が格納されたことで動作を開始し(ステップS1701)、最適経路探索部7から出力テキスト「/この/形態/」を受け取り(ステップS1704)、当該テキストに未知語を付加し(ステップS1706)、「/この/形態/♪‰¶∬/」が出力される(ステップS1707)。
【0156】
次に、未知語バッファメモリ13がクリアされる(ステップS1708)ので、入力制御部11は、動作を再開し、マーカテキストの未知語部分より後半の部分「おける利点は」が同様に処理され、最適経路探索部7から出力テキスト「おける/利点/は/」を受け取り(ステップS1704)、この場合、未知語テキストは未知語なし記号「@」であるので、そのまま、「おける/利点/は/」が出力される(ステップS1707)。
【0157】
(B−3)第2の実施形態の効果
この第2の実施形態においても、第1の実施形態と同様な構成要素を備えるので、第1の実施形態と同様な効果を奏することができる。
【0158】
これに加えて、第2の実施形態によれば、未知語検出部9、入力制御部11及び出力合成部14等を備えるので、以下の効果を奏することができる。
【0159】
すなわち、第2の実施形態によれば、未知語部分(非対象文字列)を検出し、その未知語部分が短いならば、その未知語部分の本来の文字列と思われる文字列を推定することができる。
【0160】
例えば、「この形態素‰¶における利点は」という入力テキストに対して、「/この/形態素/の/答/に/おける/利点/は/」と「/この/形態素/解析/に/おける/利点/は/」という形態素解析結果を得ることができる。すなわち、「‰¶」なる未知語を検出し、従来ならば未知語として扱われていた文字列を「の答」や「解析」などのように正しいと思われる文字列として推定することができる。
【0161】
また、第2の実施形態の形態素解析装置によれば、未知語部分(非対象文字列)を検出し、その文字数が多い場合においても、未知語以外の部分の形態素解析の精度を損なうことなく所望の形態素解析結果を得ることができる。
【0162】
例えば、「この形態♪‰¶∬おける利点は」という入力テキストに対して、「この形態」及び「おける利点は」を独立して形態素解析し、合成により「/この/形態/♪‰¶∬/おける/利点/は/」なる形態素解析結果を得ることができる。すなわち、従来ならば、「この形態♪‰¶∬おける利点は」全体を形態素解析する構成であったので、未知語部分「♪‰¶∬」の影響が以降の解析精度に影響していたが、第2の実施形態によれば、未知語の影響を受けずに正確な形態素解析を行うことができる。
【0163】
(B−4)第2の実施形態の変形実施形態
第2の実施形態においては、未知語を推定できない場合に入力テキストを分割し、それぞれについて形態素解析を順次実施し、最後に合成するものであったが、複数の分割テキストに対する形態素解析を並列に実施するようにしても良い。
【0164】
また、第2の実施形態においては、未知語を検出するための非対象文字が1文字を単位としたものであったが、それに加えて、2文字以上の組み合わせ(熟語的に)でも非対象文字パターンメモリ10に登録しておくようにしても良い。このようにした場合には、例えば、一般的な文章で用いられることがない熟語を、それと等価な一般的な文章で良く用いられる熟語に置換して形態素解析に供するようなことができる。
【0165】
さらに、第2の実施形態においては、非対象文字パターンメモリ10が固定のものを示したが、非対象文字パターン編集処理部及びそれに対する入力装置を設けて、ユーザが登録、削除等を実行できるものであっても良い。
【0166】
さらにまた、第2の実施形態においても、未知語検出部9が、拡張文字列生成部4や拡張文字推定部5や連鎖確率計算部6等の形態素解析要素が利用する拡張文字テーブル3を利用するものを示したが、これとは別個に構成されたテーブルを用いるようにしても良い。例えば、拡張情報を含まない文字のN−gram文字列(好ましくは連鎖確率は有する)を格納したテーブルを用いるようにしても良い。
【0167】
また、第2の実施形態においては、非対象文字数LがN−gram拡張文字列の次数(文字数)N以上であるときには、正しいと思われる文字列への推定動作を実行しないものであったが、Lが2N−2以下であれば、推定精度は落ちるが、推定動作を行うようにしても良い。例えば、非対象文字列をほぼ均一に2分し、前半の非対象文字列とその前側の対象文字とで拡張文字テーブルを走査すると共に、後半の非対象文字列とその後側の対象文字とで拡張文字テーブルを走査し、両走査結果を統合することにより、正しいと思われる文字列を推定するようにしても良い。
【0168】
第2の実施形態は、入力テキストの未知語部分を正しいと思われる推定された文字列に置き換えた後に、第1の実施形態に係る方法で形態素解析を行うものであったが、他の方法により形態素解析するものであっても良く(例えば、単語辞書を利用したもの)、さらには、推定置換後の入力テキスト(推定テキスト)に対して形態素解析以外の自然言語処理を施すものであっても良く、推定置換だけでそれ以降、自然言語処理を行わないものにも本発明を適用できる。例えば、通信されてきたテキストにおける文字化け(未知語)を本来の文字に戻す手段としてのみ、第2の実施形態の特徴を適用することができる。
【0169】
(C)他の実施形態
上述した第1及び第2の実施形態の説明においても、種々変形実施形態について言及したが、さらに、以下のような変形実施形態を挙げることができる。
【0170】
上記各実施形態においては、拡張文字テーブル2内のN−gram拡張文字列について連鎖確率で頻度情報を格納したものを示したが、頻度そのものを格納するようにしても良い。この場合、例えば、確率が1となるN−gram拡張文字列のグループ毎に総頻度も格納しておき、経路のスコア(評価値)を計算するときに、確率に置き換えるようにしても良い。また、経路のスコアを、各N−gram拡張文字列の頻度の総和等で計算するようにしても良い。
【0171】
また、上記各実施形態における拡張文字テーブル2やスコアテーブル3等は、テーブル構成以外の構成で実現しても良い。
【0172】
さらに、上記各実施形態においては、対象とする自然言語が日本語であるものを示したが、他の言語の入力テキストに対しても本発明を適用することができる。ここで、他の言語としては、スペース等で単語区切りが明確になっていない言語だけでなく、スペース等で単語区切りが明確になっている言語であっても良い。例えば、文字化け等を考慮した第2の実施形態の特徴は、スペース等で単語区切りが明確になっている言語においても、非常に有効なものである。
【0173】
【発明の効果】
以上のように、本発明によれば、文字化けやミスタイプ等による未知語部分を含む入力テキストに対しても良好な形態素解析結果を得ることができる自然言語処理装置を実現できる。
【図面の簡単な説明】
【図1】第1の実施形態の構成を示すブロック図である。
【図2】第1の実施形態の拡張文字テーブルの構成を示す説明図である。
【図3】第1の実施形態の拡張文字テーブルの具体例を示す説明図である。
【図4】第1の実施形態のスコアテーブルの構成を示す説明図である。
【図5】第1の実施形態のスコアテーブルの具体例を示す説明図である。
【図6】第1の実施形態の全体動作を示すフローチャートである。
【図7】第1の実施形態の拡張文字列の生成動作を示すフローチャートである。
【図8】第1の実施形態の連鎖確率の計算動作を示すフローチャートである。
【図9】第1の実施形態の最適拡張文字列の選択動作を示すフローチャートである。
【図10】第2の実施形態の構成を示すブロック図である。
【図11】第2の実施形態の非対象文字パターンメモリの構成を示す説明図である。
【図12】第2の実施形態の入力バッファメモリの構成を示す説明図である。
【図13】第2の実施形態の未知語バッファメモリの構成を示す説明図である。
【図14】第2の実施形態の全体動作を示すフローチャートである。
【図15】第2の実施形態の未知語の検出動作を示すフローチャートである。
【図16】第2の実施形態の入力制御動作を示すフローチャートである。
【図17】第2の実施形態の出力合成動作を示すフローチャートである。
【符号の説明】
2…拡張文字テーブル、3…スコアテーブル、4…拡張文字列生成部、5…拡張文字推定部、6…連鎖確率計算部、7…最適経路探索部、9…未知語検出部、10…非対象文字パターンメモリ、11…入力制御部、12…入力バッファメモリ、13…未知語バッファメモリ、14…出力合成部。
Claims (4)
- 読み込んだ入力テキストの文字列の文字毎に少なくとも単語区切り情報を含む拡張情報を付加して拡張文字を形成し、該拡張文字を用いて前記入力テキストの文字列に関する全ての組み合わせの拡張文字列を生成する拡張文字列生成部と、
一定文字数からなる部分拡張文字列とこの部分拡張文字列に対する部分連鎖確率情報を格納している拡張文字記憶部と、
前記入力テキストの先頭から末尾までの全ての部分拡張文字列の経路と前記拡張文字記憶部に格納されている部分連鎖確率に基づき、前記拡張文字列生成部で生成された全ての前記拡張文字列のそれぞれについて、連鎖確率情報を求める連鎖確率計算部と、
得られた連鎖確率情報を格納するスコア記憶部と、
得られた連鎖確率情報の中から良好の連鎖確率を与える拡張文字列を選択し、該拡張文字列に対応する単語列の並びを含む解析結果を形態素解析結果として出力する良好経路探索部と、
前記拡張文字列生成部が生成した拡張文字列の部分拡張文字列が前記拡張文字記憶部に存在しない場合に、前記拡張文字記憶部に格納されている当該部分拡張文字列の一部の拡張文字と共通の拡張文字を有する他の部分拡張文字列の部分連鎖確率情報から、当該部分拡張文字列の部分連鎖確率情報を推定する拡張文字推定部とを備え、
前記良好経路探索部は、得られた連鎖確率情報の中の最大の値の連鎖確率情報をもつ拡張文字列を良好の連鎖確率を与える拡張文字列として選択し、又は、得られた連鎖確率情報の中の閾値以上の連鎖確率情報をもつ拡張文字列を良好の連鎖確率を与える拡張文字列として選択し、
前記拡張文字推定部は、前記拡張文字記憶部の格納内容との照合で合致した1又は複数の部分拡張文字列の部分連鎖確率情報の相加平均若しくは相乗平均を、当該部分拡張文字列の部分連鎖確率情報の推定値とし、
又は、前記拡張文字推定部は、前記拡張文字記憶部に存在しない前記部分拡張文字列について、そのうちの1個又は複数の拡張文字を全ての文字に照合可能な汎用文字とみなして、前記拡張文字記憶部の格納内容と照合し、1個の拡張文字を汎用文字とみなして合致した1個又は複数の部分拡張文字列の部分連鎖確率情報の相加平均若しくは相乗平均と、複数の拡張文字を汎用文字とみなして合致した1個又は複数の部分拡張文字列の部分連鎖確率情報の相加平均若しくは相乗平均と、の重み付け平均を、当該部分拡張文字列の部分連鎖確率情報の推定値とする
ことを特徴とする自然言語処理装置。 - 入力テキストが日本語テキストであることを特徴とする請求項1に記載の自然言語処理装置。
- 前記拡張文字推定部は、推定した連鎖確率情報を、当該情報に係る部分拡張文字列と共に前記拡張文字記憶部に追加格納することを特徴とする請求項1又は2に記載の自然言語処理装置。
- 前記良好経路探索部が、得られた連鎖確率情報の中の閾値以上の連鎖確率情報をもつ拡張文字列を最適の連鎖確率を与える拡張文字列として選択するものであり、前記閾値を外部から設定可能にしていることを特徴とする請求項1〜3のいずれかに記載の自然言語処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33398897A JP3938234B2 (ja) | 1997-12-04 | 1997-12-04 | 自然言語処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP33398897A JP3938234B2 (ja) | 1997-12-04 | 1997-12-04 | 自然言語処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11167574A JPH11167574A (ja) | 1999-06-22 |
JP3938234B2 true JP3938234B2 (ja) | 2007-06-27 |
Family
ID=18272244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33398897A Expired - Fee Related JP3938234B2 (ja) | 1997-12-04 | 1997-12-04 | 自然言語処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3938234B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5105996B2 (ja) * | 2007-08-21 | 2012-12-26 | 日本放送協会 | 形態素候補生成装置およびコンピュータプログラム |
JP5870744B2 (ja) * | 2012-02-20 | 2016-03-01 | カシオ計算機株式会社 | 情報処理装置及びプログラム |
JP5927955B2 (ja) * | 2012-02-06 | 2016-06-01 | カシオ計算機株式会社 | 情報処理装置及びプログラム |
JP5978645B2 (ja) * | 2012-02-22 | 2016-08-24 | カシオ計算機株式会社 | 情報処理装置、データ表示装置及びプログラム |
JP6056291B2 (ja) * | 2012-09-11 | 2017-01-11 | カシオ計算機株式会社 | 情報処理装置、データ表示装置及びプログラム |
JP6640618B2 (ja) * | 2016-03-11 | 2020-02-05 | 株式会社東芝 | 言語処理装置、方法、およびプログラム |
CN112329445B (zh) * | 2020-11-19 | 2024-07-23 | 北京明略软件系统有限公司 | 乱码判断方法、系统、信息抽取方法及信息抽取系统 |
-
1997
- 1997-12-04 JP JP33398897A patent/JP3938234B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11167574A (ja) | 1999-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3998668B2 (ja) | 形態素解析装置、方法及びプログラム | |
Lita et al. | Truecasing | |
JP6176017B2 (ja) | 検索装置、検索方法、およびプログラム | |
KR100999488B1 (ko) | 문서 표절 탐색 방법 및 장치 | |
JPH1153384A (ja) | キーワード抽出装置及びキーワード抽出方法並びにキーワード抽出プログラムを格納したコンピュータ読み取り可能な記録媒体 | |
JPH1069483A (ja) | スペル訂正システム | |
JP2004355483A (ja) | 形態素解析装置、形態素解析方法及び形態素解析プログラム | |
JP2002517039A (ja) | 中国語テキストにおける単語分割 | |
Soper et al. | BART for post-correction of OCR newspaper text | |
JP3992348B2 (ja) | 形態素解析方法および装置、並びに日本語形態素解析方法および装置 | |
JP3938234B2 (ja) | 自然言語処理装置 | |
US8554539B2 (en) | Method for analyzing morpheme using additional information and morpheme analyzer for executing the method | |
KR100479205B1 (ko) | 텍스트 문서집합에서 반복학습을 통한 개체명 인식 및의미범주 분류 장치 및 그 방법 | |
JP2004070636A (ja) | 概念検索装置 | |
JP3309174B2 (ja) | 文字認識方法及び装置 | |
JP4682627B2 (ja) | 文書検索装置および方法 | |
KR100420474B1 (ko) | 부분문틀을 이용한 장문 번역 장치 및 그 방법 | |
KR20080028655A (ko) | 품사 태깅 장치 및 태깅 방법 | |
JPS63228326A (ja) | キ−ワ−ド自動抽出方式 | |
JP5182960B2 (ja) | 店舗名曖昧性解消装置、その方法、プログラム及び記録媒体 | |
JP2001101186A (ja) | 機械翻訳装置 | |
JP5160120B2 (ja) | 情報検索装置、情報検索方法及び情報検索プログラム | |
JP3447955B2 (ja) | 機械翻訳システム及び機械翻訳方法 | |
JP2000311168A (ja) | 形態素解析システム及びその方法並びにこの形態素解析プログラムを記録した記録媒体 | |
Díaz et al. | Cole experiments at qa@ clef 2004 spanish monolingual track |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040406 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061003 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070302 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070320 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070320 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100406 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110406 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |