候補語抽出装置、候補語抽出方法及び候補語抽出プログラム
【課題】入力語に応じてより多くの候補語を抽出し、過去に入力された文章と同様の文章を完成させる際により有用な候補語を抽出して表示する。
【解決手段】候補語抽出装置が、辞書データの基である文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成し、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶し、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶し、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させる。
【解決手段】候補語抽出装置が、辞書データの基である文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成し、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶し、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶し、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザから入力された入力語に後続する候補語を抽出して表示する候補語抽出装置、候補語抽出方法及び候補語抽出プログラムに関する。
【背景技術】
【0002】
近年、ユーザによる文章入力を補助するため、予め記憶した辞書データを参照して、ユーザから入力される入力語に応じて後続する候補語を抽出して表示する候補語抽出装置が提供されている。このような候補語抽出装置では、一般的に、辞書ソースデータである文に含まれる語の係り受け関係から、係る語を子ノード、受ける語を親ノードとした親子関係が解析され、子ノードを入力語とし、親ノードを候補語として対応付けた辞書データが予め記憶される。候補語抽出装置は、このような辞書データに基づいて、ユーザから入力される入力語に応じた候補語を抽出して表示する(例えば、特許文献1)
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−233605号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、このような親子関係による候補語の表示は、広く一般的な入力には向いているが、過去に入力された文章と同様の文章を完成させる場合には、充分な数の語を候補語として抽出できない場合があった。例えば、辞書ソースデータが「私は昨日リンゴとミカンを買った。」である場合、図14に示すように親子関係が解析され、辞書データが生成される。ここで、「私は」に対する親ノードは「買った」であるから、「私は」がユーザから入力された場合、抽出される候補語は「買った」のみである。ここで、ユーザが、「私は昨日リンゴとミカンを買った。」との文章を完成させたい場合でも、「私は」に応じて「昨日」は候補語として抽出されない。そのため、文字入力を行なうユーザは、抽出された候補語を選択することなく、新たに「昨日」という文字を入力する必要があった。このように、従来技術により生成される辞書データを用いて候補語の表示を行なう場合には、同様の文字列を複数回入力するような用途には不向きである場合があった。
【0005】
本発明は、このような状況に鑑みてなされたもので、入力語に応じてより多くの候補語を抽出し、過去に入力された文章と同様の文章を完成させる際により有用な候補語を抽出して表示する候補語抽出装置を提供する。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明は、定められた入力語と、入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置であって、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成するノード情報生成部と、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶させる親子ノード辞書データ生成部と、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶させる兄弟ノード辞書データ生成部と、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させる候補語抽出部と、を備えたことを特徴とする。
【0007】
また、本発明は、上述の辞書データ記憶部には、ノード毎の属性を示す情報が記憶され、候補語抽出部は、ユーザから入力された入力語に対応する複数の候補語を抽出すると、抽出した候補語に対応するノードの属性に基づいて、抽出した複数の候補語を定められた順に並べて表示部に表示させることを特徴とする。
【0008】
また、本発明は、上述の兄弟ノード辞書データ生成部は、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードのうち辞書データの基である文において前方に現れる語に対応するノードを兄ノードとし、抽出した子ノードのうち兄ノードの直後に現れるノードを弟ノードとして、弟ノードに対応する子ノードが存在しない場合に、兄ノードを入力語とし、弟ノードを候補語として対応付けて辞書データ記憶部に記憶させることを特徴とする。
【0009】
また、本発明は、定められた入力語と、入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置の候補語抽出方法であって、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成するステップと、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶させるステップと、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶させるステップと、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させるステップと、を備えたことを特徴とする。
【0010】
また、本発明は、定められた入力語と、入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置のコンピュータに、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成するステップと、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶させるステップと、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶させるステップと、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させるステップと、を実行させる候補語抽出プログラムである。
【発明の効果】
【0011】
以上説明したように、本発明によれば、候補語抽出装置が、辞書データの基である文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成し、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶し、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶し、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させるようにしたので、入力語と関連し、後続して入力されることのある候補語を、入力語に対する係り受け関係のみによらず抽出することができ、過去に入力された文章と同様の文章を完成させる際により有用な候補語を抽出して表示することが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態による候補語抽出システムの構成例を示すブロック図である。
【図2】本発明の一実施形態による辞書ソースデータの例を示す図である。
【図3】本発明の一実施形態による辞書ソースデータの構造解析結果の例を示す図である。
【図4】本発明の一実施形態により生成される辞書データの例を示す図である。
【図5】従来技術による候補語の表示と、本発明の一実施形態による候補語の表示との例を示す図である。
【図6】本発明の一実施形態により生成されるノード情報の例を示す図である。
【図7】本発明の一実施形態により生成される中間ファイルのデータ例を示す図である。
【図8】本発明の一実施形態により生成される辞書データの例を示す図である。
【図9】本発明の一実施形態による中間ファイル生成処理の例を示すフローチャートである。
【図10】本発明の一実施形態によるノード処理の例を示すフローチャートである。
【図11】本発明の一実施形態による中間情報書き込み処理の例を示すフローチャートである。
【図12】本発明の一実施形態による中間情報書き込み処理の例を示すフローチャートである。
【図13】本発明の一実施形態による辞書データ生成処理の例を示すフローチャートである。
【図14】従来技術による構文解析結果の例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本実施形態による候補語抽出システム1の構成を示すブロック図である。候補語抽出システム1は、ユーザから入力される入力語に応じた候補語を抽出して表示するコンピュータ装置であり、辞書ソースデータ入力部101と、ノード情報生成部102と、ノード処理部104と、中間ファイル生成部105と、中間ファイル記憶部106と、辞書データ生成部107と、辞書データ記憶部108と、入力部109と、候補語抽出部110と、表示部111とを備えており、構文解析装置103に接続される。
【0014】
ここで、まず、本実施形態の候補語抽出システム1によって行なう候補語抽出処理の概要を説明する。例えば、図2に示すように、辞書データの基である辞書ソースデータに示される文が「私は昨日リンゴとミカンを買った。」であるとすると、図3に示すように、辞書ソースデータの親子関係が構文木によって表された構文解析結果が得られる。ここで、「私は」、「昨日」、「リンゴと」、「ミカンを」のそれぞれの語が、「買った」に係る語として解析され、「買った」が受ける語として解析される。ここで、係る語を子ノードとし、受ける語を親ノードとするとともに、本実施形態では、同一の親ノードに対応する子ノードの組み合わせを兄弟ノードとして定義する。例えば、図において、「私は」と「昨日」とは、隣接する兄弟ノードであり、「昨日」と「ミカンを」とは、隣接しない兄弟ノードである。ここで、兄弟ノードのうち、辞書データソースにおいてより前方に現れる語に対応するノードを兄ノード、後方に現れる語に対応するノードを弟ノードとする。例えば、「私は」は「昨日」に対して兄ノードであり、「昨日」は「私は」に対して弟ノードである。
【0015】
本実施形態の候補語抽出システム1では、このような兄弟ノードの組み合わせに基づいて、辞書データを生成する。図4(1)に示されるように、辞書データに含まれる綴り辞書においては、「私」を入力語とした場合に、親ノードである「は買った」に加えて、弟ノードである「は昨日」を候補語として対応付けた辞書データを生成する。図4(2)に示されるように、辞書データに含まれる読み辞書についても同様に、入力語に対応する弟ノードの語を候補語とした辞書データを生成する。
【0016】
図5は、従来技術による候補語抽出処理と、本実施形態による候補語抽出処理とを比較する図である。ここでは、「私は昨日リンゴとミカンを買った。」との文が入力される例を説明する。図5(1)は、従来技術により辞書ソースデータの親子関係のみに基づいて生成された辞書データによる候補語抽出処理の例を示している。図に示されるように、従来技術により生成された辞書データを参照して候補語が抽出される場合には、入力語「わ」に対して候補語「私」が抽出されて表示され、入力語「私」に対して「は買った」が抽出されて表示される。ここで、入力語「私」に対してユーザが次に入力しようとする「昨日」は候補語として表示されないため、ユーザは「き」を入力する。ここで、入力語「き」を入力した時点で、「昨日」が候補語として表示される。このように、従来技術による場合には、入力語「私」に対して表示される候補語は、親ノードである「は買った」のみであった。
【0017】
これに対し、図5(2)は、本実施形態により生成された辞書データによる候補語抽出処理の例を示している。図に示されるように、従来技術により生成された辞書データを参照して候補語が抽出される場合には、入力語「わ」に対して候補語「私」が抽出されて表示され、入力語「私」に対して、「は昨日」と「は買った」とが抽出されて表示される。このように、本実施形態による候補語抽出システム1によれば、入力語「私」に対する親ノードである「は買った」を候補語として抽出して表示するとともに、入力語「私」に対する弟ノードである「は昨日」を候補語として抽出して表示することが可能となる。これにより、ユーザが同様の文章を複数回入力する場合に、辞書ソースデータにおいて親子関係にある語のみならず、兄弟関係にある語を入力語に対する候補語として表示することが可能となる。
【0018】
図1に戻り、このような候補語抽出処理を行う候補語抽出システム1の詳細な構成について説明する。
辞書ソースデータ入力部101は、辞書データを生成するために構文解析を行なう基の文である辞書ソースデータの入力を受付ける。辞書ソースデータ入力部101に入力される辞書ソースデータとしては、予め生成された複数の文による文章が含まれる文章ファイルを読み込むようにしても良いし、候補語抽出装置100が備える入力部109にユーザから入力された文章を辞書ソースデータとしても良い。
【0019】
ノード情報生成部102は、辞書ソースデータ入力部101に入力された辞書ソースデータに含まれる文を構文解析装置103に入力し、入力した文に応じて構文解析装置103から出力される構文解析結果を取得し、取得した構文解析結果に基づくノード情報を生成する。ここで、ノード情報生成部102は、辞書データソースに含まれる文章中から、文の終わりを示す読点(。)、終止符(.)、疑問符(?)、感嘆符(!)などを検出して、辞書ソースデータに含まれる文章を文に分割し、文毎に構文解析装置103に入力する。また、ノード情報生成部102は、構文解析装置103から出力される構文解析結果の構文木におけるノード毎に、ノード間の関係種別や他ノードの特定手順などの情報を付与して生成したノード情報を自身の記憶領域に記憶させる。例えば、図6(0)〜(6)は、ノード情報生成部102が生成するノード情報のデータ例を示す図である。ノード情報には、辞書ソースデータにおける文章が文節毎に分節されたノード毎に、そのノードを示す情報が含まれる。ここでは、「複数のIDやパスワードを、まとめて管理。」との文が、構文解析装置103によって解析された構文解析結果に基づくノード情報を示している。
【0020】
ノード情報生成部102が生成するノード情報には、ノードを識別する自ノードIDに、そのノードに対する親(ノード)ID、そのノードに対応する語の綴り、読み、品詞、子ノード有無(フラグ)、子ノード特定手順、弟ノード特定手順が対応付けられる。各ノード情報に含まれる親IDの対応関係によって、図6(a)に示されるような構文木が形成される。ノード情報において、自ノードID、親ID、綴り、読み、品詞の情報は、構文解析装置103から取得した構文解析結果に含まれる情報である。子ノード有無、子ノード特定手順、弟ノード特定手順の情報は、構文解析装置103から構文解析結果を取得した後に、ノード情報生成部102によって付与される情報である。
【0021】
ここで、ノード情報生成部102は、構文解析結果における親IDを参照することにより、各ノードに対応する子ノードが存在するか否かを判定し、存在する場合には子ノード有無として「1」を、存在しない場合には子ノード有無として「0」の情報をノード情報に書き込む。子ノード特定手順と、弟ノード特定手順との情報は、ノード情報生成部102に予め記憶された情報が記憶される。子ノード特定手順と、弟ノード特定手順とは、候補語抽出処理の利用用途等に応じて管理者によって予め定められる。子ノード特定手順と、弟ノード特定手順とは、全てのノードについて同様の特定手順を定めても良いし、ノードの品詞等によって異なる特定手順が定められるようにしても良い。
【0022】
図1に戻り、構文解析装置103は、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとして親子関係を解析し、文字列に含まれる各語をノードとした親子関係を構文木によって表した構文解析結果を出力する。構文解析プログラムとして、例えば、京都大学学術情報メディアセンターによる日本語構文解析システムであるKNP(http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp.html)などが存在する。
【0023】
ノード処理部104は、ノード情報生成部102が取得した構文解析結果に基づいて、辞書データを生成するための中間ファイルを生成する。ここでは、ノード処理部104は、ノード情報生成部102が生成したノード情報のそれぞれを中間ファイル生成部105に入力して、中間ファイルを生成させる処理を行う。
【0024】
中間ファイル生成部105は、ノード処理部104から入力されるノード情報についての他ノードとの親子関係や兄弟関係を判定して、辞書データを生成するための中間情報をノード毎に生成し、中間ファイル記憶部106に記憶させる。ここで、親子関係とは、構文解析装置103から出力される構文解析結果において、係り受け関係に基づいて係る語を子ノード、受ける語を親ノードとする関係である。また、兄弟関係とは、構文解析結果の構文木に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせにおいて、子ノードの一方を兄ノードとし、他方を弟ノードとする関係である。ここで、中間ファイル生成部105は、構文木に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードのうち辞書ソースデータの文において前方に現れる語に対応するノードを兄ノードとし、抽出した子ノードのうち兄ノードの直後に現れるノードを弟ノード(隣接弟ノード)として、弟ノードに対応する子ノードが存在しない場合に、兄ノードを入力語とし、弟ノードを候補語として対応付けた中間情報を生成する。
【0025】
ここで、構文解析装置103による構文解析において名詞句間の関係が以下のように解析された場合、名詞句間には係り受け関係がなく、中間ファイル生成部105によって兄弟関係であると判定される。例えば、構文解析装置103によって、名詞句+{並列助詞or読点(、)}+名詞句+{格助詞or副助詞or係助詞}と解析された場合、中間ファイル生成部105は、名詞句間には係り受け関係がなく兄弟関係であると判定する。例えば、「IDやパスワードを」を構文解析した場合には、「ID」は名詞句、「や」は並立助詞、「パスワード」は名詞句、「を」は格助詞として判定され、中間ファイル生成部105は、「ID」と「パスワード」との名詞句は兄弟関係であると判定する。
【0026】
図7は、中間ファイル記憶部106に記憶される中間ファイルのデータ例を示す図である。中間ファイルには、入力語となる辞書ノード1に、辞書ノード1の語に対して候補語となる辞書ノード2が対応付けられた中間情報が記憶される。中間情報には、辞書ノード数と、関係種別と、出現頻度とが対応付けられる。辞書ノード数は、対応する辞書ノード1と辞書ノード2とに含まれる構文解析結果におけるノード数を示す。関係種別は、対応する辞書ノード1と辞書ノード2との関係を示す。例えば、辞書ノード1に対応する辞書ノード2が存在しない中間情報には、関係種別として「単体」が記憶される。辞書ノード1に示される語と、辞書ノード2に示される語とが構文木において親子関係である場合には、関係種別として「親子」が記憶される。辞書ノード1に示される語と、辞書ノード2に示される語とが構文木において兄弟関係である場合には、関係種別として「兄弟」が記憶される。辞書ノード1および辞書ノード2には、対応する語の綴りと、読みと、品詞との情報が含まれる。
【0027】
辞書データ生成部107は、中間ファイル記憶部106に記憶された中間ファイルに基づいて、入力語と候補語が対応付けられた辞書データを生成し、辞書データ記憶部108に記憶させる。図8は、辞書データ記憶部108に記憶される辞書データの構成例を示す概念図である。辞書データ記憶部108には、語の綴りを示す綴り辞書データと、語の読みを示す読み辞書データとが記憶される。図8(1)は、綴り辞書データの構成例を示す図である。綴り辞書データは、辞書の要素である語の綴りを結節点(ノード)とした、樹状の階層構造(木構造)のバイナリデータによって構成される。綴り辞書データに含まれる各ノードには、辞書ソースデータにおける語の出現頻度(回数)、入力語または入力語と候補語との関係を示す関係種別、品詞を示す情報など、ノードの属性を示す情報が対応付けられる。また、綴り辞書データには、ユーザから入力された入力語に、その入力語に後続することがある候補語が対応付けられている。
【0028】
図8(2)は、綴り辞書データに対をなす読み辞書データの構成例を示す図である。読み辞書データは、綴り辞書データと同一の階層構造によって構成されており、綴り辞書データに示された綴りに対応する読みが、綴り辞書データのノードに対応する位置に構成される。図において、綴り辞書データおよび読み辞書データの各ノードに付されている[a1]、[b1]などの記号は、綴り辞書データと読み辞書データとの間のリンクを示すリンクポインタである。すなわち、綴り辞書データと読み辞書データとの間において、同一の記号が設定されているノード同士は、相互に参照可能であることを示している。
【0029】
入力部109は、ユーザからの文字入力を受付ける。入力部109には、例えば、キーボードやボタン等の入力デバイスが適用される。また、入力部109は、候補語抽出部110によって表示部111に表示された候補語のうち、いずれかの候補語がユーザによって選択されたことを示す情報が入力されると、選択された候補語を入力する。
【0030】
候補語抽出部110は、ユーザから入力部109に入力された入力語に対応する候補語を、辞書データ記憶部108から抽出し、表示部111に表示させる。ここで、候補語抽出部110は、ユーザから入力された入力語に対応する複数の候補語を辞書データ記憶部108から抽出すると、抽出した候補語に対応するノードの属性に基づいて、抽出した複数の候補語を定められた順に並べて表示部に表示させる。ここで、候補語の並び順は、例えば、予め定められた並び替え設定が候補語抽出部110の記憶領域に記憶されていても良いし、ユーザによって定められた並び替え設定が記憶されるようにしても良い。並び替え設定には、候補語の並び替えを行なう際のキーであるソートキーの設定や、降順または昇順の設定、並び替えの優先順位の設定などが含まれる。ソートキーを用いる場合、例えば、第1ソートキーとして属性のうち品詞または関係種別、第2ソートキーとして属性のうち頻度を指定することができる。第1ソートキーとして頻度が指定されると、この頻度のみでソートを行う。
これにより、例えば、候補語を出現頻度の降順に表示したり、特定の品詞の入力語に後続する場合は特定の品詞の候補語を上位に表示したり、特定の関係種別の候補語を上位に表示したりすることが可能である。
表示部111は、候補語抽出部110が抽出した候補語を表示する表示部である。
【0031】
次に、図を参照して、候補語抽出システム1による辞書データ生成処理を説明する。図9は、候補語抽出システム1による中間ファイル生成処理の例を示すフローチャートである。まず、辞書ソースデータ入力部101に辞書ソースデータが入力されると、ノード情報生成部102は、辞書データソースに含まれる文章を文に分割して、文のリストを生成する(ステップS1000)。この際、ノード情報生成部102は、辞書データソースに含まれる文章中から、文の終わりを示す読点(。)、終止符(.)、疑問符(?)、感嘆符(!)などを検出して、複数の文が含まれる文章を文に分割する。ノード情報生成部102は、分割した文のそれぞれについて、ステップS2000からステップS10000までの処理を行う。ノード情報生成部102は、分割した文を構文解析装置103に入力して、構文解析結果を取得する(ステップS3000)。
【0032】
ステップS3000において構文解析装置103による構文解析処理が失敗し、構文解析装置103からエラーが送信された場合には(ステップS4000:No)、その文に対する処理を終了し、ステップS2000に戻る。一方、ステップS3000において構文解析装置103による構文解析処理が成功し、構文解析結果が出力された場合には(ステップS4000:Yes)、ノード情報生成部102は、構文解析結果に含まれるノードのそれぞれについて、ステップS5000からステップS8000までの処理を行う。すなわち、ノード情報生成部102は、構文解析結果に含まれるノードのそれぞれについて、子ノード特定手順と弟ノード特定手順とのそれぞれのメソッドを格納し(ステップS6000)、子ノード有無を算出して対応付けて(ステップS7000)、ノード情報を生成する。
【0033】
ノード情報生成部102は、生成したノード情報を、ノード処理部104に入力する(ステップS9000)。図10は、ノード処理部104によるノード処理を説明するフローチャートである。まず、ノード処理部104は、入力されたノード情報のうち、ルートノード(自ノードIDが「0」)のノード情報を、中間ファイル生成部105に入力する(ステップS9100)。
【0034】
図11は、中間ファイル生成部105によって行なわれる中間情報書き込み処理を示すフローチャートである。中間ファイル生成部105は、ノード処理部104から入力されたノード情報を読み出す(ステップS9110)。中間ファイル生成部105は、読み出したノード情報に、綴りと読みとを示す情報が含まれており、かつノード情報に含まれる語が句点ではないか否かを判定する(ステップS9120)。ここで、中間ファイル生成部105が、読み出したノード情報には、綴りと読みとを示す情報が含まれていないか、または語が句点であると判定すれば(ステップS9120:No)、処理を終了し、ノード処理部104に処理を返す。
【0035】
一方、ステップS9120において、中間ファイル生成部105が、読み出したノード情報には、綴りと読みとを示す情報が含まれており、かつ語が句点でないと判定すれば(ステップS9120:Yes)、入力されたノード情報に対応する親ノードが存在しており(親IDの項目に情報が存在しており)、かつ綴りと読みとが含まれているか否かを判定する(ステップS9130)。ここで、中間ファイル生成部105が、入力されたノード情報に対応する親ノードが存在しないか、または綴りと読みとがないと判定すれば(ステップS9130:No)、自ノードのノード情報を、関係種別を「単体」とする中間情報として、中間ファイル記憶部106に記憶させる(ステップS9160)。
【0036】
一方、ステップS9130において、中間ファイル生成部105が、入力されたノード情報に対応する親ノードが存在しており、かつ綴りと読みとがあると判定すれば(ステップS9130:Yes)、親IDに対応するノード情報を読み出し、自ノードのノード情報に含まれる語と親ノードのノード情報に含まれる語とを対応付け、関係種別を「親子」とする中間情報を、中間ファイル記憶部106に記憶させる(ステップS9140)。そして、中間ファイル生成部105は、入力されたノード情報について、兄弟ノード書き込み処理を行う(ステップS9150)。
【0037】
図12は、中間ファイル生成部105によって行なわれる兄弟ノード書き込み処理の例を示すフローチャートである。まず、中間ファイル生成部105は、入力されたノード情報に含まれる弟ノード特定手順により、入力されたノード情報に対応する弟ノードのノード情報を取得する(ステップS9151)。中間ファイル生成部105は、ステップS9151において取得した弟ノードのうち、自ノードIDの次に大きい番号のノードIDが付与されたノード(隣接弟ノード)を抽出する(ステップS9152)。ここでは、ノードIDの番号は、大きければ大きいほど、辞書データソースにおける文中で前方に現れた語であることを示す。
【0038】
中間ファイル生成部105は、ステップS9152において、隣接弟ノードが抽出できなければ(ステップS9153:No)、処理を終了する。一方、中間ファイル生成部105が、隣接弟ノードを抽出すれば(ステップS9153:Yes)、抽出した隣接兄弟ノードに含まれる子ノード有無(フラグ)が、0であるか否かを判定する(ステップS9154)。
【0039】
また、ステップS9154において、中間ファイル生成部105が、抽出した隣接弟ノードに対応する子ノード有無フラグが0でないと判定すると(ステップS9154:No)、処理を終了する。一方、ステップS9154において、中間ファイル生成部105が、抽出した隣接弟ノードに対応する子ノード有無フラグが0であると判定すると(ステップS9154:Yes)、抽出した隣接弟ノードのノード情報に、綴りと読みとが含まれるか否かを判定する(ステップS9155)。
【0040】
中間ファイル生成部105は、抽出した隣接弟ノードのノード情報に、綴りと読みとが含まれないと判定すると(ステップS9155:No)、処理を終了する。一方、ステップS9155において、中間ファイル生成部105が、抽出した隣接弟ノードのノード情報に、綴りと読みとが含まれると判定すると(ステップS9155:Yes)、入力されたノード情報の語と、弟ノードのノード情報の語とを対応付け、関係種別を「兄弟」とする中間情報を、中間ファイル記憶部106に記憶させる(ステップS9156)。
【0041】
図10に戻り、ノード処理部104は、入力されたノード情報についてステップS9100における中間ファイル生成処理が終了すると、入力されたノード情報に含まれる子ノード特定手順により、子ノードの一覧を取得し(ステップS9200)、全ての子ノードのそれぞれについてノード情報をノード処理部104に再帰的に入力し(ステップS9400)、ノード情報に含まれるノードIDの値が小さい順に、中間ファイル生成部105による中間ファイル生成処理を行わせる(ステップS9300〜ステップS9500)。
【0042】
このように、辞書ソースデータに基づく中間情報が中間ファイル記憶部106に記憶されると、辞書データ生成部107は、中間ファイル記憶部106に記憶された中間ファイルに基づいて辞書データを生成し、辞書データ記憶部108に記憶させる。図13は、辞書データ生成部107による辞書データ生成処理の例を示すフローチャートである。辞書データ生成部107は、中間ファイル記憶部106に記憶された中間ファイルから、中間情報を読み出す。ここで、辞書データ生成部107は、中間情報から、辞書ノード1のノード情報の綴りを示す綴り1と、辞書ノード1のノード情報の読みを示す読み1と、辞書ノード1のノード情報の品詞を示す品詞1との情報を読み出す。また、辞書データ生成部107は、読み出した中間情報から、辞書ノード2のノード情報の綴りを示す綴り2と、辞書ノード2のノード情報の読みを示す読み2と、辞書ノード2のノード情報の品詞を示す品詞2との情報を読み出す。さらに、辞書データ生成部107は、辞書ノード1と辞書ノード2との関係種別を読み出す(ステップS1)。辞書データ生成部107は、中間ファイル記憶部106から読み出した情報を、構造木の深さに応じて、辞書データとして辞書データ記憶部108に記憶させる(ステップS2)。ここでは、出現頻度、リンクポインタも対応付けて記憶する。ただし、既に同じ辞書データが存在する場合には、その辞書データの出現頻度を1加算する。辞書データ生成部107は、中間ファイル記憶部106に記憶された全ての中間情報について、辞書データ生成処理を完了すると、処理を終了する(ステップS3:Yes)。一方、辞書データ生成部107は、中間ファイル記憶部106に記憶された全ての中間情報について、辞書データ生成処理を完了していなければ、ステップS1に戻り、他の中間情報について、辞書データ生成処理を行う(ステップS3:No)。
【0043】
次に、「複数のIDやパスワードを、まとめて管理。」との文が含まれる辞書ソースデータが候補語抽出装置100に入力されたとして、上述の辞書データ生成処理の動作例について説明する。候補語抽出装置100の辞書ソースデータ入力部101に、上述の文が含まれる辞書ソースデータが入力されると、図9に示したステップS1000において、辞書ソースデータに含まれる上述の文が抽出される。ステップS3000において、構文解析装置103によって上述の文が構文解析されると、図6の(a)に示したような構文解析結果が、構文解析装置103から出力される。ステップS9000において、ノード処理部104によって、構文解析結果に基づくノード情報のうちノードIDの値が小さい順にノード処理が行われる。まず、ルートノード(自ノードID「0」)のノード処理が行われる。ステップS9120において、自ノードID「0」のノードの語には、綴りと読みがないため、Noと判定され、中間ファイルへの書き込みは行われない。
【0044】
次に、ノード処理を行った自ノードID「0」の次にノードIDの値が小さい自ノードID「1」のノードについてノード処理が行われる。ステップS9120において、自ノードID「1」のノードの語(「管理」)には、綴りと読みがあり、句点でもないため、Yesと判定される。そして、ステップS9130において、自ノードID「1」に対する親ノード(自ノードID「0」)は存在するが、親ノードには綴りと読みがないため、Noと判定される。ここで、ステップS9160において、中間ファイル生成部105によって「管理」の語についての中間情報に関係種別「単体」が対応付けられて、図7の1行目に示されるように中間ファイル記憶部106に書き込まれる。
【0045】
次に、ノード処理を行った自ノードID「1」の次にノードIDの値が小さい自ノードID「2」のノードについてノード処理が行われる。ステップS9120において、自ノードID「2」のノードの語(「まとめて」)には、綴りと読みがあり、句点でもないため、Yesと判定される。そして、ステップS9130において、自ノードID「2」に対する親ノード(自ノードID「1」)が存在し、親ノードには綴りと読みがあるため、Yesと判定される。ここで、ステップS9140において、自ノードID「2」のノードと、自ノードID「1」のノードとが、関係種別を「親子」として対応付けられて図7の2行目に示される中間情報が中間ファイル記憶部106に記憶される。
【0046】
同様に、自ノードID「3」のノードについてノード処理が行われる。ステップS9120において、自ノードID「3」のノードの語(「IDや」)には、綴りと読みがあり、句点でもないため、Yesと判定される。そして、ステップS9130において、自ノードID「3」に対する親ノード(自ノードID「2」)が存在し、親ノードには綴りと読みがあるため、Yesと判定される。ここで、ステップS9140において、自ノードID「3」のノードと、自ノードID「2」のノードとが対応付けられて、図7の3行目に示される中間情報が中間ファイル記憶部106に記憶される。さらに、ステップS9152において、自ノードID「5」のノードが、自ノードID「3」のノードに対応する弟ノードとして抽出される。ステップS9154において、抽出した弟ノード(自ノードID「5」)の子ノード有無は「0」であると判定される。また、ステップS9155において、弟ノード(自ノードID「5」)の語には綴りと読みがあるためYesと判定される。ここで、ステップS9156において、自ノードID「3」のノードと、自ノードID「5」のノードとが、関係種別を「兄弟」として対応付けられて図7の4行目に示される中間情報が中間ファイル記憶部106に記憶される。
【0047】
このようにして、中間ファイル生成部105によって図7に示したような中間情報が生成され、複数の中間情報が含まれる中間ファイルが中間ファイル記憶部106に記憶される。そして、辞書データ生成部107が、中間ファイル記憶部106に記憶された中間ファイルに基づいて、図8に示したような辞書データを生成する。例えば、辞書データ生成部107は、図13に示したステップS1において、図7に示した中間ファイルの1行目に示される中間情報を読み出す。そして、読み出した中間情報に含まれる辞書ノード1のノード情報の綴りを示す綴り1(「管理」)と、出現頻度(「1」)と、関係種別(「単体」)と、品詞1(「名詞」)とを対応付けて、図8(1)の綴り辞書データにおけるリンクポインタが[a1]であるノードとして辞書データ記憶部108に書き込む。
また、辞書データ生成部107は、読み出した中間情報に含まれる辞書ノード1のノード情報の読みを示す読み1(「かんり」)と、出現頻度(「1」)と、関係種別(「単体」)と、品詞1(「名詞」)とをノードとして図8(2)の読み辞書データにおけるリンクポインタが[a1]であるノードとして辞書データ記憶部108に書き込む。
辞書データ生成部107によって、綴り辞書データに記憶させるノードと、読み辞書データに記憶させるノードとに、リンクポインタ([a1])が付与されることによって、これらノードの相互の関係性が表される。
【0048】
同様に、辞書データ生成部107は、図7に示した中間ファイルの2行目に示される中間情報を読み出す。そして、読み出した中間情報に含まれる辞書ノード1のノード情報の綴りを示す綴り1(「まとめて」)と、品詞1(「動詞」)とをノードとして図8(1)の綴り辞書データにおける[b1]のノードに書き込む。また、辞書ノード2のノード情報の綴りを示す綴り2(「管理」)と、品詞2(「名詞」)と、関係種別(「親子」)とをノードとして図8(2)の読み辞書データに示す[b2]のノードに書き込む。このように、辞書データ生成部107は、辞書データにノードを書き込む際には、入力語に対して候補語となるノードに、関係種別を書き込む。辞書データ生成部107は、読み辞書データについても同様に辞書データを書き込む。辞書データ生成部107は、中間ファイル記憶部106に記憶された全ての中間情報について同様の辞書データ生成処理を行い、図8に示したような辞書データを生成し、辞書データ記憶部108に記憶させる。
【0049】
そして、ユーザによって、入力部109に文字が入力されると、辞書データ記憶部108に記憶された辞書データに基づいて、候補語抽出部110が候補語を抽出する。例えば、入力部109から未確定文字として「ぱ」が入力された場合には、図8(2)に示した読み辞書データから、「ぱ」で開始する文字列「ぱすわーど」に対応付けられた[f1]のノードを抽出する。ここでいう未確定文字とは、入力途中の文字であり、入力された文字が確定していない文字(変換途中の文字)である。また、当該ノードのリンクポインタ[f1]に基づいて、図8(1)に示した綴り辞書の対応するノードから、対応する綴りである「パスワード」を抽出し、候補語として表示部111に表示する。ここでは、「ぱ」が未確定文字であるので、「ぱ」が先頭である文字列の候補語が表示される。
同様に、入力部109に確定文字「ID」が入力された場合には、図8(1)に示した綴り辞書データから、文字列「ID」と一致する文字列「ID」に対応付けられた[c1]のノードを読み出す。ここでいう確定文字とは、入力された文字の変換が完了した文字であり、入力された文字の変換を行わない状態で確定した文字も含む。また、候補語抽出部110は、当該ノードに対応付けられた[c2]のノード「をまとめて」及び[d2]のノード「やパスワード」を抽出し、表示部111に表示する。ここでは、「ID」が確定文字であるので、その「ID」の後ろに続いて入力される可能性がある文字列が候補語として表示される。
この際、候補語抽出部110は、予め定められた並び順に基づいて、候補語を出力する。ここでは、例えば、候補語抽出部110は関係種別に応じた並び順により、候補語を出力する。
【0050】
ここで、候補語抽出部110が複数の候補語を抽出した場合に、抽出した複数の候補語を、その候補語の属性に基づいて定められた順に並べて表示部111に表示させる動作例について詳細に説明する。候補語抽出部110が候補語を並び替える際に利用する項目としては、例えば、出現頻度、品詞、関係種別などが適用できる。例えば、候補語抽出部110は、定められた並び替え設定において出現頻度が並び変え項目として記憶されている場合には、候補語に対応付けられた出現頻度の値に応じて、降順または昇順に候補語を出力させる。品詞が並び変え項目として記憶されている場合には、候補語に対応付けられた品詞に応じて、候補語を出力させる。ここでは、候補語抽出部110は品詞毎の並び替えの優先順位を予め記憶しておき、優先順位の降順または昇順に候補語を出力する。品詞の優先順位とは、例えば、優先順位が高い品詞から順に、名詞→動詞→形容詞→形容動詞→接続詞のような並びが定められる。
【0051】
また、候補語抽出部110は、関係種別が並び変え項目として記憶されている場合には、候補語に対応付けられた関係種別に応じて、候補語を出力させる。候補語抽出部110は、関係種別毎の並び替えの優先順位を予め記憶しておき、優先順位の降順または昇順に候補語を出力する。関係種別の優先順位とは、例えば、優先順位が高い関係種別から順に、単体→兄弟→親子などの並びが定められる。
この場合、図8に示した例のように、入力語「ID」について、関係種別が「親子」である候補語「やまとめて」と、関係種別が「兄弟」である候補語「やパスワード」とが抽出され、関係種別の降順に並び替えることを示す並び替え設定が記憶されている場合、候補語抽出部110は、関係種別が「兄弟」である候補語を優先して、「やパスワード」、「やまとめて」の順に候補語を表示させる。第1ソートキー及び第2ソートキーに従ってソートすることが指定されている場合には、第1ソートキーでソートを行った後、第2ソートキーでソートを行う。第1ソートキーとして「頻度」が指定されている場合には、第1ソートキーのみでソートを行う。
候補語抽出部110が、このように属性毎に候補語を並び替えて出力することで、例えば兄弟関係にある候補語を上位に表示させつつ、親子関係にある候補語をも選択肢として提示することが可能となる。
【0052】
このように、本実施形態によれば、ユーザから入力された入力語に応じて、入力語に後続する候補語を抽出して表示する際、辞書ソースデータにおける親子関係に加えて、兄弟関係にある語を候補語とした辞書データを生成して、生成した辞書データに基づいて候補語を抽出して表示させるようにした。これにより、文中での係り受け関係において係る語に対応する受ける語が候補語として表示されることに加えて、辞書ソースデータにおける文中で隣接する兄弟関係にある語が候補語として表示される。これにより、同一の語に複数の語が係るような構造の文章を、ユーザが複数回入力しようとする場合に、入力語に対して後続して入力された語を候補語として表示することができ、ユーザは、表示される語を選択するだけで、同一の語を入力することが可能となる。
【0053】
なお、本実施形態では、候補語抽出装置100とは別に、構文解析装置103を設置する例を示したが、候補語抽出装置100が、構文解析を行なう構文解析部を備えるように構成しても良い。
また、本実施形態における各機能部は、ソフトウェアプログラムが実行されることによって論理的に実現されるが、これらの機能を、例えばASIC(Application Specific Integrated Circuit:特定用途向け集積回路)などの物理的な構成によって実現しても良い。
【0054】
また、本実施形態における候補語抽出装置100は、携帯電話やPDA(Personal Digital Assistant)などの携帯端末を適用しても良いし、PC(Personal Computer)などのコンピュータ装置を適用しても良い。この場合、候補語抽出装置100は、辞書データ記憶部108〜表示部111のみの機能を備え、辞書ソースデータ入力部101〜辞書データ生成部107の機能部は備えないようにして、他の装置で生成した辞書データを候補語抽出装置100に記憶させて動作させるようにしても良い。このようにすれば、ユーザが利用する各装置において、辞書ソースデータの入力や中間ファイルの生成、辞書データの生成などの処理を行う必要がない。また、辞書ソースデータ入力部101〜辞書データ生成部107の機能部は、例えば日次バッチなどの処理で夜間に動作するようにして良い。
【0055】
また、本字実施形態により生成された候補語抽出処理は、電子メール等のテキスト入力を行なう際に利用されることに加え、例えば、電話応答の内容をリアルタイムに入力する必要のあるコールセンタなどの入力端末に適用して好適である。
【0056】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより候補語抽出処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0057】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0058】
1 候補語抽出システム
100 候補語抽出装置
101 辞書ソースデータ入力部
102 ノード情報生成部
103 構文解析装置
104 ノード処理部
105 中間ファイル生成部
106 中間ファイル記憶部
107 辞書データ生成部
108 辞書データ記憶部
109 入力部
110 候補語抽出部
111 表示部
【技術分野】
【0001】
本発明は、ユーザから入力された入力語に後続する候補語を抽出して表示する候補語抽出装置、候補語抽出方法及び候補語抽出プログラムに関する。
【背景技術】
【0002】
近年、ユーザによる文章入力を補助するため、予め記憶した辞書データを参照して、ユーザから入力される入力語に応じて後続する候補語を抽出して表示する候補語抽出装置が提供されている。このような候補語抽出装置では、一般的に、辞書ソースデータである文に含まれる語の係り受け関係から、係る語を子ノード、受ける語を親ノードとした親子関係が解析され、子ノードを入力語とし、親ノードを候補語として対応付けた辞書データが予め記憶される。候補語抽出装置は、このような辞書データに基づいて、ユーザから入力される入力語に応じた候補語を抽出して表示する(例えば、特許文献1)
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−233605号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、このような親子関係による候補語の表示は、広く一般的な入力には向いているが、過去に入力された文章と同様の文章を完成させる場合には、充分な数の語を候補語として抽出できない場合があった。例えば、辞書ソースデータが「私は昨日リンゴとミカンを買った。」である場合、図14に示すように親子関係が解析され、辞書データが生成される。ここで、「私は」に対する親ノードは「買った」であるから、「私は」がユーザから入力された場合、抽出される候補語は「買った」のみである。ここで、ユーザが、「私は昨日リンゴとミカンを買った。」との文章を完成させたい場合でも、「私は」に応じて「昨日」は候補語として抽出されない。そのため、文字入力を行なうユーザは、抽出された候補語を選択することなく、新たに「昨日」という文字を入力する必要があった。このように、従来技術により生成される辞書データを用いて候補語の表示を行なう場合には、同様の文字列を複数回入力するような用途には不向きである場合があった。
【0005】
本発明は、このような状況に鑑みてなされたもので、入力語に応じてより多くの候補語を抽出し、過去に入力された文章と同様の文章を完成させる際により有用な候補語を抽出して表示する候補語抽出装置を提供する。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明は、定められた入力語と、入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置であって、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成するノード情報生成部と、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶させる親子ノード辞書データ生成部と、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶させる兄弟ノード辞書データ生成部と、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させる候補語抽出部と、を備えたことを特徴とする。
【0007】
また、本発明は、上述の辞書データ記憶部には、ノード毎の属性を示す情報が記憶され、候補語抽出部は、ユーザから入力された入力語に対応する複数の候補語を抽出すると、抽出した候補語に対応するノードの属性に基づいて、抽出した複数の候補語を定められた順に並べて表示部に表示させることを特徴とする。
【0008】
また、本発明は、上述の兄弟ノード辞書データ生成部は、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードのうち辞書データの基である文において前方に現れる語に対応するノードを兄ノードとし、抽出した子ノードのうち兄ノードの直後に現れるノードを弟ノードとして、弟ノードに対応する子ノードが存在しない場合に、兄ノードを入力語とし、弟ノードを候補語として対応付けて辞書データ記憶部に記憶させることを特徴とする。
【0009】
また、本発明は、定められた入力語と、入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置の候補語抽出方法であって、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成するステップと、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶させるステップと、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶させるステップと、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させるステップと、を備えたことを特徴とする。
【0010】
また、本発明は、定められた入力語と、入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置のコンピュータに、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成するステップと、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶させるステップと、ノード情報に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶させるステップと、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させるステップと、を実行させる候補語抽出プログラムである。
【発明の効果】
【0011】
以上説明したように、本発明によれば、候補語抽出装置が、辞書データの基である文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、文字列に含まれる各語をノードとした親子関係が構文木によって表されたノード情報を生成し、ノード情報に含まれるノードのうち、子ノードを入力語とし、子ノードに対応する親ノードを候補語として対応付けて辞書データ記憶部に記憶し、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を入力語とし、他方を候補語として対応付けて辞書データ記憶部に記憶し、ユーザから入力された入力語に対応する候補語を辞書データ記憶部から抽出し、表示部に表示させるようにしたので、入力語と関連し、後続して入力されることのある候補語を、入力語に対する係り受け関係のみによらず抽出することができ、過去に入力された文章と同様の文章を完成させる際により有用な候補語を抽出して表示することが可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態による候補語抽出システムの構成例を示すブロック図である。
【図2】本発明の一実施形態による辞書ソースデータの例を示す図である。
【図3】本発明の一実施形態による辞書ソースデータの構造解析結果の例を示す図である。
【図4】本発明の一実施形態により生成される辞書データの例を示す図である。
【図5】従来技術による候補語の表示と、本発明の一実施形態による候補語の表示との例を示す図である。
【図6】本発明の一実施形態により生成されるノード情報の例を示す図である。
【図7】本発明の一実施形態により生成される中間ファイルのデータ例を示す図である。
【図8】本発明の一実施形態により生成される辞書データの例を示す図である。
【図9】本発明の一実施形態による中間ファイル生成処理の例を示すフローチャートである。
【図10】本発明の一実施形態によるノード処理の例を示すフローチャートである。
【図11】本発明の一実施形態による中間情報書き込み処理の例を示すフローチャートである。
【図12】本発明の一実施形態による中間情報書き込み処理の例を示すフローチャートである。
【図13】本発明の一実施形態による辞書データ生成処理の例を示すフローチャートである。
【図14】従来技術による構文解析結果の例を示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本実施形態による候補語抽出システム1の構成を示すブロック図である。候補語抽出システム1は、ユーザから入力される入力語に応じた候補語を抽出して表示するコンピュータ装置であり、辞書ソースデータ入力部101と、ノード情報生成部102と、ノード処理部104と、中間ファイル生成部105と、中間ファイル記憶部106と、辞書データ生成部107と、辞書データ記憶部108と、入力部109と、候補語抽出部110と、表示部111とを備えており、構文解析装置103に接続される。
【0014】
ここで、まず、本実施形態の候補語抽出システム1によって行なう候補語抽出処理の概要を説明する。例えば、図2に示すように、辞書データの基である辞書ソースデータに示される文が「私は昨日リンゴとミカンを買った。」であるとすると、図3に示すように、辞書ソースデータの親子関係が構文木によって表された構文解析結果が得られる。ここで、「私は」、「昨日」、「リンゴと」、「ミカンを」のそれぞれの語が、「買った」に係る語として解析され、「買った」が受ける語として解析される。ここで、係る語を子ノードとし、受ける語を親ノードとするとともに、本実施形態では、同一の親ノードに対応する子ノードの組み合わせを兄弟ノードとして定義する。例えば、図において、「私は」と「昨日」とは、隣接する兄弟ノードであり、「昨日」と「ミカンを」とは、隣接しない兄弟ノードである。ここで、兄弟ノードのうち、辞書データソースにおいてより前方に現れる語に対応するノードを兄ノード、後方に現れる語に対応するノードを弟ノードとする。例えば、「私は」は「昨日」に対して兄ノードであり、「昨日」は「私は」に対して弟ノードである。
【0015】
本実施形態の候補語抽出システム1では、このような兄弟ノードの組み合わせに基づいて、辞書データを生成する。図4(1)に示されるように、辞書データに含まれる綴り辞書においては、「私」を入力語とした場合に、親ノードである「は買った」に加えて、弟ノードである「は昨日」を候補語として対応付けた辞書データを生成する。図4(2)に示されるように、辞書データに含まれる読み辞書についても同様に、入力語に対応する弟ノードの語を候補語とした辞書データを生成する。
【0016】
図5は、従来技術による候補語抽出処理と、本実施形態による候補語抽出処理とを比較する図である。ここでは、「私は昨日リンゴとミカンを買った。」との文が入力される例を説明する。図5(1)は、従来技術により辞書ソースデータの親子関係のみに基づいて生成された辞書データによる候補語抽出処理の例を示している。図に示されるように、従来技術により生成された辞書データを参照して候補語が抽出される場合には、入力語「わ」に対して候補語「私」が抽出されて表示され、入力語「私」に対して「は買った」が抽出されて表示される。ここで、入力語「私」に対してユーザが次に入力しようとする「昨日」は候補語として表示されないため、ユーザは「き」を入力する。ここで、入力語「き」を入力した時点で、「昨日」が候補語として表示される。このように、従来技術による場合には、入力語「私」に対して表示される候補語は、親ノードである「は買った」のみであった。
【0017】
これに対し、図5(2)は、本実施形態により生成された辞書データによる候補語抽出処理の例を示している。図に示されるように、従来技術により生成された辞書データを参照して候補語が抽出される場合には、入力語「わ」に対して候補語「私」が抽出されて表示され、入力語「私」に対して、「は昨日」と「は買った」とが抽出されて表示される。このように、本実施形態による候補語抽出システム1によれば、入力語「私」に対する親ノードである「は買った」を候補語として抽出して表示するとともに、入力語「私」に対する弟ノードである「は昨日」を候補語として抽出して表示することが可能となる。これにより、ユーザが同様の文章を複数回入力する場合に、辞書ソースデータにおいて親子関係にある語のみならず、兄弟関係にある語を入力語に対する候補語として表示することが可能となる。
【0018】
図1に戻り、このような候補語抽出処理を行う候補語抽出システム1の詳細な構成について説明する。
辞書ソースデータ入力部101は、辞書データを生成するために構文解析を行なう基の文である辞書ソースデータの入力を受付ける。辞書ソースデータ入力部101に入力される辞書ソースデータとしては、予め生成された複数の文による文章が含まれる文章ファイルを読み込むようにしても良いし、候補語抽出装置100が備える入力部109にユーザから入力された文章を辞書ソースデータとしても良い。
【0019】
ノード情報生成部102は、辞書ソースデータ入力部101に入力された辞書ソースデータに含まれる文を構文解析装置103に入力し、入力した文に応じて構文解析装置103から出力される構文解析結果を取得し、取得した構文解析結果に基づくノード情報を生成する。ここで、ノード情報生成部102は、辞書データソースに含まれる文章中から、文の終わりを示す読点(。)、終止符(.)、疑問符(?)、感嘆符(!)などを検出して、辞書ソースデータに含まれる文章を文に分割し、文毎に構文解析装置103に入力する。また、ノード情報生成部102は、構文解析装置103から出力される構文解析結果の構文木におけるノード毎に、ノード間の関係種別や他ノードの特定手順などの情報を付与して生成したノード情報を自身の記憶領域に記憶させる。例えば、図6(0)〜(6)は、ノード情報生成部102が生成するノード情報のデータ例を示す図である。ノード情報には、辞書ソースデータにおける文章が文節毎に分節されたノード毎に、そのノードを示す情報が含まれる。ここでは、「複数のIDやパスワードを、まとめて管理。」との文が、構文解析装置103によって解析された構文解析結果に基づくノード情報を示している。
【0020】
ノード情報生成部102が生成するノード情報には、ノードを識別する自ノードIDに、そのノードに対する親(ノード)ID、そのノードに対応する語の綴り、読み、品詞、子ノード有無(フラグ)、子ノード特定手順、弟ノード特定手順が対応付けられる。各ノード情報に含まれる親IDの対応関係によって、図6(a)に示されるような構文木が形成される。ノード情報において、自ノードID、親ID、綴り、読み、品詞の情報は、構文解析装置103から取得した構文解析結果に含まれる情報である。子ノード有無、子ノード特定手順、弟ノード特定手順の情報は、構文解析装置103から構文解析結果を取得した後に、ノード情報生成部102によって付与される情報である。
【0021】
ここで、ノード情報生成部102は、構文解析結果における親IDを参照することにより、各ノードに対応する子ノードが存在するか否かを判定し、存在する場合には子ノード有無として「1」を、存在しない場合には子ノード有無として「0」の情報をノード情報に書き込む。子ノード特定手順と、弟ノード特定手順との情報は、ノード情報生成部102に予め記憶された情報が記憶される。子ノード特定手順と、弟ノード特定手順とは、候補語抽出処理の利用用途等に応じて管理者によって予め定められる。子ノード特定手順と、弟ノード特定手順とは、全てのノードについて同様の特定手順を定めても良いし、ノードの品詞等によって異なる特定手順が定められるようにしても良い。
【0022】
図1に戻り、構文解析装置103は、入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとして親子関係を解析し、文字列に含まれる各語をノードとした親子関係を構文木によって表した構文解析結果を出力する。構文解析プログラムとして、例えば、京都大学学術情報メディアセンターによる日本語構文解析システムであるKNP(http://nlp.kuee.kyoto-u.ac.jp/nl-resource/knp.html)などが存在する。
【0023】
ノード処理部104は、ノード情報生成部102が取得した構文解析結果に基づいて、辞書データを生成するための中間ファイルを生成する。ここでは、ノード処理部104は、ノード情報生成部102が生成したノード情報のそれぞれを中間ファイル生成部105に入力して、中間ファイルを生成させる処理を行う。
【0024】
中間ファイル生成部105は、ノード処理部104から入力されるノード情報についての他ノードとの親子関係や兄弟関係を判定して、辞書データを生成するための中間情報をノード毎に生成し、中間ファイル記憶部106に記憶させる。ここで、親子関係とは、構文解析装置103から出力される構文解析結果において、係り受け関係に基づいて係る語を子ノード、受ける語を親ノードとする関係である。また、兄弟関係とは、構文解析結果の構文木に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせにおいて、子ノードの一方を兄ノードとし、他方を弟ノードとする関係である。ここで、中間ファイル生成部105は、構文木に含まれるノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードのうち辞書ソースデータの文において前方に現れる語に対応するノードを兄ノードとし、抽出した子ノードのうち兄ノードの直後に現れるノードを弟ノード(隣接弟ノード)として、弟ノードに対応する子ノードが存在しない場合に、兄ノードを入力語とし、弟ノードを候補語として対応付けた中間情報を生成する。
【0025】
ここで、構文解析装置103による構文解析において名詞句間の関係が以下のように解析された場合、名詞句間には係り受け関係がなく、中間ファイル生成部105によって兄弟関係であると判定される。例えば、構文解析装置103によって、名詞句+{並列助詞or読点(、)}+名詞句+{格助詞or副助詞or係助詞}と解析された場合、中間ファイル生成部105は、名詞句間には係り受け関係がなく兄弟関係であると判定する。例えば、「IDやパスワードを」を構文解析した場合には、「ID」は名詞句、「や」は並立助詞、「パスワード」は名詞句、「を」は格助詞として判定され、中間ファイル生成部105は、「ID」と「パスワード」との名詞句は兄弟関係であると判定する。
【0026】
図7は、中間ファイル記憶部106に記憶される中間ファイルのデータ例を示す図である。中間ファイルには、入力語となる辞書ノード1に、辞書ノード1の語に対して候補語となる辞書ノード2が対応付けられた中間情報が記憶される。中間情報には、辞書ノード数と、関係種別と、出現頻度とが対応付けられる。辞書ノード数は、対応する辞書ノード1と辞書ノード2とに含まれる構文解析結果におけるノード数を示す。関係種別は、対応する辞書ノード1と辞書ノード2との関係を示す。例えば、辞書ノード1に対応する辞書ノード2が存在しない中間情報には、関係種別として「単体」が記憶される。辞書ノード1に示される語と、辞書ノード2に示される語とが構文木において親子関係である場合には、関係種別として「親子」が記憶される。辞書ノード1に示される語と、辞書ノード2に示される語とが構文木において兄弟関係である場合には、関係種別として「兄弟」が記憶される。辞書ノード1および辞書ノード2には、対応する語の綴りと、読みと、品詞との情報が含まれる。
【0027】
辞書データ生成部107は、中間ファイル記憶部106に記憶された中間ファイルに基づいて、入力語と候補語が対応付けられた辞書データを生成し、辞書データ記憶部108に記憶させる。図8は、辞書データ記憶部108に記憶される辞書データの構成例を示す概念図である。辞書データ記憶部108には、語の綴りを示す綴り辞書データと、語の読みを示す読み辞書データとが記憶される。図8(1)は、綴り辞書データの構成例を示す図である。綴り辞書データは、辞書の要素である語の綴りを結節点(ノード)とした、樹状の階層構造(木構造)のバイナリデータによって構成される。綴り辞書データに含まれる各ノードには、辞書ソースデータにおける語の出現頻度(回数)、入力語または入力語と候補語との関係を示す関係種別、品詞を示す情報など、ノードの属性を示す情報が対応付けられる。また、綴り辞書データには、ユーザから入力された入力語に、その入力語に後続することがある候補語が対応付けられている。
【0028】
図8(2)は、綴り辞書データに対をなす読み辞書データの構成例を示す図である。読み辞書データは、綴り辞書データと同一の階層構造によって構成されており、綴り辞書データに示された綴りに対応する読みが、綴り辞書データのノードに対応する位置に構成される。図において、綴り辞書データおよび読み辞書データの各ノードに付されている[a1]、[b1]などの記号は、綴り辞書データと読み辞書データとの間のリンクを示すリンクポインタである。すなわち、綴り辞書データと読み辞書データとの間において、同一の記号が設定されているノード同士は、相互に参照可能であることを示している。
【0029】
入力部109は、ユーザからの文字入力を受付ける。入力部109には、例えば、キーボードやボタン等の入力デバイスが適用される。また、入力部109は、候補語抽出部110によって表示部111に表示された候補語のうち、いずれかの候補語がユーザによって選択されたことを示す情報が入力されると、選択された候補語を入力する。
【0030】
候補語抽出部110は、ユーザから入力部109に入力された入力語に対応する候補語を、辞書データ記憶部108から抽出し、表示部111に表示させる。ここで、候補語抽出部110は、ユーザから入力された入力語に対応する複数の候補語を辞書データ記憶部108から抽出すると、抽出した候補語に対応するノードの属性に基づいて、抽出した複数の候補語を定められた順に並べて表示部に表示させる。ここで、候補語の並び順は、例えば、予め定められた並び替え設定が候補語抽出部110の記憶領域に記憶されていても良いし、ユーザによって定められた並び替え設定が記憶されるようにしても良い。並び替え設定には、候補語の並び替えを行なう際のキーであるソートキーの設定や、降順または昇順の設定、並び替えの優先順位の設定などが含まれる。ソートキーを用いる場合、例えば、第1ソートキーとして属性のうち品詞または関係種別、第2ソートキーとして属性のうち頻度を指定することができる。第1ソートキーとして頻度が指定されると、この頻度のみでソートを行う。
これにより、例えば、候補語を出現頻度の降順に表示したり、特定の品詞の入力語に後続する場合は特定の品詞の候補語を上位に表示したり、特定の関係種別の候補語を上位に表示したりすることが可能である。
表示部111は、候補語抽出部110が抽出した候補語を表示する表示部である。
【0031】
次に、図を参照して、候補語抽出システム1による辞書データ生成処理を説明する。図9は、候補語抽出システム1による中間ファイル生成処理の例を示すフローチャートである。まず、辞書ソースデータ入力部101に辞書ソースデータが入力されると、ノード情報生成部102は、辞書データソースに含まれる文章を文に分割して、文のリストを生成する(ステップS1000)。この際、ノード情報生成部102は、辞書データソースに含まれる文章中から、文の終わりを示す読点(。)、終止符(.)、疑問符(?)、感嘆符(!)などを検出して、複数の文が含まれる文章を文に分割する。ノード情報生成部102は、分割した文のそれぞれについて、ステップS2000からステップS10000までの処理を行う。ノード情報生成部102は、分割した文を構文解析装置103に入力して、構文解析結果を取得する(ステップS3000)。
【0032】
ステップS3000において構文解析装置103による構文解析処理が失敗し、構文解析装置103からエラーが送信された場合には(ステップS4000:No)、その文に対する処理を終了し、ステップS2000に戻る。一方、ステップS3000において構文解析装置103による構文解析処理が成功し、構文解析結果が出力された場合には(ステップS4000:Yes)、ノード情報生成部102は、構文解析結果に含まれるノードのそれぞれについて、ステップS5000からステップS8000までの処理を行う。すなわち、ノード情報生成部102は、構文解析結果に含まれるノードのそれぞれについて、子ノード特定手順と弟ノード特定手順とのそれぞれのメソッドを格納し(ステップS6000)、子ノード有無を算出して対応付けて(ステップS7000)、ノード情報を生成する。
【0033】
ノード情報生成部102は、生成したノード情報を、ノード処理部104に入力する(ステップS9000)。図10は、ノード処理部104によるノード処理を説明するフローチャートである。まず、ノード処理部104は、入力されたノード情報のうち、ルートノード(自ノードIDが「0」)のノード情報を、中間ファイル生成部105に入力する(ステップS9100)。
【0034】
図11は、中間ファイル生成部105によって行なわれる中間情報書き込み処理を示すフローチャートである。中間ファイル生成部105は、ノード処理部104から入力されたノード情報を読み出す(ステップS9110)。中間ファイル生成部105は、読み出したノード情報に、綴りと読みとを示す情報が含まれており、かつノード情報に含まれる語が句点ではないか否かを判定する(ステップS9120)。ここで、中間ファイル生成部105が、読み出したノード情報には、綴りと読みとを示す情報が含まれていないか、または語が句点であると判定すれば(ステップS9120:No)、処理を終了し、ノード処理部104に処理を返す。
【0035】
一方、ステップS9120において、中間ファイル生成部105が、読み出したノード情報には、綴りと読みとを示す情報が含まれており、かつ語が句点でないと判定すれば(ステップS9120:Yes)、入力されたノード情報に対応する親ノードが存在しており(親IDの項目に情報が存在しており)、かつ綴りと読みとが含まれているか否かを判定する(ステップS9130)。ここで、中間ファイル生成部105が、入力されたノード情報に対応する親ノードが存在しないか、または綴りと読みとがないと判定すれば(ステップS9130:No)、自ノードのノード情報を、関係種別を「単体」とする中間情報として、中間ファイル記憶部106に記憶させる(ステップS9160)。
【0036】
一方、ステップS9130において、中間ファイル生成部105が、入力されたノード情報に対応する親ノードが存在しており、かつ綴りと読みとがあると判定すれば(ステップS9130:Yes)、親IDに対応するノード情報を読み出し、自ノードのノード情報に含まれる語と親ノードのノード情報に含まれる語とを対応付け、関係種別を「親子」とする中間情報を、中間ファイル記憶部106に記憶させる(ステップS9140)。そして、中間ファイル生成部105は、入力されたノード情報について、兄弟ノード書き込み処理を行う(ステップS9150)。
【0037】
図12は、中間ファイル生成部105によって行なわれる兄弟ノード書き込み処理の例を示すフローチャートである。まず、中間ファイル生成部105は、入力されたノード情報に含まれる弟ノード特定手順により、入力されたノード情報に対応する弟ノードのノード情報を取得する(ステップS9151)。中間ファイル生成部105は、ステップS9151において取得した弟ノードのうち、自ノードIDの次に大きい番号のノードIDが付与されたノード(隣接弟ノード)を抽出する(ステップS9152)。ここでは、ノードIDの番号は、大きければ大きいほど、辞書データソースにおける文中で前方に現れた語であることを示す。
【0038】
中間ファイル生成部105は、ステップS9152において、隣接弟ノードが抽出できなければ(ステップS9153:No)、処理を終了する。一方、中間ファイル生成部105が、隣接弟ノードを抽出すれば(ステップS9153:Yes)、抽出した隣接兄弟ノードに含まれる子ノード有無(フラグ)が、0であるか否かを判定する(ステップS9154)。
【0039】
また、ステップS9154において、中間ファイル生成部105が、抽出した隣接弟ノードに対応する子ノード有無フラグが0でないと判定すると(ステップS9154:No)、処理を終了する。一方、ステップS9154において、中間ファイル生成部105が、抽出した隣接弟ノードに対応する子ノード有無フラグが0であると判定すると(ステップS9154:Yes)、抽出した隣接弟ノードのノード情報に、綴りと読みとが含まれるか否かを判定する(ステップS9155)。
【0040】
中間ファイル生成部105は、抽出した隣接弟ノードのノード情報に、綴りと読みとが含まれないと判定すると(ステップS9155:No)、処理を終了する。一方、ステップS9155において、中間ファイル生成部105が、抽出した隣接弟ノードのノード情報に、綴りと読みとが含まれると判定すると(ステップS9155:Yes)、入力されたノード情報の語と、弟ノードのノード情報の語とを対応付け、関係種別を「兄弟」とする中間情報を、中間ファイル記憶部106に記憶させる(ステップS9156)。
【0041】
図10に戻り、ノード処理部104は、入力されたノード情報についてステップS9100における中間ファイル生成処理が終了すると、入力されたノード情報に含まれる子ノード特定手順により、子ノードの一覧を取得し(ステップS9200)、全ての子ノードのそれぞれについてノード情報をノード処理部104に再帰的に入力し(ステップS9400)、ノード情報に含まれるノードIDの値が小さい順に、中間ファイル生成部105による中間ファイル生成処理を行わせる(ステップS9300〜ステップS9500)。
【0042】
このように、辞書ソースデータに基づく中間情報が中間ファイル記憶部106に記憶されると、辞書データ生成部107は、中間ファイル記憶部106に記憶された中間ファイルに基づいて辞書データを生成し、辞書データ記憶部108に記憶させる。図13は、辞書データ生成部107による辞書データ生成処理の例を示すフローチャートである。辞書データ生成部107は、中間ファイル記憶部106に記憶された中間ファイルから、中間情報を読み出す。ここで、辞書データ生成部107は、中間情報から、辞書ノード1のノード情報の綴りを示す綴り1と、辞書ノード1のノード情報の読みを示す読み1と、辞書ノード1のノード情報の品詞を示す品詞1との情報を読み出す。また、辞書データ生成部107は、読み出した中間情報から、辞書ノード2のノード情報の綴りを示す綴り2と、辞書ノード2のノード情報の読みを示す読み2と、辞書ノード2のノード情報の品詞を示す品詞2との情報を読み出す。さらに、辞書データ生成部107は、辞書ノード1と辞書ノード2との関係種別を読み出す(ステップS1)。辞書データ生成部107は、中間ファイル記憶部106から読み出した情報を、構造木の深さに応じて、辞書データとして辞書データ記憶部108に記憶させる(ステップS2)。ここでは、出現頻度、リンクポインタも対応付けて記憶する。ただし、既に同じ辞書データが存在する場合には、その辞書データの出現頻度を1加算する。辞書データ生成部107は、中間ファイル記憶部106に記憶された全ての中間情報について、辞書データ生成処理を完了すると、処理を終了する(ステップS3:Yes)。一方、辞書データ生成部107は、中間ファイル記憶部106に記憶された全ての中間情報について、辞書データ生成処理を完了していなければ、ステップS1に戻り、他の中間情報について、辞書データ生成処理を行う(ステップS3:No)。
【0043】
次に、「複数のIDやパスワードを、まとめて管理。」との文が含まれる辞書ソースデータが候補語抽出装置100に入力されたとして、上述の辞書データ生成処理の動作例について説明する。候補語抽出装置100の辞書ソースデータ入力部101に、上述の文が含まれる辞書ソースデータが入力されると、図9に示したステップS1000において、辞書ソースデータに含まれる上述の文が抽出される。ステップS3000において、構文解析装置103によって上述の文が構文解析されると、図6の(a)に示したような構文解析結果が、構文解析装置103から出力される。ステップS9000において、ノード処理部104によって、構文解析結果に基づくノード情報のうちノードIDの値が小さい順にノード処理が行われる。まず、ルートノード(自ノードID「0」)のノード処理が行われる。ステップS9120において、自ノードID「0」のノードの語には、綴りと読みがないため、Noと判定され、中間ファイルへの書き込みは行われない。
【0044】
次に、ノード処理を行った自ノードID「0」の次にノードIDの値が小さい自ノードID「1」のノードについてノード処理が行われる。ステップS9120において、自ノードID「1」のノードの語(「管理」)には、綴りと読みがあり、句点でもないため、Yesと判定される。そして、ステップS9130において、自ノードID「1」に対する親ノード(自ノードID「0」)は存在するが、親ノードには綴りと読みがないため、Noと判定される。ここで、ステップS9160において、中間ファイル生成部105によって「管理」の語についての中間情報に関係種別「単体」が対応付けられて、図7の1行目に示されるように中間ファイル記憶部106に書き込まれる。
【0045】
次に、ノード処理を行った自ノードID「1」の次にノードIDの値が小さい自ノードID「2」のノードについてノード処理が行われる。ステップS9120において、自ノードID「2」のノードの語(「まとめて」)には、綴りと読みがあり、句点でもないため、Yesと判定される。そして、ステップS9130において、自ノードID「2」に対する親ノード(自ノードID「1」)が存在し、親ノードには綴りと読みがあるため、Yesと判定される。ここで、ステップS9140において、自ノードID「2」のノードと、自ノードID「1」のノードとが、関係種別を「親子」として対応付けられて図7の2行目に示される中間情報が中間ファイル記憶部106に記憶される。
【0046】
同様に、自ノードID「3」のノードについてノード処理が行われる。ステップS9120において、自ノードID「3」のノードの語(「IDや」)には、綴りと読みがあり、句点でもないため、Yesと判定される。そして、ステップS9130において、自ノードID「3」に対する親ノード(自ノードID「2」)が存在し、親ノードには綴りと読みがあるため、Yesと判定される。ここで、ステップS9140において、自ノードID「3」のノードと、自ノードID「2」のノードとが対応付けられて、図7の3行目に示される中間情報が中間ファイル記憶部106に記憶される。さらに、ステップS9152において、自ノードID「5」のノードが、自ノードID「3」のノードに対応する弟ノードとして抽出される。ステップS9154において、抽出した弟ノード(自ノードID「5」)の子ノード有無は「0」であると判定される。また、ステップS9155において、弟ノード(自ノードID「5」)の語には綴りと読みがあるためYesと判定される。ここで、ステップS9156において、自ノードID「3」のノードと、自ノードID「5」のノードとが、関係種別を「兄弟」として対応付けられて図7の4行目に示される中間情報が中間ファイル記憶部106に記憶される。
【0047】
このようにして、中間ファイル生成部105によって図7に示したような中間情報が生成され、複数の中間情報が含まれる中間ファイルが中間ファイル記憶部106に記憶される。そして、辞書データ生成部107が、中間ファイル記憶部106に記憶された中間ファイルに基づいて、図8に示したような辞書データを生成する。例えば、辞書データ生成部107は、図13に示したステップS1において、図7に示した中間ファイルの1行目に示される中間情報を読み出す。そして、読み出した中間情報に含まれる辞書ノード1のノード情報の綴りを示す綴り1(「管理」)と、出現頻度(「1」)と、関係種別(「単体」)と、品詞1(「名詞」)とを対応付けて、図8(1)の綴り辞書データにおけるリンクポインタが[a1]であるノードとして辞書データ記憶部108に書き込む。
また、辞書データ生成部107は、読み出した中間情報に含まれる辞書ノード1のノード情報の読みを示す読み1(「かんり」)と、出現頻度(「1」)と、関係種別(「単体」)と、品詞1(「名詞」)とをノードとして図8(2)の読み辞書データにおけるリンクポインタが[a1]であるノードとして辞書データ記憶部108に書き込む。
辞書データ生成部107によって、綴り辞書データに記憶させるノードと、読み辞書データに記憶させるノードとに、リンクポインタ([a1])が付与されることによって、これらノードの相互の関係性が表される。
【0048】
同様に、辞書データ生成部107は、図7に示した中間ファイルの2行目に示される中間情報を読み出す。そして、読み出した中間情報に含まれる辞書ノード1のノード情報の綴りを示す綴り1(「まとめて」)と、品詞1(「動詞」)とをノードとして図8(1)の綴り辞書データにおける[b1]のノードに書き込む。また、辞書ノード2のノード情報の綴りを示す綴り2(「管理」)と、品詞2(「名詞」)と、関係種別(「親子」)とをノードとして図8(2)の読み辞書データに示す[b2]のノードに書き込む。このように、辞書データ生成部107は、辞書データにノードを書き込む際には、入力語に対して候補語となるノードに、関係種別を書き込む。辞書データ生成部107は、読み辞書データについても同様に辞書データを書き込む。辞書データ生成部107は、中間ファイル記憶部106に記憶された全ての中間情報について同様の辞書データ生成処理を行い、図8に示したような辞書データを生成し、辞書データ記憶部108に記憶させる。
【0049】
そして、ユーザによって、入力部109に文字が入力されると、辞書データ記憶部108に記憶された辞書データに基づいて、候補語抽出部110が候補語を抽出する。例えば、入力部109から未確定文字として「ぱ」が入力された場合には、図8(2)に示した読み辞書データから、「ぱ」で開始する文字列「ぱすわーど」に対応付けられた[f1]のノードを抽出する。ここでいう未確定文字とは、入力途中の文字であり、入力された文字が確定していない文字(変換途中の文字)である。また、当該ノードのリンクポインタ[f1]に基づいて、図8(1)に示した綴り辞書の対応するノードから、対応する綴りである「パスワード」を抽出し、候補語として表示部111に表示する。ここでは、「ぱ」が未確定文字であるので、「ぱ」が先頭である文字列の候補語が表示される。
同様に、入力部109に確定文字「ID」が入力された場合には、図8(1)に示した綴り辞書データから、文字列「ID」と一致する文字列「ID」に対応付けられた[c1]のノードを読み出す。ここでいう確定文字とは、入力された文字の変換が完了した文字であり、入力された文字の変換を行わない状態で確定した文字も含む。また、候補語抽出部110は、当該ノードに対応付けられた[c2]のノード「をまとめて」及び[d2]のノード「やパスワード」を抽出し、表示部111に表示する。ここでは、「ID」が確定文字であるので、その「ID」の後ろに続いて入力される可能性がある文字列が候補語として表示される。
この際、候補語抽出部110は、予め定められた並び順に基づいて、候補語を出力する。ここでは、例えば、候補語抽出部110は関係種別に応じた並び順により、候補語を出力する。
【0050】
ここで、候補語抽出部110が複数の候補語を抽出した場合に、抽出した複数の候補語を、その候補語の属性に基づいて定められた順に並べて表示部111に表示させる動作例について詳細に説明する。候補語抽出部110が候補語を並び替える際に利用する項目としては、例えば、出現頻度、品詞、関係種別などが適用できる。例えば、候補語抽出部110は、定められた並び替え設定において出現頻度が並び変え項目として記憶されている場合には、候補語に対応付けられた出現頻度の値に応じて、降順または昇順に候補語を出力させる。品詞が並び変え項目として記憶されている場合には、候補語に対応付けられた品詞に応じて、候補語を出力させる。ここでは、候補語抽出部110は品詞毎の並び替えの優先順位を予め記憶しておき、優先順位の降順または昇順に候補語を出力する。品詞の優先順位とは、例えば、優先順位が高い品詞から順に、名詞→動詞→形容詞→形容動詞→接続詞のような並びが定められる。
【0051】
また、候補語抽出部110は、関係種別が並び変え項目として記憶されている場合には、候補語に対応付けられた関係種別に応じて、候補語を出力させる。候補語抽出部110は、関係種別毎の並び替えの優先順位を予め記憶しておき、優先順位の降順または昇順に候補語を出力する。関係種別の優先順位とは、例えば、優先順位が高い関係種別から順に、単体→兄弟→親子などの並びが定められる。
この場合、図8に示した例のように、入力語「ID」について、関係種別が「親子」である候補語「やまとめて」と、関係種別が「兄弟」である候補語「やパスワード」とが抽出され、関係種別の降順に並び替えることを示す並び替え設定が記憶されている場合、候補語抽出部110は、関係種別が「兄弟」である候補語を優先して、「やパスワード」、「やまとめて」の順に候補語を表示させる。第1ソートキー及び第2ソートキーに従ってソートすることが指定されている場合には、第1ソートキーでソートを行った後、第2ソートキーでソートを行う。第1ソートキーとして「頻度」が指定されている場合には、第1ソートキーのみでソートを行う。
候補語抽出部110が、このように属性毎に候補語を並び替えて出力することで、例えば兄弟関係にある候補語を上位に表示させつつ、親子関係にある候補語をも選択肢として提示することが可能となる。
【0052】
このように、本実施形態によれば、ユーザから入力された入力語に応じて、入力語に後続する候補語を抽出して表示する際、辞書ソースデータにおける親子関係に加えて、兄弟関係にある語を候補語とした辞書データを生成して、生成した辞書データに基づいて候補語を抽出して表示させるようにした。これにより、文中での係り受け関係において係る語に対応する受ける語が候補語として表示されることに加えて、辞書ソースデータにおける文中で隣接する兄弟関係にある語が候補語として表示される。これにより、同一の語に複数の語が係るような構造の文章を、ユーザが複数回入力しようとする場合に、入力語に対して後続して入力された語を候補語として表示することができ、ユーザは、表示される語を選択するだけで、同一の語を入力することが可能となる。
【0053】
なお、本実施形態では、候補語抽出装置100とは別に、構文解析装置103を設置する例を示したが、候補語抽出装置100が、構文解析を行なう構文解析部を備えるように構成しても良い。
また、本実施形態における各機能部は、ソフトウェアプログラムが実行されることによって論理的に実現されるが、これらの機能を、例えばASIC(Application Specific Integrated Circuit:特定用途向け集積回路)などの物理的な構成によって実現しても良い。
【0054】
また、本実施形態における候補語抽出装置100は、携帯電話やPDA(Personal Digital Assistant)などの携帯端末を適用しても良いし、PC(Personal Computer)などのコンピュータ装置を適用しても良い。この場合、候補語抽出装置100は、辞書データ記憶部108〜表示部111のみの機能を備え、辞書ソースデータ入力部101〜辞書データ生成部107の機能部は備えないようにして、他の装置で生成した辞書データを候補語抽出装置100に記憶させて動作させるようにしても良い。このようにすれば、ユーザが利用する各装置において、辞書ソースデータの入力や中間ファイルの生成、辞書データの生成などの処理を行う必要がない。また、辞書ソースデータ入力部101〜辞書データ生成部107の機能部は、例えば日次バッチなどの処理で夜間に動作するようにして良い。
【0055】
また、本字実施形態により生成された候補語抽出処理は、電子メール等のテキスト入力を行なう際に利用されることに加え、例えば、電話応答の内容をリアルタイムに入力する必要のあるコールセンタなどの入力端末に適用して好適である。
【0056】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより候補語抽出処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境(あるいは表示環境)を備えたWWWシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0057】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0058】
1 候補語抽出システム
100 候補語抽出装置
101 辞書ソースデータ入力部
102 ノード情報生成部
103 構文解析装置
104 ノード処理部
105 中間ファイル生成部
106 中間ファイル記憶部
107 辞書データ生成部
108 辞書データ記憶部
109 入力部
110 候補語抽出部
111 表示部
【特許請求の範囲】
【請求項1】
定められた入力語と、当該入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置であって、
入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、前記文字列に含まれる各語をノードとした前記親子関係が構文木によって表されたノード情報を生成するノード情報生成部と、
前記ノード情報に含まれる前記ノードのうち、前記子ノードを前記入力語とし、当該子ノードに対応する前記親ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させる親子ノード辞書データ生成部と、
前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を前記入力語とし、他方を前記候補語として対応付けて前記辞書データ記憶部に記憶させる兄弟ノード辞書データ生成部と、
ユーザから入力された入力語に対応する前記候補語を前記辞書データ記憶部から抽出し、表示部に表示させる候補語抽出部と、
を備えたことを特徴とする候補語抽出装置。
【請求項2】
前記辞書データ記憶部には、ノード毎の属性を示す情報が記憶され、
前記候補語抽出部は、ユーザから入力された入力語に対応する複数の前記候補語を抽出すると、抽出した候補語に対応する前記ノードの属性に基づいて、抽出した複数の前記候補語を定められた順に並べて前記表示部に表示させる
ことを特徴とする請求項1に記載の候補語抽出装置。
【請求項3】
前記兄弟ノード辞書データ生成部は、前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードのうち前記辞書データの基である文において前方に現れる語に対応するノードを兄ノードとし、前記抽出した子ノードのうち前記兄ノードの直後に現れるノードを弟ノードとして、当該弟ノードに対応する子ノードが存在しない場合に、前記兄ノードを前記入力語とし、前記弟ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させる
ことを特徴とする請求項1または請求項2のいずれか1項に記載の候補語抽出装置。
【請求項4】
定められた入力語と、当該入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置の候補語抽出方法であって、
入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、前記文字列に含まれる各語をノードとした前記親子関係が構文木によって表されたノード情報を生成するステップと、
前記ノード情報に含まれる前記ノードのうち、前記子ノードを前記入力語とし、当該子ノードに対応する前記親ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を前記入力語とし、他方を前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
ユーザから入力された入力語に対応する前記候補語を前記辞書データ記憶部から抽出し、表示部に表示させるステップと、
を備えたことを特徴とする候補語抽出方法。
【請求項5】
定められた入力語と、当該入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置のコンピュータに、
入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、前記文字列に含まれる各語をノードとした前記親子関係が構文木によって表されたノード情報を生成するステップと、
前記ノード情報に含まれる前記ノードのうち、前記子ノードを前記入力語とし、当該子ノードに対応する前記親ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を前記入力語とし、他方を前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
ユーザから入力された入力語に対応する前記候補語を前記辞書データ記憶部から抽出し、表示部に表示させるステップと、
を実行させる候補語抽出プログラム。
【請求項1】
定められた入力語と、当該入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置であって、
入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、前記文字列に含まれる各語をノードとした前記親子関係が構文木によって表されたノード情報を生成するノード情報生成部と、
前記ノード情報に含まれる前記ノードのうち、前記子ノードを前記入力語とし、当該子ノードに対応する前記親ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させる親子ノード辞書データ生成部と、
前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を前記入力語とし、他方を前記候補語として対応付けて前記辞書データ記憶部に記憶させる兄弟ノード辞書データ生成部と、
ユーザから入力された入力語に対応する前記候補語を前記辞書データ記憶部から抽出し、表示部に表示させる候補語抽出部と、
を備えたことを特徴とする候補語抽出装置。
【請求項2】
前記辞書データ記憶部には、ノード毎の属性を示す情報が記憶され、
前記候補語抽出部は、ユーザから入力された入力語に対応する複数の前記候補語を抽出すると、抽出した候補語に対応する前記ノードの属性に基づいて、抽出した複数の前記候補語を定められた順に並べて前記表示部に表示させる
ことを特徴とする請求項1に記載の候補語抽出装置。
【請求項3】
前記兄弟ノード辞書データ生成部は、前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードのうち前記辞書データの基である文において前方に現れる語に対応するノードを兄ノードとし、前記抽出した子ノードのうち前記兄ノードの直後に現れるノードを弟ノードとして、当該弟ノードに対応する子ノードが存在しない場合に、前記兄ノードを前記入力語とし、前記弟ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させる
ことを特徴とする請求項1または請求項2のいずれか1項に記載の候補語抽出装置。
【請求項4】
定められた入力語と、当該入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置の候補語抽出方法であって、
入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、前記文字列に含まれる各語をノードとした前記親子関係が構文木によって表されたノード情報を生成するステップと、
前記ノード情報に含まれる前記ノードのうち、前記子ノードを前記入力語とし、当該子ノードに対応する前記親ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を前記入力語とし、他方を前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
ユーザから入力された入力語に対応する前記候補語を前記辞書データ記憶部から抽出し、表示部に表示させるステップと、
を備えたことを特徴とする候補語抽出方法。
【請求項5】
定められた入力語と、当該入力語に後続する候補語とが対応付けられて記憶される辞書データ記憶部を備えた候補語抽出装置のコンピュータに、
入力される文に含まれる複数の語の係り受け関係に基づいて、係る語を子ノード、受ける語を親ノードとする親子関係が解析され、前記文字列に含まれる各語をノードとした前記親子関係が構文木によって表されたノード情報を生成するステップと、
前記ノード情報に含まれる前記ノードのうち、前記子ノードを前記入力語とし、当該子ノードに対応する前記親ノードを前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
前記ノード情報に含まれる前記ノードのうち、同一の親ノードに対応する子ノードの組み合わせを抽出し、抽出した子ノードの一方を前記入力語とし、他方を前記候補語として対応付けて前記辞書データ記憶部に記憶させるステップと、
ユーザから入力された入力語に対応する前記候補語を前記辞書データ記憶部から抽出し、表示部に表示させるステップと、
を実行させる候補語抽出プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2010−266947(P2010−266947A)
【公開日】平成22年11月25日(2010.11.25)
【国際特許分類】
【出願番号】特願2009−115798(P2009−115798)
【出願日】平成21年5月12日(2009.5.12)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【出願人】(509132738)合同会社シンタックス (10)
【Fターム(参考)】
【公開日】平成22年11月25日(2010.11.25)
【国際特許分類】
【出願日】平成21年5月12日(2009.5.12)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【出願人】(509132738)合同会社シンタックス (10)
【Fターム(参考)】
[ Back to top ]