特許第5941345号(P5941345)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立ソリューションズの特許一覧

特許5941345文字情報の分析方法および情報分析装置並びにプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5941345
(24)【登録日】2016年5月27日
(45)【発行日】2016年6月29日
(54)【発明の名称】文字情報の分析方法および情報分析装置並びにプログラム
(51)【国際特許分類】
   G06F 17/27 20060101AFI20160616BHJP
【FI】
   G06F17/27 635
【請求項の数】10
【全頁数】39
(21)【出願番号】特願2012-133729(P2012-133729)
(22)【出願日】2012年6月13日
(65)【公開番号】特開2013-257756(P2013-257756A)
(43)【公開日】2013年12月26日
【審査請求日】2015年2月2日
(73)【特許権者】
【識別番号】000233055
【氏名又は名称】株式会社日立ソリューションズ
(74)【代理人】
【識別番号】110001678
【氏名又は名称】特許業務法人藤央特許事務所
(72)【発明者】
【氏名】高取 壽
【審査官】 長 由紀子
(56)【参考文献】
【文献】 特開2005−173753(JP,A)
【文献】 特開平08−016597(JP,A)
【文献】 永井 秀利 外1名,日本語における単語の造語モデルとその評価,情報処理学会論文誌,日本,社団法人情報処理学会,1993年 9月15日,第34巻第9号,p.1944-1955
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/20−28
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
自然言語からなるテキストデータを分析する装置であって、
自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書と単語と前記単語の意味を表現する概念とを対応付ける辞書とから成る辞書データを読み込む外部定義辞書取得手段と、
前記外部定義辞書取得手段によって取得した辞書データを元に、前記テキストデータの概念に内包される単語の生起コストの平均値又は最頻値を概念の生起コストとして推定する概念特性推定手段と、
ユーザが追加で作成した単語と前記単語の意味を表現する概念とを対応付ける辞書を読み込み、前記概念特性推定手段によって得られた概念の生起コストを当該概念に内包される単語と対応付けることにより、単語の生起コストを推定する単語特性推定手段と、
前記外部定義辞書取得手段によって得られる辞書データと前記単語特性推定手段によって得られる単語の生起コストとを含む分析辞書を構築する分析辞書構築手段と、
ユーザが入力した自然言語からなるテキスト情報を入力文として受け付ける文字情報受付手段と、
前記分析辞書構築手段により生成した分析辞書を用いて前記文字情報受付手段によって得られた入力文に内包される単語を同定して抽出する単語抽出手段と、
前記単語抽出手段によって得られた抽出結果をユーザの指示に基づき、選択して出力する分析結果出力手段と
を有することを特徴とする情報分析装置。
【請求項2】
前記外部定義辞書取得手段が、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて、前記概念間の関係性を定義した概念関係辞書を読み込む手段をさらに有し、前記概念特性推定手段が、概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成する概念特性修正手段をさらに有することを特徴とする請求項1に記載の情報分析装置。
【請求項3】
前記分析結果出力手段が出力した結果が未知語を含む場合、前記未知語を記憶装置に保持する改善候補保持手段と、
前記各辞書をメンテナンスするユーザの指示に従い、前記未知語を提示する改善候補データ提示手段とをさらに備えることを特徴とする請求項1または請求項2に記載の情報分析装置。
【請求項4】
自然言語からなるテキストデータを計算機によって分析する方法であって、
前記計算機が、
自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書と単語と前記単語の意味を表現する概念とを対応付ける辞書とから成る辞書データを読み込む第1のステップと、
前記第1のステップにおいて読み込んだ辞書データを元に、前記テキストデータの概念に内包される単語の生起コストの平均値又は最頻値を概念の生起コストとして推定する第2のステップと、
ユーザが追加で作成した単語と前記単語の意味を表現する概念とを対応付ける辞書を読み込み、前記第2のステップで得られた概念の生起コストを当該概念に内包される単語と対応付けることにより、単語の生起コストを推定する第3のステップと、
前記第1のステップにおいて読み込んだ辞書データと前記第2のステップにおいて得られた単語の生起コストとを含む分析辞書を構築する第3のステップと、
ユーザが入力した自然言語からなるテキスト情報を入力文として受け付ける第4のステップと、
前記第3のステップにおいて構築した分析辞書を用いて前記第4のステップにおいて受け付けた入力文に内包される単語を同定して抽出する第5のステップと、
前記第5のステップにおいて抽出した抽出結果をユーザの指示に基づき、選択して出力する第6のステップと
を備えることを特徴とする情報分方法。
【請求項5】
前記第1のステップが、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて、前記概念間の関係性を定義した概念関係辞書を読み込むステップをさらに有し、前記第2のステップが、概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成するステップをさらに有することを特徴とする請求項4に記載の情報分析方法。
【請求項6】
前記第6のステップにおいて出力した結果が未知語を含む場合、前記未知語記憶装置に保持するステップと、
前記各辞書をメンテナンスするユーザの指示に従い、前記未知語を提示するステップをさらに備えることを特徴とする請求項4または請求項5に記載の情報分析方法。
【請求項7】
前記第1のステップにおいて、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて前記概念間の関係性を定義した概念関係辞書を読み込み、記憶装置に格納するステップと、
概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成するステップとをさらに含むことを特徴とする請求項5に記載の情報分析方法。
【請求項8】
自然言語からなるテキストデータを計算機によって分析するためのプログラムであって、
前記計算機を、
自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書と単語と前記単語の意味を表現する概念とを対応付ける辞書とから成る辞書データを読み込む外部定義辞書取得手段と、
前記外部定義辞書取得手段によって取得した辞書データを元に、前記テキストデータの概念に内包される単語の生起コストの平均値又は最頻値を概念の生起コストとして推定する概念特性推定手段と、
ユーザが追加で作成した単語と前記単語の意味を表現する概念とを対応付ける辞書を読み込み、前記概念特性推定手段によって得られた概念の生起コストを当該概念に内包される単語と対応付けることにより、単語の生起コストを推定する単語特性推定手段と、
前記外部定義辞書取得手段によって得られる辞書データと前記単語特性推定手段によって得られる単語の生起コストとを含む分析辞書を構築する分析辞書構築手段と、
ユーザが入力した自然言語からなるテキスト情報を入力文として受け付ける文字情報受付手段と、
前記分析辞書構築手段により構築した分析辞書を用いて前記文字情報受付手段によって得られた入力文に内包される単語を同定して抽出する単語抽出手段と、
前記単語抽出手段によって得られた抽出結果をユーザの指示に基づき、選択して出力する分析結果出力手段として機能させることを特徴とするプログラム。
【請求項9】
前記外部定義辞書取得手段を、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて、前記概念間の関係性を定義した概念関係辞書を読み込む手段として機能させ、さらに前記概念特性推定手段を、概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成する概念特性修正手段として機能させることを特徴とする請求項8に記載のプログラム。
【請求項10】
前記分析結果出力手段が出力した結果が未知語を含む場合、前記未知語を記憶装置に保持する改善候補保持手段として機能させ、
前記各辞書をメンテナンスするユーザの指示に従い、前記未知語を提示する改善候補データ提示手段として機能させることを特徴とする請求項8または請求項9に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータを用いた情報分析方法および情報分析装置並びにプログラムに係り、特に、Web、企業内、あるいは、ローカルに存在するコンテンツなど電子化文書に内包される自然言語からなるテキストデータを対象とした、テキストデータの単語構成を分析する情報分析方法および装置並びにそれに用いるプログラムに関するものである。
【背景技術】
【0002】
近年、インターネットの発達や計算機の普及などに伴い、自然言語によって記載された電子化文書が大量に流通するようになっており、今後も加速度的に増大するものと予想される。
このような状況において、これらの電子化文書を計算機上で分析し、情報検索や自動分類、自動要約など電子化文書を利活用するための仕掛けに対する需要が高まっている。
【0003】
こういった電子化文書に対する利活用の仕組みを現実的な性能で実現するためには、電子化文書内に存在するテキストデータを何らかの形で文字列に分解する必要がある。特に、日本語や中国語、韓国語などでは単語の区切り文字(英語におけるスペースなど)が存在しないため、文字列分解方法について検討する必要がある。
【0004】
一般的には、文字列分解を実現する技術として、形態素解析技術(例えば、特許文献1、および非特許文献1、2、5、6)もしくはN−gram技術(例えば、特許文献2および非特許文献3、4)を用いることが多い。なお、N−gram技術は、統計的に連続した文字列の出現傾向を元に特定の文字列に分解する手法であるため、形態素解析技術において必須となる辞書が必要ないという利点があるが、結果として得られた分割文字列が言語的に意味のある塊になっているという保証はない。そのため、単語の意味などを踏まえた文字列分割を行ないたい場合は、形態素解析技術を用いることが主流となっている。
形態素解析技術を用いることによる文字列分割(以下、分かち書きと呼ぶ)後の各文字列は、形態素と呼ばれる言語的に意味のある塊となっており、さらに、各形態素における詳細な特性情報(品詞、名詞、動詞など)を利用することが可能になるため、より詳細なデータによる様々な再利用が可能になるという利点がある。ただし、形態素解析技術を実現したプログラム(以下、形態素解析エンジンと呼ぶ)では、一般的に、形態素解析を実行するための本体となるプログラムの他に、形態素解析を実行するための辞書、具体的には、その言語に対応した単語情報を定義した単語辞書と、その言語における語彙の連接関係に関する情報を格納した連接辞書などが必要となっている。すなわち、形態素解析を実行するためには、その言語に対応した言語知識を格納した複数の形態素解析用の辞書(以下、形態素解析辞書と呼ぶ)が別途必要となる。
このことから、形態素解析エンジンには、その形態素解析エンジンに対応した自然言語毎の形態素解析辞書を別途提供している形態が多い。この形態素解析辞書を用いることにより、95〜98%程度の形態素解析精度を得ることができるとされている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−335222号公報.
【特許文献2】特開平11−338883号公報.
【特許文献3】特開2009−181408号公報.
【非特許文献】
【0006】
【非特許文献1】長尾真、「計算機による日本語文章の解析に関する研究」、 昭和53年度文部省科学研究費特定研究(1)研究報告書.
【非特許文献2】安田明夫、「形態素解析と分かち書き処理」、 http://wordminer.comquest.co.jp/wmtips/pdf/H15_01-4.pdf.
【非特許文献3】徳永健伸:「情報検索と言語処理」、東京大学出版会、1999.
【非特許文献4】北研二:「確率的言語モデル」、東京大学出版会、1999.
【非特許文献5】奥村学:「自然言語処理の基礎」、コロナ社、2010.
【非特許文献6】工藤拓:「Conditional Random Fieldsを用いた日本語形 態素解析」、情報処理学会、2004-NL-161、2004.
【非特許文献7】柳原正,池田一史,松本和則,滝嶋康弘: 「情報量基準に基づく形態素解析用辞書の自動獲得方式」、 FIT2009、第8回情報科学技術フォーラム、E-027、2009.
【非特許文献8】Pronceton WordNet:http://wordnet.princeton.edu/.
【非特許文献9】日本語WordNet:http://nlpwww.nict.go.jp/wn-ja/.
【非特許文献10】日本電子化辞書研究所:EDR電子化 辞書利用マニュアル、1995.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、現状用いられている形態素解析辞書は過去の新聞記事データを元に構築されたものである。したがって、新聞のような文体の一般的なテキストデータを解析する場合には適しているが、過去の新聞記事データから構築されたものであることから、新語、造語、顔文字、あるいは、専門用語といった語彙については未対応とならざるを得ない。それゆえ、新語、造語、顔文字、あるいは、専門用語といった語彙を含むテキストデータを形態素解析すると解析精度が低下するという問題がある。
【0008】
例えば、「WSDL」や「部門名」などといった、ある特定の業界内あるいは企業内でのみ使われる独自の用語があるが、そのような用語について全て定義することはそもそも困難である。
また、もしその分野における用語を全て定義したとしても、その形態素解析辞書を別の業界や企業に適用すれば、その業界や企業では使われていない用語であるため、解析精度がかえって低下することになる。このことから、専門用語などについては、状況に応じて辞書を複数用意し、容易に辞書を切り替えられるような仕組みが求められる。
【0009】
また、言葉というのは、例えば、「スマートフォン」や「ガラケー」など、以前は存在しなかった新しい語彙(新語)や造語を時代とともに定義したり、その語彙が示す意味内容が変化したりするものである。これらについても、容易に追加や変更ができるような仕組みが求められる。
上述した問題を解決するためには、状況に応じて形態素解析辞書をメンテナンスすることが必要となる。しかし、現状の形態素解析エンジンでは、このメンテナンスを人手で行なう必要があり、過大な負担となっていることが問題となっている。
【0010】
この課題について、図面を用いて説明する。
まず,形態素解析辞書には、少なくとも単語自体の情報を格納するための「単語辞書」と単語間の連接情報を格納するための「連接辞書」が存在する。
図3は、形態素解析辞書の一部である単語辞書の一例を示す図である。
【0011】
ここで例示する単語辞書は、自然言語における単語の情報を格納するものであり、図3で示すように「表層形」、「左文脈ID」、「右文脈ID」、「生起コスト」といったデータによって構成されている。
「表層形」というのは、単語が表記される形である。
「左文脈ID」はその単語を左(前)から見たときの内部状態における識別子、
「右文脈ID」はその単語を右(後)から見たときの内部状態における識別子である。
また、「生起コスト」とは、その単語の出現しやすさを示す指標である。この数値が小さいほど出現しやすいという意味となる。
また、上述したデータ項目の他、品詞、基本形、活用形、単語の原形、読み等を付与している辞書も存在する。
【0012】
次に、図4は、形態素解析辞書の一部である連接辞書の一例を示す図である。ここで例示する連接辞書は、自然言語における各単語間の連接コスト(つながりやすさ)を格納するものであり、図4で示すように「右文脈ID」と「左文脈ID」とをペアにした場合における「連接コスト」をマトリックス状に構成するものである。「連接コスト」が小さいほど、その文脈IDを保持する単語間(右文脈IDを保持する単語と左文脈IDを保持する単語)はつながり易いという意味となる。なお、ここで示す「右文脈ID」と「左文脈ID」は、図3と同じものを指す。
【0013】
形態素解析エンジンでは、上記単語辞書と連接辞書を用いて図36に示すようなラティス構造と呼ばれる内部状態を生成し、これを元に分かち書きを実行することになる。なお、ラティス構造の生成方法および形態素解析技術における詳細な処理方式については、公知であるため省略する。
【0014】
図36は、「東京都に住む」という文字列をラティス構造にした場合の例を示す図である。ここで、例えば、この図における「東京」という言葉の下に記載している数値が「生起コスト」と呼ばれるものであり、この場合は「15」という値になっている。また、例えば、「東京」と「都」の間に存在する数値が「連接コスト」と呼ばれるものであり、ここでは「10」という値となっている。形態素解析技術では、ラティス構造中のパス上に存在する「生起コスト」と「連接コスト」を加算していき、その総和が最も低い値を持つパス(この場合、「東京/都/に/住む」)が最もふさわしい分割であると判断し、分かち書き実行結果として提示することになる。
【0015】
この仕組み上、辞書内部に設定されている「生起コスト」、「連接コスト」に相当する数値の精度が低ければ、形態素解析精度の低下に直結するということになる。すなわち、辞書に存在しない単語を新たに登録したい場合には、その単語に対応する「生起コスト」、「連接コスト」の妥当な数値を算出した上で、該当単語を形態素解析用辞書に登録するという作業が必須となる。ただし、新規に登録する単語であるため、必要な数値を設定するための指標となる値がそもそも存在しないことが問題である。そのため、実際には、辞書メンテナンス作業者が試行錯誤を行ないながら妥当と考えられる数値を経験的に算出し、単語登録を行なうという形態になっていることが多い。
【0016】
従来における形態素解析辞書のメンテナンス作業では、上述したような問題を人手によって試行錯誤で解決しているため、過大な負担となっていた。言い換えれば、そもそも形態素解析辞書のメンテナンスにおける作業コストが相当高いため、形態素解析辞書に単語を容易に追加したり、用途に応じて形態素解析辞書を切り替えたりするような仕組みが存在しなかった。
【0017】
この作業コストを低減するための方式としては、例えば、前述の非特許文献7にて提示されている方法がある。この方法は、未知語として検出された語彙に対して、情報量基準に基づくモデル検定によって未知語内の単語境界およびその品詞を推定する手法である。しかし、この手法はあくまでも未知語内の単語境界を統計的に推定する手法、つまり、未知語内に単語区切り位置が存在するか否かを推定する手法であるため、そもそも、本来分割してはいけない語彙を形態素解析エンジンによって分割してしまった場合に対応することができないという問題がある。
【0018】
例えば、形態素解析辞書に「日立ソリューションズ」という単語が登録されていない状態で「日立ソリューションズ」を含むテキストデータに対して形態素解析を実行した場合を考える。その場合、形態素解析エンジンによる解析結果として、「日立」、「ソリューションズ」等の単語を抽出することになる。しかし、「日立ソリューションズ」は社名であり、本来は、一語として抽出すべきものである。非特許文献7の方式では、例えば、「ソリューションズ」の内部に単語区切り位置が存在するか否かを推定することは可能であるが、そもそも形態素解析エンジンによって、「日立」と「ソリューションズ」で分割されてしまっているため、この手法で対応することは困難である。
【0019】
そこで、本発明は、言葉(語彙)が持つ意味に着目することにより、形態素解析辞書の人手によるメンテナンス作業を低減しながら、高精度な形態素解析を実現する方法及びシステム並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【0020】
上記課題を解消するために、本発明に係る情報分析方法は、言葉(語彙)が持つ意味に着目し、単語自体の「生起コスト」と「連接コスト」が存在しない場合でも、言葉(語彙)が持つ意味から上記コストを同定する手段を備えることを特徴とする。
本発明は、日本語に限らず、言語の特性として、同じ種別(概念)に属するものを直接入れ替えても文章として成立することが多いことから着想を得ている。例えば、「私は、日立のテレビを買いました。」という文章の場合、「日立」を「東芝」や「GE」などに置き換えても文章として成立する。また、「テレビ」を「パソコン」、「携帯電話」、あるいは、「スマートフォン」などに入れ替えても文章は成立する。ここで、「日立」「東芝」「GE」といった単語については、例えば「企業名」という概念で集約することができる。また、「テレビ」、「パソコン」、「携帯電話」、あるいは、「スマートフォン」という単語については、例えば「商品」という概念で集約することができる。こういったことは、特に名詞と類される単語に有効であると考えられる。業界内あるいは企業内で独自に用いられる単語など新規に登録したい単語のほとんどは名詞に属するものであるため、この概念による集約という考え方は特に有効であると考えられる。
【0021】
具体的には、前処理として、概念の定義を行なうための「概念定義辞書」および概念と単語を結び付けるための「概念辞書」、そして、概念間の関係性を定義する「概念関係定義辞書」を用意する。これら概念に関する各種辞書と市場に存在する汎用的な形態素解析辞書を用いて、この概念における生起コストおよび連接コストを算出し、それぞれ概念生起コスト辞書と概念連接コスト辞書として生成する。次に、生起コストおよび連接コストが設定されていない単語に対して、概念生起コスト辞書および概念連接コスト辞書を用いることにより生起コストおよび連接コストを同定する。この同定結果を元に、形態素解析用辞書を再構築する。
その後、本処理として形態素解析を実行する際には、前処理として再構築済の形態素解析辞書を用いて行なう。
これにより、事前に単語の生起コストおよび連接コストが設定されていない場合でも、その単語が属する概念から該当単語の生起コストおよび連接コストが自動的に設定されることになり、高精度な解析精度を実現することが可能となる。
【0022】
具体的には、本発明に係る情報分析装置は、自然言語からなるテキストデータを分析する装置であって、
自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書と単語と前記単語の意味を表現する概念とを対応付ける辞書とから成る辞書データを読み込む外部定義辞書取得手段と、
前記外部定義辞書取得手段によって取得した辞書データを元に、前記テキストデータの概念に内包される単語の生起コストの平均値又は最頻値を概念の生起コストとして推定する概念特性推定手段と、
ユーザが追加で作成した単語と前記単語の意味を表現する概念とを対応付ける辞書を読み込み、前記概念特性推定手段によって得られた概念の生起コストを当該概念に内包される単語と対応付けることにより、単語の生起コストを推定する単語特性推定手段と、
前記外部定義辞書取得手段によって得られる辞書データと前記単語特性推定手段によって得られる単語の生起コストとを含む分析辞書を構築する分析辞書構築手段と、
ユーザが入力した自然言語からなるテキスト情報を入力文として受け付ける文字情報受付手段と、
前記分析辞書構築手段により生成した分析辞書を用いて前記文字情報受付手段によって得られた入力文に内包される単語を同定して抽出する単語抽出手段と、
前記単語抽出手段によって得られた抽出結果をユーザの指示に基づき、選択して出力する分析結果出力手段と
を有することを特徴とする。
【0023】
また、前記外部定義辞書取得手段が、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて、前記概念間の関係性を定義した概念関係辞書を読み込む手段をさらに有し、前記概念特性推定手段が、概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成する概念特性修正手段をさらに有することを特徴とする。
【0024】
また、前記分析結果出力手段が出力した結果が未知語を含む場合、前記未知語を記憶装置に保持する改善候補保持手段と、
前記各辞書をメンテナンスするユーザの指示に従い、前記未知語を提示する改善候補データ提示手段とをさらに備えることを特徴とする。
【0025】
本発明に係る分析方法は、自然言語からなるテキストデータを計算機によって分析する方法であって、
前記計算機が、
自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書と単語と前記単語の意味を表現する概念とを対応付ける辞書とから成る辞書データを読み込む第1のステップと、
前記第1のステップにおいて読み込んだ辞書データを元に、前記テキストデータの概念に内包される単語の生起コストの平均値又は最頻値を概念の生起コストとして推定する第2のステップと、
ユーザが追加で作成した単語と前記単語の意味を表現する概念とを対応付ける辞書を読み込み、前記第2のステップで得られた概念の生起コストを当該概念に内包される単語と対応付けることにより、単語の生起コストを推定する第3のステップと、
前記第1のステップにおいて読み込んだ辞書データと前記第2のステップにおいて得られた単語の生起コストとを含む分析辞書を構築する第3のステップと、
ユーザが入力した自然言語からなるテキスト情報を入力文として受け付ける第4のステップと、
前記第3のステップにおいて構築した分析辞書を用いて前記第4のステップにおいて受け付けた入力文に内包される単語を同定して抽出する第5のステップと、
前記第5のステップにおいて抽出した抽出結果をユーザの指示に基づき、選択して出力する第6のステップと
を備えることを特徴とする。
【0026】
また、前記第1のステップが、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて、前記概念間の関係性を定義した概念関係辞書を読み込むステップをさらに有し、前記第2のステップが、概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成するステップをさらに有することを特徴とする。
【0027】
また、前記第6のステップにおいて出力した結果が未知語を含む場合、前記未知語記憶装置に保持するステップと、
前記各辞書をメンテナンスするユーザの指示に従い、前記未知語を提示するステップをさらに備えることを特徴とする。
【0028】
さらに、前記第1のステップにおいて、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて前記概念間の関係性を定義した概念関係辞書を読み込み、記憶装置に格納するステップと、
概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成するステップとをさらに含むことを特徴とする。
【0029】
また、本発明に係るプログラムは、自然言語からなるテキストデータを計算機によって分析するためのプログラムであって、
前記計算機を、
自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書と単語と前記単語の意味を表現する概念とを対応付ける辞書とから成る辞書データを読み込む外部定義辞書取得手段と、
前記外部定義辞書取得手段によって取得した辞書データを元に、前記テキストデータの概念に内包される単語の生起コストの平均値又は最頻値を概念の生起コストとして推定する概念特性推定手段と、
ユーザが追加で作成した単語と前記単語の意味を表現する概念とを対応付ける辞書を読み込み、前記概念特性推定手段によって得られた概念の生起コストを当該概念に内包される単語と対応付けることにより、単語の生起コストを推定する単語特性推定手段と、
前記外部定義辞書取得手段によって得られる辞書データと前記単語特性推定手段によって得られる単語の生起コストとを含む分析辞書を構築する分析辞書構築手段と、
ユーザが入力した自然言語からなるテキスト情報を入力文として受け付ける文字情報受付手段と、
前記分析辞書構築手段により構築した分析辞書を用いて前記文字情報受付手段によって得られた入力文に内包される単語を同定して抽出する単語抽出手段と、
前記単語抽出手段によって得られた抽出結果をユーザの指示に基づき、選択して出力する分析結果出力手段として機能させることを特徴とする。
【0030】
また、前記外部定義辞書取得手段を、外部定義辞書として、自然言語に用いられる単語とその生起コストを対応付けて登録した単語辞書および単語と前記単語の意味を表現する概念とを対応付ける辞書に加えて、前記概念間の関係性を定義した概念関係辞書を読み込む手段として機能させ、さらに前記概念特性推定手段を、概念の生起コストを、当該概念と関係のある概念の生起コストに所定の重み係数を乗算することによって生成する概念特性修正手段として機能させることを特徴とする。
【0031】
また、前記分析結果出力手段が出力した結果が未知語を含む場合、前記未知語を記憶装置に保持する改善候補保持手段として機能させ、
【0032】
前記各辞書をメンテナンスするユーザの指示に従い、前記未知語を提示する改善候補データ提示手段として機能させることを特徴とする。
【発明の効果】
【0033】
本発明によれば、言葉(語彙)が持つ意味概念を考慮する仕組みを提供することにより、辞書メンテナンス作業者が新たな単語を登録する場合には、概念と単語を紐付けるだけでよい。そもそも、人が単語に関わる生起コストや連接コストを算出することは難しいが、その単語がどの概念(意味グループ)に属するかを想像することは相当容易である。
このことから、形態素解析辞書における辞書メンテナンスコストを削減することができるようになる。さらに、新規単語の辞書登録自体が容易になるため、頻繁にメンテナンスを行なうことができるようになり、結果として形態素解析精度の向上につなげることができるなどの効果が得られる。
【図面の簡単な説明】
【0034】
図1】本発明の第1の実施形態における情報分析システムの全体構成を示すブロック図である。
図2】本発明の第1の実施の形態における情報分析辞書構築サブシステム101の構成を示すブロック図である。
図3】本発明の第1の実施形態における単語辞書D110の例の説明図である。
図4】本発明の第1の実施形態における連接辞書D120の例の説明図である。
図5】本発明の第1の実施形態における概念定義辞書D130の例の説明図である。
図6】本発明の第1の実施形態における概念辞書D140の例の説明図である。
図7】本発明の第1の実施形態における概念生起コスト辞書D150の例の説明図である。
図8】本発明の第1の実施形態における概念連結コスト辞書D160の例の説明図である。
図9】本発明の第1の実施形態における情報分析辞書構築制御プログラムP11によって実行される処理のフローチャートである。
図10】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される処理の概要を示すフローチャートである。
図11】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される内部処理(ステップS10704)のフローチャートである。
図12】本発明の第1の実施形態における概念生起コストモデルの例の説明図である。
図13】本発明の第1の実施形態における概念連接コストモデルの例の説明図である。
図14】本発明の第1の実施形態における未処理単語モデルの例の説明図である。
図15】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される内部処理(ステップS10707)のフローチャートである。
図16】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される内部処理(ステップS107071)のフローチャートである。
図17】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される内部処理(ステップS107072)のフローチャートである。
図18】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される内部処理(ステップS107073)のフローチャートである。
図19】本発明の第1の実施形態における概念コスト分析プログラムP111によって実行される内部処理(ステップS107074)のフローチャートである。
図20】本発明の第1の実施形態における概念定義辞書および概念辞書のイメージ例の説明図である。
図21】本発明の第1の実施形態における単語を新規追加した概念定義辞書および概念辞書のイメージ例の説明図である。
図22】本発明の第1の実施形態における単語登録画面の例の説明図である。
図23】本発明の第1の実施の形態における情報分析サーバ102の構成を示すブロック図である。
図24】本発明の第1の実施形態における情報分析プログラムP12によって実行される処理のフローチャートである。
図25】本発明の第1の実施形態における未知語リストD200の例の説明図である。
図26】本発明の第1の実施形態における情報分析クライアント103あるいは104の構成を示すブロック図である。
図27】本発明の第1の実施形態における分析クライアント制御プログラムP13によって実行される処理を示すフローチャートである。
図28】本発明の第2の実施形態における情報分析辞書構築サブシステム101の構成を示すブロック図である。
図29】本発明の第2の実施形態における情報分析辞書構築制御プログラムP11によって実行される処理のフローチャートである。
図30】本発明の第2の実施の形態における概念関係定義辞書D170の例の説明図である。
図31】本発明の第2の実施形態における概念関係調整プログラムP112によって実行される処理(ステップS111)のフローチャートである。
図32】本発明の第2の実施形態における概念定義辞書D130の具体例の説明図である。
図33】本発明の第2の実施形態における概念辞書D140の具体例の説明図である。
図34】本発明の第2の実施形態における概念関係定義辞書D170の具体例の説明図である。
図35】本発明の第2の実施形態における概念定義辞書および概念辞書のイメージ例の説明図である。
図36】一般的な形態素解析エンジンにおけるラティス構造の一例である。
【発明を実施するための形態】
【0035】
以下、本発明を図示する実施形態に基づいて詳細に説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態を示すシステムの全体構成図である。
図1に示す通り、本実施形態の情報分析システムは情報分析辞書構築サブシステム101、情報分析サーバ102、情報分析クライアント103および104を備える。これらの各装置はネットワーク105によって接続されている。
情報分析辞書構築サブシステム101は、形態素解析に用いる単語辞書や連結辞書を再構築するための計算機であり、その詳細な構成は図2を用いて後述する。すなわち、情報分析辞書構築サブシステム101は、形態素解析に用いる単語辞書や連結辞書の他、言葉の意味概念を定義するための概念定義辞書と概念と単語を紐付けるための概念辞書を保持する。情報分析辞書構築サブシステム101は、これらの各種辞書を用いて、概念レベルでの生起コストと連接コストを算出し、それぞれ概念生起コスト辞書および概念連接コスト辞書として生成する。
その後、この概念生起コスト辞書および概念連接コスト辞書を元に単語辞書および連接辞書を再構築する。
【0036】
再構築した単語辞書および連接辞書は、ネットワーク105を介して情報分析サーバ102に転送され、後に情報分析サーバ102が分析処理を行なう際に用いられる。
【0037】
情報分析サーバ102は、情報を分析するための計算機であり、その詳細な構成は図23を用いて後述する。すなわち、情報分析サーバ102は、情報分析クライアント103および104から分析コマンドを受け取り、情報分析辞書構築サブシステム101から得られた各種辞書データを用いて分析コマンドの指定する条件に基づいてデータを分析し、結果データを要求元の情報分析クライアントに送り返す。
【0038】
情報分析クライアント103および104は、情報分析を行うユーザが操作するための計算機であり、その詳細な構成は図26を用いて後述する。すなわち、情報分析クライアント103および104は、ユーザが対話的に分析条件を指定するための画面をディスプレイ上に表示し、この画面上でユーザが指定した分析条件を情報分析サーバ102にとって解釈可能な分析コマンドの形に変換し、この分析コマンドをネットワーク105によって情報分析サーバ102に送信する。
【0039】
前記の通り、情報分析サーバ102が分析コマンドに対する処理を行い、結果データを送り返してくると、情報分析クライアントは受け取った結果データを画面に表示してユーザに提示する。なお、ユーザが分析条件を入力する形態としては、ユーザ自らキーボードから自然文を指定する場合、情報分析クライアントに蓄積されているテキストデータを用いる場合、フロッピーディスクや光ディスクなどの可搬型媒体からテキストデータを読み込む場合、あるいは、ネットワーク105を介して転送されてくるテキストデータを入力とする場合などが想定されるが、いずれの形態を利用しても構わない。
【0040】
また、図1では、2台のコンピュータ103および104を情報分析クライアントとして使用する例を示したが、情報分析クライアントは1台のみとする構成を取ることも、3台以上とする構成を取ることもできる。
【0041】
ネットワーク105は、ローカルエリアネットワーク(LAN)および(または)広域エリアネットワーク(WAN)であって、情報分析辞書サブシステム101、情報分析サーバ102、情報分析クライアント103および104が各種データやコマンドを送受信するために用いられる。
【0042】
ここで、図1では、情報分析辞書構築サブシステム101から情報分析サーバ102に各種辞書データを転送するためにネットワーク105を使用するものとしたが、代わりにフロッピーディスクや光ディスクなどの可搬型媒体を使用する構成を取ることもできる。あるいは、情報分析辞書構築サブシステム101と情報分析サーバ102を1台のコンピュータ上に実装し、データ転送を行なわない構成を取ることもできる。
【0043】
さらに、図1では、情報分析クライアント103および104と情報分析サーバ102は別個のコンピュータを使用するものとしたが、1個以上の情報分析クライアントを情報分析サーバと同一のコンピュータ上で実行する構成を取ることもできる。
【0044】
<情報分析辞書構築サブシステム101>
次に、本実施形態における情報分析辞書構築サブシステム101について説明する。
図2は、本実施形態における情報分析辞書構築サブシステム101の構成を示すブロック図である。
情報分析辞書構築サブシステム101は、メモリ110、記憶装置120、CPU(中央演算装置)130、出力装置140、入力装置150および通信インタフェース160を備え、これらの各構成がバス170によって接続される一般的な構成のコンピュータである。
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10および情報分析辞書構築制御プログラムP11がメモリ110に格納される。また、メモリ110には、CPU130によるプログラムの実行時にデータを一時的に格納するワークエリアが設けられる。
【0045】
システム制御プログラムP10はいわゆるオペレーティングシステムであり、情報分析辞書構築サブシステム101の全体を制御する。
情報分析辞書構築制御プログラムP11は、情報分析のために必要となる辞書を構築するプログラムであり、概念コスト分析プログラムP111を含む。
概念コスト分析プログラムP111は、記憶装置120に存在する各種辞書を読み出し、単語の生起コストや連接コストを同定するために必要となる概念レベルでのコスト値を算出し、記憶装置120に格納する(図9のステップS107)プログラムである。
【0046】
記憶装置120は、電源遮断時にも記憶内容を保持可能な不揮発性の記憶素子であり、例えば、磁気ディスクドライブ(HDD)やフラッシュメモリ(SSD)によって構成される。記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、前述したシステム制御プログラムP10および情報分析辞書構築制御プログラムP11が含まれており、CPU130によって実行される際にメモリ110にロードされる。
また、記憶装置120には、単語辞書D110、連接辞書D120、概念提示辞書D130、概念辞書D140、概念生起コスト辞書D150および概念連接コスト辞書D160が格納される。
単語辞書D110は、一般的な形態素解析処理に用いられる単語辞書であり、図3に示すように単語の情報を保持する。なお、前述したように、図3に示したデータの他に、単語ID、品詞、活用形、単語の原形、読みなどを付加した形としても構わない。
【0047】
連接辞書D120は、一般的な形態素解析処理に用いられる連接辞書であり、図4に示すように、単語に関する各文脈ID間の連接情報を保持する。
概念定義辞書D130は、図5に示すように概念を識別するためのID(識別子)と具体的な概念名とを紐付ける情報を保持する。なお、図5に示したデータの他に、概念そのものの定義や概念が属する品詞などその他の項目を付加した形としても構わない。
【0048】
概念辞書D140は、図6に示すように、概念IDと単語とを紐付ける情報を保持する。なお、概念IDと単語という項目だけでなく、単語ID、品詞、活用形、単語の原形、読みなどといった単語の情報の他、概念と単語を紐付ける際の重み値などその他の項目を追加しても構わない。
概念生起コスト辞書D150は、図7に示すように、概念に関する情報、特に、生起コスト情報を保持する。基本的なデータ構造としては、単語辞書D110と同様の形態となるが、独自の項目を追加しても構わない。
【0049】
概念連接コスト辞書D160は、図8に示すように、概念に関する各文脈ID間の情報を保持する。基本的なデータ構造としては、連接辞書D120と同様の形態となるが、独自の項目を追加しても構わない。
【0050】
CPU130は、メモリ110に格納されたプログラムを実行する。
出力装置140は、処理の結果を画面に表示するディスプレイや、紙に出力するプリンタなどである。
入力装置150は、ユーザが情報分析辞書構築サブシステム101に指示を与えるためのキーボード、マウスなどである。
【0051】
情報分析辞書構築サブシステム101は、情報分析辞書構築制御プログラムP11を実行することによって得られた各種辞書を、記憶装置120に格納する。その後、情報分析サーバ102からの要求に従い、ネットワーク105を介して、情報分析サーバ102に転送する。次に、この処理手順の詳細について説明する。
【0052】
図9は、本発明の第一の実施形態における情報分析辞書構築サブシステム101によって実行される処理のフローチャートである。
まず、ユーザあるいは情報分析サーバ102からのリクエストを受信すると(ステップS101)、受信したリクエストを解析する(ステップS202)。
受信したリクエストが辞書構築コマンドである場合、要求された登録内容に応じて情報を記憶装置120に格納する。
具体的には、単語辞書の登録要求であれば、受信した単語辞書情報を単語辞書格納領域D110に格納する(ステップS103)。連接辞書の登録要求であれば、受信した連接辞書情報を連接辞書格納領域D120に格納する(ステップS104)。概念定義辞書の登録要求であれば、受信した概念定義辞書情報を概念定義辞書格納領域D130に格納する(ステップS105)。概念辞書の登録要求であれば、受信した概念辞書情報を概念辞書格納領域D140に格納する(ステップS106)。概念コストの算出要求であれば、概念コスト生成プログラムP111を実行することにより、記憶装置120内に存在する単語辞書D110、連接辞書D120、概念定義辞書D130、概念辞書D140を元に、概念における生起コストと連接コストを算出し、概念生起コスト辞書格納領域D150および概念連接コスト辞書格納領域D160に格納する(ステップS107)。
【0053】
なお、ステップS107、すなわち、概念コスト分析プログラムP111の詳細については、図10を用いて後述する。ステップS103乃至ステップS107の処理の終了後、ステップS101に戻り、他のリクエストの受信を待つ。
一方、受信したリクエストが情報転送コマンドである場合、要求された問合せ内容に応じた情報を記憶装置120から読み出して(ステップS108)、読み出した情報を要求元に送信する(ステップS109)。その後、ステップS101に戻り、他のリクエストの受信を待つ。
【0054】
一方、受信したリクエストがサブシステム停止コマンドである場合、情報分析辞書構築サブシステム101の動作を終了する。
ここで、概念コスト分析プログラムP111、すなわち、図9におけるステップS107の詳細について、図面を用いて説明する。
【0055】
図10は、本発明の第一の実施形態における概念コスト分析プログラムP111によって実行される処理のフローチャートである。
まず、概念コスト分析プログラムP111は、記憶装置120から概念辞書D140を取得し、ワークエリアに格納する(ステップS10701)。その後、ループを制御するパラメータnを1に初期設定する(ステップS10702)。
そして、ワークエリアに格納した概念辞書D140から、n番目の概念情報を読み出す(ステップS10703)。なお、概念情報とは、概念IDと単語が紐付いた情報のことを指す。
【0056】
読み出した概念情報を元に、概念生起コストモデル、概念連接コストモデル、未処理単語モデルといった辞書構築に用いるモデルを更新する(ステップS10704)。なお、ステップS10704の処理および概念生起コストモデル、概念連接コストモデル、未処理単語モデルの詳細については、図11乃至図14を用いて後述する。
【0057】
その後、n+1番目の概念情報が存在するかどうかを判定する(ステップS10705)。その結果、次(n+1番目)の概念情報が存在すれば、パラメータに1を加算し(ステップS10706)、ステップS10703に戻り、次の概念情報についての分析を実行する。
【0058】
一方、次(n+1番目)の概念情報が存在しない場合、ステップS10701にて得られた全ての概念情報についての分析が終了しているため、更新された各種モデルを用いて各種辞書を生成し(ステップS10707)、概念コスト分析プログラムP111を終了する。なお、ステップS10707の詳細については、図15乃至図19を用いて後述する。
【0059】
以上が、概念コスト分析プログラムP111の処理概要である。ここでは、上記ステップS10704の処理およびステップS10707の処理の詳細について記載する。
まず、ステップS10704、すなわち、辞書構築に用いるモデルの更新処理について図面を用いて説明する。
図11は、ステップS10704において実行される処理のフローチャートである。
概念IDと単語が紐付いた情報を入力として、ステップS10704が実行されると、まず、記憶装置120から単語辞書D110を取得し、ワークエリアに格納する(ステップS1070401)。さらに、記憶装置120から連接辞書D120を取得し、ワークエリアに格納する(ステップS1070402)。その後、ループを制御するパラメータsを1に初期設定する(ステップS1070403)。
【0060】
そして、ワークエリアに格納した単語辞書D110から、s番目の単語情報を読み出す(ステップS1070404)。
読み出したs番目の単語情報が、入力値である単語と合致するか否かを判定し(ステップS1070405)、合致すれば、ステップS1070406およびステップS1070407の処理を実行する。合致しなければ、ステップS1070408乃至ステップS1070410の処理を実行する。
ステップS1070405において、入力値である単語と合致すると判定した場合、入力値として得られた概念IDとs番目の単語情報内に存在する左文脈ID、右文脈ID、生起コストを元に、概念生起コストモデルを更新(追記)する(ステップS1070406)。
【0061】
図12は、概念生起コストモデルのデータ構造の一例を示す図である。
概念生起コストモデルはワークエリア内で存在し、図12で示す通り、概念を識別するIDと左文脈ID、右文脈ID、生起コストが格納できるようになっている。このモデルに対して、得られたデータをそのまま追記するという形になる。なお、ここでは、概念生起コストモデルはワークエリア内に存在することとしたが、記憶装置120内に概念生起コストモデルを格納するための専用領域を確保し、そこで更新処理を実行するようにしても構わない。
【0062】
その後、ワークエリアに格納した連接辞書D120を走査し、s番目の単語情報内に存在する左文脈IDおよび右文脈IDと合致する連接情報を取得する。取得した連接情報に基づき、概念連接コストモデルを更新(追記)する(ステップS1070407)。
図13は、概念連接コストモデルのデータ構造の一例を示す図である。
概念連接コストモデルはワークエリア内で存在し、図13で示す通り、左文脈ID、右文脈ID、連接コストが格納できるようになっている。また、左文脈IDと右文脈IDをキーにした場合に、複数の連接コストが格納できるような形となっている。このモデルに対して、得られたデータをそのまま追記するという形になる。なお、ここでは、概念連接コストモデルはワークエリア内に存在することとしたが、記憶装置120内に概念連接コストモデルを格納するための専用領域を確保し、そこで更新処理を実行するようにしても構わない。
ステップS1070407の処理が終わると、ステップS10704の処理を終了する。
【0063】
一方、ステップS1070405において、入力値である単語と合致しないと判定した場合、ワークエリアに格納した単語辞書D110に次の単語情報が存在するか否かを確認する(ステップS1070408)。
その結果、次(s+1番目)の単語情報が存在すれば、パラメータに“1”を加算し(ステップS1070409)、ステップS1070404に戻り、次の単語情報についての処理を実行する。
【0064】
一方、次(s+1番目)の単語情報が存在しない場合、ステップS1070401にて得られた全ての単語情報についての処理が終了しており、該当する単語情報が存在しなかったと考えられるため、入力値である概念情報を元に、未処理単語モデルを更新(追記)する(ステップS1070410)。
【0065】
図14は、未処理単語モデルのデータ構造の一例を示す図である。
未処理単語モデルはワークエリア内で存在し、図14で示す通り、単語そのものと概念を識別するIDが紐付いて格納できるようになっている。このモデルに対して、得られたデータをそのまま追記するという形になる。基本的なデータ構造としては、図6に示した概念辞書と同様の形態であるため、概念辞書のデータ構造に合わせて、図14で示した項目以外の項目を追加しても構わない。なお、ここでは、未処理単語モデルはワークエリア内に存在することとしたが、記憶装置120内に未処理単語モデルを格納するための専用領域を確保し、そこで更新処理を実行するようにしても構わない。
ステップS1070410の処理が終わった後、ステップS10704の処理を終了する。
以上がステップS10704の処理の詳細である。
【0066】
次に、ステップS10707、すなわち、モデルを用いて各種辞書を生成する処理について図面を用いて説明する。
図15は、ステップS10707において実行される処理の概要を示すフローチャートである。
ステップS10707では、まず、概念生起コスト辞書を生成し(ステップS107071)、概念連接コスト辞書を生成する(ステップS107072)。その後、形態素解析に用いる単語辞書を生成し(ステップS107073)、同じく形態素解析に用いる連接辞書を生成する(ステップS107074)という流れになる。なお、ステップS107071乃至ステップS107074の詳細については、図面を用いて後述する。
まず、ステップS107071、すなわち、概念生起コスト辞書の生成処理について図面を用いて説明する。
【0067】
図16は、ステップS107071において実行される処理のフローチャートである。
ステップS107071では、まず、ワークエリア内に存在する概念生起コストモデルを取得する(ステップS10707101)。さらに、記憶装置120に存在する概念定義辞書D130を取得し、ワークエリアに格納する(ステップS10707102)。
概念生起コストモデルに存在する概念IDおよび概念定義辞書D130に存在する概念IDを元に、構築対象となる概念IDの全リストを作成する(ステップS10707103)。その後、ループを制御するパラメータiを“1”に初期設定する(ステップS10707104)。
【0068】
そして、構築対象となる概念IDの全リストから、i番目の概念IDを読み出す(ステップS10707105)。読み出した概念IDを元に、概念生起コストモデルを走査し、該概念における左文脈IDを決定する(ステップS10707106)。この左文脈IDの決定には、該概念IDに該当する概念生起コストモデルにおいて、最頻となる左文脈IDを設定すればよい。同様にして、該概念における右文脈IDを決定する(ステップS10707107)。
【0069】
次に、読み出した概念IDを元に、概念生起コストモデルを走査し、該概念における生起コストを算出する(ステップS10707108)。この生起コストの算出には、該概念IDに該当する概念生起コストモデルにおける生起コストの平均値を設定してもよいし、該概念IDに該当する概念生起コストモデルにおける生起コストの最頻値を設定してもよい。
【0070】
ステップS10707106乃至ステップS10707109による生起コスト計算が終了すると、概念IDをキーとして、記憶装置120に存在する概念生起コスト辞書D150のデータを更新する(ステップS10707109)。
その後、構築対象となる概念IDの全リストに次の概念IDが存在するか否かを確認する(S10707110)。
その結果、次(i+1番目)の情報が存在すれば、パラメータに“1”を加算し(ステップS10707111)、ステップS10707105に戻り、次の単語情報についての処理を実行する。
【0071】
一方、次(i+1番目)の情報が存在しない場合、ステップS10707103にて構築した全ての概念情報についての処理が終了していると考えられるため、ステップS107071の処理を終了する。
以上が、ステップS107071の詳細な説明である。
【0072】
次に、ステップS107072、すなわち、概念連接コスト辞書の生成処理について図面を用いて説明する。
図17は、ステップS107072において実行される処理のフローチャートである。
ステップS107072では、まず、ワークエリア内に存在する概念連接コストモデルを取得する(ステップS10707201)。さらに、記憶装置120に存在する概念生起コスト辞書D150を取得し、ワークエリアに格納する(ステップS10707202)。
概念連接コストモデルに存在する左文脈ID、右文脈IDおよび概念生起コスト辞書D150に存在する左文脈ID、右文脈IDを元に、構築対象となる左文脈IDと右文脈IDのペアの全リストを作成する(ステップS10707203)。
その後、ループを制御するパラメータiを“1”に初期設定する(ステップS10707204)。
【0073】
そして、構築対象となる左文脈IDと右文脈IDのペアの全リストから、i番目の左文脈IDと右文脈IDのペアを読み出す(ステップS10707205)。読み出した左文脈IDと右文脈IDのペアを元に、概念連接コストモデルを走査し、左文脈IDと右文脈IDのペアにおける連接コスト値を算出する(ステップS10707106)。この左文脈IDと右文脈IDのペアにおける連接コスト値の算出には、概念連接コストモデルのうち、左文脈IDと右文脈IDのペアに該当する集合における連接コストの平均値を採用してもよいし、最頻値を採用してもよい。
【0074】
連接コスト計算が終了すると、得られた左文脈IDと右文脈IDをキーとして、記憶装置120に存在する概念連接コスト辞書D160のデータを更新する(ステップS10707207)。
その後、構築対象となる左文脈IDと右文脈IDのペアの全リストに次のペアが存在するか否かを確認する(S10707108)。
その結果、次(i+1番目)の情報が存在すれば、パラメータに“1”を加算し(ステップS10707109)、ステップS10707205に戻り、次の単語情報についての処理を実行する。
【0075】
一方、次(i+1番目)の情報が存在しない場合、ステップS10707203にて構築した全てのリストについての処理が終了していると考えられるため、ステップS107072の処理を終了する。
以上が、ステップS107072の詳細な説明である。
次に、ステップS107073、すなわち、形態素解析に用いる単語辞書の生成処理について図面を用いて説明する。
【0076】
図18は、ステップS107073において実行される処理のフローチャートである。
ステップS107073では、まず、記憶装置120に存在する概念生起コスト辞書D150を取得し、ワークエリアに格納する(ステップS10707301)。さらに、ワークエリアに存在する未処理単語モデルを取得する(ステップS10707302)。
その後、ループを制御するパラメータiを“1”に初期設定する(ステップS10707303)。
そして、未処理単語モデルから、i番目の単語情報を読み出す(ステップS10707304)。
【0077】
読み出した単語情報内に存在する概念IDを元に、概念生起コスト辞書D150を走査し、該概念における左文脈ID、右文脈ID、生起コストを取得する(ステップS10707305)。取得した概念生起コストを元に、該単語の生起コストを算出する(ステップS10707306)。算出した生起コストは、単語と前述した該概念における左文脈ID、右文脈IDを紐付けて、ワークエリアに格納する。この該単語の生起コストの算出には、取得した概念生起コストをそのまま設定する方法の他に、単語の文字列長を考慮する方法がある。
【0078】
例えば、「日立」と「日立ソリューションズ」が共に同じ生起コスト値であった場合、形態素解析処理上、文字列長が短いものが優先される傾向にあり、かつ、文字列長が長いほど、その単語として確定する可能性は高いため、文字列長が長いほど生起コストは低くするという方法である。具体的には、図14の下段に示した数式1を用いるとよい。
ステップS10707305およびステップS10707306による生起コスト計算が終了すると、構築対象となる未処理単語の全リストに次の未処理単語が存在するか否かを確認する(S10707307)。
【0079】
その結果、次(i+1番目)の未処理単語が存在すれば、パラメータに“1”を加算し(ステップS10707308)、ステップS10707304に戻り、次の単語情報についての処理を実行する。
一方、次(i+1番目)の未処理単語が存在しない場合、全ての未処理単語についての処理が終了していると考えられるため、ワークエリア内に存在する処理済みのデータを元に、記憶装置120に存在する単語辞書格納領域D110を更新する(ステップS10707309)。
全ての更新処理が終了後、ステップS107073の処理を終了する。
以上が、ステップS107073の詳細な説明である。
【0080】
次に、ステップS107074、すなわち、形態素解析に用いる連接辞書の生成処理について図面を用いて説明する。
図19は、ステップS107074において実行される処理のフローチャートである。
ステップS107074では、まず、記憶装置120内に存在する概念連接コスト辞書D160を取得する(ステップS10707401)。さらに、記憶装置120に存在する連接辞書D120を取得し、ワークエリアに格納する(ステップS10707402)。
概念連接コスト辞書D160に存在する左文脈ID、右文脈IDおよび連接辞書D120に存在する左文脈ID、右文脈IDを元に、構築対象となる左文脈IDと右文脈IDのペアの全リストを作成する(ステップS10707403)。
【0081】
その後、ループを制御するパラメータiを“1”に初期設定する(ステップS10707404)。
そして、構築対象となる左文脈IDと右文脈IDのペアの全リストから、i番目の左文脈IDと右文脈IDのペアを読み出す(ステップS10707405)。読み出した左文脈IDと右文脈IDのペアを元に、概念連接コスト辞書D160と連接辞書D120を走査し(ステップS10707406)、左文脈IDと右文脈IDのペアにおける連接コスト値を算出する(ステップS10707107)。
【0082】
この左文脈IDと右文脈IDのペアにおける連接コスト値の算出には、概念連接コスト辞書D160と連接辞書D120に存在する左文脈IDと右文脈IDのペアの連接コスト値の最大値を採用してもよいし、概念連接コスト辞書D160と連接辞書D120の両方に該ペアの値が存在する場合は、平均値を採用してもよい。算出した連接コストは、左文脈IDおよび右文脈IDのペアと紐付けて、ワークエリアに格納する。
【0083】
ステップS10707406およびステップS10707407による連接コスト計算が終了すると、構築対象となる左文脈IDと右文脈IDのペアの全リストに次のペアが存在するか否かを確認する(S10707408)。
その結果、次(i+1番目)のペアが存在すれば、パラメータに“1”を加算し(ステップS10707409)、ステップS10707405に戻り、次のペアについての処理を実行する。
【0084】
一方、次(i+1番目)のペアが存在しない場合、全ての構築対象となる左文脈IDと右文脈IDのペアについての処理が終了していると考えられるため、ワークエリア内に存在する処理済みのデータを元に、記憶装置120に存在する連接辞書格納領域D120を更新する(ステップS10707410)。
全ての更新処理が終了後、ステップS107074の処理を終了する。
以上が、ステップS107074の詳細な説明である。
【0085】
以上、本発明の第1の実施形態における情報分析辞書構築サブシステム101のシステム構成および処理概要についての説明である。
以下では、第1の実施例における情報分析辞書構築処理について、具体的な例を用いて説明する。
【0086】
<情報分析辞書構築の具体例>
形態素解析を実行するための辞書に単語を登録するためには、その単語が辞書内に存在するかを確認し、存在していなければ、新規に単語を登録するという手順となる。本実施形態では、その確認作業を軽減するための施策についても後述することになるが、ここでは、「京大」という単語が形態素解析を実行するための辞書に存在せず、新たに登録したい場合を例にして説明する。
前述したように、通常であれば、図3のような単語辞書に「京大」という単語を追加し、左文脈ID、右文脈ID、生起コストという値について試行錯誤を繰り返して設定しなくてはならなかった。また、左文脈IDもしくは右文脈IDとして記載するIDを新規に作成した場合には、図4のような連接辞書に対して、該当するIDの組み合わせおよびその連接コストを試行錯誤で設定しなくてはならなかった。そのため、メンテナンスにおけるコストが増大するという問題があった。
本実施形態では、その試行錯誤を繰り返すことによるコストが必要でなくなることを示す。
【0087】
まず、図3のような単語辞書を用意し、登録する。具体的には、図9におけるステップS103の処理を実行する。この単語辞書は一般に形態素解析で用いられる辞書をそのまま活用して構わない。なお、ここでは、「京大」という単語が単語辞書に含まれていないものとする。
次に、図4のような連接辞書を用意し、登録する。具体的には、図9におけるステップS104の処理を実行する。この連接辞書についても、単語辞書と同様に一般に形態素解析で用いられる辞書をそのまま活用して構わない。
【0088】
次に、図5のような概念定義辞書を用意し、登録する。具体的には、図9におけるステップS105の処理を実行する。概念定義辞書については後述する。
次に、図6のような概念辞書を用意し、登録する。具体的には、図9におけるステップS106の処理を実行する。概念辞書については後述する。
以下では、前述した概念定義辞書および概念辞書について記載する。
【0089】
図20は、概念定義辞書および概念辞書、すなわち、図5および図6の一例をイメージ化したものである。なお、図20における丸で囲まれた文字が概念名を示し、図20における四角で囲まれた文字が単語の表層形を示す。
図20の例では、「東芝」という単語は、「企業」という概念に属し、「日立」という単語は、「企業」という概念と「地域」という概念に属していることを示している。また、同様に、「京都大学」という単語は、「教育機関」という概念と「施設」という概念に属し、「京都」という単語は、「地域」という概念に属していることを示している。
【0090】
これらの概念定義辞書および概念辞書は、ユーザ自ら手作業にて構築してもよいし、非特許文献8および非特許文献9に提示されているWordNet、あるいは非特許文献10に提示されているEDRといった一般に入手可能な辞書を用いても構わない。または、特許文献3にて提示されている方式を用いて構築しても構わない。
【0091】
前述の通りに概念定義辞書および概念辞書が構築されているものとして、「京大」という単語を登録したい場合について説明する。
まず、図6のような概念辞書に「京大」という単語を追加する。その後、「京大」という単語がどのような意味を持つのかを考慮し、図5のような概念定義辞書データ構造を俯瞰し、該当するものを「京大」という単語と紐付ける。ここでは、「京大」という単語は、「教育機関」という概念と「施設」という概念に属しているものとする。また、図5より、「教育機関」という概念の概念IDは「120」、「施設」という概念の概念IDは「520」であることがわかる。そのため、概念辞書に「京大」という単語と「120」という概念IDを紐付け、さらに、「京大」という単語と「520」という概念IDを紐付ければよい。
なお、図20で示した状態に、「京大」という単語を紐付けした結果をイメージ化したのが、図21である。
【0092】
図21で示す通り、ある単語とその意味を表現する概念をマッピングすることは比較的容易であるといえる。
また、ここでは概念定義辞書に定義を追加する処理については記載していないが、ここで新たな概念を定義しても構わない。
なお、ユーザにとってこれらの辞書登録を利便化するために、専用の画面を用意することも容易に実現できる。なお、図22に登録画面の一例を示す。
これらの定義を行ない、概念定義辞書および概念辞書の登録を行なった後、実際の辞書構築処理を行なう。具体的には、図9におけるステップS107の処理を行なう。
【0093】
実際には、ステップS107の内部処理である図10のステップS10704にて辞書構築に必要となるモデルの更新が行なわれる。具体的には、「京大」という単語は元々の単語辞書に含まれていないため、図10のステップS10704の内部処理である図11におけるステップS1070410にて未処理単語モデル内に格納されることになる。この未処理単語モデルの一例が図14になる。図14に示す通り、このモデル内で「京大」という単語と概念IDが紐付けられた形で格納されている。
【0094】
その後、ステップS107の内部処理である図10のステップS10707にて実際の辞書構築が行なわれる。ここで、「京大」という単語は、未処理単語モデル内に格納されているため、図10のステップS10707の内部処理である図15のステップS107073にて処理が行なわれることになる。
ここで、図14に示す通り、「京大」という単語は、「120」と「520」という概念IDと紐付けられているとする。
【0095】
この場合、まず、図15のステップS107073の内部処理である図18のステップS10707305にて、概念生起コスト辞書D150を走査し、概念IDが「120」であるデータを取得する。図7より、概念IDが120であるデータは、左文脈IDが「011」、右文脈IDが「011」、生起コストが「1000」であったとする。
【0096】
その後、図18のステップS10707306にて、「京大」の生起コストを算出する。前述したように、同じ概念であれば、生起コストについてある程度同じ値になると考えることは妥当であると考えるため、その単語が所属する概念の生起コストに準じた値を設定すればよい。なお、ここでは、前述した「数式1」を用いるものとし、「数式1」内の重みα=4とした場合で計算する。すると、数式1より、1000−{4×2^(1.3)}=990.150・・・≒990 という数値が得られるので、この990という数値を、左文脈IDが「011」、右文脈IDが「011」である「京大」の生起コストとする。
同様にして、概念IDが「520」であるデータを取得し、左文脈IDが「100」、右文脈IDが「100」である「京大」の生起コストを算出する。
これらにより、「京大」という生起コストが得られたため、そのデータを単語辞書格納領域D110に追加更新する。
【0097】
その後、図15のステップS107074の内部処理である図19のステップS10707406およびステップS10707407にて、左文脈IDが「100」、右文脈IDが「100」である連接コストの計算が行なわれ、自動的に連接コスト値が更新される。
この手順により、ユーザによる試行錯誤による設定ではなく、ユーザは概念辞書に「京大」という単語とその意味する概念をマッピングするだけで、単語辞書に「京大」という単語を自動的に追加し、かつ、形態素解析実行に必要な生起コストおよび連接コストの妥当な値を自動的に算出して設定することができる。
【0098】
なお、ここでは、概念辞書を新規登録することを前提に、辞書構築を実行するまでを例示したが、既にある概念辞書に新たな単語を追加設定したい場合でも、記憶装置120の概念辞書格納領域D140に現状のデータが存在するため、必要な情報をここで適宜更新し、該当処理を実行すればよい。
以上が、第一の実施例における情報分析辞書構築処理についての説明である。
【0099】
<情報分析サーバ102>
次に、本実施形態における情報分析サーバ102について説明する。
図23は、本実施形態における情報分析サーバ102の構成を示すブロック図である。
情報分析サーバ102は、前述した情報分析辞書構築サブシステム101と比べると格納されているプログラムが異なること以外は同じ構成を有する。このため、前述した情報分析辞書構築サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
すなわち、情報分析サーバ102は、メモリ110、記憶装置120、CPU(中央演算装置)130、出力装置140、入力装置150および通信インタフェース160を備え、これらの各構成がバス170によって接続される一般的な構成のコンピュータである。
【0100】
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10および情報分析プログラムP12がメモリ110に格納される。
【0101】
情報分析プログラムP12は、情報分析クライアント103あるいは104から送信された分析要求に基づいて、情報を分析するプログラムであり、サブプログラムとして、辞書ローディングプログラムP121、分析条件式解析プログラムP122、形態素解析プログラムP123、未知語リスト取得プログラムP124を含む。
【0102】
辞書ローディングプログラムP121は、情報分析辞書構築サブシステム101にて構築した各種辞書を取得し、記憶装置120に格納する(図24のステップS203およびステップS204)。
分析条件式解析プログラムP122は、ユーザによって入力された分析条件式を解析する(図24のステップS205)。
形態素解析プログラムP123は、形態素解析を実行するプログラムである(図24のステップS206)。
未知語リスト取得プログラムP124は、記憶装置120内に存在する未知語リストD200の内容を要求元に転送する(図24のステップS210およびステップS211)。
【0103】
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10および情報分析プログラムP12が含まれており、CPU130によって実行される際にメモリ110にロードされる。
また、記憶装置120には、単語辞書D110および連接辞書D120が含まれる。単語辞書D110および連接辞書D120は、情報分析辞書構築サブシステム101にて構築された辞書データであり、辞書ローディングプログラムP121によって情報分析辞書構築サブシステム101からロードされ、記憶装置120に格納される。
【0104】
さらに、記憶装置120には、未知語リストD200が含まれる。未知語リストD200は、形態素解析プログラムP123によって分析された結果、十分に解析できなかった単語(以下、未知語という)のリストであり、未知語リスト取得プログラムP124によって、要求元に転送される。
情報分析サーバ102は、情報分析プログラムP12を実行することによって、情報分析クライアント103もしくは104から送信された分析要求に基づいて、データを分析し、分析結果を要求元の情報分析クライアントに返信する。次にこの処理の詳細を図面を用いて説明する。
【0105】
図24は、本発明の第一の実施例における情報分析サーバ102によって実行される処理のフローチャートである。
まず、情報分析サーバ102は、要求元からリクエストを受信すると(ステップS201)、受信したリクエストを解析する(ステップS202)。
受信したリクエストが辞書ローディング要求であった場合、辞書ローディングプログラムP121を実行し、情報分析辞書構築サブシステム101にて格納されている単語辞書と連接辞書を取得するため、情報分析辞書構築サブシステム101に対して情報転送コマンドを発行し(ステップS203)、情報分析辞書構築サブシステム101から返送されてきた各種辞書データを記憶装置120の単語辞書格納領域D110および連接辞書格納領域D120に格納する。
【0106】
一方、受信したリクエストが未知語リスト転送要求であった場合、記憶装置120内に存在する未知語リストD200を取得し(ステップS210)、本要求を行なった要求元に取得した未知語リスト情報を転送する(ステップS211)。
一方、受信したリクエストがサーバ停止要求であった場合、情報分析サーバ102の動作を停止する。
一方、受信したリクエストが分析要求であった場合、分析条件式解析プログラムP122を実行し、分析条件式を解析する(ステップS205)。具体的には、分析条件式からユーザが入力した解析対象テキストを取得する。
【0107】
次に、形態素解析プログラムP123を実行し、分析条件式に含まれる解析対象テキストを元に、記憶装置120に存在する単語辞書D110および連接辞書D120を使用して形態素解析処理を実行する(ステップS206)。なお、形態素解析処理の詳細については公知であるため、省略する。また、記憶装置120に存在する単語辞書D110および連接辞書D120は、形態素解析を実行するための辞書形態となっているため、形態素解析処理自体に特別な方式は必要ない。
【0108】
ステップS206による形態素解析処理の実行後、解析結果として存在する形態素集合に未知語が含まれているか否かを確認し(ステップS207)、未知語が存在していなければ、ステップS209に進む。
一方、解析結果の形態素集合に未知語が存在していれば、解析結果に含まれる未知語の集合を未知語リストD200に登録する(ステップS208)。
その後、ステップS206にて得られた解析結果を要求元に返信する(ステップS209)。
【0109】
図25は、未知語リストD200の一例を示す図である。
図25に示すように、形態素解析を行った結果、未知語と判断された単語、すなわち、単語辞書に登録されていない語彙のリストが格納されている。なお、図25では、未知語の単語表記のみを格納することとしているが、辞書メンテナンスを行う際の参考情報のために、出現回数や、その未知語が出現した時における前後の文字列など、その他の項目を合わせて格納するようにしてもよい。
この未知語リストD200が存在することにより、未知語リスト内の未知語は辞書に存在しない単語であることが明確にわかるため、辞書メンテナンスを行う際の指標を得ることができる。このことにより、その単語が辞書内に存在するかを確認し、存在していなければ、新規に単語を登録するという手順を、大幅に軽減することができる。
以上が、本発明の第1の実施例における情報分析サーバ102についての説明である。
【0110】
<情報分析クライアント103および104>
次に、本実施形態における情報分析クライアント103,104について説明する。
図26は、本実施例における情報分析クライアント103あるいは104の構成を示すブロック図である。
情報分析クライアント103あるいは104は、前述した情報分析辞書構築サブシステム101(図2)と比べ、格納されているプログラムが異なること以外は同じ構成を有する。このため、前述した情報分析辞書構築サブシステム101と同じ構成には同じ符号を付し、その説明は省略する。
すなわち、情報分析クライアント103あるいは104は、メモリ110、記憶装置120、CPU(中央演算装置)130、出力装置140、入力装置150および通信インタフェース160を備え、これらの各構成がバス170によって接続されるコンピュータである。
メモリ110は、CPU130によって実行されるプログラムを格納する。具体的には、システム制御プログラムP10および分析クライアント制御プログラムP13がメモリ110に格納される。
【0111】
分析クライアント制御プログラムP13は、情報分析サーバ102へ送信する分析要求を生成するプログラムであり、サブプログラムとして、分析条件入力プログラムP131および分析結果表示プログラムP132を含む。
分析条件入力プログラムP131は、ユーザからの分析条件の入力を受け付け、分析リクエストを情報分析サーバ102に送信する。分析結果表示プログラムP132は、ユーザからの指示に従って分析結果を表示する。
記憶装置120には、各種プログラムD100が格納される。この各種プログラムD100には、システム制御プログラムP10および分析クライアント制御プログラムP13が含まれており、CPU130によって実行される際にメモリ110にロードされる。
【0112】
また、記憶装置120には、分析結果データD300が格納される。分析結果データD300は、情報分析サーバ102から転送された分析結果が一時的に格納されるキャッシュである。
情報分析クライアント103あるいは104は、分析クライアント制御プログラムP13を実行することによって、情報分析サーバ102に送信する分析要求を生成し、情報分析サーバ102によって行われた分析の結果を表示する。次に、この処理の詳細について図面を用いて説明する。
【0113】
図27は、本発明の第一の実施例における情報分析クライアント103あるいは104によって実行される処理のフローチャートである。
分析クライアント制御プログラムP13が起動されると、まず、分析条件入力用画面を表示して、指示(コマンド)の入力を促す(ステップS301)。
その後、コマンドが入力されると(ステップS302)、入力されたコマンドを解析する(ステップS303)。
解析したコマンドがクライアント停止コマンドである場合、分析クライアント制御プログラムP13を終了する。
【0114】
一方、解析したコマンドが分析コマンドである場合、分析条件入力プログラムP131を実行し、入力されたデータに基づいて分析リクエストを生成し(ステップS304)、生成された分析リクエストを情報分析サーバ102に送信する(ステップS305)。
その後、情報分析サーバ102から分析結果を受信すると、受信した分析結果を記憶装置120の分析結果データD300に格納する(ステップS306)。なお、分析結果は、分析対象となるテキストから得られた単語情報のリストが含まれ、図24におけるステップS209にて情報分析サーバ102から送信される。
【0115】
その後、分析結果表示プログラムP132を起動し、分析結果表示画面を表示する(ステップS307)。この際、次のコマンドを入力できる画面も合わせて表示する。その後、ステップS302に戻り、ユーザからのコマンド入力を受信する。
【0116】
以上説明したように、本実施形態では、形態素解析を行なうための辞書を構築する際に、その単語の意味定義を考慮する仕組みを提供している。このため、辞書に単語を追加したい場合でも、辞書をメンテナンスするユーザは、追加したい単語とその概念をマッピングするだけでよく、辞書構築においてコスト高となっているユーザによる試行錯誤による設定を行なう必要をなくすことができるため、辞書のメンテナンスコストを低減することができる。
さらに、本実施形態では、実際に解析を行った結果、十分に解析できなかった単語(未知語)を蓄積することができるため、ユーザはそれを用いて次に辞書登録すべき単語を判断することができるようになる。つまり、未知語を取得することと単語の新規登録が容易になることにより、辞書を積極的にメンテナンスすることが可能になり、結果的に解析精度を向上させることが可能になる。
【0117】
<第2の実施形>
次に本発明の第2の実施形態について図面を用いて説明する。この第2の実施形態は、システムの構成については前記第一の実施例と同一であるが、情報分析辞書構築サブシステム101の処理において、概念生起コスト辞書の生成方法が異なり、その結果、単語辞書における生起コスト値が異なってくる。
【0118】
第1の実施形態においては、概念生起コスト辞書を生成するため、ユーザが設定した単語と概念とを紐付ける情報のみを使って概念の生起コストを算出するという方式を取っている(図9のステップS107およびその内部処理である図10のステップS10704)。しかし、概念に紐付いた単語の数が少ない場合においては、その数少ない単語による傾向がそのまま概念の生起コストとして算出されてしまうことになる。また、そもそも単語と紐付いていない概念の生起コストや例え単語と紐付いていたとしても単語の生起コストが存在しないものしか紐付けられていない概念の生起コストは算出できない。こういったシステムにおいては、時間の経過と共に、元々は単語と紐付けていない概念であっても紐付けを行いたくなることが想定され、第1の実施形態だけでは十分な概念生起コストが推定できず、結果として単語の生起コストの推定に不十分な状態となることが考えられる。
【0119】
この第2の実施形態では、第1の実施形態における概念コスト分析プログラムP111に加え、概念間の関係性に着目し、その関係性を元に調整した概念の生起コストを算出することにより、単語の生起コスト推定精度を向上させるという点に特徴がある。
以下、本実施形態における情報分析辞書構築サブシステム101の詳細について説明する。
【0120】
<情報分析辞書構築サブシステム101>
なお、第1の実施形態における情報分析辞書構築サブシステム101(図2)と同じ構成には同じ符号を付し、その説明は省略する。
図28は、本実施形態における情報分析辞書構築サブシステム101のシステム構成を示す図である。
図28に示す情報分析辞書構築サブシステム101は、そのハードウェア構成に関しては、図2に示す第1の実施形態の場合と変わらない。ただし、メモリ110中には、第1の実施形態において保持するプログラム群に加えて、概念関係調整プログラムP112を保持する。また記憶装置120には、第1の実施形態において確保する領域群に加えて、概念関係定義辞書D170が確保される。
概念関係調整プログラムP112は、概念間の関係性を元に概念における生起コストを調整し、単語の生起コストを更新するプログラムである(図29のステップS111)。
【0121】
概念関係定義辞書D170は、上下関係などといった概念と概念の関係性を定義するための情報である。概念というのは、種別という言葉にほぼ同意と考えると、例えば、その上位にあたる概念が存在したり、その部分となる概念が存在したり、あるいは、その反対の意味を持つ概念が存在したりすることが通常と考えられる。概念関係定義辞書D170は、そういった概念間の関係性を定義することに用いる。なお、概念関係定義辞書D170は、図30に示すように、概念を識別するためのID(識別子)のペアとその関係性(役割)とを紐付ける情報を保持する。
【0122】
なお、図30で示したデータ項目の他に、役割そのものの定義などその他の項目を付加した形としても構わない。また、概念の関係性の構造としては、木構造の他に、二部グラフなどといったネットワークグラフ構造など、どのような形態としても構わない。
さらに、概念関係定義辞書D170は、第1の実施形態における概念定義辞書D130および概念辞書D140と同様、ユーザ自ら手作業にて構築してもよいし、非特許文献8および非特許文献9に提示されているWordNet、あるいは非特許文献10に提示されているEDRといった一般に入手可能な辞書を用いても構わない。または、特許文献3にて提示されている方式を用いて構築しても構わない。
【0123】
図29は、本発明の第2の実施形態における情報分析辞書構築サブシステム101によって実行される処理のフローチャートである。
第1の実施形態における情報分析辞書構築サブシステム101によって実行される処理のフローチャート、すなわち、図9と比較した場合、ステップS110およびステップS111が追加されていること以外は同じ処理内容を有する。このため、前述した情報分析辞書構築サブシステム101と同じ処理内容には同じ符号を付し、その説明は省略する。
【0124】
まず、ユーザあるいは情報分析サーバ102からのリクエストを受信すると(ステップS101)、受信したリクエストを解析する(ステップS202)。
受信したリクエストが辞書構築コマンドである場合、要求された登録内容に応じて情報を記憶装置120に格納する。具体的には第1の実施形態において説明した内容と同等であるが、第1の実施形態と比較して、概念関係定義辞書登録コマンドに基づいて、記憶装置120に格納される(図29のステップS110)処理が加わる。
【0125】
また、図9もしくは図29におけるステップS107の終了後に、ステップS111の処理が実行されることになる。すなわち、ステップS107が終了した時点で、図2もしくは図28における単語辞書D110、連接辞書D120、概念定義辞書D130、概念辞書D140、概念生起コスト辞書D150、概念連接コスト辞書D160は一旦構築されているものと考える。
ここで、図29のステップS111の詳細について、図面を用いて説明する。
【0126】
図31は、図29のステップS111、すなわち、概念関係調整プログラムP112において実行される処理のフローチャートである。
まず、概念関係調整プログラムP112は、まず、記憶装置120に存在する概念関係定義辞書D170を読み出し、概念関係定義の全リストをワークエリアに格納する(ステップS11101)。さらに、記憶装置120から概念生起コスト辞書D150上の全データを読み出し、概念生起コストモデルとしてワークエリアに格納する。また、同様に、記憶装置120から概念連接コスト辞書D160上の全データを読み出し、概念連接コストモデルとしてワークエリアに格納する。(ステップS11102)。
【0127】
なお、概念生起コストモデルは、第1の実施形態で説明したモデルであり、第1の実施形態における図12と同様である。また、概念連接コストモデルは、第1の実施形態で説明したモデルであり、第1の実施形態における図13と同様である。その後、ループを制御するパラメータaとパラメータbについて初期値“1”に設定する(ステップS11103)。
そして、ワークエリアに格納した概念生起コストモデルからa番目の概念生起コスト情報を取得する(ステップS11104)。
【0128】
次に、ワークエリアに格納した概念関係定義の全リストから、b番目の概念定義情報を取得する(ステップS11105)。この概念関係定義は、図30で示す通り、概念を識別するIDが2つ定義されており、さらに、これらの関係性(役割)を示す情報が格納されている。
a番目の概念生起コスト情報とb番目の概念定義情報を元に、a番目の概念生起コスト情報に存在する概念IDとb番目の概念定義情報に存在するいずれかの概念IDが合致するか否かを判定し(ステップS11106)、合致する場合は、ステップS11107およびステップS11108からなる処理に進む。
【0129】
一方、ステップS11106の判定において、合致しないとした場合は、次(b+1番目)の概念定義情報が存在するか否かを判定する(ステップS11109)。もし、次の概念情報が存在する場合は、パラメータbに“1”を加算し、ステップS11105に戻る。もし、次の概念定義情報が存在しない場合は、全ての概念情報を走査したと判断し、パラメータbを初期状態、つまり、“1”に設定し、ステップS11112に進む。
ステップS11107では、b番目の概念定義情報に存在する概念IDのうち、a番目の概念生起コスト情報に存在する概念IDと合致しなかった概念IDと共に、a番目の概念生起コスト情報に存在する左文脈ID、右文脈ID、および生起コストをセットにして、概念生起コストモデルに追記する。
【0130】
次に、ステップS11108では、a番目の概念生起コスト情報に存在する左文脈IDと右文脈IDをキーとしてワークエリア上に存在する概念連接コストモデルを走査し、該当する連接コスト値を取得する。取得した連接コスト値とa番目の概念生起コスト情報に存在する左文脈IDと右文脈IDをセットにして、概念連接コストモデルに追記する。
ステップS11108の処理の後、ステップS11111にてパラメータbを初期状態、つまり、“1”に設定し、ステップS11112に進む。
【0131】
ステップS11112では、ワークエリアに格納した概念生起コストモデルに次(a+1番目)の情報が存在するか否かを確認する。もし、a+1番目の概念生起コスト情報が存在する場合は、パラメータaに“1”を加算し(ステップS11113)、ステップS11104に戻る。
【0132】
一方、a+1番目の概念生起コスト情報が存在しない場合は、全ての概念生起コスト情報について走査したと考え、生成した概念生起コストモデルや概念連接コストモデルなどから、各種辞書を生成する(ステップS11114)。なお、このステップS11114は、第1の実施形態における図10のステップS10704と全く同じ処理となる。そのため、ステップS11114の詳細については省略する。
ステップS11114の処理を終えると、全ての処理が終了したと考え、概念関係調整プログラムP112、すなわち、ステップS111の処理を終了する。
【0133】
<情報分析辞書構築の具体例>
以下では、第2の実施形態における情報分析辞書構築処理について、具体的な例を用いて説明する。
ここで、企業内における部門名の略称を辞書に登録する場合を考える。部門名は企業独自に命名されるものであり、かつ、部門名の略称については、その企業の慣習に基づいて命名されることになるため、一般的な辞書に存在することはあり得ない。また、部門名の略称では、漢字とカタカナなどが混在していることも多い。
【0134】
一般的な形態素解析エンジンでは、同一の文字種については、できるだけまとめて認識するという機能が存在するものもある。しかし、部門名の略称表記は複数の文字種が混在することになるため、部門名略称をうまく解析できないという結果になる。
ここでは、ある企業における部門名およびその略称の例として、「生産技術センタ」の略称である「生技セ」と「第一営業本部」の略称である「1営本」を考える。どちらの略称も2種類以上の文字種が含まれている。そのため、これらの単語を登録せずに一般的な形態素解析エンジンで解析した場合、「生技/セ」、「1/営/本」というような形で分かち書きされることが多い。
そこで、「生技セ」と「1営本」という単語を辞書に登録することになる。基本的には、第1の実施形態の説明で行った手順にて行なうことになるのだが、ここでは、第2の実施形態における説明を行なうため、「部門」という概念を新設したと考える。
【0135】
図32は、「部門」という概念を新設した場合における概念定義辞書D130の具体例である。なお、ここでは、図32に示すように、「部門」という概念は、概念IDを「140」で登録することとする。また、「生技セ」と「1営本」という単語は、概念辞書D140において、概念IDと紐付けて定義することになる。ここでは、図33に示すように、「生技セ」と「1営本」という単語は、それぞれ概念ID「140」と紐付けられていることとする。
【0136】
第1の実施形態では、以上の設定で概念の生起コストを算出していたが、この時点では、「部門」という概念に紐付けられている単語が「生技セ」と「1営本」という単語であり、これらは新規に登録した単語であるため、それらの単語における生起コストは設定されていない。したがって、第1の実施形態では、概念における妥当な生起コストを算出することは困難となってしまう。そこで、第2の実施形態では、新たに概念間の関係性、つまり、言葉の意味同士のつながりを利用することにする。
【0137】
図34は、その概念間の関係性を定義した概念関係定義辞書D170の具体例、つまり、図31の具体例となっている。図34から、例えば、概念IDが「100」のものは、概念IDが「110」のものと「上位」という役割でつながっていることがわかる。また、図32より、概念IDが100というのは、「組織」という概念であり、概念IDが「110」というのは、「企業」であることがわかる。
【0138】
すなわち、「組織」という概念は、「企業」という概念の上位概念であることがわかる。同様に、「組織」という概念は、「部門」という概念の上位概念であり、「部門」という概念は、「企業」という概念の部分概念であることがわかる。なお、上記をイメージ化した図が図35である。図35で示す通り、ある単語とその意味を表現する概念をマッピングすることや概念と概念とをマッピングすることは比較的容易であるといえる。
【0139】
なお、図34あるいは図35では、概念と概念の関係性は1つのみ定義しているが、概念間の関係性は複数個定義することも、なにも定義しないこともできる。例えば、「組織という概念は、企業という概念の上位概念である」と定義すると共に、「企業という概念は、組織という概念の下位概念である」と定義することもできる。
【0140】
さらに、第1の実施形態にて述べたように、これらの辞書情報の登録作業を効率化するために、専用の画面を用意することも容易に実現できる。
これらを元に、図29におけるステップS111を実行した場合を考える。ここでは、図29のステップS107の実行結果として、「企業」という概念の左文脈IDが「011」、右文脈IDが「011」、生起コストが「100」であったとして記載を進める。以下、図31を元に説明を進める。
【0141】
図31におけるステップS11104で抽出された概念生起コスト情報が、「企業」という概念のものであった場合、ステップS11105乃至ステップS11110において、「企業」という概念、すなわち、概念IDが「110」を含む概念関係定義情報を走査することになる。
あるタイミングにおいて、概念ID−1が「100」、概念ID−2が「110」という項目がヒットし、その役割が「上位」であった時、ステップS11107にて概念生起コストモデルの更新を行う。具体的には、「企業」という概念における生起コスト「100」に対してある一定の重み値を乗算した値をその概念の生起コストと位置付ける。なお、ある一定の重み値については、上位概念は「0.95」、部分概念は「0.9」など、役割毎にあらかじめ設定しておけばよい。ここでは、100×0.95=95を設定するものとする。
【0142】
その後、概念ID「100」と、「企業」という概念における左文脈ID「011」、右文脈ID「011」、算出した生起コスト「95」をセットにして、概念生起コストモデルに追加する。
また、あるタイミングにおいて、概念ID−1が「140」、概念ID−2が「110」という項目がヒットし、その役割が「部分」であった時、ステップS11107にて概念生起コストモデルの更新を行う。ここでは、部分概念関係は「0.9」という重みに設定することとすれば、概念ID「140」の生起コストは100×0.9=90という値となる。
そこで、概念ID「140」と、「企業」という概念における左文脈ID「011」、右文脈ID「011」、算出した生起コスト「90」をセットにして、概念生起コストモデルに追加する。
【0143】
上記の処理を繰り返すことにより、「組織」のように単語が紐付いていない概念の場合や、「部門」のような単語の生起コストが設定されていない単語のみと紐付いている場合においても、概念に適切な生起コストが算出されていくことになる。なお、この後の処理については、第1の実施形態と同様であるため、省略する。
【0144】
以上説明したように、本実施形態を適用することにより、言葉が持つ意味同士の関係性、つまり、概念間の関係性を考慮することができるようになるため、第1の実施例による効果に加えて、新規に概念を定義し、かつ、その新規概念に紐付く単語を新規登録する場合においても、適切なコスト値を算出することが可能になる。
【符号の説明】
【0145】
101・・・情報分析辞書構築サブシステム、
102・・・情報分析サーバ、
103および104・・・情報分析クライアント、
105・・・ネットワーク、
110・・・メモリ、
120・・・記憶装置、
130・・・CPU(中央演算装置)、
140・・・出力装置、
150・・・入力装置、
160・・・通信インタフェース、
170・・・バス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36