米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 特殊範囲抽出装置および文抽出装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開平7−219951
公開日 平成7年(1995)8月18日
出願番号 特願平6−8260
出願日 平成6年(1994)1月28日
代理人 【弁理士】
【氏名又は名称】小鍜治 明 (外2名)
発明者 永野 正 / 栗田 秀子 / 福重 貴雄 / 高橋 雅則
要約 目的
自然言語における台詞、括弧、引用部等の特殊領域を抽出する装置、及び、その結果を利用して文の区切りを特定する装置に関するものである。

構成
特殊範囲設定部2は特殊範囲定義記憶部7に記憶された特殊範囲の再帰的な定義に基づき、設定範囲記憶部5に記憶されたすでに特定した特殊範囲を参照しながら再帰的に特殊範囲を設定する。文区切設定部6は、その結果を利用し、文末情報格納部8に格納された文末表現に基づき文の区切を設定する。
特許請求の範囲
【請求項1】 特殊範囲を再帰的に定義した特殊範囲定義記憶部と、前記特殊範囲定義記憶部に記憶された定義に基づき電子化テキストデータ中に特殊範囲を設定する特殊範囲設定部と、前記特殊範囲設定部により設定された特殊範囲を記憶する特殊範囲記憶部とを備え、前記特殊範囲設定部が前記特殊範囲定義記憶部に記憶された定義に基づき前記特殊範囲記憶部に記憶された特殊範囲を参照し特殊範囲を再帰的に設定することを特徴とする特殊範囲抽出装置。
【請求項2】 請求項1記載の特殊範囲抽出装置と、文の終端を表しうる文字または文字列を格納した文末情報格納部と、前記特殊範囲抽出装置により抽出された特殊範囲と前記文末情報格納部に格納された情報に基づき電子化テキストデータ中に文の区切を設定する文区切設定部を備えた文抽出装置。
発明の詳細な説明
【0001】
【産業上の利用分野】本発明は文書処理および自然言語処理における、引用、括弧、台詞等からなる特殊範囲を設定、抽出する特殊範囲抽出装置および、複数の文を含む電子化電子化テキストデータから文の区切りを特定する文抽出装置に関するものである。
【0002】
【従来の技術】従来、自然言語のテキストデータの引用、括弧、台詞などの特殊領域の判定はテキストの先頭から見ていって引用符の出現の度に引用内、引用外を切り替える方法などがあった。
【0003】また、テキストを1文毎に分割して自然言語処理を行うような場合、ピリオドやクエスションマークなどの終端記号が出現する場所を無条件で区切りとするなどの方法がとられていた。また関連する技術として、言語コンパイラなどでは、BNF記法などの形式で記述された規則をテキストデータに適用することによって、括弧や引用符の対応関係を決定する方法があった。
【0004】
【発明が解決しようとする課題】引用符の出現によって引用範囲の内と外を切り替える方法を用いた場合、引用符自体が別の引用符や括弧で囲われている可能性を無視するため、誤った範囲を抽出することがあった。それゆえ自然言語に出現する多種類の引用や括弧を高精度に抽出することはできなかった。また、クォーテーションマークで囲われた引用部分の抽出などにおいては、一度あるマークが開始記号であるか終了記号であるかを取り違えると、その誤りによって他の引用部分の判定まで間違える場合が多かった。
【0005】一方、計算機言語のコンパイラなどで使用される、文法規則によって括弧などの対応関係を決定する方法は、入力の形式を限定するために、任意の自然言語のテキストに適用することはできなかった。
【0006】また、文抽出処理において、引用を考慮しないと、引用符によって囲まれた文をその一部として含む文が出現した場合に複数の文に分割されてしまうという問題があった。特に引用領域内に複数の文が存在する場合には、それらの文同士の区切りの位置は周辺の状況が一般の文の区切りとかわらないため、区切りとして認識されてしまい、引用を含む文全体が1つの文として認識できなかった。
【0007】これをさける為に従来の方法による引用や括弧の範囲を認識する方法をとろうとしても、上記の引用範囲抽出における問題によって引用の範囲を間違う場合が多いため、その影響により高精度な文の切り出しができなかった。
【0008】なお、まとまった文章に対する従来の方法での文切り出しの例を図9に示す。ここでは、「 "." か "?" か "!" のどれかがが出現し、かつ空白を挟んだ次の文字が大文字か引用符であるときに限り文の区切りを設定する」という規則を用いている。その結果切り出された文を図10に示す。
【0009】このうち、文1、文2、文3、文5、文7、文8は、正しく切り出されているが、文4、文6、文11は引用符の片方だけがついた、文として不自然な形で切り出されている。また、文9は、引用の途中で区切られてしまっている。文4、文6、文9、文11のように不自然な形の「文」は、構文解析して情報抽出などの計算機による処理を行おうとするとき、重大な阻害要因となる。
【0010】
【課題を解決するための手段】上記課題を解決するための本願発明による特殊範囲抽出装置は、引用や括弧の範囲決定に際し、種類を問わず、間にそれを囲っている引用符や括弧記号が存在しないものだけを引用/括弧範囲として設定し、以後は、既に設定された引用/括弧範囲と矛盾しないようにより外側の引用/括弧を決定することによって、高精度に引用/括弧範囲を決定することができる。このことは範囲を設定する度にその範囲を記憶し、以降の処理にでそれをアクセスできるように構成することによって実現できる。
【0011】また、文抽出装置は、上記の手段により抽出された引用や括弧の範囲を用いて、この範囲の途中を文の区切りとすることを禁止することにより、台詞などの引用符などに挾まれた別の文を含む文をも途中で切断されることなく高精度に抽出する。
【0012】
【作用】特殊範囲設定部は、入力テキスト中の特定の条件を満たす範囲を条件を満たす領域が存在しなくなるまで繰り返し設定する。そのときテキスト中のある位置にすでにそのような範囲が設定されているかどうかを条件中に書くことができるように構成する。特殊範囲設定部は範囲を設定する度に設定範囲記憶部に設定範囲を登録し、以後の処理で条件を満たすかどうかを判定する際に設定された領域を参照して判定する。特殊範囲設定部は、条件を満たす領域が存在しなくなった時点で、それまでに設定したすべての領域を出力する。
【0013】また、文抽出装置では、特殊範囲設定部の出力情報が文区切設定部へ送られる。文区切設定部では、括弧区切り範囲設定部で設定された範囲の途中の位置を除外して、残りの範囲の終端文字列だけを文区切りの候補とし、他の条件を調べて文区切りを設定する。
【0014】
【実施例】図1は本発明の一実施例である。本実施例では対象言語を英語とする。図1において、1はテキストを入力する入力部、7は特定の記号を用いた条件により特殊範囲を再帰的に定義した特殊範囲定義記憶部、2は入力されたテキスト中の引用や括弧等、7の定義に基づき特殊範囲を推定する特殊範囲設定部、3は抽出した引用や括弧等の範囲及び文を出力する出力部、4は「it's」のように引用を囲う以外の目的でシングルクオートが使用されるパターンを記憶しておくSQ除外リスト、5は設定した引用や括弧の範囲を記憶する設定範囲記憶部である。
【0015】8は、文末になりうる文字または文字列情報を格納した文末情報格納部、6は、設定した引用や括弧の範囲と文末情報格納部8に格納された文末情報とから文の区切りを設定する文区切り設定部であるが、これを用いた動作は後述し、ここでの実施例では特殊範囲推定部の出力をそのまま出力して特殊範囲抽出装置として用いる。
【0016】入力は一般的な英文のテキストである。特殊範囲設定部2は、入力された英語テキストに対して後述するアルゴリズムを用いて括弧や引用の範囲を推定し、設定する。以後、このように設定された範囲を特殊範囲と呼ぶことにする。設定した範囲の最終結果は、ファイルの先頭からの位置を表す数値のペアの集合によって表され、入力されたテキストと共に出力部3へ送られる。出力部3では、得られた情報に基づいて切り出された引用部分を表示する。
【0017】以後の説明の便宜の為に、文字の集合をいくつか定義する。これを(表1)に示す。また、特殊範囲定義記憶部7に記憶されている特殊範囲の判定条件を(表2)に示す。
【0018】
【表1】

