"複数の単語を関連する単語同士のグループに分類する関連語分類装置において、データを処理する処理装置と、テキスト取得部と、特徴ベクトル算出部と、単語分類部と、重みベクトル算出部とを有し、上記テキスト取得部は、上記処理装置を用いて、1つ以上の単語からなる単語群を1つ以上含むテキストを複数取得し、上記特徴ベクトル算出部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトルを算出し、上記単語分類部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類し、上記重みベクトル算出部は、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトルであって、上記単語分類部による分類に最もよく適合する重みベクトルを算出し、上記単語分類部は、更に、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直すことを特徴とする関連語分類装置。上記重みベクトル算出部は、更に、上記単語分類部が分類し直した回数が所定の回数より少ない場合と、上記単語分類部が分類し直した後の分類と上記単語分類部が分類し直す前の分類とが異なる場合とのうち少なくともいずれかの場合に、上記処理装置を用いて、上記単語分類部が分類し直した後の分類に基づいて、上記重みベクトルを算出し直すことを特徴とする請求項1に記載の関連語分類装置。上記単語分類部は、ある単語群に含まれる1つ以上の単語をそれぞれ分類したグループの組と、上記単語群と同じテキストに属する他の1つの単語群に含まれる1つ以上の単語をそれぞれ分類したグループの組とが異なるように、上記複数の単語を分類することを特徴とする請求項1または請求項2に記載の関連語分類装置。上記単語分類部は、ある単語を分類したグループと、上記複数のテキストのなかで上記単語と異なる位置に出現する上記単語と同一の単語を分類したグループとが同じになるように、上記複数の単語を分類することを特徴とする請求項1乃至請求項3のいずれかに記載の関連語分類装置。上記特徴ベクトル算出部は、上記複数の単語のそれぞれについて、上記単語が表わす概念と、上記単語が属する単語群に属する他の単語と、上記単語が属する単語群の名称を構成する単語とのうち少なくともいずれかに基づいて、上記特徴ベクトルを算出することを特徴とする請求項1乃至請求項4のいずれかに記載の関連語分類装置。上記テキスト取得部が取得するテキストは、データベースにおけるテーブルを定義するテーブル定義データであり、上記単語群は、上記テーブルを構成するカラムのカラム名であり、上記関連語分類装置は、更に、関連カラム判定部を有し、上記関連カラム判定部は、上記処理装置を用いて、上記単語分類部があるカラムのカラム名を構成する1つ以上の単語をそれぞれ分類したグループの組と、上記単語分類部が別のカラムのカラム名を構成する1つ以上の単語をそれぞれ分類したグループの組とが一致する場合に、上記2つのカラムが、同一の内容を格納するカラムである可能性があると判定することを特徴とする請求項1乃至請求項5のいずれかに記載の関連語分類装置。データを処理する処理装置を有するコンピュータが実行することにより、上記コンピュータを請求項1乃至請求項6のいずれかに記載の関連語分類装置として機能させることを特徴とするコンピュータプログラム。データを処理する処理装置と、テキスト取得部と、特徴ベクトル算出部と、単語分類部と、重みベクトル算出部とを有する関連語分類装置が、複数の単語を関連する単語同士のグループに分類する関連語分類方法において、上記テキスト取得部が、上記処理装置を用いて、1つ以上の単語からなる単語群を1つ以上含むテキストを複数取得し、上記特徴ベクトル算出部が、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトルを算出し、上記単語分類部が、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類し、上記重みベクトル算出部が、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトルであって、上記単語分類部による分類に最もよく適合する重みベクトルを算出し、上記単語分類部が、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直すことを特徴とする関連語分類方法。データベースでは、テーブルの名称やカラムの名称として、データベース設計者が任意に名づけた名称が用いられる。このため、異なるデータベースを統合する場合などにおいて、対応するカラムを判別するのに、非常な労力が必要となる。テーブル名やカラム名には、通常、自然言語に由来する単語が用いられる。このため、上述したような関連語抽出技術を応用することにより、似たような意味の名称を持つカラムを抽出できれば、対応するカラムを判別するのを助けることができる。しかし、データベースのテーブルを定義するテーブルスキーマやその他の構造化データに対して、上述の技術を適用するには、以下のような課題が存在する。第一に、構造化データにおいては、単語間の文脈上の結合が疎であり、文脈に基づいて形成した特徴ベクトルでは、関連語を適切に抽出できない場合がある。このため、本来区別して扱われるべき単語とそうでない単語とを識別することができず、関連語として抽出されてしまう場合がある。第二に、同義語辞書を用いる方式では、対象となる構造化データに含まれる単語が、同義語辞書にあらかじめ十分登録されていることが必要となり、そのような同義語辞書が存在しない場合は、適用することができない。この発明は、例えば、データベースの定義などの構造化データを対象とする場合でも、使い分けられている語を識別しつつ、関連語を抽出することを目的とする。この発明にかかる関連語分類装置は、複数の単語を関連する単語同士のグループに分類する関連語分類装置において、データを処理する処理装置と、テキスト取得部と、特徴ベクトル算出部と、単語分類部と、重みベクトル算出部とを有し、上記テキスト取得部は、上記処理装置を用いて、1つ以上の単語からなる単語群を1つ以上含むテキストを複数取得し、上記特徴ベクトル算出部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトルを算出し、上記単語分類部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類し、上記重みベクトル算出部は、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトルであって、上記単語分類部による分類に最もよく適合する重みベクトルを算出し、上記単語分類部は、更に、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直すことを特徴とする。この発明によれば、データベースの定義などの構造化データを対象とする場合でも、使い分けられている語を識別しつつ、関連語を抽出することができる。実施の形態1.実施の形態1について、図1~図20を用いて説明する。図1は、この実施の形態における関連カラム抽出システム900の全体構成の一例を示すシステム構成図である。関連カラム抽出システム900は、一または複数のデータベースにおいて、テーブルを構成するカラムのなかから、関連カラムである可能性が高い複数のカラムを抽出する。関連カラムとは、互いに異なるテーブルに属する複数のカラムであって、相当する内容を格納するカラムのことである。関連カラム抽出システム900は、カラムに付けられた名称カラム名に基づいて、関連カラムである可能性が高いカラムを抽出する。関連カラム抽出システム900は、例えば、データベース定義記憶装置901と、概念辞書記憶装置902と、関連カラム判定装置903とを有する。データベース定義記憶装置901は、データベースを定義するデータベース定義データを記憶している。概念辞書記憶装置902は、概念辞書を表わす概念辞書データを記憶している。概念辞書とは、自然言語における単語の意味や、複数の単語の間の意味の関係同意語、類義語、反意語、上位概念下位概念などを記載した辞書である。概念辞書記憶装置902が記憶した概念辞書データは、例えば、汎用の大語彙概念辞書を表わす。関連カラム判定装置903関連語分類装置の一例。は、データベース定義記憶装置901が記憶したデータベース定義データから、カラム名を取得し、概念辞書記憶装置902が記憶した概念辞書データを使って、関連カラムである可能性が高いカラムを抽出する。関連カラム判定装置903は、例えば、抽出したカラムを表示して、関連カラム抽出システム900の利用者に提示する。関連カラム抽出システム900の利用者は、関連カラム判定装置903が提示したカラムの内容を確認して、関連カラムであるか否かを判断する。図2は、この実施の形態における関連カラム判定装置903などのハードウェア資源の一例を示すハードウェア構成図である。データベース定義記憶装置901、概念辞書記憶装置902、関連カラム判定装置903は、例えば、処理装置911と、入力装置912と、出力装置913と、記憶装置914とを有するコンピュータである。処理装置911は、記憶装置914が記憶したコンピュータプログラムを実行することにより、データを処理し、コンピュータ全体を制御する。なお、コンピュータは、処理装置911を複数有する構成であってもよい。記憶装置914は、処理装置911が実行するコンピュータプログラムや、処理装置911が処理するデータなどを記憶する。例えば、記憶装置914は、処理途中の一時的なデータなどを記憶する揮発性の記憶装置である。あるいは、記憶装置914は、コンピュータプログラムや永続的なデータなどを記憶する不揮発性の記憶装置である。また、例えば、記憶装置914は、半導体記憶素子を集積した集積回路や大規模集積回路である。あるいは、記憶装置914は、磁気ディスクや光学ディスクなどの記憶媒体を用いる外部記憶装置である。なお、コンピュータは、記憶装置914を複数有する構成であってもよい。複数の記憶装置914は、同じ種類の記憶装置であってもよいし、異なる種類の記憶装置であってもよい。入力装置912は、コンピュータの外部から情報を入力して、処理装置911が処理できるデータに変換する。例えば、入力装置912は、操作者による操作を入力するキーボードやマウスなどの操作入力装置である。あるいは、入力装置912は、静止画像や動画像を入力するカメラやスキャナ装置などの画像入力装置である。あるいは、入力装置912は、音声を入力するマイクなどの音声入力装置である。あるいは、入力装置912は、温度や明るさや圧力などの物理量を測定する温度センサや照度センサや圧力センサなどのセンサ装置である。あるいは、入力装置912は、アナログ信号をデジタルデータに変換するアナログデジタル変換装置である。あるいは、入力装置912は、外部の装置がコンピュータに対して送信した信号を受信して復調する受信装置である。なお、コンピュータは、入力装置912を複数有する構成であってもよい。複数の入力装置912は、同じ種類の入力装置であってもよいし、異なる種類の入力装置であってもよい。また、入力装置912が変換したデータは、処理装置911が直接処理する構成であってもよいし、記憶装置914が一時的に記憶する構成であってもよい。出力装置913は、処理装置911が処理したデータや、記憶装置914が記憶したデータなどを変換して、コンピュータの外部に出力する。例えば、出力装置913は、テキストや画像などを表示する表示装置である。あるいは、出力装置913は、テキストや画像などを印刷する印刷装置である。あるいは、出力装置913は、音声を出力するスピーカなどの音声出力装置である。あるいは、出力装置913は、デジタルデータをアナログ信号に変換するデジタルアナログ変換装置である。あるいは、出力装置913は、変調した信号を外部の装置に対して送信する送信装置である。なお、コンピュータは、出力装置913を複数有する構成であってもよい。複数の出力装置913は、同じ種類の出力装置であってよいし、異なる種類の出力装置であってもよい。以下に説明する機能ブロックは、記憶装置914が記憶したコンピュータプログラムを処理装置911が実行することによって実現することができる。なお、一つのコンピュータを用いて一つの装置を実現する構成であってもよいし、複数のコンピュータを用いて一つの装置を実現する構成であってもよい。逆に、一つのコンピュータを用いて複数の装置を実現する構成であってもよい。また、これらの機能ブロックのうちのいくつか、あるいは、そのすべてを、コンピュータを用いて実現するのではなく、例えば、デジタル回路やアナログ回路などの電気的構成や、機械的構成など、他の構成を用いて実現してもよい。図3は、この実施の形態における関連カラム判定装置903の構成の一例を示すブロック構成図である。関連カラム判定装置903は、例えば、単語抽出部20と、特徴ベクトル生成部40と、文脈解析部50と、単語分類部60と、関連語決定部70とを有する。単語抽出部20テキスト取得部の一例。は、処理装置911を用いて、関連語抽出元データ10テキストの一例。から、分類対象となる単語を抽出する。例えば、単語抽出部20は、データベース定義記憶装置901が記憶したデータベース定義データから、関連語抽出元データ10として、テーブルスキーマを取得する。テーブルスキーマは、データベースのテーブルを定義するデータである。単語抽出部20は、処理装置911を用いて、取得した関連語抽出元データ10から、テーブルのカラム名を構成する単語を抽出する。テーブルスキーマは、1つ以上のカラム名単語群の一例。を含む。カラム名は、データベースの設計者が任意に名付ける文字列であるが、その内容に関連する自然言語の単語や、複数の単語を組み合わせたものを使う場合が多い。例えば、複数の単語を_アンダースコアなどの区切り文字を使って連結したものをカラム名とする。例えば、単語抽出部20は、関連語抽出元データ10から、カラム名を取得する。単語抽出部20は、取得したカラム名に区切り文字が含まれているか否かを判定する。区切り文字が含まれていない場合、単語抽出部20は、取得したカラム名が1単語からなると判定し、取得したカラム名をそのまま単語として抽出する。区切り文字が含まれている場合、単語抽出部20は、取得したカラム名を区切り文字を境にして複数の文字列に分解し、分解した複数の文字列を単語として抽出する。特徴ベクトル生成部40特徴ベクトル算出部の一例。は、単語抽出部20が抽出した各単語を、概念ベクトルに変換する。例えば、特徴ベクトル生成部40は、単語抽出部20が抽出した単語それぞれについて、概念辞書記憶装置902が記憶した概念辞書データ30に基づいて、概念ベクトルを生成する。概念ベクトルとは、単語の意味や、他の単語との間の意味の関係などを表わす複数の数値からなるベクトルである。例えば、概念ベクトルの各要素は、それぞれ異なる概念に対応づけられていて、1または0の値を取る。概念ベクトルの要素の値が1である場合、その単語が表わす概念が、その要素が対応づけられている概念またはその下位概念であることを表わし、0である場合、その単語が表わす概念が、その要素が対応づけられている概念でもその下位概念でもないことを表わす。文脈解析部50特徴ベクトル算出部の一例。は、処理装置911を用いて、単語抽出部20が抽出した各単語のテーブル構造やカラム構造上の位置関係を解析する。例えば、文脈解析部50は、単語抽出部20が抽出した単語それぞれについて、文脈ベクトルを生成する。文脈ベクトルとは、その単語と、他の単語との間の文脈上の位置関係などを表わす複数の数値からなるベクトルである。例えば、文脈ベクトルの各要素は、前接語グループと、後接語グループと、テーブル名グループとの3つのグループのうちのいずれかに属する。前接語グループに属する各要素は、それぞれ異なる単語に対応づけられていて、1または0の値を取る。前接語グループに属する要素の値が1である場合、その単語を含むカラム名において、その要素が対応づけられている単語の直後にその単語が連結していることを表わす。前接語グループに属する要素の値が0である場合、その単語を含むカラム名において、その単語が先頭の単語であるカラム名が1単語で構成されている場合を含む。か、あるいは、その要素が対応づけられている単語以外の単語の直後にその単語が連結していることを表わす。後接語グループに属する各要素は、それぞれ異なる単語に対応づけられていて、1または0の値を取る。後接語グループに属する要素の値が1である場合、その単語を含むカラム名において、その単語の直後に、その要素が対応づけれられている単語が連結していることを表わす。後接語グループに属する要素の値が0である場合、その単語を含むカラム名において、その単語が末尾の単語であるカラム名が1単語で構成されている場合を含む。か、あるいは、その単語の直後にその要素が対応づけられている単語以外の単語が連結していることを表わす。テーブル名グループに属する各要素は、それぞれ異なる単語に対応づけられていて、1または0の値を取る。テーブル名グループに属する要素の値が1である場合、その単語を含むカラム名を有するカラムが属するテーブルの名称テーブル名に、その要素が対応づけられている単語が含まれることを表わす。テーブル名グループに属する要素の値が0である場合、その単語を含むカラム名を有するカラムが属するテーブルのテーブル名に、その要素が対応づけられている単語が含まれないことを表わす。単語分類部60は、処理装置911を用いて、単語の概念ベクトルと単語の出現文脈とに基づいて、単語のクラスタリングを行って、各単語のクラス尤度を決定する。単語分類部60は、算出したクラス尤度に基づいて、各クラスより単語を抽出する。例えば、単語分類部60は、特徴ベクトル生成部40が生成した概念ベクトルと、文脈解析部50が生成した文脈ベクトルとに基づいて、単語抽出部20が抽出した複数の単語をクラスタリングする。例えば、単語分類部60は、単語抽出部20が抽出した単語それぞれについて、あらかじめ定められた数のクラスそれぞれに属する尤度を算出する。単語分類部60は、単語抽出部20が抽出した単語それぞれについて、算出した尤度に基づいて、その単語がどのクラスに属するかを判定する。関連語決定部70は、処理装置911を用いて、単語分類部60がクラスごとに抽出した単語群に基づいて、関連カラムである可能性が高いカラムを抽出する。例えば、関連語決定部70は、あるテーブルに属するカラムのカラム名を構成する単語を分類したクラスの組と、別のテーブルに属するカラムのカラム名を構成する単語を分類したクラスの組とが一致する場合に、その2つのカラムは、関連カラムである可能性が高いと判定する。関連語決定部70は、処理装置911を用いて、判定した結果を関連語データ80として出力する。図4は、この実施の形態における関連語抽出元データ10の一例を示す図である。この例において、関連語抽出元データ10は、データベース定義記憶装置901が記憶しているデータベース定義データに含まれるテーブルスキーマである。この例に示した3つの関連語抽出元データ10a~10cは、それぞれ、1つずつのテーブルを定義している。関連語抽出元データ10aは、PURCHASE_ORDERというテーブル名のテーブル以下、PURCHASE_ORDERテーブルと呼ぶ。他も同様。を定義している。PURCHASE_ORDERテーブルは、ORDER_DATEカラムと、LINE_NOカラムと、PHONE_NOカラムとを有する。ORDER_DATEカラムは、日付型である。LINE_NOカラムは、8桁の数値型である。PHONE_NOカラムは、10文字の固定長文字列型である。例えば、ORDER_DATEカラムは、発注日を格納する。LINE_NOカラムは、商品番号を格納する。PHONE_NOカラムは、電話番号を格納する。関連語抽出元データ10bは、ORDERテーブルを定義している。ORDERテーブルは、ODR_DATカラムと、ITEM_NOカラムと、TELカラムと、FAXカラムとを有する。ODR_DATカラムは、日付型である。ITEM_NOカラムは、6桁の数値型である。TELカラムは、8文字の固定長文字列型である。FAXカラムは、8文字の固定長文字列型である。例えば、ODR_DATカラムは、発注日を格納する。ITEM_NOカラムは、商品番号を格納する。TELカラムは、電話番号を格納する。FAXカラムは、ファクシミリ番号を格納する。関連語抽出元データ10cは、SHIPMENTテーブルを定義している。SHIPMENTテーブルは、PRODUCTカラムと、PROD_TYPEカラムとを有する。PRODUCTカラムは、8桁の数値型である。PROD_TYPEカラムは、最大128文字の可変長文字列型である。この例において、PURCHASE_ORDERテーブルのORDER_DATEカラムと、ORDERテーブルのODR_DATカラムとは、いずれも発注日を格納するカラムであり、関連カラムである。また、PURCHASE_ORDERテーブルのLINE_NOカラムと、ORDERテーブルのITEM_NOカラムと、SHIPMENTテーブルのPRODUCTカラムとは、いずれも商品番号を格納するカラムであり、関連カラムである。また、PURCHASE_ORDERテーブルのPHONE_NOカラムと、ORDERテーブルのTELカラムとは、いずれも電話番号を格納するカラムであり、関連カラムである。このように異なるシステム向けに定義されたテーブルスキーマや、異なるシステム設計者が定義したテーブルスキーマでは、名称は異なるものの、相当する内容を格納するカラムが含まれることがある。このようなカラム間の対応関係を分析する作業は、既存の業務システム間で統合最適化を行ったり、既存の複数のデータベースを連携させた新たなアプリケーションを構築したりする際に必須の作業である。関連カラム抽出システム900は、カラム名に含まれる単語の対応関係を自動推定することにより、関連カラムである可能性が高いカラムを抽出し、既存システムの大量のカラム間の対応を分析する作業を効率化する。図5は、この実施の形態における概念辞書データ30の一例を示す図である。概念辞書データ30は、例えば、複数の概念データ31を有する。それぞれの概念データ31は、1つの概念を表わす。概念データ31は、例えば、概念識別子32と、概念表示語33と、上位概念識別子34とを有する。概念識別子32は、識別番号など、その概念データ31を一意に識別するための識別子である。概念表示語33は、その概念を表わす単語あるいは連語を表わす。同じ概念を表わす単語あるいは連語が複数ある場合、概念表示語33は、複数の単語あるいは連語を,カンマなどの区切り文字で連結したリストである。また、一つの単語あるいは連語に複数の意味がある場合、同じ単語が異なる概念データ31の概念表示語33のなかに出現してもよい。上位概念識別子34は、その概念の上位概念を表わす概念データ31の概念識別子32である。ある概念の上位概念の更に上位概念も、その概念の上位概念であるといえるが、上位概念の上位概念は、上位概念識別子34を辿ることにより判別可能なので、上位概念識別子34は、直上の上位概念だけを表わす。なお、上位概念が存在しない概念の場合、上位概念識別子34は、空欄であってもよい。また、直上の上位概念が複数ある場合、上位概念識別子34は、複数の概念識別子32を,カンマなどの区切り文字で連結したリストであってもよい。例えば、概念識別子32が00001740の概念以下概念{00001740}と呼ぶ。他も同様。は、単語entityが表わす意味の一つに対応した概念である。概念{00001740}は、最上位概念であって、上位概念が存在しない。また、単語objectが表わす意味の一つと、連語physicalobjectが表わす意味の一つとは、同じ意味であって、概念{00002684}に対応している。概念{00002684}のすぐ上の上位概念は、概念{00001930}である。また、単語lineには、非常に多くの意味がある。例えば、そのなかの一つは、単語cableや連語transmissionlineの意味の一つと同じであって、概念{02937552}に対応している。また別の一つは、連語railwaylineや連語raillineの意味の一つと同じであって、概念{03676598}に対応している。なお、データベースのカラム名に使用できる文字種の制限により、カラム名には、英語の単語を使うことが多いので、この例における概念辞書データ30が表わす概念辞書は、英語の辞書である。しかし、概念辞書データ30が表わす概念辞書は、英語の辞書に限らず、日本語など他の言語の辞書であってもよいし、複数の言語を含む辞書であってもよい。図6及び図7は、この実施の形態における概念辞書データ30が表わす概念の間の階層構造の一例を示す図である。2つの図は、概念{00001740}entityを頂点とする階層構造を示している。なお、図を分割しているが、全体として一つの階層構造をなす。図6上部にあるmatterは、同図下部にあるmatterと同一であり、つながっている。また、図6にあるabstruction/abstractentityは、図7にあるabstruction/abstractentityと同一であり、つながっている。また、図6にあるdocumentは、図7にあるdocumentと同一であり、つながっている。また、図6にあるrelationは、図7にあるrelationと同一であり、つながっている。また、図7上部にあるpsychologicalfeatureは、同図下部にあるpsychologicalfeatureと同一であり、つながっている。長円は、一つの概念を表わす。長円から上へ伸びる線は、上位概念を示す。長円から下へ伸びる線は、下位概念を示す。長円のなかに単語あるいは連語が記載されている場合、その概念を表わす単語あるいは連語を表わす。一つの長円のなかに複数の単語あるいは連語が記載されている場合、同じ概念を表わす同義語である。概念間の階層構造は、概ね木構造であるが、一つの概念に1階層上の上位概念が複数ある場合例えば、図6下部にあるsubstance。があるので、厳密な意味での木構造ではない。また、この図によれば、単語lineには、単語productに比較的近い意味図6にあるmerchandise/ware/productの下位概念など。もあるし、単語phoneに比較的近い意味図6にあるinstrumentality/instrumentationの下位概念など。もあることがわかる。図8は、この実施の形態における単語抽出部20の動作の一例を説明するための図である。テーブル名構成単語データ21は、テーブル名を構成する単語を表わすデータである。テーブル名構成単語データ21は、例えば、テーブル識別子22と、1つ以上のテーブル名構成単語23とを含む。テーブル識別子22は、テーブルを一意に識別するための識別子である。単語抽出部20は、1つのテーブルについて、1つのテーブル名構成単語データ21を生成する。テーブル名構成単語23は、テーブル識別子22によって識別されるテーブルのテーブル名を構成する単語を表わす。カラム名構成単語データ24は、カラム名を構成する単語を表わすデータである。カラム名構成単語データ24は、例えば、テーブル識別子25と、カラム識別子26と、1つ以上のカラム名構成単語27とを含む。テーブル識別子25は、そのカラムが属するテーブルのテーブル識別子22である。カラム識別子26は、カラムを一意に識別するための識別子である。単語抽出部20は、1つのカラムについて、1つのカラム名構成単語データ24を生成する。なお、カラム識別子26は、カラム識別子26単独でカラムを一意に識別できる識別子であってもよいし、テーブル識別子25との組み合わせによりカラムを一意に識別できる識別子であってもよい。カラム名構成単語27は、カラム識別子26によって識別されるカラムのカラム名を構成する単語を表わす。単語抽出部20は、テーブルスキーマのテーブル名、カラム名の単語分割を行い、単語を抽出する。例えば、PURCHASE_ORDERテーブルについて、単語抽出部20は、識別子T0001を割り当ててテーブル識別子22とする。単語抽出部20は、テーブル名PURCHASE_ORDERを、区切り文字_アンダースコアで単語PURCHASEと単語ORDERとに分割して、テーブル名構成単語23とする。また、PURCHASE_ORDERテーブルのORDER_DATEカラムについて、単語抽出部20は、識別子C0011を割り当ててカラム識別子26とする。単語抽出部20は、カラム名ORDER_DATEを、区切り文字_アンダースコアで単語ORDERと単語DATEとに分割して、カラム名構成単語27とする。図9は、この実施の形態における文脈解析部50の動作の一例を説明するための図である。前置単語51は、カラム名構成単語27を含むカラム名において、カラム名構成単語27の直前に現れる単語である。後置単語52は、カラム名構成単語27を含むカラム名において、カラム名構成単語27の直後に現れる単語である。テーブル名構成単語53は、カラム名構成単語27を含むカラムが属するテーブルのテーブル名を構成するテーブル名構成単語23である。例えば、文脈解析部50は、単語抽出部20が抽出したカラム名構成単語27のなかから、前置単語51を抽出する。文脈解析部50は、カラム名構成単語27のなかから、後接する単語が存在する単語だけを抽出して、前置単語51とする。また、文脈解析部50は、単語抽出部20が抽出したカラム名構成単語27のなかから、後置単語52を抽出する。文脈解析部50は、カラム名構成単語27のなかから、前接する単語が存在する単語だけを抽出して、後置単語52とする。また、文脈解析部50は、単語抽出部20が抽出したテーブル名構成単語23を、テーブル名構成単語53とする。文脈ベクトル54は、文脈解析部50が生成する文脈ベクトルである。文脈解析部50は、1つの単語について、1つの文脈ベクトル54を生成する。文脈解析部50は、異なる位置カラムやテーブルに出現する同じ綴りの単語を区別する。例えば、カラム名構成単語27NOは、テーブル{T0001}PURCHASE_ORDERテーブルのカラム{C0012}LINE_NOカラムと、テーブル{T0001}PURCHASE_ORDERテーブルのカラム{C0013}PHONE_NOカラムと、テーブル{T0002}ORDERテーブルのカラム{C0222}ITEM_NOカラムとの3箇所に出現している。文脈解析部50は、これら3箇所に出現したカラム名構成単語27NOを区別して、それぞれについて、文脈ベクトル54を生成する。なお、前置単語51や後置単語52やテーブル名構成単語53については、文脈解析部50は、同じ綴りの単語を区別せず、1つの単語として取り扱う。文脈ベクトル54の各要素は、前置単語51、後置単語52及びテーブル名構成単語53のうちのいずれかに対応づけられている。例えば、文脈解析部50は、抽出した前置単語51と、後置単語52と、テーブル名構成単語53との数に基づいて、文脈ベクトル54の次数を決定する。文脈解析部50は、抽出した前置単語51の数と、後置単語52の数と、テーブル名構成単語53の数とを合計して、文脈ベクトル54の次数とする。文脈解析部50は、カラム名構成単語27のそれぞれについて、単語抽出部20が生成したカラム名構成単語データ24に基づいて、そのカラム名構成単語27の直前に位置する単語が存在するか否かを判定する。そのカラム名構成単語27の直前に位置する単語が存在すると判定した場合、文脈解析部50は、前置単語51のなかから、そのカラム名構成単語27の直前に位置する単語を選択する。文脈解析部50は、文脈ベクトル54の要素のうち、選択した前置単語51に対応づけられた要素の値を1にし、それ以外の前置単語51に対応づけられた要素の値を0にする。文脈解析部50は、単語抽出部20が生成したカラム名構成単語データ24に基づいて、そのカラム名構成単語27の直後に位置する単語が存在するか否かを判定する。そのカラム名構成単語27の直後に位置する単語が存在すると判定した場合、文脈解析部50は、後置単語52のなかから、そのカラム名構成単語27の直後に位置する単語を選択する。文脈解析部50は、文脈ベクトル54の要素のうち、選択した後置単語52に対応づけられた要素の値を1にし、それ以外の後置単語52に対応づけられた要素の値を0にする。文脈解析部50は、単語抽出部20が生成したテーブル名構成単語データ21に基づいて、テーブル識別子25によって識別されるテーブルを構成するテーブル名構成単語23を取得する。文脈解析部50は、テーブル名構成単語53のなかから、取得したテーブル名構成単語23を選択する。文脈解析部50は、文脈ベクトル54の要素のうち、選択したテーブル名構成単語53に対応づけられた要素の値を1にし、それ以外のテーブル名構成単語53に対応づけられた要素の値を0にする。例えば、テーブル{T0001}PURCHASE_ORDERテーブルのカラム{C0011}ORDER_DATEカラムに出現する単語ORDERについて、文脈解析部50は、単語ORDERがカラム{C0011}のカラム名の先頭に位置し、直前に位置する単語が存在しないことから、文脈ベクトル54の要素のうち、前置単語51に対応づけられた要素の値をすべて0にする。また、文脈解析部50は、カラム{C0011}のカラム名において単語ORDERの直後に単語DATEが位置することから、後置単語52に対応づけられた文脈ベクトル54の要素のうち、DATEに対応づけられた要素の値を1にし、他の要素の値を0にする。また、文脈解析部50は、テーブル{T0001}のテーブル名構成単語23がPURCHASE及びORDERであることから、テーブル名構成単語53に対応づけられた文脈ベクトル54の要素のうち、PURCHASE及びORDERに対応づけられた要素の値を1にし、他の要素の値を0にする。図10は、この実施の形態における特徴ベクトル生成部40の動作の一例を説明するための図である。概念識別子41は、カラム名構成単語27が表わす概念についての概念辞書データ30における概念識別子32である。例えば、特徴ベクトル生成部40は、概念辞書データ30のなかから、単語抽出部20が抽出したカラム名構成単語27のうちいずれかの単語を概念表示語33のなかに含む概念データ31を抽出し、抽出した概念データ31に含まれる概念識別子32を、概念識別子41とする。また、特徴ベクトル生成部40は、抽出した概念データ31に含まれる上位概念識別子34に基づいて、その概念の上位概念を表わす概念データ31を、概念辞書データ30のなかから抽出する。特徴ベクトル生成部40は、抽出した概念データ31に含まれる概念識別子32を、概念識別子41に追加する。特徴ベクトル生成部40は、これを、最上位概念に到達するまで繰り返す。概念ベクトル44は、特徴ベクトル生成部40が生成する概念ベクトルである。特徴ベクトル生成部40は、1つの単語について1つの概念ベクトル44を生成する。ただし、特徴ベクトル生成部40は、文脈解析部50と異なり、同じ綴りの単語を区別しない。概念ベクトル44の要素の値は、出現位置によって変わることはない。例えば、カラム名構成単語27NOは、3箇所に出現するが、特徴ベクトル生成部40は、カラム名構成単語27NOに対して1つの概念ベクトル44を生成する。概念ベクトル44の各要素は、概念識別子41にそれぞれ対応づけられている。例えば、特徴ベクトル生成部40は、抽出した概念識別子41の数に基づいて、概念ベクトル44の次数を決定する。特徴ベクトル生成部40は、抽出した概念識別子41の数を、概念ベクトル44の次数とする。特徴ベクトル生成部40は、カラム名構成単語27のそれぞれについて、概念辞書データ30のなかから、そのカラム名構成単語27が概念表示語33のなかに含まれる概念データ31を抽出する。特徴ベクトル生成部40は、概念識別子41のなかから、抽出した概念データ31の概念識別子32と一致する概念識別子41を選択する。特徴ベクトル生成部40は、抽出した概念データ31に含まれる上位概念識別子34に基づいて、その概念の上位概念を表わす概念データ31を、概念辞書データ30のなかから抽出する。特徴ベクトル生成部40は、概念識別子41のなかから、抽出した概念データ31の概念識別子32と一致する概念識別子41を更に選択する。特徴ベクトル生成部40は、これを、最上位概念に到達するまで繰り返す。このようにして、特徴ベクトル生成部40は、カラム名構成単語27の概念辞書における概念カテゴリパスに含まれる概念の概念識別子41をすべて選択する。特徴ベクトル生成部40は、概念識別子41の要素のうち、選択した概念識別子41に対応づけられた要素の値を1にし、それ以外の概念識別子41に対応づけられた要素の値を0にする。図11は、この実施の形態における単語分類部60の動作の一例を説明するための図である。この図の上側の部分は、文脈管理グラフである。文脈管理グラフは、テーブル、カラム、単語の構成関係を表わす。ネットワークの最上位階層は、テーブル識別子25によって識別される個々のテーブルである。第二階層は、カラム識別子26によって識別される個々のカラムである。第三階層は、カラム名構成単語27である。ただし、第三階層は、異なり語彙としてノードを生成している。テーブルとカラムとを接続する線は、そのカラムがそのテーブルに属することを表わす。各テーブルは、1つ以上のカラムと接続している。各カラムは、いずれか1つのテーブルと接続している。カラムとカラム名構成単語27とを接続する線は、そのカラムのカラム名がそのカラム名構成単語27を含むことを表わす。各カラムは、1つ以上のカラム名構成単語27と接続している。同じ綴りの単語を異なるカラムが含む場合があるので、各カラム名構成単語27は、複数のカラムと接続する場合がある。この図の下側の部分は、クラスを表わす。クラスとは、カラム名構成単語27を分類するグループのことである。クラスの数は、あらかじめ定められている。例えば、関連カラム判定装置903は、入力装置912を用いて、関連カラム抽出システム900の利用者が設定したクラス数を入力し、記憶装置914を用いて、入力したクラス数を記憶しておく。クラス識別子61は、クラスを一意に識別するための識別子である。例えば、単語分類部60は、処理装置911を用いて、記憶したクラス数に基づいて、それぞれのクラスを識別するクラス識別子61を生成する。単語分類部60は、カラム名構成単語27をいずれかのクラスに分類する。すなわち、単語分類部60は、この図に示したカラム名構成単語27異なり単語とクラスとの間を繋ぐ1対他の枝を引く。各カラム名構成単語27は、1つのクラスと接続される。各クラスは、1つ以上のカラム名構成単語27と接続される。単語分類部60は、与えられた条件に基づいて、条件を充足する最適なクラス割り当てを探索する。図12は、この実施の形態における単語分類部60の動作の一例を説明するための図である。クラス識別子62は、カラム名構成単語27を分類したクラスのクラス識別子61である。単語分類部60は、処理装置911を用いて、単語抽出部20が抽出したカラム名構成単語27を、いずれかのクラスに分類する。単語分類部60は、カラム名構成単語27を分類したクラスのクラス識別子61を、クラス識別子62とする。このとき、単語分類部60は、異なる位置に出現する同じ綴りの単語を区別しない。すなわち、単語分類部60は、異なる位置に出現する同じ綴りの単語を、必ず同じクラスに分類する。単語分類部60は、各テーブルの各カラムについて、クラスベクトル63を生成する。単語分類部60は、カラムの総数と同じ数のクラスベクトル63を生成する。クラスベクトル63は、そのカラムのカラム名に含まれるカラム名構成単語27が分類されたクラスを表わす。クラスベクトル63の各要素は、クラス識別子61によって識別されるクラスに対応づけられている。クラスベクトル63の各要素は、そのカラムのカラム名に含まれるカラム名構成単語27のなかに、そのクラスに分類された単語があるか否かを表わす。例えば、単語分類部60は、テーブル識別子25で識別されるテーブルのカラム識別子26で識別されるカラムそれぞれについて、あらかじめ定められたクラスの数を次数とするクラスベクトル63を生成する。単語分類部60は、単語抽出部20が生成したカラム名構成単語データ24と、分類したクラスのクラス識別子62とに基づいて、クラス識別子61のなかから、そのカラムに属する単語を分類したクラスのクラス識別子62と一致するクラス識別子61を選択する。単語分類部60は、クラスベクトル63の要素のうち、選択したクラス識別子61に対応づけられた要素の値を1そのカラムのカラム名に含まれるカラム名構成単語27のなかに、そのクラスに分類された単語があることを表わす値の一例。にし、それ以外の要素の値を0そのカラムのカラム名に含まれるカラム名構成単語27のなかに、そのクラスに分類された単語がないことを表わす値の一例。にする。例えば、単語分類部60が、単語ORDERをクラス{y3}に分類し、単語DATEをクラス{y3}に分類し、単語LINEをクラス{y4}に分類し、単語NOをクラス{y1}に分類し、単語TELをクラス{y1}に分類したとする。テーブル{T0001}PURCHASE_ORDERテーブルのカラム{C0011}ORDER_DATEカラムについて、単語分類部60は、単語ORDERをクラス{y3}に分類し、単語DATEをクラス{y3}に分類したことから、クラスベクトル63の要素のうち、クラス{y3}に対応づけられた要素の値を1にし、それ以外のクラスに対応づけられた要素の値を0にする。また、テーブル{T0001}のカラム{C0012}LINE_NOカラムについて、単語分類部60は、単語LINEをクラス{y4}に分類し、単語NOをクラス{y1}に分類したことから、クラスベクトル63の要素のうち、クラス{y1}及びクラス{y4}に対応づけられた要素の値を1にし、それ以外のクラスに対応づけられた要素の値を0にする。また、テーブル{T0002}ORDERテーブルのカラム{C0023}TELカラムについて、単語分類部60は、単語TELをクラス{y1}に分類したことから、クラスベクトル63の要素のうち、クラス{y1}に対応づけられた要素の値を1にし、それ以外のクラスに対応づけられた要素の値を0にする。単語分類部60は、同じテーブルに属するカラムについて生成したクラスベクトル63が、互いに異なるよう、カラム名構成単語27をクラスに分類する。例えば、単語分類部60は、すべてのカラム名構成単語27を分類したのちにクラスベクトル63を生成する。同じテーブルに属するカラムについて生成したクラスベクトル63のなかに一致するものがある場合、単語分類部60は、分類をやり直す。あるいは、単語分類部60は、カラム名構成単語27を順に分類していき、カラム名に含まれるすべての単語を分類したカラムから順に、クラスベクトル63を生成する。新たに生成したクラスベクトル63が、同じテーブルに属する他のカラムについて既に生成してあるクラスベクトル63と一致している場合、単語分類部60は、最後に分類したカラム名構成単語27のクラスを変更する。図13は、この実施の形態における単語分類部60の動作の一例を説明するための図である。単語分類部60特徴ベクトル生成部の一例。は、処理装置911を用いて、文脈解析部50が生成した文脈ベクトル54と、特徴ベクトル生成部40が生成した概念ベクトル44とを結合して、特徴ベクトル64を生成する。前置単語51の次数がm、概念識別子41の次数がnであるとすると、特徴ベクトル64の次数は、mnである。このとき、単語分類部60は、文脈解析部50と同様、異なる位置に出現する同じ綴りの単語を区別する。単語分類部60は、文脈解析部50が生成した文脈ベクトル54の数と同じ数の特徴ベクトル64を生成する。特徴ベクトル64の各要素は、前置単語51、後置単語52、テーブル名構成単語53及び概念識別子41のいずれかに対応づけられている。例えば、単語分類部60は、文脈解析部50が生成した文脈ベクトル54のそれぞれについて、特徴ベクトル生成部40が生成した概念ベクトル44のなかから、カラム名構成単語27が一致する概念ベクトル44を選択する。単語分類部60は、文脈ベクトル54のm個の要素と、選択した概念ベクトル44のn個の要素との合計mn個の要素を持つ特徴ベクトル64を生成する。図14は、この実施の形態における単語分類部60の動作の一例を説明するための図である。単語分類部60重みベクトル生成部の一例。は、処理装置911を用いて、クラス識別子61によって識別されるクラスそれぞれについて、重みパラメータベクトル65重みベクトルの一例。を生成する。単語分類部60は、あらかじめ定められたクラスの数と同じ数の重みパラメータベクトル65を生成する。重みパラメータベクトル65の次数は、特徴ベクトル64の次数と同じである。重みパラメータベクトル65の各要素は、前置単語51、後置単語52、テーブル名構成単語53及び概念識別子41のいずれかに対応づけられている。重みパラメータベクトル65は、カラム名構成単語27がそのクラスに属する尤度を算出するために用いられる。単語分類部60は、あるカラム名構成単語27について生成した特徴ベクトル64と、あるクラスについて生成した重みパラメータベクトル65との内積を算出することにより、そのカラム名構成単語27がそのクラスに属する尤度を算出する。重みパラメータベクトル65の各要素は、その要素が対応づけられた項目前置単語51、後置単語52、テーブル名構成単語53または概念識別子41が、単語がそのクラスに属する尤度にどのように影響するかを表わす。要素の値が正である場合、単語がその項目に該当するときに、その単語がそのクラスに属する尤度が高いことを意味する。逆に、要素の値が負である場合、単語がその項目に該当しないときに、その単語がそのクラスに属する尤度が高いことを意味する。要素の値の絶対値が大きいほど、影響が大きいことをを表わす。要素の値が0である場合、単語がその項目に該当するかしないかは、その単語がそのクラスに属するか否かと無関係であることを意味する。最初に、単語分類部60は、条件を充足する範囲内でランダムに、カラム名構成単語27を分類する。次に、単語分類部60は、その分類に最適な重みパラメータベクトル65を生成する。単語分類部60は、例えば、多クラスロジスティック回帰の教師あり学習を用いる。単語分類部60は、例えば、反復重み付き最小二乗法iterativerewaitedleastsquaresmethodによって最適解を求めることにより、重みパラメータベクトル65を算出する。単語分類部60は、算出した重みパラメータベクトル65を用いて、カラム名構成単語27がそれぞれのクラスに属する尤度を算出する。単語分類部60は、算出した尤度を用いて、カラム名構成単語27を分類し直す。単語分類部60は、例えば、多クラスロジスティック回帰モデルを用いた制約付き教師なしクラスタリングにより、カラム名構成単語27を分類する。単語分類部60は、新たに分類し直した分類と、分類し直す前の分類とを比較する。分類に変化があった場合、単語分類部60は、重みパラメータベクトル65を算出し直し、算出し直した重みパラメータベクトル65を用いて、カラム名構成単語27を分類し直す。単語分類部60は、これを、分類が変化しなくなるまで繰り返す。なお、分類が収束しない場合もあるので、繰り返しの最大回数をあらかじめ定めておく構成であってもよい。単語分類部60は、繰り返し回数が最大回数に達した場合、処理を打ち切る。図15は、この実施の形態における関連語決定部70の動作の一例を説明するための図である。関連語決定部70は、単語分類部60による分類の結果に基づいて、関連カラムデータ71を生成する。関連カラムデータ71は、関連カラムである可能性の高い複数のカラムの組を表わす。関連カラムデータ71は、例えば、テーブル識別子25とカラム識別子26との組を複数含む。関連カラムデータ71は、テーブル識別子25によって識別されるテーブルのカラム識別子26によって識別されるカラムが、関連カラムである可能性が高いことを表わす。関連語決定部70は、例えば、単語分類部60がカラム名構成単語27を最終的に分類したクラスに基づいて単語分類部60が生成したクラスベクトル63に基づいて、クラスベクトル63が一致する複数のカラムが存在するか否かを判定する。クラスベクトル63が一致する複数のカラムが存在する場合、関連語決定部70は、それぞれのカラムが属するテーブルのテーブル識別子25とそれぞれのカラムのカラム識別子26とに基づいて、関連カラムデータ71を生成し出力する。例えば、関連語決定部70は、テーブル{T0001}PURCHASE_ORDERテーブルのカラム{C0011}ORDER_DATEカラムについて単語分類部60が生成したクラスベクトル63と、テーブル{T0002}ORDERテーブルのカラム{C0021}ODR_DATカラムについて単語分類部60が生成したクラスベクトル63とが一致するので、この2つのカラムを、関連カラムである可能性が高いカラムであると判定し、この2つのカラムのテーブル識別子25及びカラム識別子26を含む関連カラムデータ71を生成する。また、関連語決定部70は、テーブル{T0001}のカラム{C0012}LINE_NOカラムについて単語分類部60が生成したクラスベクトル63と、テーブル{T0002}のカラム{C0022}ITEM_NOカラムについて単語分類部60が生成したクラスベクトル63とが一致するので、この2つのカラムを、関連カラムである可能性が高いカラムであると判定し、この2つのカラムのテーブル識別子25及びカラム識別子26を含む関連カラムデータ71を生成する。なお、関連語決定部70は、更に、テーブル識別子25によって識別されるテーブルのテーブル名や、カラム識別子26によって識別されるカラムのカラム名などを、関連カラムデータ71に含める構成であってもよい。また、関連語決定部70は、関連語抽出元データ10から、各カラムのデータ型を取得し、取得したデータ型が一致しもしくは近いカラムだけを、関連カラムである可能性が高いカラムであると判定する構成であってもよい。また、関連語決定部70は、関連カラムデータ71を出力するのではなく、単語分類部60が同じクラスに分類したカラム名構成単語27の組を出力する構成であってもよい。図16は、この実施の形態における関連抽出処理S800の流れの一例を示すフロー図である。関連抽出処理S800において、関連カラム判定装置903は、概念辞書データ30が記憶したデータベース定義データによって表わされる複数のテーブルの複数のカラムのなかから、関連カラムである可能性の高いカラムを抽出する。関連抽出処理S800は、例えば、単語抽出処理S801と、文脈解析処理S802と、概念解析処理S803と、単語分類処理S804と、関連決定処理S805とを有する。関連カラム判定装置903は、単語抽出処理S801から関連抽出処理S800を開始する。単語抽出処理S801において、単語抽出部20は、データベース定義記憶装置901から関連語抽出元データ10を取得する。単語抽出部20は、取得した関連語抽出元データ10から、カラム名構成単語27を抽出する。文脈解析処理S802において、文脈解析部50は、単語抽出処理S801で単語抽出部20が抽出したカラム名構成単語27それぞれについて、文脈ベクトル54を生成する。概念解析処理S803において、特徴ベクトル生成部40は、概念辞書記憶装置902が記憶した概念辞書データ30を使って、単語抽出処理S801で単語抽出部20が抽出したカラム名構成単語27それぞれについて、概念ベクトル44を生成する。単語分類処理S804において、単語分類部60は、文脈解析処理S802で文脈解析部50が生成した文脈ベクトル54と、概念解析処理S803で特徴ベクトル生成部40が生成した概念ベクトル44とに基づいて、単語抽出処理S801で単語抽出部20が抽出したカラム名構成単語27を分類する。関連決定処理S805において、関連語決定部70は、単語分類処理S804で単語分類部60が分類した分類結果に基づいて、関連カラムである可能性の高いカラムを判定する。図17は、この実施の形態における単語分類処理S804の流れの一例を示すフロー図である。単語分類処理S804は、例えば、初期化工程S810と、重み最適化工程S820と、分類算出工程S830と、収束判定工程S840とを有する。初期化工程S810において、単語分類部60は、処理装置911を用いて、暫定正解クラスを、制約を充足しなからランダムに与える。単語分類部60は、以下の一致制約と排他制約を充足させながら、各単語に対し、暫定正解クラスをランダムに割り当てる。1一致制約:表記が等しい単語は、テーブル/カラムの出現文脈に依らず同一の正解クラスを割り当てる。2排他制約:同一テーブルを構成するカラム間では、異なるクラスの単語が1つ以上存在するように正解クラスを割り当てる。重み最適化工程S820において、単語分類部60は、処理装置911を用いて、暫定正解クラスを固定して、重みパラメータベクトル65などのモデルパラメータを最適化する。単語分類部60は、例えば次の式を用いて、正解クラスの割り当てAtをAtη-1に固定して、モデルパラメータwを最適化する。ただし、モデルパラメータwは、K個の重みパラメータベクトル{wk|k=1,2,...,K}を並べたM行K列の行列w1,w2,...,wKを表わす。Kは、あらかじめ定めれらたクラスの数を表わす。重みパラメータベクトルwkは、M次の縦ベクトルである。Mは、特徴ベクトルの次数を表わす。argmaxは、下に記した変数この場合、w。を変化させた場合に、引数である関数この場合、logpt,w,Atη-1|Φ。の値が最大になる変数の値を表わす。logは、オイラー数を底とする対数自然対数を表わす。pt,w,Atη-1|Φは、ΦにおけるtかつwかつAtη-1の条件付き確率を表わす。tは、N個の正解クラス{ti|i=1,...,N}を要素とするN次のベクトルを表わす。Nは、同じ綴りを区別したカラム名構成単語27の数を表わす。tiは、i番目のカラム名構成単語xii=1,...,Nに割り当てる正解クラスを表わす。Atは、tの割り当てを表わす。ηは、1以上の整数である。ηは、重み最適化工程S820~収束判定工程S840のループを実行した繰り返し回数を表わす。例えば、wηは、η回目の重み最適化工程S820で算出するwを表わす。Atηは、η回目の分類算出工程S830で算出するAtを表わす。At0は、初期化工程S810で単語分類部60が割り当てた暫定正解クラスの割り当てを表わす。Φは、N個の特徴ベクトル{φi|i=1,2,...,N}を並べたM行N列の行列φ1,φ2,...,φNを表わす。特徴ベクトルφiは、M次の縦ベクトルである。特徴ベクトルφiは、i番目のカラム名構成単語xiについて、単語分類部60が生成した特徴ベクトル64を表わす。単語分類部60は、例えば次の式によりlogpt,w,At|Φの値を求める。ここで、logpwは、モデルパラメータwに対する二次の正則化項であり、モデルが過剰に大きな重みを使って学習データにオーバーフィッティングするのを防ぐ。単語分類部60は、例えば次の式により、logpwの値を求める。ただし、C1は、あらかじめ定めた定数ハイパーパラメータである。例えば、関連カラム判定装置903は、入力装置912を用いて、C1の設定値を入力し、記憶装置914を用いて、入力したC1の設定値を記憶しておく。単語分類部60は、記憶したC1の設定値を使って、logpwの値を算出する。あるいは、C1は、固定値ではなく、繰り返し回数ηが多くなるにしたがって減衰する値であってもよい。例えば、関連カラム判定装置903は、入力装置912を用いて、C1の初期値C11と、C1の収束値C1∞と、減衰係数ε1とを入力する。関連カラム判定装置903は、記憶装置914を用いて、入力したC1の初期値C11と、C1の収束値C1∞と、減衰係数ε1とを記憶しておく。単語分類部60は、η回目の繰り返しただし、η≧2。において、前回の繰り返しで使ったC1の値C1η-1と、記憶したC1の収束値C1∞と減衰係数ε1とに基づいて、例えば次の式により、今回の繰り返しで使う定数C1ηを算出する。このように、C1の値を徐々に減衰させることにより、学習の強度を徐々に強めることができる。これにより、不安定な学習の初期段階において誤ったクラス割り当てをしてしまったとしても、その後の反復において大域的なクラス割り当てに基づいて誤ったクラス割り当ての変更が起きやすくなる。また、logpAt|wは、各クラスで全学習データから受ける重みの総和を最大化する。上述の正則化項による大きさに対するペナルティと合わせて、クラス間でクラスの大きさ単語の種類数がバランスするようなペナルティとして働く。単語分類部60は、例えば次の式により、logpAt|wの値を求める。ただし、C2は、あらかじめ定めた定数ハイパーパラメータである。例えば、関連カラム判定装置903は、入力装置912を用いて、C2の設定値を入力し、記憶装置914を用いて、入力したC2の設定値を記憶しておく。単語分類部60は、記憶したC2の設定値を使って、logpAt|wの値を算出する。あるいは、C2は、固定値ではなく、繰り返し回数ηが多くなるにしたがって減衰する値であってもよい。例えば、関連カラム判定装置903は、入力装置912を用いて、C2の初期値C21と、C2の収束値C1∞と、減衰係数ε2とを入力する。関連カラム判定装置903は、記憶装置914を用いて、入力したC2の初期値C21と、C2の収束値C2∞と、減衰係数ε1とを記憶しておく。単語分類部60は、η回目の繰り返しただし、η≧2。において、前回の繰り返しで使ったC2の値C2η-1と、記憶したC2の収束値C2∞と減衰係数ε2とに基づいて、例えば次の式により、今回の繰り返しで使う定数C2ηを算出する。このように、C2の値を徐々に減衰させることにより、学習の強度を徐々に強めることができる。これにより、不安定な学習の初期段階において誤ったクラス割り当てをしてしまったとしても、その後の反復において大域的なクラス割り当てに基づいて誤ったクラス割り当ての変更が起きやすくなる。また、logpt|Φ;w,Atは、モデルによる学習データの尤度である。例えば、単語分類部60は、次の式により、logpt|Φ;w,Atの値を求める。多クラスロジスティック回帰を用いる場合、単語分類部60は、例えば次の式を用いて、i番目の単語xiがk番目のクラスykに属する尤度pyk|φi;w,Atを求める。ただし、expは、オイラー数を底とする指数関数を表わす。Ziは、正規化係数である。単語分類部60は、例えば次の式により、正規化係数Ziを求める。分類算出工程S830において、単語分類部60は、処理装置911を用いて、モデルパラメータを固定して、制約付き最尤クラスを求める。単語分類部60は、例えば次の式により、モデルパラメータwをwηに固定して、制約付きで最適なクラスを探索し、正解クラスAtηとして割り当て直す。ただし、Sは、制約条件を充足するAtの集合を表わす。例えば、単語分類部60は、各カラム名構成単語27を、各クラスに分類するかしないかを変数とする0-1整数計画問題を解くことにより、クラス選択の最適解制約付き最尤解を求める。この方式は、クラス数や単語数が小規模の場合に有効である。あるいは、単語分類部60は、貪欲法により平均尤度の高い単語から順番にクラスを割り当てることにより、準最適解を求める。この方式は、クラス数や単語数が大規模な場合に有効である。収束判定工程S840において、単語分類部60は、処理装置911を用いて、クラスタリング処理の収束判定を行う。例えば、単語分類部60は、いずれの単語に割り当てた暫定正解クラスも前回の反復で割り当てたクラスと変わらなければクラスタリング処理が収束したと判定し、反復を打ち切る。あるいは、単語分類部60は、繰り返し回数ηが所定の最大反復回数に達したら、強制的に反復を打ち切る。反復を打ち切らないと判定した場合、単語分類部60は、重み最適化工程S820に処理を戻す。反復を打ち切ると判定した場合、単語分類部60は、単語分類処理S804を終了する。図18は、この実施の形態における初期化工程S810の流れの一例を示すフロー図である。初期化工程S810は、例えば、単語選択工程S811と、暫定クラス割当工程S812と、カラム選択工程S813と、兄弟カラム選択工程S814と、排他制約判定工程S815とを有する。単語選択工程S811において、単語分類部60は、まだ暫定正解クラスを割り当てていないカラム名構成単語27のなかから、単語ζを一つ選択する。全語彙カラム名構成単語27に暫定正解クラスを付与済みであり、選択すべき単語が存在しない場合、すべての単語に暫定正解クラスを割り当てたので、単語分類部60は、初期化工程S810を終了する。暫定正解クラスを未付与の語彙がある場合、単語分類部60は、暫定正解クラスを割り当てていない単語を一つ取り出し、単語ζとする。単語分類部60は、暫定クラス割当工程S812へ処理を進める。暫定クラス割当工程S812において、単語分類部60は、単語選択工程S811で選択した単語ζに対してまだ割り当てていないクラスのなかから、暫定正解クラスを一つ選択する。例えば、単語分類部60は、すべてのクラスをランダムな順序に並べ替えたリストを生成して、暫定正解クラス候補リストとする。単語分類部60は、暫定正解クラス候補リストの先頭にあるクラスを暫定正解クラスとして選択し、選択したクラスを暫定正解クラス候補リストから削除する。単語分類部60は、その単語ζについての暫定正解クラス候補リストを記憶しておく。次回の暫定クラス割当工程S812を同じ単語ζに対して実行する場合、単語分類部60は、その単語ζについて記憶しておいた暫定正解クラス候補リストを使い、暫定正解クラス候補リストの先頭にあるクラスを暫定正解クラスとして選択し、選択したクラスを暫定正解クラス候補リストから削除する。単語ζに対してまだ割り当てていないクラスが存在しない場合、例えば、その単語ζについて記憶している暫定正解クラス候補リストが空である場合、単語分類部60は、その単語ζに対してクラスを割り当てることができない。単語分類部60は、その単語ζに対してクラスを割り当てることを諦め、前回の単語選択工程S811で選択した単語にロールバックする。単語分類部60は、単語選択工程S811で選択した単語ζを未選択に戻し、前回の単語選択工程S811で選択した単語に対して割り当てた暫定正解クラスを変更する。単語分類部60は、前回の単語選択工程S811で選択した単語ζに対して、まだ割り当てていないクラスのなかから、暫定正解クラスを一つ選択する。例えば、単語分類部60は、前回の単語選択工程S811で選択した単語ζについて記憶しておいた暫定正解クラス候補リストの先頭にあるクラスを暫定正解クラスとして選択し、選択したクラスを暫定正解クラス候補リストから削除する。カラム選択工程S813において、単語分類部60は、全カラムのなかから、暫定クラス割当工程S812で暫定正解クラスを割り当てた単語ζを含むカラムを抽出する。単語分類部60は、抽出したカラムのなかから、そのカラムのカラム名に含まれるすべての単語全構成語に対して暫定正解クラスを割り当てたカラムを抽出して、カラム集合C1とする。カラム集合C1が空集合であって、カラム集合C1に属するカラムが存在しない場合、単語分類部60は、単語選択工程S811に処理を戻し、次の単語ζを選択する。カラム集合C1が空集合でなく、カラム集合C1に属するカラムが存在する場合、単語分類部60は、カラム集合C1に属するカラムのなかからカラムを1つ選択し、選択したカラムをカラム集合C1から削除する。単語分類部60は、その単語ζについてのカラム集合C1を記憶しておく。次回のカラム選択工程S813を同じ単語ζに対して実行する場合、単語分類部60は、記憶しておいたカラム集合C1を使い、カラム集合C1に属するカラムのなかから、カラムを1つ選択し、選択したカラムをカラム集合C1から削除する。単語分類部60は、選択したカラムについてクラスベクトル63を生成し、生成したクラスベクトル63を記憶しておく。単語分類部60は、兄弟カラム選択工程S814へ処理を進める。兄弟カラム選択工程S814において、単語分類部60は、全カラムのなかから、カラム選択工程S813で選択したカラムと同じテーブルに属するカラムを抽出する。単語分類部60は、抽出したカラムのなかから、そのカラムのカラム名に含まれるすべての単語に対して暫定正解クラスを割り当てたカラムを抽出して、カラム集合C2とする。カラム集合C2には、カラム選択工程S813で選択したカラムが必ず含まれるので、単語分類部60は、カラム選択工程S813で選択したカラムをカラム集合C2から削除する。カラム集合C2が空集合であって、カラム集合C2に属するカラムが存在しない場合、単語分類部60は、カラム選択工程S813に処理を戻し、次のカラムをカラム集合C1から選択する。カラム集合C2が空集合でなく、カラム集合C2に属するカラムが存在する場合、単語分類部60は、カラム集合C2に属するカラムのなかからカラムを1つ選択し、選択したカラムをカラム集合C2から削除する。単語分類部60は、そのカラムについてのカラム集合C2を記憶しておく。次回の兄弟カラム選択工程S814を同じカラムに対して実行する場合、単語分類部60は、記憶しておいたカラム集合C2を使い、カラム集合C2に属するカラムのなかから、カラムを1つ選択し、選択したカラムをカラム集合C2から削除する。単語分類部60は、排他制約判定工程S815へ処理を進める。排他制約判定工程S815において、単語分類部60は、カラム選択工程S813で選択したカラムについて生成したクラスベクトル63と、兄弟カラム選択工程S814で選択したカラムについて記憶しておいたクラスベクトル63とを比較する。2つのクラスベクトル63が一致している場合、単語分類部60は、制約違反であると判定し、暫定クラス割当工程S812に処理を戻して、単語ζに対して次の暫定正解クラスを割り当てる。2つのクラスベクトル63が異なる場合、単語分類部60は、制約を充足していると判定し、兄弟カラム選択工程S814に処理を戻して、次のカラムをカラム集合C2から選択する。図19は、この実施の形態における分類算出工程S830の流れの一例を示すフロー図である。分類算出工程S830は、例えば、単語選択工程S831と、暫定クラス割当工程S832と、カラム選択工程S813と、兄弟カラム選択工程S814と、排他制約判定工程S815とを有する。単語選択工程S831において、単語分類部60は、すべての単語について、すべてのクラスに対する平均尤度を算出する。単語分類部60は、例えば次の式により、単語ζがクラスykに属する尤度をすべての出現箇所について平均した平均尤度p ̄yk|ζを算出する。ただし、Xζは、単語xiがζである添え字iの集合を表わす。単語分類部60は、それぞれの単語ζについて、平均尤度が大きい順にクラスを並べたリストを生成し、その単語ζについての暫定正解クラスリストとする。単語分類部60は、暫定正解クラスリストの先頭にあるクラスに対する平均尤度すなわち、平均尤度の最大値が大きい順に単語ζを並べたリストを生成し、割当順単語リストとする。単語分類部60は、割当順単語リストのなかから、未処理の単語を1つ選択する。割当順単語リストに未処理の単語が存在しない場合、すべての単語に対するクラス割当てが完了したので、単語分類部60は、分類算出工程S830を終了する。割当順単語リストに未処理の単語が存在する場合、単語分類部60は、未処理の単語のなかで一番前にある単語すなわち、最大平均尤度が一番大きい単語を選択して、単語ζとする。単語分類部60は、暫定クラス割当工程S832へ処理を進める。暫定クラス割当工程S832において、単語分類部60は、単語選択工程S831で選択した単語ζに対して、単語選択工程S831で生成した暫定正解クラスリストを使って、クラスを割り当てる。単語分類部60は、暫定正解クラスリストのなかから、未選択のクラスを1つ選択する。暫定正解クラスリストに未選択のクラスが存在しない場合、その単語ζに対してクラスを割り当てることができないので、単語分類部60は、1つ前の単語にロールバックする。単語分類部60は、単語選択工程S831で選択した単語ζについての暫定正解クラスリストをすべて未選択状態に戻す。単語分類部60は、割当順単語リストの処理済の単語のなかから、一番後ろにある単語を選択して、単語ζとし、未処理状態に戻す。単語分類部60は、ロールバックした単語ζについての暫定正解クラスリストのなかから、未選択のクラスを1つ選択する。暫定正解クラスリストに未選択のクラスが存在する場合、単語分類部60は、未選択のクラスのなかで一番前にあるクラスすなわち、平均尤度が一番大きいクラスを選択する。カラム選択工程S813、兄弟カラム選択工程S814及び排他制約判定工程S815は、クラスの割当てが排他制約に違反しないかを検証する工程であり、初期化工程S810と同様である。初期化工程S810では、単語の選択順やクラスの選択順がランダムであるのに対し、分類算出工程S830では、最大平均尤度が高い順に単語を選択し、平均尤度が高い順にクラスを選択する。これにより、排他制約に反しないという条件を充足しつつ、全体として尤度が高いクラス割当を見つけることができる。図20は、この実施の形態における分類算出工程S830単語分類部60の動作の一例を説明するための図である。単語選択工程S831において、単語分類部60は、異なる位置に出現する同じ綴りの単語を区別して、それぞれのカラム名構成単語27について、それぞれのクラスに対する尤度66を算出する。単語分類部60は、異なる位置に出現する同じ綴りの単語について算出した尤度66に基づいて、平均尤度67を算出する。この例では、単語NOが3箇所に出現しているので、単語分類部60は、それぞれのクラスについて、算出した3つの尤度66から、平均尤度67を算出する。単語分類部60は、異なる位置に出現する同じ綴りの単語を区別せず、それぞれの単語について、算出した平均尤度67が大きい順にクラスを並べた暫定正解クラスリスト68を生成する。また、単語分類部60は、異なる位置に出現する同じ綴りの単語を区別せず、算出した平均尤度67のうち最大の平均尤度67が大きい順に単語を並べた割当順単語リスト69を生成する。単語分類部60は、割当順単語リスト69の上位に位置する単語から順に、クラスを割り当てる。単語分類部60は、暫定正解クラスリスト68の先頭に位置するクラスを割り当て、それで排他制約違反になる場合には、次のクラスを割り当てる。例えば、単語分類部60は、単語選択工程S831で、割当順単語リスト69の先頭にある単語NOを選択し、暫定クラス割当工程S832で、その単語の暫定正解クラスリスト68の先頭にあるクラス{y4}を選択し、単語NOにクラス{y4}を割り当てる。上述したように、単語NOは、3箇所に出現している。それぞれの出現位置について別々に算出した尤度66によれば、テーブル{T0001}のカラム{C0012}で尤度66が一番大きいのはクラス{y4}であり、テーブル{T0001}のカラム{C0013}で重みパラメータベクトル65が一番大きいのもクラス{y4}であるが、テーブル{T0002}のカラム{C0022}で尤度66が一番大きいのはクラス{y2}である。しかし、単語分類部60は、出現位置を区別せずに単語NOにクラス{y4}を割り当てる。これにより、一致制約を充足する割当てを見つけることができる。次に、単語分類部60は、単語選択工程S831で、割当順単語リスト69の2番目にある単語ITEMを選択し、暫定クラス割当工程S832で、その単語の暫定正解クラスリスト68の先頭にあるクラス{y1}を選択し、単語ITEMにクラス{y1}を割り当てる。この時点で、テーブル{T0002}のカラム{C0022}について、カラム名に含まれるすべての単語についてクラスを割り当てたので、単語分類部60は、カラム選択工程S813で、クラスベクトル63を生成する。このように、単語分類部60は、すべての単語にクラスを割り当てたカラムから順に、クラスベクトル63を生成していく。テーブル{T0002}に属する他のカラムについては、クラスベクトル63をまだ生成していないので、単語分類部60は、排他制約違反ではないと判定する。このようにして、単語分類部60は、割当順単語リスト69の順に、単語にクラスを割り当てていく。分類算出工程S830が単語DATEまで終わったとする。この時点で、単語分類部60は、テーブル{T0001}のカラム{C0012}と、テーブル{T0002}のカラム{C0022}と、テーブル{T0003}のカラム{C0032}とについて、カラム名に含まれるすべての単語についてクラスを割り当て終わり、クラスベクトル63を生成している。次に、単語分類部60は、単語選択工程S831で、割当順単語リスト69の次にある単語PHONEを選択し、その単語の暫定正解クラスリスト68の先頭にあるクラス{y1}を選択し、単語PHONEにクラス{y1}を割り当てる。テーブル{T0001}のカラム{C0013}について、カラム名に含まれるすべての単語についてクラスを割り当てたので、単語分類部60は、カラム選択工程S813で、クラスベクトル63を生成する。しかし、生成したクラスベクトル63は、同じテーブル{T0001}のカラム{C0012}について生成したクラスベクトル63と一致しているので、単語分類部60は、排他制約違反であると判定する。そこで、単語分類部60は、暫定クラス割当工程S832に処理を戻し、単語PHONEの暫定正解クラスリスト68の2番目にあるクラス{y2}を選択し、単語PHONEにクラス{y2}を割り当て直す。これにより、排他制約を充足する割当てを見つけることができる。このようにして、教師なし学習だけでは識別が難しいサンプルにおいても、大域的な識別状況とタスクのヒューリスティクスに基づいて、正しいクラスを割り当てることができ、高精度なクラスタリングを実現できる。この実施の形態における関連語抽出方式関連カラム判定装置903、関連語分類装置は、テキストを含むデータから多クラス識別モデルを用いて関連語を抽出する。単語分類部60重みベクトル算出部は、単語のクラスを識別するためのモデルパラメータを、データ中に出現する単語に割り当てられた暫定正解クラスに基づいて最適化する。単語分類部60は、現在のモデルパラメータを使って求めたクラスの尤度に基づいて、クラス割り当てに関する制約を充足するクラスのなかで最尤のクラスを選択し、新たな暫定正解クラスとして単語に割り当てる。単語分類部60は、この2つを交互に反復処理した後に、同一クラスに分類された単語を関連語として抽出する。前記テキストを含むデータは、データベースのスキーマ定義データテーブルスキーマである。前記クラス割り当てに関する制約は、データ構造中の姉妹データ要素が、異なるクラスのデータ要素を有するような割り当てである。この実施の形態における関連語抽出方式によれば、関連語をテーブルスキーマ群から高い精度で自動抽出することができる。この実施の形態における関連語抽出方式は、類似した単語は類似した文脈で出現するとの仮定に基づいて、共起語の出現頻度ベクトルをもとに適当な重み付けを行って特徴ベクトルとし、その類似度を基準に関連語を抽出する。しかし、テーブルスキーマなどの構造化データは、新聞記事やウェブページなどと比べて、利用可能なデータ量が限定される。このため、共起頻度ベクトルがスパースとなり、共起語だけでは単語間の類似性を十分説明できないことがある。そこで、この実施の形態における関連語抽出方式は、更に、概念辞書を用いて特徴量を追加する。しかし、概念辞書を用いて追加した特徴量は、自然言語処理一般に存在する課題である曖昧性や多義性の影響を受ける。そこで、この実施の形態における関連語抽出方式は、以下の3つの仮定を導入して、単語の使い分けを判別する。仮定1:関連語は、出現文脈の特徴または概念辞書における登録階層が近い。仮定1は、特徴ベクトルのクラスタリングで関連語を抽出するための基本的な仮定である。仮定1は、特徴ベクトル64の構成に反映されている。文脈ベクトル54及び概念ベクトル44を含む特徴ベクトル64を使うことにより、仮定1に沿ったクラスタリングを実現する。仮定2:単語は、出現文脈に依らず一貫して同じ概念を表している。仮定2は、スパースなスキーマデータで頻度を集約するために導入するやや強い仮定である。仮定2は、上述の一致制約に反映されている。単語分類部60が、異なる位置に出現する同じ綴りの単語に対して、同じクラスを割り当てることにより、仮定2に沿ったクラスタリングを実現する。仮定3:カラム名は、テーブル内で異なる概念を表している。仮定3は、テーブル設計のヒューリスティックスに基づく最も強い仮定である。仮定3は、上述の排他制約に反映されている。カラム名が複数の単語で構成されている場合、カラム名が表わす概念は、それを構成する単語が表わす概念を総合したものと考えられる。そこで、仮定3に基づいて、単語分類部60は、同じテーブルに属する複数のカラムの間で、カラム名を構成する単語に割り当てたクラスの組合せが異なるよう、単語にクラスを割り当てる。上述の例において、PURCHASE_ORDERテーブルには、LINE_NOカラムとPHONE_NOカラムとが属する。仮に、単語LINEと単語PHONEとを同じクラスに分類したとすると、LINE_NOとPHONE_NOとを概念的に区別できなくなる。仮定3は、このような直観にそぐわないクラスタリングを回避するための仮定である。以上のように、この実施の形態における関連語抽出方式は、単語特徴ベクトルのクラスタリングにおいて、特徴ベクトルの類似度を尺度とするだけでなく、元データから取得するヒューリスティクスをクラス分類の一致制約ないし排他制約として利用して、クラスタリングをする。このように制約条件としてヒューリスティクスを利用する方式は、特徴ベクトルの類似度にペナルティを加えるようなアドホックな方式と異なり、教師あり学習で用いられる識別モデルを用いたクラスタリングにおいて匿名クラス割り当てに反映させて識別学習する方式である。このため、効果的にクラスタリングの精度を向上することができる。更に、この実施の形態における関連語抽出方式は、ヒューリスティクスとして、スキーマ構造中の姉妹データ要素同じテーブルに属するカラムは、異なる概念を表すよう設計されていることを仮定し、それゆえ、それらデータ要素は互いに異なるクラスのデータ要素を有することを利用する。この仮定は、スキーマデータから容易に取得可能で、かつ、スキーマ設計においては広く成立することが期待される。これにより、類似した単語の使い分けを混同することなくクラスタリングをすることができる。この実施の形態における関連語抽出方式は、本来区別して扱われるべき単語とそうでない単語とを判別し、関連語として抽出しないという、高精度な関連語抽出を実現する。また、この実施の形態における関連語抽出方式は、辞書に登録されている関連語の組み合わせに基づいて学習のためのサンプルを生成する必要がないので、対象ドメインの単語が辞書にあらかじめ十分登録されていない場合であっても適用可能であり、対象ドメインの単語が辞書に登録されていない状態であっても、高精度な関連語抽出を実現することができる。なお、文脈解析部50は、カラム名構成単語27の直前や直後に位置する単語に対応づけられた文脈ベクトル54の要素の値を1にするだけでなく、同じカラム名のなかで離れた位置にある単語に対応づけられた文脈ベクトル54の要素の値も1にする構成であってもよい。あるいは、文脈解析部50は、離れた位置にある単語に対応づけられた文脈ベクトル54の要素に、単語間の距離が遠くなるほど小さくなる数値を与える構成であってもよい。例えば、文脈解析部50は、2つ前もしくは2つ後の単語に対応づけられた文脈ベクトル54の要素の値を1/2、3つ前もしくは3つ後の単語に対応づけられた文脈ベクトル54の要素の値を1/3にする構成であってよい。また、特徴ベクトル生成部40は、カラム名構成単語27が表わす概念及びその上位概念に対応づけられた概念ベクトル44の要素の値を1にするだけでなく、カラム名構成単語27が表わす概念の下位概念に対応づけれらた要素の値も1にする構成であってもよい。あるいは、特徴ベクトル生成部40は、階層が離れた概念に対応づけられた概念ベクトル44の要素に、階層差が大きくなるほど小さくなる数値を与える構成であってもよい。例えば、特徴ベクトル生成部40は、すぐ上の上位概念に対応づけられた要素の値を1/2、2階層上の上位概念に対応づけれらた要素の値を1/3にする構成であってもよい。あるいは、特徴ベクトル生成部40は、カラム名構成単語27が多義語である場合、その意味の使用頻度に応じて、概念ベクトル44の要素に与える数値を按分する構成であってもよい。例えば、特徴ベクトル生成部40は、その単語の第一義である概念に対応づけられた要素の値を0.5、第二義である概念に対応づけられた要素の値を0.3、第三義である概念に対応づけられた要素の値を0.2にする構成であってもよい。また、クラスベクトル63は、排他制約違反を見つけるため、そのカラムのカラム名に含まれる単語に割り当てたクラスの組合せと、他のカラムのカラム名に含まれる単語に割り当てたクラスの組合せとが一致するか否かを判定するためのものである。単語分類部60は、クラスベクトル63を生成する代わりに、他のデータを使って、排他条件違反を見つける構成であってもよい。例えば、単語分類部60は、カラム名に含まれる単語に割り当てたクラスのリストや集合を生成し、生成したリストや集合を使って、そのカラムのカラム名に含まれる単語に割り当てたクラスの組合せと、他のカラムのカラム名に含まれる単語に割り当てたクラスの組合せとが一致するか否かを判定する構成であってもよい。また、単語分類部60重みベクトル算出部は、多クラスロジスティクス回帰ではなく、他の最適化手法を用いて、重みパラメータベクトル65重みベクトルを算出する構成であってもよい。あるいは、単語分類部60は、貪欲法ではなく、他のクラスタリング手法を用いて、単語をクラスタリングする構成であってもよい。実施の形態2.実施の形態2について、図21を用いて説明する。なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。この実施の形態における関連カラム抽出システム900の全体構成、関連カラム判定装置903などのハードウェア構成、関連カラム判定装置903のブロック構成は、実施の形態1と同様である。図21は、この実施の形態における文脈解析部50の動作の一例を示す説明するための図である。文脈解析部50特徴ベクトル生成部の一例。は、異なる位置に出現する同じ綴りの単語を区別せず、それぞれのカラム名構成単語27について、文脈ベクトル54を生成する。文脈ベクトル54の要素のうち、前置単語51及び後置単語52に対応づけられた要素は、その単語の前接単語及び後接単語の出現頻度を表わす。また、文脈ベクトル54の要素のうち、テーブル名構成単語53に対応づけられた要素は、その単語を含むカラムが属するテーブルであって、テーブル名構成単語53を含むテーブル名を有するテーブルの数を表わす。例えば、文脈解析部50は、それぞれのカラム名構成単語27について、すべてのカラムのなかから、その単語を含むカラム名を有するカラムを抽出して、カラム集合とする。文脈解析部50は、抽出したカラム集合に属するカラムのカラム名を構成するカラム名構成単語27のなかから、その単語に前接する前接単語を抽出して、前接単語集合とする。なお、前接単語集合において、文脈解析部50は、同じ綴りの単語を区別する。すなわち、その単語に前接する単語が同じ綴りであるカラムが複数ある場合、前接単語集合には、同じ綴りの単語が複数含まれる。文脈解析部50は、それぞれの前置単語51について、前接単語集合のなかから、その前置単語51と一致する単語を抽出する。文脈解析部50は、抽出した単語の数を、その前置単語51に対応づけられた文脈ベクトル54の要素の値とする。同様に、文脈解析部50は、抽出したカラム集合に属するカラムのカラム名を構成するカラム名構成単語27のなかから、その単語に後接する後接単語を抽出して、後接単語集合とする。後接単語集合においても、文脈解析部50は、同じ綴りの単語を区別する。文脈解析部50は、それぞれの後置単語52について、後接単語集合のなかから、その後置単語52と一致する単語を抽出する。文脈解析部50は、抽出した単語の数を、その後置単語52に対応づけられた文脈ベクトル54の要素の値とする。また、文脈解析部50は、すべてのテーブルのなかから、抽出したカラム集合に属するカラムが属するテーブルを抽出して、テーブル集合とする。なお、テーブル集合において、文脈解析部50は、同じテーブルを区別しない。すなわち、同じテーブルに含まれるカラムがカラム集合内に複数ある場合でも、テーブル集合には、そのテーブルが1つだけ含まれる。文脈解析部50は、テーブル集合に属するテーブルのテーブル名を構成する単語を抽出して、テーブル名構成単語集合とする。テーブル名構成単語集合において、文脈解析部50は、同じ綴りの単語を区別する。すなわち、異なるテーブルのテーブル名に同じ綴りの単語が含まれる場合、テーブル名構成単語集合には、同じ綴りの単語が複数含まれる。文脈解析部50は、それぞれのテーブル名構成単語53について、テーブル名構成単語集合のなかから、そのテーブル名構成単語53と一致する単語を抽出する。文脈解析部50は、抽出した単語の数を、そのテーブル名構成単語53に対応づけられた文脈ベクトル54の要素の値とする。例えば、単語NOが、PURCHASE_ORDERテーブルのLINE_NOカラムと、同じくPURCHASE_ORDERテーブルのPHONE_NOカラムと、ORDERテーブルのITEM_NOカラムとの3箇所に出現しているとする。単語NOについて、文脈解析部50は、LINE_NOカラムとPHONE_NOカラムとITEM_NOカラムとの3つのカラムからなる集合を生成して、カラム集合とする。文脈解析部50は、単語LINEと単語PHONEと単語ITEMとの3つの単語からなる集合を生成して、前接単語集合とする。文脈解析部50は、前置単語51に対応づけられた文脈ベクトル54の要素のうち、単語LINEに対応づけられた要素と、単語PHONEに対応づけられた要素と、単語ITEMに対応づけられた要素との3つの要素の値を1にし、それ以外の前置単語51に対応づけられた要素の値を0にする。また、文脈解析部50は、単語を含まない空集合を、後接単語集合とする。文脈解析部50は、後置単語52に対応づけられた文脈ベクトル54の要素の値をすべて0にする。また、文脈解析部50は、PURCHASE_ORDERテーブルとORDERテーブルとの2つのテーブルからなる集合を生成して、テーブル集合とする。文脈解析部50は、単語PURCHASEと単語ORDERと単語ORDERとからなる集合単語ORDERが2つ含まれる点に留意。を生成して、テーブル名構成単語集合とする。文脈解析部50は、テーブル名構成単語53に対応づけられた文脈ベクトル54の要素のうち、単語PURCHASEに対応づけられた要素の値を1にし、単語ORDERに対応づけられた要素の値を2にし、それ以外のテーブル名構成単語53に対応づけられた要素の値を0にする。文脈解析部50が、単語の出現位置を区別せず、異なる位置に出現した同じ綴りの単語を統合した文脈ベクトル54を生成するのに伴い、単語分類部60特徴ベクトル生成部の一例。も、単語の出現位置を区別せず、異なる位置に出現した同じ綴りの単語を統合した特徴ベクトル64を生成する。単語分類部60は、それぞれの単語について、文脈解析部50が生成した文脈ベクトル54と、特徴ベクトル生成部40が生成した概念ベクトル44とを結合して、特徴ベクトル64とする。同じ綴りの単語に対する特徴ベクトル64が一つしかないので、単語分類部60は、単語の出現位置を区別せず、それぞれのクラスに対する尤度66を算出する。したがって、単語分類部60は、平均尤度67を算出する必要がない。単語分類部60は、算出した尤度66に基づいて、単語をいずれかのクラスに分類する。以上、各実施の形態で説明した構成は、一例であり、他の構成であってもよい。例えば、異なる実施の形態で説明した構成を組み合わせた構成であってもよいし、本質的でない部分の構成を、他の構成で置き換えた構成であってもよい。以上説明した関連語分類装置関連カラム判定装置903は、複数の単語を関連する単語同士のグループクラスに分類する。関連語分類装置は、データを処理する処理装置911と、テキスト取得部単語抽出部20と、特徴ベクトル算出部特徴ベクトル生成部40、文脈解析部50、単語分類部60と、単語分類部60と、重みベクトル算出部単語分類部60とを有する。上記テキスト取得部は、上記処理装置を用いて、1つ以上の単語カラム名構成単語27からなる単語群カラム名を1つ以上含むテキストテーブルスキーマを複数取得する。上記特徴ベクトル算出部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトル64を算出する。上記単語分類部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類する。上記重みベクトル算出部は、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトル重みパラメータベクトル65であって、上記単語分類部による分類に最もよく適合する重みベクトルを算出する。上記単語分類部は、更に、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直す。これにより、構造化データなどを対象テキストとする場合でも、使い分けられている語を識別しつつ、関連語を抽出することができる。上記重みベクトル算出部は、更に、上記単語分類部が分類し直した回数が所定の回数より少ない場合と、上記単語分類部が分類し直した後の分類と上記単語分類部が分類し直す前の分類とが異なる場合とのうち少なくともいずれかの場合に、上記処理装置を用いて、上記単語分類部が分類し直した後の分類に基づいて、上記重みベクトルを算出し直す。重みベクトルの算出と、単語の分類とを交互に繰り返すことにより、使い分けられている語を識別しつつ、関連語を抽出することができる。上記単語分類部は、ある単語群に含まれる1つ以上の単語をそれぞれ分類したグループの組と、上記単語群と同じテキストに属する他の1つの単語群に含まれる1つ以上の単語をそれぞれ分類したグループの組とが異なるように、上記複数の単語を分類する。データベース定義などの構造化データの特徴に基づいて単語を分類するので、使い分けられている語を識別しつつ、関連語を抽出することができる。上記単語分類部は、ある単語を分類したグループと、上記複数のテキストのなかで上記単語と異なる位置に出現する上記単語と同一の単語を分類したグループとが同じになるように、上記複数の単語を分類する。データベース定義などの構造化データの特徴に基づいて単語を分類するので、使い分けられている語を識別しつつ、関連語を抽出することができる。上記特徴ベクトル算出部は、上記複数の単語のそれぞれについて、上記単語が表わす概念と、上記単語が属する単語群に属する他の単語前置単語51、後置単語52と、上記単語が属する単語群の名称テーブル名を構成する単語テーブル名構成単語53とのうち少なくともいずれかに基づいて、上記特徴ベクトルを算出する。単語が表わす一般的な概念や、単語が現れる文脈などに基づいて、単語を分類するので、使い分けられている語を識別しつつ、関連語を抽出することができる。上記テキスト取得部が取得するテキストは、データベースにおけるテーブルを定義するテーブル定義データである。上記単語群は、上記テーブルを構成するカラムのカラム名である。上記関連語分類装置は、更に、関連カラム判定部関連語決定部70を有する。上記関連カラム判定部は、上記処理装置を用いて、上記単語分類部があるカラムのカラム名を構成する1つ以上の単語をそれぞれ分類したグループの組と、上記単語分類部が別のカラムのカラム名を構成する1つ以上の単語をそれぞれ分類したグループの組とが一致する場合に、上記2つのカラムが、同一の内容を格納するカラム関連カラムである可能性があると判定する。単語の分類結果に基づいて、関連カラムである可能性があるカラムを判定するので、関連カラムを判別する作業の効率を高めることができる。"