(57)【特許請求の範囲】
【請求項１】
文書ファイルを入力する入力部と、
文書ファイルから文書部分を抽出する文書部分抽出部と、
抽出された文書部分を形態素解析した後、名詞句を同定し、その後、前記文書部分に出現しうる事物名と属性値の文型パターンが登録された事物名抽出用パターン辞書を使用することにより、同定された名詞句に対して事物名と当該事物名が指す事物に対する属性値候補を抽出する事物属性値組候補抽出部と、
前記属性値候補が数値表現の場合には、前記属性値候補から数字列を取得し、前記数字列がコンマで３桁ごとに区切られているときはコンマを削除した数字列を生成し、コンマの前後の数字が連番の場合にはコンマの前の数字とコンマの２文字前までの数字とコンマの２文字以降の数字で表される数字列とコンマの後の数字とコンマの２文字前までの数字とコンマの２文字以降の数字で表現される数字列に分割し、コンマの前後が連番でない場合にはコンマの前の数字列とコンマの後の数字列に分割する処理を実行し、当該処理の実行により得られた数字列の末尾側から順番に数字情報を抽出し、抽出された数字情報に応じた桁数分の数値を逐次生成することにより、前記属性値候補から取得された前記数字列を数値に変換する数値表現処理部と、
前記属性値候補から同一の事物名に対する属性値候補の集合を作成し、さらに当該集合から、言葉による属性値の集合と数値表現による属性値の集合を作成する属性値候補集計部と、
前記言葉による属性値の集合から順番に１つの言葉を選択し、前記選択した言葉による属性値と前記数値表現による属性値の集合に含まれる属性値との共起頻度を算出し、前記共起頻度に基づいて、前記選択した言葉による前記属性値と前記数値表現による属性値の集合に含まれる属性値との対応関係を示す情報を生成する対応度評価部と、
前記対応度評価部において生成された情報に基づいて、言葉による量的表現と数値を用いた量的表現との対応関係を収集した辞書を出力する辞書出力部と
を有することを特徴とする文書分析システム。
【請求項２】
請求項１記載の文書分析システムにおいて、前記数値表現処理部で処理した前記数値表現に含まれる単位、予め定められた基準単位及び単位換算ルールに基づいて、前記数値を基準単位の数値に換算する換算処理部を有することを特徴とする文書分析システム。
【請求項３】
請求項１記載の文書分析システムにおいて、前記対応度評価部は、指定した単位を含む数値表現だけを処理対象とすることを特徴とする文書分析システム。
【請求項４】
文書ファイルを入力する入力部と、
文書ファイルから文書部分を抽出する文書部分抽出部と、
抽出された文書部分を形態素解析した後、名詞句を同定し、その後、前記文書部分に出現しうる事物名と属性値の文型パターンが登録された事物名抽出用パターン辞書を使用することにより、同定された名詞句に対して事物名と当該事物名が指す事物に対する属性値候補を抽出する事物属性値組候補抽出部と、
前記属性値候補が数値表現の場合には、前記属性値候補から数字列を取得し、前記数字列がコンマで３桁ごとに区切られているときはコンマを削除した数字列を生成し、コンマの前後の数字が連番の場合にはコンマの前の数字とコンマの２文字前までの数字とコンマの２文字以降の数字で表される数字列とコンマの後の数字とコンマの２文字前までの数字とコンマの２文字以降の数字で表現される数字列に分割し、コンマの前後が連番でない場合にはコンマの前の数字列とコンマの後の数字列に分割する処理を実行し、当該処理の実行により得られた数字列の末尾側から順番に数字情報を抽出し、抽出された数字情報に応じた桁数分の数値を逐次生成することにより、前記属性値候補から取得された前記数字列を数値に変換する数値表現処理部と、
前記属性値候補から同一の事物名に対する属性値候補の集合を作成し、さらに当該集合から、言葉による属性値の集合と数値表現による属性値の集合を作成する属性値候補集計部と、
前記言葉による属性値の集合から順番に１つの言葉を選択し、前記選択した言葉による属性値と前記数値表現による属性値の集合に含まれる属性値との共起頻度を算出し、前記共起頻度に基づいて、前記選択した言葉による前記属性値と前記数値表現による属性値の集合に含まれる属性値との対応関係を示す情報を生成する対応度評価部と、
前記対応評価部において作成された情報に基づき、前記言葉による属性値とそれに対応する数値表現を辞書として出力する辞書出力部と
を有することを特徴とする辞書作成システム。
【請求項５】
請求項４記載の辞書作成システムにおいて、前記数値表現処理部で処理した前記数値表現に含まれる単位、予め定められた基準単位及び単位換算ルールに基づいて、前記数値を基準単位の数値に換算する換算処理部を有することを特徴とする辞書作成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子文書中から数値表現などの量的な表現を抽出し、言語的に表現された量と数値表現とを対応づける辞書を自動的に構築する文書分析システム及び辞書作成システムに関する。
【背景技術】
【０００２】
電子化された文書が大量に蓄積され自由に利用できるようになったことで、文書中の有用な情報を自動的に収集・分析したいというニーズが高まっている。そのようなニーズに応えることを目的として、自然言語処理の研究でも文書内容を分析する手法が研究されてきた。文書内容を分析するとき、事物の属性を表す目的でよく使われる数値表現に代表される量的な表現は、重要な表現である。例えば、数値限定特許では、発明を数値で記述した量で限定している。適切に数値限定特許を検索するためには、量的表現に対して適切な絞り込みができることが望まれる。
【０００３】
文書の量的表現には、数値による表現と言葉による表現とがある。数字文字列と単位・助数詞を使うのが数値による表現である。例えば、「５０歳」や「五千円」などである。言葉による表現は、量を表す言葉による表現である。例えば、「中年」や「廉価」などである。文書の量的表現を扱うとき、数値による表現と言葉による表現を対応つけることが望まれる。例えば、「中年」という言葉による表現を、「４０から５０歳」という数値による表現に対応つけることである。数値による表現と言葉による表現を対応つけることで、例えば、「年齢」が「４０から５０歳」の記述を含む文書を検索するとき、同時に同じ意味である「中年」を含む文書を検索することができる。
【０００４】
このように数値と言葉を対応づける方法としては、言葉と数値のあいだの対応を人手で対応づける方法が考えられる。特許文献１では、ファジィ理論のメンバシップ関数を使って量的表現に使われる言葉と数値を対応づけている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２７６４７６６号
【非特許文献】
【０００６】
【非特許文献１】「テキストから属性関係を抽出する」情報処理学会自然言語処理研究会NL-164-4 pp.19-24 (2004)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、人手で言葉と数値を対応づける方法では、言葉と数値の対応づけを知っておくことが必要である。あらゆる量的表現についてそのような対応づけをあらかじめ知っておくことは困難である。
【０００８】
そこで、本発明は、量的表現について言葉と数値の対応づけ辞書を自動的に構築するための文書分析システム及び辞書作成システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では、文書中から、同じ事物に対する属性値と推定される量的表現を収集し、数値表現が指す数値の範囲と頻度を評価することで、言葉による表現が対応する数値を自動的に判断し、このことによって、量的表現について言葉と数値を対応づけた辞書を自動的に構築する。
【００１０】
すなわち、本発明の文書分析システムは、文書ファイルを入力する入力部と、文書ファイルから文書部分を抽出する文書部分抽出部と、文書部分から事物名と当該事物名が指す事物に対する属性値候補を抽出する事物属性値組候補抽出部と、属性値候補が数値表現の場合に数的な値に変換する数値表現処理部と、同一の事物名に対する属性値候補の集合を作成し、作成した属性値候補の集合を集計する属性値候補集計部と、集計した属性値候補の集合から言葉による属性値を選択し、選択した言葉による属性値と数値表現による属性値の関係を評価する対応度評価部とを有する。
【００１１】
また、本発明の辞書作成システムは、文書分析システムによる評価結果に基づき、言葉による属性値とそれに対応する数値表現を辞書として出力する辞書出力部を更に有する。
【発明の効果】
【００１２】
文書中から、同じ事物に対する属性値と推定される量的表現を収集し、数値表現が指す数値の適切さをスコア等で評価することで、言葉による表現が対応する数値を自動的に判断することができ、このことによって、量的表現について言葉と数値を対応づけた辞書を自動的に構築することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明による数値相当表現辞書作成システムの構成例を示す図。
【図２】本発明のシステムを実現するコンピュータの構成を示す図。
【図３】事物属性値組候補抽出部による処理の説明図。
【図４】属性値候補集計部による処理の説明図。
【図５】対応度評価部による処理の説明図。
【図６】数値表現処理部による処理の説明図。
【図７】換算処理部による処理の説明図。
【図８】数値範囲処理部による処理の説明図。
【図９】数値範囲比較処理部による処理の説明図。
【図１０】データの流れを説明する図。
【図１１】本発明による数値相当表現辞書作成システムの他の構成例を示す図。
【図１２】単位指定を含む対応度評価部による処理の説明図。
【発明を実施するための形態】
【００１４】
以下、図面を参照し、本発明のシステム構成例と、そのシステム上の処理動作によって本発明の実施形態を説明する。
【００１５】
本発明の辞書作成システムは、図１に示すように、文書ファイル入力部１０１、文書部分抽出部１０２、事物属性値組候補抽出部１０３、属性値候補集計部１０４、対応度評価部１０５、数値表現処理部１０６、換算処理部１０７、数値範囲処理部１０８、数値範囲比較部１０９、辞書出力部１１０を備える。
【００１６】
また、本システムは、図２に示すように、中央処理ユニットを持ち蓄積プログラム方式によって情報を処理する中央処理装置２０１と、ランダムアクセスメモリからなる主記憶装置２０２、処理対象文書２０３１や処理結果の辞書２０３２を保存する外部記憶装置２０３、文書などの入力に使用するＣＤ−ＲＯＭ読取装置２０４１やＤＶＤ読取装置２０４２，キーボード２０４３などの入力装置２０４、作成した辞書など情報処理結果を出力するＣＤ−ＲＯＭ書き込み装置２０５１やＤＶＤ書き込み装置２０５２，ディスプレイ２０５３などの出力装置２０５を有する装置上で動作する。また、ネットワーク２０６を通して外部の情報処理装置２０７とも情報の入出力ができる。
【００１７】
文書ファイル入力部１０１は、入力装置２０４を遣ってＤＶＤやＣＤ−ＲＯＭなどの記憶媒体の形式でシステムの外部から入力される文書ファイルを受理する。または、ネットワーク２０６を通して外部の情報処理装置２０７から送られる文書ファイルを受理する。受理した文書ファイルは外部記憶装置２０３に保存する。文書ファイルはワードプロセッサなどで作成された電子化文書のこともあるし、光学式文字読取装置（ＯＣＲ）などを使って電子化された文書ファイルのこともある。どちらの場合でも、文書は文字コード化されているものとする。文字コードの種類は特に制限しない。文書ファイルには識別のためのユニークな記号が付与される。以下では識別のためのユニークな記号を文書識別子と呼ぶ。
【００１８】
文書部分抽出部１０２は、入力された文書ファイルから文書部分を抽出する。文書部分とは、当該文書ファイルの内容と考えられる部分であり、自然言語で記述されたデータが本発明の処理対象である。文書部分を抽出するとは、フォーマット情報やメタデータ類を取り除く処理である。抽出された文書部分は主記憶装置に保持する。
【００１９】
事物属性値組候補抽出部１０３は、抽出した文書部分から事物名と事物を説明する属性値の候補組を網羅的に抽出する機能を有する。本機能は、非特許文献１に開示された発明を修正することによって実現できる。なお、事物とは、物あるいは出来事を表す。物は物理的な物に限らず抽象的な物も含む。
【００２０】
非特許文献１では、文型と共起スコアを使って、対象、属性値、属性名の３つ組を抽出する。例えば、「富士山の標高は３７７６メートル」という文が入力されると、文型「＜対象＞の＜属性名＞は＜属性値＞」を使い、対象が「富士山」、属性名が「標高」、属性値が「３７７６メートル」であることを抽出する。大規模な文書データベースから収集した共起データの頻度を使い、対象が「富士山」で属性名が「標高」であることの尤もらしさと、属性名が「標高」で属性値が「３７７６メートル」である尤もらしさを評価する。事物属性値組候補抽出部１０３の機能は、文型を使って事物名、属性名と属性値の３つ組の候補を抽出し共起スコアを使って適切なものを選択する非特許文献１に記載の手段のうち、文型を利用して３つ組を抽出する部分を事物名と属性値を抽出するように修正したものに相当する。
【００２１】
事物属性値組候補抽出部１０３の処理は、図３に示ように、事物名抽出用パターン辞書３０１、形態素解析処理（Ｓ３０２）、名詞句同定処理（Ｓ３０３）、事物名属性値抽出処理（Ｓ３０４）、出力処理（Ｓ３０５）により実現される。なお、形態素解析処理（Ｓ３０２）は広く知られた既知の技術であるので以下では詳細な説明を省略する。また、名詞句同定処理（Ｓ３０３）もチャンキングなどで知られる公知の技術であるので詳細な説明を省略する。
【００２２】
事物名抽出用パターン辞書３０１には、文書中に出現しうる事物名と属性値の文型パターンを登録してある。文型パターンは、例えば「属性値Ｖの事物名Ｏ」といったものである。文型パターンの収集は、非特許文献１に従い、係り受け関係付きのコーパスを利用することができるが、係り受け関係のないコーパスからの抽出でもかまわない。
【００２３】
事物名属性値検出処理（Ｓ３０４）は、事物名抽出用パターン辞書３０１を使って事物名を抽出する。文型パターンの「属性値表現Ｖ」「事物名Ｏ」「任意句」にマッチするのは、名詞句同定処理（Ｓ３０３）で同定された名詞句のみとする。事物名については文型パターンにマッチした文節の末尾にある名詞とする。また、同じ文に対してパターン辞書を再帰的に適用するものとする。
【００２４】
出力処理（Ｓ３０５）では、抽出した事物名と属性値を、「文書識別子、事物名、属性値」の３つ組に整形して出力する。
【００２５】
例えば、文書識別子「DOC_ID_1」の文書に含まれる文「４０から５０歳の女性向けの靴を販売」を事物属性値組候補抽出部１０３で処理すると、事物名抽出用パターン「属性値表現Ｖの事物名Ｏ」により事物名「女性」と属性値表現「４０から５０歳」が抽出され、「文書識別子、事物名、属性値」の３つ組として「DOC_ID_1、女性、４０から５０歳」が出力される。
【００２６】
さらに、文書識別子「DOC_ID_1」の文書に文「中年女性を新たな販売ターゲットとした」が含まれる場合、事物名抽出用パターン「属性値表現Ｖ事物名Ｏ」により事物名「女性」と属性値表現「中年」が抽出され、「文書識別子、事物名、属性値」の３つ組として「DOC_ID_1、女性、中年」が出力される。
【００２７】
属性値候補集計部１０４は、事物属性値組候補抽出部１０３で作成された、文書集合に含まれるすべての「文書識別子、事物名、属性値」に対して集計処理を行なう。集計処理の流れを図４に示す。
【００２８】
属性値収集処理（Ｓ４０１）では、文書識別子と事物名の組が同一のデータを集めて、属性値を抽出し、属性値集合を作成する。文書識別子Ｕから抽出した事物名O_Uの属性値集合は、SET_V（O_U）で表す。同時に、すべての事物名O_Uを要素とする事物名集合SET_Oと、すべての文書識別子Ｕを要素とする文書識別子集合SET_Uを作成する。
【００２９】
例えば、「文書識別子、事物名、属性値」の３つ組として「DOC_ID_1、女性、中年」、「DOC_ID_1、女性、４０から５０歳」、「DOC_ID_1、靴、中年」、「DOC_ID_1、靴、２０から２３センチ」、「DOC_ID_2、女性、若い」、「DOC_ID_2、女性、１５０から１６０センチ」が入力されたとする。文書識別子「DOC_ID_1」、事物名「女性」から作成したSET_V（O_U）は｛４０から５０歳，中年｝、文書識別子「DOC_ID_1」、事物名「靴」から作成したSET_V（O_U）は｛２０から２３センチ，中年｝になる。文書識別子「DOC_ID_2」、事物名「女性」から作成したSET_V（O_U）は｛１５０から１６０センチ，若い｝になる。SET_Oは｛女性，靴｝になる。SET_Uは、｛DOC_ID_1，DOC_ID_2｝になる。なお、本説明では要素Ａ，Ｂを含む集合を｛Ａ，Ｂ｝で表記しており、以下、この表記を使う。集合を要素とする集合を表記する場合は、入れ子表現となる。
【００３０】
属性値集合分類処理（Ｓ４０２）では、作成した属性値集合SET_V（O_U）を、数値表現による属性値の集合SET_N（O_U）と、言葉による属性値の集合SET_W（O_U）の２つに分類する。属性値が数値表現か言葉による表現かの判断は、数値がアラビア数字や漢数字など表記される文字列が限られていることを利用する。数値外の表現は、言葉による表現と判定する。
【００３１】
この処理により、文書識別子「DOC_ID_1」から作成したSET_V（O_U）から、SET_N（O_U）＝｛２０から２３センチ，４０から５０歳｝と、SET_W（O_U）＝｛中年｝が作成される。文書識別子「DOC_ID_2」から作成したSET_V（O_U）から、SET_N（O_U）＝｛１５０から１６０センチ｝と、SET_W（O_U）＝｛若い｝が作成される。
【００３２】
共起関係作成処理（Ｓ４０３）では、属性値集合分類処理で作成した集合SET_N（O_U）の要素とSET_W（O_U）の要素のすべての組み合わせから構成される集合SET_C（O_U）を作成する。
【００３３】
この処理により、文書識別子「DOC_ID_1」から作成したSET_N（O_U）とSET_W（O_U）から、SET_C（O_U）＝｛｛２０から２３センチ，中年｝，｛４０から５０歳，中年｝｝が作成される。文書識別子「DOC_ID_2」から作成したSET_N（O_U）とSET_W（O_U）から、SET_C（O_U）＝｛｛１５０から１６０センチ，若い｝｝が作成される。
【００３４】
集合保存処理（Ｓ４０４）では、すべての事物名について、作成した集合SET_N（O_U）、SET_W（O_U）、SET_C（O_U）をそれぞれ集合SET_N、SET_W、SET_Cに保存する。
【００３５】
この処理により、文書識別子「DOC_ID_1」と文書識別子「DOC_ID_2」から作成したデータから、SET_N＝｛｛２０から２３センチ，４０から５０歳｝，｛１５０から１６０センチ｝｝、SET_W＝｛｛中年｝，｛若い｝｝、SET_C＝｛｛２０から２３センチ，中年｝，｛４０から５０歳，中年｝，｛１５０から１６０センチ，若い｝｝が作成される。
【００３６】
属性値候補集計部１０４で作成した集合SET_N、SET_W、SET_Cに対する対応度評価部１０５の処理を図５に示す。上述の例を使い、以下の処理を説明する。
【００３７】
SET_Wの要素をひとつ取り出しSET_WTMPとする（Ｓ５０１）。この処理により、SET_W＝｛｛中年｝，｛若い｝｝から｛中年｝を取り出し、SET_WTMP＝｛中年｝とする。
【００３８】
SET_WTMPの要素があれば一つ取り出し、その要素をキーとするハッシュテーブルHASH_Wの値に１を加える。ALL_Wに１を加える（Ｓ５０２，Ｓ５０３）。
【００３９】
この処理により、KEY＝中年となり、ハッシュテーブルHASH_Wに「中年」を登録し、その値に１を加える。つまり、KEY＝中年となるデータの全出現回数がHASH_Wに保存される。また、ALL_Wに１を加える。つまり、KEYに何らかの値が代入された回数がALL_Wに保存される。
【００４０】
SET_Wの全ての要素に対してＳ５０１からＳ５０３の処理を行なうことにより、ALL_Wは２になり、ハッシュテーブルには２種類のキー「中年」と「若い」が登録され、それぞれの値は１になる。
【００４１】
HASH_Wの値を頻度の降順にソートし、ソート結果順に対応するHASH_Wのキーとその値をALL_Wで除した値を組にしてリストWORDに保存する（Ｓ５０４）。
【００４２】
この処理により、リストWORDには（＜中年、０．５＞，＜若い、０．５＞）が保存される。なお、本説明では要素Ａ，Ｂを含むリストを（Ａ，Ｂ）で表記しており、以下、この表記を使う。
【００４３】
SET_Nの要素をひとつ取り出しSET_NTMPとする（Ｓ５０５）。この処理により、SET_N＝｛｛２０から２３センチ，４０から５０歳｝，｛１５０から１６０センチ｝｝から｛２０から２３センチ，４０から５０歳｝を取り出し、SET_NTMP＝｛２０から２３センチ，４０から５０歳｝とする。
【００４４】
SET_NTMPの要素があれば一つ取り出し、その要素を数値表現処理部１０６で処理する（Ｓ５０６，Ｓ５０７）。数値表現処理部１０６における処理の内容は図６により説明する。この処理により｛２０から２３センチ，４０から５０歳｝から「２０から２３センチ」を取り出し、数値処理１０６で「２０から２３センチ」を処理した結果、最大値として３０、最小値として２０、単位としてセンチを得る。
【００４５】
数値表現処理部１０６は、抽出した数値表現が含む数字列（ただし、範囲表現を含む）を、具体的な値（整数値、あるいは、実数値）に変換する。なお、数字列が範囲表現を含むので、出力は、当該数値表現が含む数値の最大値と最小値とする。例えば、「百から二百」という数字列は、「最大値：２００、最小値：１００」（ただし、数字は文字ではなく値）を出力する。処理の流れを図６に示す。以下では数字列「千二，三百」を例として処理を説明する。
【００４６】
まず、数値文字列を取得する（Ｓ６０１）。つづいてコンマを含むか検査する（Ｓ６０２）。コンマを含む場合にはＳ６０３の処理へ、含まない場合にはＳ６０８の処理へ進む。「千二，三百」はコンマを含むので、Ｓ６０３に進む。
【００４７】
Ｓ６０３では、３桁の位取りの形式を満たしているか検査する。満たしている場合は、コンマを削除した文字列を取得し（Ｓ６０５）の処理へ進む。満たさない場合は、コンマの前後にある数字が連番か検査する（Ｓ６０４）。連番ではない場合、コンマで数字を分割する（Ｓ６０６）。連番の場合は、Ｓ６０７の処理に進む。「千二，三百」の場合、３桁の位取りの形式を満たしていないので、Ｓ６０４に進み、コンマの前後が「二，三」のように連番なのでＳ６０７に進む。
【００４８】
Ｓ６０７の処理では、変数Ａ、Ｂ、Ｃ、Ｄを使用する。コンマの前一文字をＡに、コンマの後一文字をＢに、数字列の先頭からコンマの二文字前までをＣに、コンマの二文字後から数字列の末尾までをＤに代入する。Ｃ、Ａ、Ｄの順にその値を連結した数字列と、Ｃ、Ｂ、Ｄの順にその値を連結した数字列を作成し、以降の処理では、この作成した数字列を処理対象とする。「千二，三百」の場合、Ｃは千、Ａは二、Ｂは三、Ｄは百となり、千二百と千三百が以降の処理対象となる。
【００４９】
次のＳ６０８では、変数Ｖ、Ｃ１、Ｃ２、Ｆを使用する。初期値を、Ｖが０、Ｃ１が１、Ｃ２が１、Ｆが０とする。数値文字列の右から順に１文字ずつ抽出する（Ｓ６０９）。数字の種類によって以下のように処理する。
【００５０】
数字の値が０から９になる漢数字又はアラビア数字か検査する（Ｓ６１０）。真のときは、「数字の値」×Ｃ１×Ｃ２をＶに加え、Ｃ１を１０倍する（Ｓ６１４）。
【００５１】
数字が漢数字の十、百、千か検査する（Ｓ６１１）。真のとき、Ｓ６１５の判定でＦが１なら、Ｃ１×Ｃ２をＶに加える（Ｓ６１６）。さらに、Ｃ１に数字の値（１０、１００、１０００）を代入し、Ｆに１を代入する（Ｓ６１７）。
【００５２】
数字が漢数字の万、億、兆、京、亥か検査する（Ｓ６１２）。真のとき、Ｓ６１８の判定でＦが１なら、Ｃ１×Ｃ２をＶに加える（Ｓ６１９）。Ｃ２に数字の値（１００００など）、Ｃ１に１、Ｆに０を代入する（Ｓ６２０）。
【００５３】
数字列に残りがあるか検査し（Ｓ６２１）、無ければＶを出力して終了し（Ｓ６２２）、有ればＳ６０９から処理を繰り返す。
【００５４】
Ｓ６０８からＳ６２２で千二百を処理する場合、Ｓ６０９の処理で「百」「二」「千」の順に文字を切り出し以下の処理に進む。最初の文字が「百」なので、Ｓ６１１の判定で真となり、Ｓ６１５の処理に進む。変数Ｆは初期値のままで０なので、Ｓ６１７の処理に進み、変数Ｃ１に百の数としての値１００、変数Ｆに１を代入する。つづいて文字が「二」なので、Ｓ６１０の判定で真となり、Ｓ６１４の処理に進む。変数Ｖの値は、０＋１００×１×２により２００になる。Ｃ１は１００×１０により１０００になる。最後に文字「千」を処理する。Ｓ６１１の判定で真となり、Ｓ６１５に進む。変数Ｆは１なので真となり、Ｓ６１６の処理に進み、変数Ｖは２００＋１０００×１となり１２００となる。Ｓ６１７において、Ｃ１に千の数としての値１０００を、変数Ｆに１を代入する。次に、Ｓ６２１の判定で偽となり、Ｖの値１２００を出力し（Ｓ６２２）、処理は終了する。
【００５５】
換算処理部１０７は、数値表現に含まれる単位を、基準となる単位（以下、基準単位）に変換する処理を行う。例えば、長さの基準単位を「メートル」とする場合、１０センチメートルは「０．１メートル」に換算される。
【００５６】
換算処理部１０７は、図７に示すように、基準単位選択用テーブル７０１、単位構造解析部７０２、計算部７０３、接頭辞換算表７０４、単位換算表７０５を有する。
【００５７】
基準単位選択用テーブル７０１は、図７に示すように、項目名として、単位・助数詞、尺度、尺度がとる単位を有するテーブルである。尺度と尺度がとる単位は計量法、計量単位令を参考に定義することができるが、前記法令に含まれない尺度と単位も定義できる。属性値と単位・助数詞が与えられたとき、対応する基準単位が選ばれる。
【００５８】
物の個数を数えるときに数字の右につける助数詞（１個の「個」や、１台の「台」など）の場合、基準単位は「個」とする。また、含有量などの割合は基準単位を％とする。
【００５９】
単位構造解析部７０２は、単位の構造を文脈自由文法に基づく構文解析プログラムによって解析する。構文解析プログラムは広く知られた技術なので、ここでは説明しない。
【００６０】
計算部７０３は、単位構造解析結果、接頭辞換算表、単位換算表を使って、抽出した数値表現の数値を基準単位に合うように換算する。
【００６１】
図７の接頭辞換算表７０４に示すように、接頭辞に対して１０のＮ乗倍のＮに相当する値を登録しておく。
【００６２】
単位変換表７０５は、図７に示すように、変換元単位、基準単位、変換式を登録しておく。当該式では、数値表現から抽出した数値はＸに代入して計算する。上記に例として示した「最大値として３０、最小値として２０，単位としてセンチ」というデータは、「最大値：０．３、最小値：０．２、基準単位：メートル」となる。
【００６３】
図５に戻り、数値処理の結果出力される「最小値、最大値、基準単位」の組について、それぞれの値をMIN、MAX、UNITにセットする。MINとMAXの組＜MIN，MAX＞をハッシュの第１のキーとしUNITを第２のキーとする２次元ハッシュテーブルHASH_Nの値に１を加える。ALL_Nに１を加える。UNITをSET_Rに追加する。
【００６４】
この処理により、ハッシュテーブルHASH_Nに第１ハッシュキーとして＜０．３，０．２＞を登録し、第２ハッシュキーとして「メートル」を登録し、その値に１を加える。つまり、「最大値：０．３、最小値：０．２、基準単位：メートル」となるデータの全出現回数がHASH_Nに保存される。また、ALL_Nに１を加える。つまり、何らかの数値表現が抽出された回数がALL_Nに保存される。SET_Rに「メートル」を追加する。
【００６５】
SET_Nの全ての要素に対してＳ５０５からＳ５０７の処理を行なうことにより、ALL_Nは３になり、ハッシュテーブルには３種類の第１ハッシュキーと第２ハッシュキーの組「歳、＜５０，４０＞」、「メートル、＜１．６，１．５＞」，「メートル、＜０．３，０．２＞」が登録され、それぞれの値は１になる。ALL_Nは３になる。
【００６６】
SET_RとALL_N、HASH_Nを第１、第２、第３引数として数値範囲処理部１０８に入力し、処理の結果であるハッシュテーブルHashTblNを出力する（Ｓ５０８）。
【００６７】
数値範囲処理部１０８は、入力された数値データの分布からスコアを計算する処理を行う。その処理の流れを図８に示す。
【００６８】
上述のように、SETに第１引数、ALLに第２引数、HASHに第３引数を代入する（Ｓ８０１）。
【００６９】
説明に使っている例を代入すると、SETは｛メートル，歳｝、ALLは３になる。HASHは第１ハッシュキーと第２ハッシュキーの組「歳、＜５０，４０＞」、「メートル、＜１．６，１．５＞」、「メートル、＜０．３，０．２＞」でそれぞれの値が１であるデータが登録される（Ｓ８０１）。
【００７０】
集合SETの要素から１つ値を取り出しUNITに代入する。全てのSETの要素を処理するまで本処理は行なう。具体的には集合SETの要素は単位である（Ｓ８０２）。
【００７１】
例では、まず、UNITに「メートル」が代入される。
【００７２】
UNITの値を第１ハッシュキーとする全てのデータをHASHから取り出しhashにセットする。このときハッシュキーはHASHの第２ハッシュキーとする（Ｓ８０３）。
【００７３】
この処理によってhashに＜１．６，１．５＞と＜０．３，０．２＞をハッシュキーとしその値が１のデータが登録される。
【００７４】
hashのハッシュキーである数値データの最大値MAXと最小値MINの組について、最大値MAXの中で最も大きいものをMMax、最小値MINの中で最も小さいものをMMinとする（Ｓ８０４）。MMaxとMMinの比が１０より大きいか検索する。大きい場合にはＳ８０６へ、小さい場合にはＳ８１１へ進む。Ｓ８０６以下の処理は、１から１０、１０から１００のように１０のｎ乗ごとに範囲を区切って、その範囲での頻度をカウントするための処理である。Ｓ８１１以下の処理は、１０から２０、２０から３０のように同じ位で範囲を区切って、その範囲での頻度をカウントするための処理である。
【００７５】
例の場合、MMaxは１．６になり、MMinは０．２になる。その比が１０より小さいので、Ｓ８１１の処理に進むことになる。
【００７６】
Ｓ８０５の判定が真の場合、Ｓ８０６で数値データが残っているか検査した後、残っていれば数値データを１組だけ取り出す（Ｓ８０７）。MAX、MINそれぞれについて、１０のint（log10MAX）乗をMaxLに代入、１０のint（log10MIN）乗をMinLに代入する。ここで、intは小数点以下を切り捨てて整数化する関数である。MaxLを１０で割ってゆき、その値がMinL以下のあいだ、MaxLをハッシュキーとするハッシュHashTblの値にhash｛＜MAX，MIN＞｝の値を加えてゆく（Ｓ８０９、Ｓ８１０）。
【００７７】
例えば、数値データの組がMIN＝２００とMAX＝５０００のとき、MaxLはint（log10５０００）が３なので１０の３乗＝１０００となり、MinLはint（log10２００）が２なので１０の２乗＝１００となる。HashTblの「１０００」とUNITの値の組をハッシュキーとするデータに、hash｛＜５０００，２００＞｝の値を加える。MaxLを１０で割った値は１００で１００より小さくないので、「１００」とUNITの値の組をハッシュキーとするデータもHashTblに登録する。
【００７８】
一方、Ｓ８０５の判定が偽の場合、Ｓ８１１で数値データが残っているか検査した後、残っていれば数値データの値を１組だけ取り出す（Ｓ８１２）。１０のint（log10MIN）乗をMaxLとMaxOに代入、MINをMaxLで割った値の整数部分をMaxEに代入する。MaxEにMaxOを加算してゆき、その値がMAX以下のあいだ、MaxEとUNITの組をハッシュキーとするハッシュHashTblの値（データ型は整数）にhash｛＜MAX，MIN＞｝の値を加えてゆく（Ｓ８１１、Ｓ８１２）。
【００７９】
上記の例をひきつづいて使うと、数値データの組がMIN＝１．５とMAX＝１．６のとき、MaxLはint（log10１．５）が０なので１０の０乗＝１となり、MaxOは１、MaxEは１．５割る１の整数部分なので１となる。HashTblの「メートル」と「１」の組をハッシュキーとするデータに、hash｛＜１．６，１．５＞｝の値を加える。MaxEにMaxOを加えると２になり、MAXより大きいので次のデータを処理する。次のデータは、MIN＝０．２とMAX＝０．３のとき、MaxLはint（log10０．２）が０なので１０の０乗＝１となり、MaxOは１、MaxEは０．２割る１の整数部分なので０となる。HashTblの「メートル」と「０」の組をハッシュキーとするデータに、hash｛＜０．３，０．２＞｝の値を加える。MaxEにMaxOを加えると１になり、MAXより大きいので次のデータを処理しようとするが、無いので、次の単位「歳」をSETからUNITに読み込み、＜５０，４０＞の処理に進む。以上で数値範囲処理１０８の処理の説明を終わる。
【００８０】
対応度評価部１０５の説明にもどる。リストWORDから、値が大きい順に語Ｗを取り出す。取り出す語は任意の数Ｎまで可能である。頻度は属性値表現の適切さを表す指標とみなす。
【００８１】
例の場合は、語は「中年」と「若い」になる。以下、Ｗに「中年」が代入されている場合を例に説明する。
【００８２】
SET_Cから語Ｗを含む要素をすべて取り出し、その数値表現部分だけから作成した集合をSET_CTMPとする（Ｓ５０９，Ｓ５１０）。
【００８３】
この処理により、SET_CTMPに、SET_C＝｛２０から２３センチ，中年｝，｛４０から５０歳，中年｝，｛１５０から１６０センチ，若い｝｝から｛｛２０から２３センチ，中年｝，｛４０から５０歳，中年｝｝が設定される。
【００８４】
SET_CTMPの要素があれば一つ取り出し、その要素を数値表現処理部１０６で処理する。数値処理の結果出力される「最小値、最大値、基準単位」の組についてそれぞれの値をMIN、MAX、UNITにセットする。MINとMAXの組＜MIN，MAX＞をハッシュの第１のキーとしUNITを第２のキーとする２次元ハッシュテーブルHASH_Cの値に１を加える。ALL_Cに１を加える。UNITをSET_Rに追加する（Ｓ５１１，Ｓ５１２）。SET_RとALL_C、HASH_Cを数値範囲処理部１０８で処理する。処理結果のハッシュテーブルをHashTblCとする（Ｓ５１３）。これらの処理は、すでに説明した処理と同様の処理なので、例による詳細な説明は省略する。
【００８５】
処理の結果、HashTblNとHashTblCが得られる。例の場合、HashTblNには、ハッシュキーとして＜メートル，１＞、＜メートル，０＞、＜歳，４＞が登録され、それぞれの値は１である。HashTblCには、ハッシュキーとして＜メートル，０＞、＜歳，４＞が登録され。それぞれの値は１である。
【００８６】
HashTblNとHashTblCを数値範囲比較部１０９で処理する（Ｓ５１４）。
【００８７】
数値範囲比較部１０９の処理の流れを図９に示す。
【００８８】
HashTblCの全てのキーの集合をSET_Fとする（Ｓ９０１）。SET_Fから要素をひとつ取り出しKEYとする（Ｓ９０２）。そのKEYに含まれる単位をUNITとする（Ｓ９０３）。
【００８９】
HashTblCのハッシュキーにUNITを含む値の合計をCOUNT_Cにセットする（Ｓ９０４）。HashTblNのハッシュキーにUNITを含む値の合計をCOUNT_Nにセットする（Ｓ９０５）。
【００９０】
KEYについて、HashTblCの値とHashTblNの値をそれぞれのCOUNTで正規化したのち、除算する。その値をスコアＳとする（Ｓ９０６）。
【００９１】
スコアＳとKEYの組のうち最大のスコアのKEYを出力する。スコアＭ位までのものをスコアＳとKEYの組で出力することもでき、この場合、スコアはKEYの正しさに対する信頼度として利用することが考えられる。
【００９２】
例の場合、＜メートル，０＞のスコアは、HashTblCの値が１、HashTblNの値が１、COUNT_Cの値が１、COUNT_Nの値が２なので、１／２÷１／１＝２になる。＜歳，４＞のスコアは、HashTblCの値が１、HashTblNの値が１、COUNT_Cの値が１、COUNT_Nの値が１なので、１／１＝１になる。
【００９３】
辞書出力部１１０は対応度評価部１０５の結果を受けて、「語Ｗ、単位Ｕ、数値の組＜MIN，MAX＞」の３つ組を辞書として出力する。
【００９４】
例の場合、「中年、歳、＜４０，５０＞」の３つ組が辞書に登録される。なお、本説明では簡単のための文書ファイルが２つだけの例で説明したが、実際の運用では文書数は数百以上になることを付言しておく。
【００９５】
以上説明した処理により、「４０から５０歳の女性向けの靴を販売する新ブランドを発表。このブランドでは、中年女性を新な販売ターゲットとした」という文章から得られる属性値「４０から５０歳」と事物名「女性」や、属性値「中年」と事物名「女性」を収集し、「中年」と「基準単位：歳、最小値：４０、最大値：５０」のような対応をスコアつきで取得することができる。その結果、数値相当表現辞書に「中年」と「４０から５０歳」を自動的に対応づけることができる。
【００９６】
上記の説明した処理のデータの流れをまとめると図１０にようになる。入力装置から文書ファイルを読込、当該文書ファイルを記憶装置に保存、以降、保存したデータの読込と処理結果の保存を繰り返し、最終的に、言葉による量的表現と数値を用いた量的表現の対応を収集した辞書を出力する。辞書には、言葉による量的表現に対応する数値を用いた量的表現を、スコアの一番高いものだけを一つだけ収集してもよいし、スコアが上位のものを複数個スコアつきで収集してもよい。
【００９７】
なお、以上の処理は言葉による表現と数値による表現の対応を自動的につける方法であるが、データが十分に得られない場合は、完全に自動的な方法で十分な精度を得ることが困難なことがある。そのような場合、図１における対応度評価部１０５を図１１のように、単位指定対応度評価部１１５に変更することが考えられる。
【００９８】
このときの単位指定対応度評価部１１５の処理の流れを図１２に示す。指定した単位だけを処理対象とすること以外は、対応度評価部１０５と同じ処理である。図１２に示したＳ１２０１からＳ１２０５の処理は図５のＳ５０１からＳ５０５の処理と同じ、図１２のＳ１２０８からＳ１２１４の処理は図５のＳ５０８からＳ５１４の処理と同じである。異なるのはＳ１２０６、Ｓ１２０７の処理で、基準単位と指定した単位の同一性をチェックする部分である。
【００９９】
以上、図１あるいは図１１に示したシステムによって、言葉による表現と数値による表現を自動的に対応づけることができることを説明した。
【符号の説明】
【０１００】
１０１  文書ファイル入力部
１０２  文書部分抽出部
１０３  事物属性値組候補抽出部
１０４  属性値候補集計部
１０５  対応度評価部
１０６  数値表現処理部
１０７  換算処理部
１０８  数値範囲処理部
１０９  数値範囲比較部
１１０  辞書出力部
１１５  単位指定対応度評価部
２０１  処理装置
２０２  主記憶装置
２０３  外部記憶装置
２０４  入力装置
２０５  出力装置
３０１  事物名抽出用パターン辞書
７０１  基準単位選択用テーブル
７０２  単位構造解析部
７０３  計算部
７０４  接頭辞換算表
７０５  単位換算表
【図１】
0005538830.tif 000002
【図２】
0005538830.tif 000003
【図３】
0005538830.tif 000004
【図４】
0005538830.tif 000005
【図５】
0005538830.tif 000006
【図６】
0005538830.tif 000007
【図７】
0005538830.tif 000008
【図８】
0005538830.tif 000009
【図９】
0005538830.tif 000010
【図１０】
0005538830.tif 000011
【図１１】
0005538830.tif 000012
【図１２】
0005538830.tif 000013