【0019】
【表2】

【0020】(表2)中では、スペース文字、タブ文字、改行文字のいづれかであることを「空白である」、そうでないことを「空白でない」と呼ぶ。図2に特殊範囲設定部の動作を表すフローチャートを示す。これは(表2)の条件を満たすような特殊範囲設定だけを設定するためのアルゴリズムとなっている。
【0021】図2に従って括弧/引用範囲推定部の動作を説明する。動作は、基本的には入力された電子化テキストファイルに対して特殊範囲定義記憶部7に定義1〜定義6として格納された6つの判定条件にマッチする範囲があるかどうかを捜し、あればそこを特殊範囲として登録する、ということを条件を満たすような範囲がなくなるまで繰り返す。
【0022】配列変数 stat[] はファイル内の各位置が特殊範囲内であるかどうかを示す変数である。位置iが特殊範囲内であれば stat[i] = 1 となり、そうでなければ stat[i] = 0 となる。なお、stat[] は、図1における設定範囲記憶部5に相当する記憶領域である。最初に stat[]の要素に全て0を代入しておく。2次元配列変数ans[][] は特殊範囲を登録するためのものである。X番目設定された各特殊範囲について、その開始位置が ans[X][1]に、終了位置に ans[X][2] に登録されることになる。登録されていないときはー1にすると定義しておく。最初にすべてのansの要素にー1を代入する。また、ans[][]用のポインタans_maxに0を代入しておく。
【0023】次の「初期設定」というサブルーチンは、各種の特殊範囲の設定サブルーチン内で使用する変数の初期化などを行うものであり、「""」に関する処理を例として後述する。
【0024】変数 change は図2におけるループの過程で設定が行われたかどうかを表すフラグである。処理の始めにこれを0(設定が行われていない)に初期化しておく。順番は問わないが、ここでは「""」にはさまれた部分の処理から始まって、各種の引用、括弧記号について順番に設定を行う。
【0025】これらのサブルーチン内の具体的な動作については後述するが、これらはその時点で表2の各条件を満たすような範囲を抽出するサブルーチンである。結果として設定される場合もされない場合もありうる。各サブルーチンでは、設定が行われた場合にのみ変数changeに1を設定する。
【0026】全ての種類の特殊範囲の設定を試みたあと、changeが0であれば、それ以上は特殊範囲が設定できないことになるので、処理を終了する。change が1であれば、少なくとも1回は設定が行われたことになるので、change を0に設定し直してもう一度処理を始める。以上はループが終わってもchangeが0のままであるような状態になるまで繰り返す。
【0027】なお、判定条件1〜6は再帰的に記述されているので、設定が行われるにつれて、今まで条件を満たさないような領域が条件を満たすようになることがありうる。
【0028】例として、「"Did you say, "What a pity"?", the man said. 」という部分を含むテキストの入力に対して条件1(定義1)を考える。テキストが入力された時点では、特殊範囲は1つも設定されていないので、「"Did you say, "Whata pity"?"」という部分は定義1の条件1[4]を満たさないので、条件1全体も満たさない。しかし、「"What a pity"」という部分は条件1を満たすので、その範囲が特殊範囲として設定される。この結果、これを設定したあとでは、「"Didyou say, "What a pity"?"」という部分中の両端の「"」の間にある「”」は全て「"What a pity"」という「他の特殊範囲」に含まれることとなり、条件1の[4]は今度は満たされ、「"Did you say, "What a pity"?"」が特殊範囲として設定される。
【0029】次に、図2中の各サブルーチンの動作について説明する。図3が「""にはさまれた特殊範囲の設定」の処理のための「初期設定」のフローチャートであり、図4が「""にはさまれた特殊範囲の設定」のサブルーチン本体のフローチャートである。これらを例として動作を説明する。他のサブルーチン及び初期化もほぼ同様にして実現できる。
【0030】図3では、初期設定として、テキスト中の全ての「"」の出現する位置をテキストの先頭位置からの文字数によってあらわしたものを配列 dq[]に先頭から順番に代入していく。また出現した「"」の個数を変数 dq_max に代入する。
【0031】次に図4に即して「""にはさまれた特殊範囲の設定」のサブルーチンの動作を説明する。 4-1,4-2,4-3,4-4の部分では、間に「特殊範囲内ではない位置にある「"」記号が存在しないような2つの「"」のペアを捜す。そのようなペアが存在すれば処理4-5が始まる時点で、それらの位置がdq[i]とdq[j]に代入されている。
【0032】処理4-5ではその「"」のペアが表1の定義1を(<=定義1では?)満たしているかどうかを調べる。これは入力テキスト中のその前後の文字を調べることによって容易に実現できる。
【0033】なお、「"」の場合は発生しないが「'」や「`」に囲まれた特殊範囲を設定する場合にはここで、テキストの周囲の状況が、図1のSQ除外リスト4に登録されているパターンに一致するかどうかを判定する処理が必要である。
【0034】SQ除外リストは、正規表現などでパターンを記述しておき、それと周囲の文字列のマッチングをとるには、文字列パターンマッチングに関する従来の技術を用いればよい。
【0035】処理4-5の結果、条件を満たせばそのdq[i]とdq[j]を特殊範囲 としてans に登録し、stat[]のdq[i]番目の要素からdq[j]番目の要素までを全て1(「特殊範囲以内である」)にする。その後、他の「"」のペアを捜して処理を続行し、すべての間に「特殊範囲内ではない位置にある「"」記号」が存在しないような「"」のペアについて処理してサブルーチンを終了する。以上のようにして各サブルーチンが実現される。
【0036】図2の処理を全体としてみれば、最初は間に同種の引用/括弧記号がないような範囲のみが特殊範囲として登録され、引用や括弧が多重になっている時は、外側の引用/括弧は内側のものが特殊範囲として設定された後に特殊範囲として設定されていくことになる。このようにして多種類の引用や括弧が同時に出現し、かつそれらが多重になっていた場合も、最も外側の範囲まで必ず設定することができる。
【0037】上記のようにして決定された設定範囲のデータはファイル中における位置の形で出力部に送られる。出力部では、この数値から設定された各引用部分を表示する。
【0038】次に、前述の「"Did you say, "What a pity"?", the man said. 」という例を用いて全体の動作を説明する。
【0039】特殊範囲が1つも設定されていない状態で設定できる特殊範囲は「"What apity"」という範囲だけである。「"Did you say, "」は(表2)の定義1[6]に、「"?"」は(表2)の定義1[5]に、「"Did you say, "What a pity"」や「"What a pity"?"」や「"Did you say, "What a pity"?"」は(表2)の定義1[4]に、それぞれ抵触するからである。(なお、最後の3つは定義に抵触するだけでなく、図4のアルゴリズムを用いた場合はそもそもdq[i],dq[j]のペアとして選択されない)ところが「"What a pity"」という範囲が特殊範囲として設定された後では、「"Did you say, "What a pity"?"」が(表2)の定義1[4]に抵触しなくなる。
【0040】従って、「"Did you say, "What a pity"?"」は特殊範囲として設定される。なお、「"Did you say, "What a pity"」や「"What a pity"?"」は今度は(表2)の定義1[2]に抵触するので切り出されないことになる。(「pity"」の部分は既に他の特殊範囲の終了位置に、「"What」の部分は既に他の特殊範囲の開始位置になっている。なお、この2つは定義に抵触するだけでなく、図4のアルゴリズムを用いた場合はそもそもdq[i],dq[j]のペアとして選択されない)。
【0041】以上のようにして「"Did you say, "」、「"?"」、「"What a pity"?"」といった間違った引用範囲はは切り出されずに「"What a pity"」という範囲と「"Did you say, "What a pity"?"」という2つの範囲が書き手の意図どおりに切り出されるような処理が実現される。
【0042】また、「"Did you say, 'What a pity'?", the 'Visitor' said. 」のように2種類以上の引用や括弧が組み合わされた表現でも、内部のものから決定されていくので、全く問題なく設定できる。
【0043】次に文抽出装置としての動作について述べる。図1において、6は文の区切りを設定する文区切り設定部である。7には(表1)に示す<複合文末文字列>、<文末文字列>が、文末表現として格納されているものとする。本実施例では、特殊範囲設定部によって推定された特殊範囲の情報は文区切り設定部6に送られる。
【0044】図5に文区切り設定部の動作を説明するフローチャートを示す。図5において、「位置」は入力ファイル中の先頭から何文字めかを表す数値であり、初期値は1(ファイルの先頭)である。まず、その位置が表1の「文末文字列」の終端になっているかを調べる(図中5-2)。なっていなければ、区切りとしないて次の位置へ進む。なっていれば、さらにその位置が特殊範囲内かどうかを判定し、特殊範囲でなければ処理5-5へ進む。
【0045】特殊範囲であれば、区切りとしないで次の位置に進むが、英語においては引用や括弧が文の終端にあるとき「…."」のようにピリオドが引用範囲の内側に書かれるので、その場合は例外的に処理5-5へ進む(図中5-4)。5-5では、その位置以降で最初に現われるアルファベット文字が大文字か小文字かを調べる。小文字であれば文中に出現する「U.S.」などの省略表現などであると考えられるので区切りとしないで次の位置の処理へ進む。大文字であれば、そこ(文末文字列の終締)を文同士の区切りとして設定して、次の位置の処理に進む。
【0046】以上のようにしてたとえ複数の文からなる台詞などを含む文であっても、台詞の途中で分断されることなく全体を抽出することができる。
【0047】次に文切り出しの動作を簡単な例文を用いて説明する。前述の 「"Did yousay, "What a pity"?", the man said. 」という例を含む、「It was strange."Did you say, "What a pity"?", the man said. She couldn't answer.」という部分がテキスト中にあったとする。一般の文切り出し処理では「pity"?"」のところの「?」が文の終端を表す記号であるため、ここで文が区切られ、「"Didyou say, "What a pity"?」や「", the man said. 」といった「文]が抽出されてしまう。これに対し、本実施例を用いれば、「"Did you say, "What a pity"?"」という部分が特殊範囲として設定されるので、「?」が文の終端を表す記号であっても区切りとされない。(図5の5-4の部分で「唯一」でないため除外される。)従って、「It was strange.」「"Did you say, "What a pity"?", the man said. 」「 She couldn't answer.」という3つの文が正しく抽出できる。
【0048】また、「He said, "It is very easy. Come on!"」 のように引用や台詞が複数の文から構成されている場合も、引用中の部分が特殊範囲となるので途中で分断されずに引用を含む文全体を抽出することができる。
【0049】更に、上記のような方法で引用や括弧を設定すれば、書き手が誤るなどの原因によって開始記号と終了記号のうち片方しかなかったような場合には範囲が設定されないため、誤った記号や例外的な記号によって文の抽出範囲が大きく乱されるのを防ぐことができる、という効果もある。例えば間違って入力された「"」記号があってもそれと相呼応する「"」記号が出現しなかったならば、それ以降は普通に文が切り出される。「 This is a "pen. ...(多数の文からなる長いテキスト).... He said, "I want to go there."」といった形が出現し、penの前の「"」記号が間違って入力されたものであったとする。従来は引用内で文が区切られるのを防ごうとすると、「"pen. ...(多数の文からなる長いテキスト).... He said, "」のような部分が全部つなぎ合わされてしまうという問題があった。
【0050】これに対し本発明を用いると penの前の「"」に対応する「"」記号が出現しないため、ここから始まる特殊範囲は 設定されない。「"pen. ...(多数の文からなる長いテキスト).... He said, "」は(表2)の定義1[6]に抵触するのである。特殊範囲 "I want to go there."だけが設定されることになる。
【0051】このため、「(多数の文からなる長いテキスト)」の部分は普通に文切り出し処理が行われ、誤抽出を防げる。
【0052】最後にまとまった文章に対する動作を示す。前述のように従来の方法で一連の文章の区切り位置を設定した例を図9に示し、そこを区切り位置として切り出した文を図10に示す。図10では 、文4、文6、文9、文11のように引用を含む文の一部分だけが切り出されてしまっている。 同じ例文に対して特殊範囲設定を行った結果を図6に示す。図6では引用の前後の空白などを考慮することにより、引用符の範囲が正しく切り出されている。その結果を用いて文区切りを設定した様子を図7に示す。図7は、図9と比べると、特殊範囲の内部の区切りが設定されていない点が異なっている。図8は図6の区切り位置を区切りとして、切り出された文である。図8においては、全ての文が引用の途中で切り離されることなく抽出されている。
【0053】
【発明の効果】本発明は以上のように、多重の引用、台詞、括弧が混在していてもそれらを高精度に抽出する手段を提供する。また、これらの表現を含むドキュメントを文毎に正確に区切っていく手段をも提供する。しかも、これらの処理を単語の意味を知るために辞書を引くといった重い処理を用いずに高速に実現できる。引用部分や文の切り出しは、文書の編集に、また計算機による実用的な自然言語処理の前処理として活用することができる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013