(57)【要約】【課題】データベースの定義などの構造化データを対象とする場合でも、使い分けられている語を識別しつつ、関連語を抽出する。【解決手段】単語分類部６０は、単語のクラスを識別するためのモデルパラメータを、データ中に出現する単語に割り当てられた暫定正解クラスに基づいて最適化する。単語分類部６０は、現在のモデルパラメータを使って求めたクラスの尤度に基づいて、クラス割り当てに関する制約を充足するクラスのなかで最尤のクラスを選択し、新たな暫定正解クラスとして単語に割り当てる。単語分類部６０は、この２つを交互に反復処理した後に、同一クラスに分類された単語を関連語として抽出する。【選択図】図３
2013120534.tif 000002
【特許請求の範囲】
【請求項１】
複数の単語を関連する単語同士のグループに分類する関連語分類装置において、
データを処理する処理装置と、テキスト取得部と、特徴ベクトル算出部と、単語分類部と、重みベクトル算出部とを有し、
上記テキスト取得部は、上記処理装置を用いて、１つ以上の単語からなる単語群を１つ以上含むテキストを複数取得し、
上記特徴ベクトル算出部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトルを算出し、
上記単語分類部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類し、
上記重みベクトル算出部は、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトルであって、上記単語分類部による分類に最もよく適合する重みベクトルを算出し、
上記単語分類部は、更に、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直す
ことを特徴とする関連語分類装置。
【請求項２】
上記重みベクトル算出部は、更に、上記単語分類部が分類し直した回数が所定の回数より少ない場合と、上記単語分類部が分類し直した後の分類と上記単語分類部が分類し直す前の分類とが異なる場合とのうち少なくともいずれかの場合に、上記処理装置を用いて、上記単語分類部が分類し直した後の分類に基づいて、上記重みベクトルを算出し直す
ことを特徴とする請求項１に記載の関連語分類装置。
【請求項３】
上記単語分類部は、ある単語群に含まれる１つ以上の単語をそれぞれ分類したグループの組と、上記単語群と同じテキストに属する他の１つの単語群に含まれる１つ以上の単語をそれぞれ分類したグループの組とが異なるように、上記複数の単語を分類する
ことを特徴とする請求項１または請求項２に記載の関連語分類装置。
【請求項４】
上記単語分類部は、ある単語を分類したグループと、上記複数のテキストのなかで上記単語と異なる位置に出現する上記単語と同一の単語を分類したグループとが同じになるように、上記複数の単語を分類する
ことを特徴とする請求項１乃至請求項３のいずれかに記載の関連語分類装置。
【請求項５】
上記特徴ベクトル算出部は、上記複数の単語のそれぞれについて、上記単語が表わす概念と、上記単語が属する単語群に属する他の単語と、上記単語が属する単語群の名称を構成する単語とのうち少なくともいずれかに基づいて、上記特徴ベクトルを算出する
ことを特徴とする請求項１乃至請求項４のいずれかに記載の関連語分類装置。
【請求項６】
上記テキスト取得部が取得するテキストは、データベースにおけるテーブルを定義するテーブル定義データであり、上記単語群は、上記テーブルを構成するカラムのカラム名であり、
上記関連語分類装置は、更に、関連カラム判定部を有し、
上記関連カラム判定部は、上記処理装置を用いて、上記単語分類部があるカラムのカラム名を構成する１つ以上の単語をそれぞれ分類したグループの組と、上記単語分類部が別のカラムのカラム名を構成する１つ以上の単語をそれぞれ分類したグループの組とが一致する場合に、上記２つのカラムが、同一の内容を格納するカラムである可能性があると判定する
ことを特徴とする請求項１乃至請求項５のいずれかに記載の関連語分類装置。
【請求項７】
データを処理する処理装置を有するコンピュータが実行することにより、上記コンピュータを請求項１乃至請求項６のいずれかに記載の関連語分類装置として機能させることを特徴とするコンピュータプログラム。
【請求項８】
データを処理する処理装置と、テキスト取得部と、特徴ベクトル算出部と、単語分類部と、重みベクトル算出部とを有する関連語分類装置が、複数の単語を関連する単語同士のグループに分類する関連語分類方法において、
上記テキスト取得部が、上記処理装置を用いて、１つ以上の単語からなる単語群を１つ以上含むテキストを複数取得し、
上記特徴ベクトル算出部が、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトルを算出し、
上記単語分類部が、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類し、
上記重みベクトル算出部が、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトルであって、上記単語分類部による分類に最もよく適合する重みベクトルを算出し、
上記単語分類部が、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直す
ことを特徴とする関連語分類方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の単語を関連する単語同士のグループに分類する関連語分類装置に関する。
【背景技術】
【０００２】
単語の特徴ベクトル間の類似度に基づいて、単語をクラスタリングして、関連語を抽出する技術がある。単語の特徴ベクトルの要素には、例えば、その単語と共起する文脈語の出現頻度などが用いられる。単語の特徴ベクトル間の類似度には、例えば、特徴ベクトルの内積などが用いられる。クラスタリングの方式には、例えば、ｋ−ｍｅａｎｓ法や階層クラスタリング法、あるいは複数のクラスタリング法を組み合わせた方式などが用いられる。
また、同義語辞書を用いて、２つの単語が同義語である同義語ペアと、同義語でない非同義語ペアとを多数生成し、生成したペアをサポートベクターマシン（ＳＶＭ）などの教師あり学習モデルに学習させることにより、２つの単語が同義語であるか否かを識別する分類器を形成する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１１８５２６号公報
【非特許文献】
【０００４】
【非特許文献１】Ｂｅｌｌｅｇａｒｄａ，Ｊ．Ｒ．他「Ａ  ｎｏｖｅｌ  ｗｏｒｄ  ｃｌｕｓｔｅｒｉｎｇ  ａｌｇｏｒｉｔｈｍ  ｂａｓｅｄ  ｏｎ  ｌａｔｅｎｔ  ｓｅｍａｎｔｉｃ  ａｎａｌｙｓｉｓ」Ｐｒｏｃｓｅｅｄｉｎｇｓ  ｏｆ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｃｏｕｓｔｉｃｓ，Ｓｐｅｅｃｈ，ａｎｄ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ、ＩＣＡＳＳＰ−９６、Ｖｏｌ．１、１７２〜１７５ページ、１９９６年。
【非特許文献２】相澤彰子「大規模テキストコーパスを用いた語の類似度計算に関する考察」  情報処理学会論文誌、第４９巻第３号、１４２６〜１４３６ページ、２００８年３月。
【非特許文献３】「ＷｏｒｄＮｅｔ―Ａ  ｌｅｘｉｃａｌ  ｄａｔａｂａｓｅ  ｆｏｒ  Ｅｎｇｌｉｓｈ」ｈｔｔｐ：／／ｗｏｒｄｎｅｔ．ｐｒｉｎｃｅｔｏｎ．ｅｄｕ／ｗｏｒｄｎｅｔ／
【非特許文献４】Ｒｕｂｉｎ，Ｄ．Ｂ．「Ｉｔｅｒａｔｉｖｅｌｙ  ｒｅｗｅｉｇｈｔｅｄ  ｌｅａｓｔ  ｓｑｕａｒｅｓ」Ｅｎｃｙｃｌｏｐｅｄｉａ  ｏｆ  Ｓｔａｔｉｓｔｉｃａｌ  Ｓｃｉｅｎｃｅｓ、第４巻、２７２〜２７５ページ、Ｗｉｌｅｙ、１９８３年。
【非特許文献５】Ｂｉｓｈｏｐ，Ｃ．Ｍ．、Ｉ．Ｔ．Ｎａｂｎｅｙ「Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ  ａｎｄ  Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ：  Ａ  Ｍａｔｌａｂ  Ｃｏｍｐａｎｉｏｎ」Ｓｐｒｉｎｇｅｒ、１９９８年。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データベースでは、テーブルの名称やカラムの名称として、データベース設計者が任意に名づけた名称が用いられる。このため、異なるデータベースを統合する場合などにおいて、対応するカラムを判別するのに、非常な労力が必要となる。
テーブル名やカラム名には、通常、自然言語に由来する単語が用いられる。このため、上述したような関連語抽出技術を応用することにより、似たような意味の名称を持つカラムを抽出できれば、対応するカラムを判別するのを助けることができる。
しかし、データベースのテーブルを定義するテーブルスキーマやその他の構造化データに対して、上述の技術を適用するには、以下のような課題が存在する。
第一に、構造化データにおいては、単語間の文脈上の結合が疎であり、文脈に基づいて形成した特徴ベクトルでは、関連語を適切に抽出できない場合がある。このため、本来区別して扱われるべき単語とそうでない単語とを識別することができず、関連語として抽出されてしまう場合がある。
第二に、同義語辞書を用いる方式では、対象となる構造化データに含まれる単語が、同義語辞書にあらかじめ十分登録されていることが必要となり、そのような同義語辞書が存在しない場合は、適用することができない。
【０００６】
この発明は、例えば、データベースの定義などの構造化データを対象とする場合でも、使い分けられている語を識別しつつ、関連語を抽出することを目的とする。
【課題を解決するための手段】
【０００７】
この発明にかかる関連語分類装置は、
複数の単語を関連する単語同士のグループに分類する関連語分類装置において、
データを処理する処理装置と、テキスト取得部と、特徴ベクトル算出部と、単語分類部と、重みベクトル算出部とを有し、
上記テキスト取得部は、上記処理装置を用いて、１つ以上の単語からなる単語群を１つ以上含むテキストを複数取得し、
上記特徴ベクトル算出部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトルを算出し、
上記単語分類部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類し、
上記重みベクトル算出部は、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトルであって、上記単語分類部による分類に最もよく適合する重みベクトルを算出し、
上記単語分類部は、更に、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直す
ことを特徴とする。
【発明の効果】
【０００８】
この発明によれば、データベースの定義などの構造化データを対象とする場合でも、使い分けられている語を識別しつつ、関連語を抽出することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における関連カラム抽出システム９００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１における関連カラム判定装置９０３などのハードウェア資源の一例を示すハードウェア構成図。
【図３】実施の形態１における関連カラム判定装置９０３の構成の一例を示すブロック構成図。
【図４】実施の形態１における関連語抽出元データ１０の一例を示す図。
【図５】実施の形態１における概念辞書データ３０の一例を示す図。
【図６】実施の形態１における概念辞書データ３０が表わす概念の間の階層構造の一例を示す図。
【図７】実施の形態１における概念辞書データ３０が表わす概念の間の階層構造の一例を示す図。
【図８】実施の形態１における単語抽出部２０の動作の一例を説明するための図。
【図９】実施の形態１における文脈解析部５０の動作の一例を説明するための図。
【図１０】実施の形態１における特徴ベクトル生成部４０の動作の一例を説明するための図。
【図１１】実施の形態１における単語分類部６０の動作の一例を説明するための図。
【図１２】実施の形態１における単語分類部６０の動作の一例を説明するための図。
【図１３】実施の形態１における単語分類部６０の動作の一例を説明するための図。
【図１４】実施の形態１における単語分類部６０の動作の一例を説明するための図。
【図１５】実施の形態１における関連語決定部７０の動作の一例を説明するための図。
【図１６】実施の形態１における関連抽出処理Ｓ８００の流れの一例を示すフロー図。
【図１７】実施の形態１における単語分類処理Ｓ８０４の流れの一例を示すフロー図。
【図１８】実施の形態１における初期化工程Ｓ８１０の流れの一例を示すフロー図。
【図１９】実施の形態１における分類算出工程Ｓ８３０の流れの一例を示すフロー図。
【図２０】実施の形態１における分類算出工程Ｓ８３０単語分類部６０の動作の一例を説明するための図。
【図２１】実施の形態２における文脈解析部５０の動作の一例を示す説明するための図。
【発明を実施するための形態】
【００１０】
実施の形態１．
実施の形態１について、図１〜図２０を用いて説明する。
【００１１】
図１は、この実施の形態における関連カラム抽出システム９００の全体構成の一例を示すシステム構成図である。
【００１２】
関連カラム抽出システム９００は、一または複数のデータベースにおいて、テーブルを構成するカラムのなかから、関連カラムである可能性が高い複数のカラムを抽出する。関連カラムとは、互いに異なるテーブルに属する複数のカラムであって、相当する内容を格納するカラムのことである。関連カラム抽出システム９００は、カラムに付けられた名称（カラム名）に基づいて、関連カラムである可能性が高いカラムを抽出する。
関連カラム抽出システム９００は、例えば、データベース定義記憶装置９０１と、概念辞書記憶装置９０２と、関連カラム判定装置９０３とを有する。
【００１３】
データベース定義記憶装置９０１は、データベースを定義するデータベース定義データを記憶している。
概念辞書記憶装置９０２は、概念辞書を表わす概念辞書データを記憶している。概念辞書とは、自然言語における単語の意味や、複数の単語の間の意味の関係（同意語、類義語、反意語、上位概念・下位概念など）を記載した辞書である。概念辞書記憶装置９０２が記憶した概念辞書データは、例えば、汎用の大語彙概念辞書を表わす。
関連カラム判定装置９０３（関連語分類装置の一例。）は、データベース定義記憶装置９０１が記憶したデータベース定義データから、カラム名を取得し、概念辞書記憶装置９０２が記憶した概念辞書データを使って、関連カラムである可能性が高いカラムを抽出する。関連カラム判定装置９０３は、例えば、抽出したカラムを表示して、関連カラム抽出システム９００の利用者に提示する。
関連カラム抽出システム９００の利用者は、関連カラム判定装置９０３が提示したカラムの内容を確認して、関連カラムであるか否かを判断する。
【００１４】
図２は、この実施の形態における関連カラム判定装置９０３などのハードウェア資源の一例を示すハードウェア構成図である。
【００１５】
データベース定義記憶装置９０１、概念辞書記憶装置９０２、関連カラム判定装置９０３は、例えば、処理装置９１１と、入力装置９１２と、出力装置９１３と、記憶装置９１４とを有するコンピュータである。
処理装置９１１は、記憶装置９１４が記憶したコンピュータプログラムを実行することにより、データを処理し、コンピュータ全体を制御する。なお、コンピュータは、処理装置９１１を複数有する構成であってもよい。
記憶装置９１４は、処理装置９１１が実行するコンピュータプログラムや、処理装置９１１が処理するデータなどを記憶する。例えば、記憶装置９１４は、処理途中の一時的なデータなどを記憶する揮発性の記憶装置である。あるいは、記憶装置９１４は、コンピュータプログラムや永続的なデータなどを記憶する不揮発性の記憶装置である。また、例えば、記憶装置９１４は、半導体記憶素子を集積した集積回路や大規模集積回路である。あるいは、記憶装置９１４は、磁気ディスクや光学ディスクなどの記憶媒体を用いる外部記憶装置である。なお、コンピュータは、記憶装置９１４を複数有する構成であってもよい。複数の記憶装置９１４は、同じ種類の記憶装置であってもよいし、異なる種類の記憶装置であってもよい。
入力装置９１２は、コンピュータの外部から情報を入力して、処理装置９１１が処理できるデータに変換する。例えば、入力装置９１２は、操作者による操作を入力するキーボードやマウスなどの操作入力装置である。あるいは、入力装置９１２は、静止画像や動画像を入力するカメラやスキャナ装置などの画像入力装置である。あるいは、入力装置９１２は、音声を入力するマイクなどの音声入力装置である。あるいは、入力装置９１２は、温度や明るさや圧力などの物理量を測定する温度センサや照度センサや圧力センサなどのセンサ装置である。あるいは、入力装置９１２は、アナログ信号をデジタルデータに変換するアナログデジタル変換装置である。あるいは、入力装置９１２は、外部の装置がコンピュータに対して送信した信号を受信して復調する受信装置である。なお、コンピュータは、入力装置９１２を複数有する構成であってもよい。複数の入力装置９１２は、同じ種類の入力装置であってもよいし、異なる種類の入力装置であってもよい。また、入力装置９１２が変換したデータは、処理装置９１１が直接処理する構成であってもよいし、記憶装置９１４が一時的に記憶する構成であってもよい。
出力装置９１３は、処理装置９１１が処理したデータや、記憶装置９１４が記憶したデータなどを変換して、コンピュータの外部に出力する。例えば、出力装置９１３は、テキストや画像などを表示する表示装置である。あるいは、出力装置９１３は、テキストや画像などを印刷する印刷装置である。あるいは、出力装置９１３は、音声を出力するスピーカなどの音声出力装置である。あるいは、出力装置９１３は、デジタルデータをアナログ信号に変換するデジタルアナログ変換装置である。あるいは、出力装置９１３は、変調した信号を外部の装置に対して送信する送信装置である。なお、コンピュータは、出力装置９１３を複数有する構成であってもよい。複数の出力装置９１３は、同じ種類の出力装置であってよいし、異なる種類の出力装置であってもよい。
【００１６】
以下に説明する機能ブロックは、記憶装置９１４が記憶したコンピュータプログラムを処理装置９１１が実行することによって実現することができる。なお、一つのコンピュータを用いて一つの装置を実現する構成であってもよいし、複数のコンピュータを用いて一つの装置を実現する構成であってもよい。逆に、一つのコンピュータを用いて複数の装置を実現する構成であってもよい。
また、これらの機能ブロックのうちのいくつか、あるいは、そのすべてを、コンピュータを用いて実現するのではなく、例えば、デジタル回路やアナログ回路などの電気的構成や、機械的構成など、他の構成を用いて実現してもよい。
【００１７】
図３は、この実施の形態における関連カラム判定装置９０３の構成の一例を示すブロック構成図である。
【００１８】
関連カラム判定装置９０３は、例えば、単語抽出部２０と、特徴ベクトル生成部４０と、文脈解析部５０と、単語分類部６０と、関連語決定部７０とを有する。
【００１９】
単語抽出部２０（テキスト取得部の一例。）は、処理装置９１１を用いて、関連語抽出元データ１０（テキストの一例。）から、分類対象となる単語を抽出する。
例えば、単語抽出部２０は、データベース定義記憶装置９０１が記憶したデータベース定義データから、関連語抽出元データ１０として、テーブルスキーマを取得する。テーブルスキーマは、データベースのテーブルを定義するデータである。単語抽出部２０は、処理装置９１１を用いて、取得した関連語抽出元データ１０から、テーブルのカラム名を構成する単語を抽出する。
テーブルスキーマは、１つ以上のカラム名（単語群の一例。）を含む。カラム名は、データベースの設計者が任意に名付ける文字列であるが、その内容に関連する自然言語の単語や、複数の単語を組み合わせたものを使う場合が多い。例えば、複数の単語を「＿」（アンダースコア）などの区切り文字を使って連結したものをカラム名とする。
例えば、単語抽出部２０は、関連語抽出元データ１０から、カラム名を取得する。単語抽出部２０は、取得したカラム名に区切り文字が含まれているか否かを判定する。区切り文字が含まれていない場合、単語抽出部２０は、取得したカラム名が１単語からなると判定し、取得したカラム名をそのまま単語として抽出する。区切り文字が含まれている場合、単語抽出部２０は、取得したカラム名を区切り文字を境にして複数の文字列に分解し、分解した複数の文字列を単語として抽出する。
【００２０】
特徴ベクトル生成部４０（特徴ベクトル算出部の一例。）は、単語抽出部２０が抽出した各単語を、概念ベクトルに変換する。
例えば、特徴ベクトル生成部４０は、単語抽出部２０が抽出した単語それぞれについて、概念辞書記憶装置９０２が記憶した概念辞書データ３０に基づいて、概念ベクトルを生成する。概念ベクトルとは、単語の意味や、他の単語との間の意味の関係などを表わす複数の数値からなるベクトルである。例えば、概念ベクトルの各要素は、それぞれ異なる概念に対応づけられていて、「１」または「０」の値を取る。概念ベクトルの要素の値が「１」である場合、その単語が表わす概念が、その要素が対応づけられている概念またはその下位概念であることを表わし、「０」である場合、その単語が表わす概念が、その要素が対応づけられている概念でもその下位概念でもないことを表わす。
【００２１】
文脈解析部５０（特徴ベクトル算出部の一例。）は、処理装置９１１を用いて、単語抽出部２０が抽出した各単語のテーブル構造やカラム構造上の位置関係を解析する。
例えば、文脈解析部５０は、単語抽出部２０が抽出した単語それぞれについて、文脈ベクトルを生成する。文脈ベクトルとは、その単語と、他の単語との間の文脈上の位置関係などを表わす複数の数値からなるベクトルである。例えば、文脈ベクトルの各要素は、前接語グループと、後接語グループと、テーブル名グループとの３つのグループのうちのいずれかに属する。前接語グループに属する各要素は、それぞれ異なる単語に対応づけられていて、「１」または「０」の値を取る。前接語グループに属する要素の値が「１」である場合、その単語を含むカラム名において、その要素が対応づけられている単語の直後にその単語が連結していることを表わす。前接語グループに属する要素の値が「０」である場合、その単語を含むカラム名において、その単語が先頭の単語である（カラム名が１単語で構成されている場合を含む。）か、あるいは、その要素が対応づけられている単語以外の単語の直後にその単語が連結していることを表わす。後接語グループに属する各要素は、それぞれ異なる単語に対応づけられていて、「１」または「０」の値を取る。後接語グループに属する要素の値が「１」である場合、その単語を含むカラム名において、その単語の直後に、その要素が対応づけれられている単語が連結していることを表わす。後接語グループに属する要素の値が「０」である場合、その単語を含むカラム名において、その単語が末尾の単語である（カラム名が１単語で構成されている場合を含む。）か、あるいは、その単語の直後にその要素が対応づけられている単語以外の単語が連結していることを表わす。テーブル名グループに属する各要素は、それぞれ異なる単語に対応づけられていて、「１」または「０」の値を取る。テーブル名グループに属する要素の値が「１」である場合、その単語を含むカラム名を有するカラムが属するテーブルの名称（テーブル名）に、その要素が対応づけられている単語が含まれることを表わす。テーブル名グループに属する要素の値が「０」である場合、その単語を含むカラム名を有するカラムが属するテーブルのテーブル名に、その要素が対応づけられている単語が含まれないことを表わす。
【００２２】
単語分類部６０は、処理装置９１１を用いて、単語の概念ベクトルと単語の出現文脈とに基づいて、単語のクラスタリングを行って、各単語のクラス尤度を決定する。単語分類部６０は、算出したクラス尤度に基づいて、各クラスより単語を抽出する。
例えば、単語分類部６０は、特徴ベクトル生成部４０が生成した概念ベクトルと、文脈解析部５０が生成した文脈ベクトルとに基づいて、単語抽出部２０が抽出した複数の単語をクラスタリングする。例えば、単語分類部６０は、単語抽出部２０が抽出した単語それぞれについて、あらかじめ定められた数のクラスそれぞれに属する尤度を算出する。単語分類部６０は、単語抽出部２０が抽出した単語それぞれについて、算出した尤度に基づいて、その単語がどのクラスに属するかを判定する。
【００２３】
関連語決定部７０は、処理装置９１１を用いて、単語分類部６０がクラスごとに抽出した単語群に基づいて、関連カラムである可能性が高いカラムを抽出する。
例えば、関連語決定部７０は、あるテーブルに属するカラムのカラム名を構成する単語を分類したクラスの組と、別のテーブルに属するカラムのカラム名を構成する単語を分類したクラスの組とが一致する場合に、その２つのカラムは、関連カラムである可能性が高いと判定する。
関連語決定部７０は、処理装置９１１を用いて、判定した結果を関連語データ８０として出力する。
【００２４】
図４は、この実施の形態における関連語抽出元データ１０の一例を示す図である。
【００２５】
この例において、関連語抽出元データ１０は、データベース定義記憶装置９０１が記憶しているデータベース定義データに含まれるテーブルスキーマである。この例に示した３つの関連語抽出元データ１０ａ〜１０ｃは、それぞれ、１つずつのテーブルを定義している。
関連語抽出元データ１０ａは、「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲ」というテーブル名のテーブル（以下、「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブル」と呼ぶ。他も同様。）を定義している。ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブルは、ＯＲＤＥＲ＿ＤＡＴＥカラムと、ＬＩＮＥ＿ＮＯカラムと、ＰＨＯＮＥ＿ＮＯカラムとを有する。ＯＲＤＥＲ＿ＤＡＴＥカラムは、日付型である。ＬＩＮＥ＿ＮＯカラムは、８桁の数値型である。ＰＨＯＮＥ＿ＮＯカラムは、１０文字の固定長文字列型である。例えば、ＯＲＤＥＲ＿ＤＡＴＥカラムは、発注日を格納する。ＬＩＮＥ＿ＮＯカラムは、商品番号を格納する。ＰＨＯＮＥ＿ＮＯカラムは、電話番号を格納する。
関連語抽出元データ１０ｂは、ＯＲＤＥＲテーブルを定義している。ＯＲＤＥＲテーブルは、ＯＤＲ＿ＤＡＴカラムと、ＩＴＥＭ＿ＮＯカラムと、ＴＥＬカラムと、ＦＡＸカラムとを有する。ＯＤＲ＿ＤＡＴカラムは、日付型である。ＩＴＥＭ＿ＮＯカラムは、６桁の数値型である。ＴＥＬカラムは、８文字の固定長文字列型である。ＦＡＸカラムは、８文字の固定長文字列型である。例えば、ＯＤＲ＿ＤＡＴカラムは、発注日を格納する。ＩＴＥＭ＿ＮＯカラムは、商品番号を格納する。ＴＥＬカラムは、電話番号を格納する。ＦＡＸカラムは、ファクシミリ番号を格納する。
関連語抽出元データ１０ｃは、ＳＨＩＰＭＥＮＴテーブルを定義している。ＳＨＩＰＭＥＮＴテーブルは、ＰＲＯＤＵＣＴカラムと、ＰＲＯＤ＿ＴＹＰＥカラムとを有する。ＰＲＯＤＵＣＴカラムは、８桁の数値型である。ＰＲＯＤ＿ＴＹＰＥカラムは、最大１２８文字の可変長文字列型である。
【００２６】
この例において、ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブルのＯＲＤＥＲ＿ＤＡＴＥカラムと、ＯＲＤＥＲテーブルのＯＤＲ＿ＤＡＴカラムとは、いずれも発注日を格納するカラムであり、関連カラムである。また、ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブルのＬＩＮＥ＿ＮＯカラムと、ＯＲＤＥＲテーブルのＩＴＥＭ＿ＮＯカラムと、ＳＨＩＰＭＥＮＴテーブルのＰＲＯＤＵＣＴカラムとは、いずれも商品番号を格納するカラムであり、関連カラムである。また、ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブルのＰＨＯＮＥ＿ＮＯカラムと、ＯＲＤＥＲテーブルのＴＥＬカラムとは、いずれも電話番号を格納するカラムであり、関連カラムである。
【００２７】
このように異なるシステム向けに定義されたテーブルスキーマや、異なるシステム設計者が定義したテーブルスキーマでは、名称は異なるものの、相当する内容を格納するカラムが含まれることがある。
このようなカラム間の対応関係を分析する作業は、既存の業務システム間で統合・最適化を行ったり、既存の複数のデータベースを連携させた新たなアプリケーションを構築したりする際に必須の作業である。関連カラム抽出システム９００は、カラム名に含まれる単語の対応関係を自動推定することにより、関連カラムである可能性が高いカラムを抽出し、既存システムの大量のカラム間の対応を分析する作業を効率化する。
【００２８】
図５は、この実施の形態における概念辞書データ３０の一例を示す図である。
【００２９】
概念辞書データ３０は、例えば、複数の概念データ３１を有する。それぞれの概念データ３１は、１つの概念を表わす。
概念データ３１は、例えば、概念識別子３２と、概念表示語３３と、上位概念識別子３４とを有する。
【００３０】
概念識別子３２は、識別番号など、その概念データ３１を一意に識別するための識別子である。
概念表示語３３は、その概念を表わす単語あるいは連語を表わす。同じ概念を表わす単語あるいは連語が複数ある場合、概念表示語３３は、複数の単語あるいは連語を「，」（カンマ）などの区切り文字で連結したリストである。また、一つの単語あるいは連語に複数の意味がある場合、同じ単語が異なる概念データ３１の概念表示語３３のなかに出現してもよい。
上位概念識別子３４は、その概念の上位概念を表わす概念データ３１の概念識別子３２である。ある概念の上位概念の更に上位概念も、その概念の上位概念であるといえるが、上位概念の上位概念は、上位概念識別子３４を辿ることにより判別可能なので、上位概念識別子３４は、直上の上位概念だけを表わす。なお、上位概念が存在しない概念の場合、上位概念識別子３４は、空欄であってもよい。また、直上の上位概念が複数ある場合、上位概念識別子３４は、複数の概念識別子３２を「，」（カンマ）などの区切り文字で連結したリストであってもよい。
【００３１】
例えば、概念識別子３２が「００００１７４０」の概念（以下「概念｛００００１７４０｝」と呼ぶ。他も同様。）は、単語「ｅｎｔｉｔｙ」が表わす意味の一つに対応した概念である。概念｛００００１７４０｝は、最上位概念であって、上位概念が存在しない。
また、単語「ｏｂｊｅｃｔ」が表わす意味の一つと、連語「ｐｈｙｓｉｃａｌ  ｏｂｊｅｃｔ」が表わす意味の一つとは、同じ意味であって、概念｛００００２６８４｝に対応している。概念｛００００２６８４｝のすぐ上の上位概念は、概念｛００００１９３０｝である。
また、単語「ｌｉｎｅ」には、非常に多くの意味がある。例えば、そのなかの一つは、単語「ｃａｂｌｅ」や連語「ｔｒａｎｓｍｉｓｓｉｏｎ  ｌｉｎｅ」の意味の一つと同じであって、概念｛０２９３７５５２｝に対応している。また別の一つは、連語「ｒａｉｌｗａｙ  ｌｉｎｅ」や連語「ｒａｉｌ  ｌｉｎｅ」の意味の一つと同じであって、概念｛０３６７６５９８｝に対応している。
【００３２】
なお、データベースのカラム名に使用できる文字種の制限により、カラム名には、英語の単語を使うことが多いので、この例における概念辞書データ３０が表わす概念辞書は、英語の辞書である。しかし、概念辞書データ３０が表わす概念辞書は、英語の辞書に限らず、日本語など他の言語の辞書であってもよいし、複数の言語を含む辞書であってもよい。
【００３３】
図６及び図７は、この実施の形態における概念辞書データ３０が表わす概念の間の階層構造の一例を示す図である。
【００３４】
２つの図は、概念｛００００１７４０｝（ｅｎｔｉｔｙ）を頂点とする階層構造を示している。なお、図を分割しているが、全体として一つの階層構造をなす。図６上部にある「ｍａｔｔｅｒ」は、同図下部にある「ｍａｔｔｅｒ」と同一であり、つながっている。また、図６にある「ａｂｓｔｒｕｃｔｉｏｎ／ａｂｓｔｒａｃｔ  ｅｎｔｉｔｙ」は、図７にある「ａｂｓｔｒｕｃｔｉｏｎ／ａｂｓｔｒａｃｔ  ｅｎｔｉｔｙ」と同一であり、つながっている。また、図６にある「ｄｏｃｕｍｅｎｔ」は、図７にある「ｄｏｃｕｍｅｎｔ」と同一であり、つながっている。また、図６にある「ｒｅｌａｔｉｏｎ」は、図７にある「ｒｅｌａｔｉｏｎ」と同一であり、つながっている。また、図７上部にある「ｐｓｙｃｈｏｌｏｇｉｃａｌ  ｆｅａｔｕｒｅ」は、同図下部にある「ｐｓｙｃｈｏｌｏｇｉｃａｌ  ｆｅａｔｕｒｅ」と同一であり、つながっている。
【００３５】
長円は、一つの概念を表わす。長円から上へ伸びる線は、上位概念を示す。長円から下へ伸びる線は、下位概念を示す。長円のなかに単語あるいは連語が記載されている場合、その概念を表わす単語あるいは連語を表わす。一つの長円のなかに複数の単語あるいは連語が記載されている場合、同じ概念を表わす同義語である。
【００３６】
概念間の階層構造は、概ね木構造であるが、一つの概念に１階層上の上位概念が複数ある場合（例えば、図６下部にある「ｓｕｂｓｔａｎｃｅ」。）があるので、厳密な意味での木構造ではない。
また、この図によれば、単語「ｌｉｎｅ」には、単語「ｐｒｏｄｕｃｔ」に比較的近い意味（図６にある「ｍｅｒｃｈａｎｄｉｓｅ／ｗａｒｅ／ｐｒｏｄｕｃｔ」の下位概念など。）もあるし、単語「ｐｈｏｎｅ」に比較的近い意味（図６にある「ｉｎｓｔｒｕｍｅｎｔａｌｉｔｙ／ｉｎｓｔｒｕｍｅｎｔａｔｉｏｎ」の下位概念など。）もあることがわかる。
【００３７】
図８は、この実施の形態における単語抽出部２０の動作の一例を説明するための図である。
【００３８】
テーブル名構成単語データ２１は、テーブル名を構成する単語を表わすデータである。テーブル名構成単語データ２１は、例えば、テーブル識別子２２と、１つ以上のテーブル名構成単語２３とを含む。テーブル識別子２２は、テーブルを一意に識別するための識別子である。単語抽出部２０は、１つのテーブルについて、１つのテーブル名構成単語データ２１を生成する。テーブル名構成単語２３は、テーブル識別子２２によって識別されるテーブルのテーブル名を構成する単語を表わす。
カラム名構成単語データ２４は、カラム名を構成する単語を表わすデータである。カラム名構成単語データ２４は、例えば、テーブル識別子２５と、カラム識別子２６と、１つ以上のカラム名構成単語２７とを含む。テーブル識別子２５は、そのカラムが属するテーブルのテーブル識別子２２である。カラム識別子２６は、カラムを一意に識別するための識別子である。単語抽出部２０は、１つのカラムについて、１つのカラム名構成単語データ２４を生成する。なお、カラム識別子２６は、カラム識別子２６単独でカラムを一意に識別できる識別子であってもよいし、テーブル識別子２５との組み合わせによりカラムを一意に識別できる識別子であってもよい。カラム名構成単語２７は、カラム識別子２６によって識別されるカラムのカラム名を構成する単語を表わす。
【００３９】
単語抽出部２０は、テーブルスキーマのテーブル名、カラム名の単語分割を行い、単語を抽出する。
例えば、ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブルについて、単語抽出部２０は、識別子「Ｔ０００１」を割り当ててテーブル識別子２２とする。単語抽出部２０は、テーブル名「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲ」を、区切り文字「＿」（アンダースコア）で単語「ＰＵＲＣＨＡＳＥ」と単語「ＯＲＤＥＲ」とに分割して、テーブル名構成単語２３とする。
また、ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブルのＯＲＤＥＲ＿ＤＡＴＥカラムについて、単語抽出部２０は、識別子「Ｃ００１１」を割り当ててカラム識別子２６とする。単語抽出部２０は、カラム名「ＯＲＤＥＲ＿ＤＡＴＥ」を、区切り文字「＿」（アンダースコア）で単語「ＯＲＤＥＲ」と単語「ＤＡＴＥ」とに分割して、カラム名構成単語２７とする。
【００４０】
図９は、この実施の形態における文脈解析部５０の動作の一例を説明するための図である。
【００４１】
前置単語５１は、カラム名構成単語２７を含むカラム名において、カラム名構成単語２７の直前に現れる単語である。後置単語５２は、カラム名構成単語２７を含むカラム名において、カラム名構成単語２７の直後に現れる単語である。テーブル名構成単語５３は、カラム名構成単語２７を含むカラムが属するテーブルのテーブル名を構成するテーブル名構成単語２３である。
【００４２】
例えば、文脈解析部５０は、単語抽出部２０が抽出したカラム名構成単語２７のなかから、前置単語５１を抽出する。文脈解析部５０は、カラム名構成単語２７のなかから、後接する単語が存在する単語だけを抽出して、前置単語５１とする。
また、文脈解析部５０は、単語抽出部２０が抽出したカラム名構成単語２７のなかから、後置単語５２を抽出する。文脈解析部５０は、カラム名構成単語２７のなかから、前接する単語が存在する単語だけを抽出して、後置単語５２とする。
また、文脈解析部５０は、単語抽出部２０が抽出したテーブル名構成単語２３を、テーブル名構成単語５３とする。
【００４３】
文脈ベクトル５４は、文脈解析部５０が生成する文脈ベクトルである。文脈解析部５０は、１つの単語について、１つの文脈ベクトル５４を生成する。文脈解析部５０は、異なる位置（カラムやテーブル）に出現する同じ綴りの単語を区別する。例えば、カラム名構成単語２７「ＮＯ」は、テーブル｛Ｔ０００１｝（ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブル）のカラム｛Ｃ００１２｝（ＬＩＮＥ＿ＮＯカラム）と、テーブル｛Ｔ０００１｝（ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブル）のカラム｛Ｃ００１３｝（ＰＨＯＮＥ＿ＮＯカラム）と、テーブル｛Ｔ０００２｝（ＯＲＤＥＲテーブル）のカラム｛Ｃ０２２２｝（ＩＴＥＭ＿ＮＯカラム）との３箇所に出現している。文脈解析部５０は、これら３箇所に出現したカラム名構成単語２７「ＮＯ」を区別して、それぞれについて、文脈ベクトル５４を生成する。
なお、前置単語５１や後置単語５２やテーブル名構成単語５３については、文脈解析部５０は、同じ綴りの単語を区別せず、１つの単語として取り扱う。
【００４４】
文脈ベクトル５４の各要素は、前置単語５１、後置単語５２及びテーブル名構成単語５３のうちのいずれかに対応づけられている。
例えば、文脈解析部５０は、抽出した前置単語５１と、後置単語５２と、テーブル名構成単語５３との数に基づいて、文脈ベクトル５４の次数を決定する。文脈解析部５０は、抽出した前置単語５１の数と、後置単語５２の数と、テーブル名構成単語５３の数とを合計して、文脈ベクトル５４の次数とする。
文脈解析部５０は、カラム名構成単語２７のそれぞれについて、単語抽出部２０が生成したカラム名構成単語データ２４に基づいて、そのカラム名構成単語２７の直前に位置する単語が存在するか否かを判定する。そのカラム名構成単語２７の直前に位置する単語が存在すると判定した場合、文脈解析部５０は、前置単語５１のなかから、そのカラム名構成単語２７の直前に位置する単語を選択する。文脈解析部５０は、文脈ベクトル５４の要素のうち、選択した前置単語５１に対応づけられた要素の値を「１」にし、それ以外の前置単語５１に対応づけられた要素の値を「０」にする。
文脈解析部５０は、単語抽出部２０が生成したカラム名構成単語データ２４に基づいて、そのカラム名構成単語２７の直後に位置する単語が存在するか否かを判定する。そのカラム名構成単語２７の直後に位置する単語が存在すると判定した場合、文脈解析部５０は、後置単語５２のなかから、そのカラム名構成単語２７の直後に位置する単語を選択する。文脈解析部５０は、文脈ベクトル５４の要素のうち、選択した後置単語５２に対応づけられた要素の値を「１」にし、それ以外の後置単語５２に対応づけられた要素の値を「０」にする。
文脈解析部５０は、単語抽出部２０が生成したテーブル名構成単語データ２１に基づいて、テーブル識別子２５によって識別されるテーブルを構成するテーブル名構成単語２３を取得する。文脈解析部５０は、テーブル名構成単語５３のなかから、取得したテーブル名構成単語２３を選択する。文脈解析部５０は、文脈ベクトル５４の要素のうち、選択したテーブル名構成単語５３に対応づけられた要素の値を「１」にし、それ以外のテーブル名構成単語５３に対応づけられた要素の値を「０」にする。
【００４５】
例えば、テーブル｛Ｔ０００１｝（ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブル）のカラム｛Ｃ００１１｝（ＯＲＤＥＲ＿ＤＡＴＥカラム）に出現する単語「ＯＲＤＥＲ」について、文脈解析部５０は、単語「ＯＲＤＥＲ」がカラム｛Ｃ００１１｝のカラム名の先頭に位置し、直前に位置する単語が存在しないことから、文脈ベクトル５４の要素のうち、前置単語５１に対応づけられた要素の値をすべて「０」にする。また、文脈解析部５０は、カラム｛Ｃ００１１｝のカラム名において単語「ＯＲＤＥＲ」の直後に単語「ＤＡＴＥ」が位置することから、後置単語５２に対応づけられた文脈ベクトル５４の要素のうち、「ＤＡＴＥ」に対応づけられた要素の値を「１」にし、他の要素の値を「０」にする。また、文脈解析部５０は、テーブル｛Ｔ０００１｝のテーブル名構成単語２３が「ＰＵＲＣＨＡＳＥ」及び「ＯＲＤＥＲ」であることから、テーブル名構成単語５３に対応づけられた文脈ベクトル５４の要素のうち、「ＰＵＲＣＨＡＳＥ」及び「ＯＲＤＥＲ」に対応づけられた要素の値を「１」にし、他の要素の値を「０」にする。
【００４６】
図１０は、この実施の形態における特徴ベクトル生成部４０の動作の一例を説明するための図である。
【００４７】
概念識別子４１は、カラム名構成単語２７が表わす概念についての概念辞書データ３０における概念識別子３２である。
例えば、特徴ベクトル生成部４０は、概念辞書データ３０のなかから、単語抽出部２０が抽出したカラム名構成単語２７のうちいずれかの単語を概念表示語３３のなかに含む概念データ３１を抽出し、抽出した概念データ３１に含まれる概念識別子３２を、概念識別子４１とする。また、特徴ベクトル生成部４０は、抽出した概念データ３１に含まれる上位概念識別子３４に基づいて、その概念の上位概念を表わす概念データ３１を、概念辞書データ３０のなかから抽出する。特徴ベクトル生成部４０は、抽出した概念データ３１に含まれる概念識別子３２を、概念識別子４１に追加する。特徴ベクトル生成部４０は、これを、最上位概念に到達するまで繰り返す。
【００４８】
概念ベクトル４４は、特徴ベクトル生成部４０が生成する概念ベクトルである。特徴ベクトル生成部４０は、１つの単語について１つの概念ベクトル４４を生成する。ただし、特徴ベクトル生成部４０は、文脈解析部５０と異なり、同じ綴りの単語を区別しない。概念ベクトル４４の要素の値は、出現位置によって変わることはない。例えば、カラム名構成単語２７「ＮＯ」は、３箇所に出現するが、特徴ベクトル生成部４０は、カラム名構成単語２７「ＮＯ」に対して１つの概念ベクトル４４を生成する。
【００４９】
概念ベクトル４４の各要素は、概念識別子４１にそれぞれ対応づけられている。
例えば、特徴ベクトル生成部４０は、抽出した概念識別子４１の数に基づいて、概念ベクトル４４の次数を決定する。特徴ベクトル生成部４０は、抽出した概念識別子４１の数を、概念ベクトル４４の次数とする。
特徴ベクトル生成部４０は、カラム名構成単語２７のそれぞれについて、概念辞書データ３０のなかから、そのカラム名構成単語２７が概念表示語３３のなかに含まれる概念データ３１を抽出する。特徴ベクトル生成部４０は、概念識別子４１のなかから、抽出した概念データ３１の概念識別子３２と一致する概念識別子４１を選択する。特徴ベクトル生成部４０は、抽出した概念データ３１に含まれる上位概念識別子３４に基づいて、その概念の上位概念を表わす概念データ３１を、概念辞書データ３０のなかから抽出する。特徴ベクトル生成部４０は、概念識別子４１のなかから、抽出した概念データ３１の概念識別子３２と一致する概念識別子４１を更に選択する。特徴ベクトル生成部４０は、これを、最上位概念に到達するまで繰り返す。このようにして、特徴ベクトル生成部４０は、カラム名構成単語２７の概念辞書における概念カテゴリパスに含まれる概念の概念識別子４１をすべて選択する。
特徴ベクトル生成部４０は、概念識別子４１の要素のうち、選択した概念識別子４１に対応づけられた要素の値を「１」にし、それ以外の概念識別子４１に対応づけられた要素の値を「０」にする。
【００５０】
図１１は、この実施の形態における単語分類部６０の動作の一例を説明するための図である。
【００５１】
この図の上側の部分は、文脈管理グラフである。文脈管理グラフは、テーブル、カラム、単語の構成関係を表わす。
ネットワークの最上位階層は、テーブル識別子２５によって識別される個々のテーブルである。第二階層は、カラム識別子２６によって識別される個々のカラムである。第三階層は、カラム名構成単語２７である。ただし、第三階層は、異なり語彙としてノードを生成している。
テーブルとカラムとを接続する線は、そのカラムがそのテーブルに属することを表わす。各テーブルは、１つ以上のカラムと接続している。各カラムは、いずれか１つのテーブルと接続している。
カラムとカラム名構成単語２７とを接続する線は、そのカラムのカラム名がそのカラム名構成単語２７を含むことを表わす。各カラムは、１つ以上のカラム名構成単語２７と接続している。同じ綴りの単語を異なるカラムが含む場合があるので、各カラム名構成単語２７は、複数のカラムと接続する場合がある。
【００５２】
この図の下側の部分は、クラスを表わす。クラスとは、カラム名構成単語２７を分類するグループのことである。クラスの数は、あらかじめ定められている。例えば、関連カラム判定装置９０３は、入力装置９１２を用いて、関連カラム抽出システム９００の利用者が設定したクラス数を入力し、記憶装置９１４を用いて、入力したクラス数を記憶しておく。
クラス識別子６１は、クラスを一意に識別するための識別子である。例えば、単語分類部６０は、処理装置９１１を用いて、記憶したクラス数に基づいて、それぞれのクラスを識別するクラス識別子６１を生成する。
【００５３】
単語分類部６０は、カラム名構成単語２７をいずれかのクラスに分類する。すなわち、単語分類部６０は、この図に示したカラム名構成単語２７（異なり単語）とクラスとの間を繋ぐ１対他の枝を引く。各カラム名構成単語２７は、１つのクラスと接続される。各クラスは、１つ以上のカラム名構成単語２７と接続される。
単語分類部６０は、与えられた条件に基づいて、条件を充足する最適なクラス割り当てを探索する。
【００５４】
図１２は、この実施の形態における単語分類部６０の動作の一例を説明するための図である。
【００５５】
クラス識別子６２は、カラム名構成単語２７を分類したクラスのクラス識別子６１である。
単語分類部６０は、処理装置９１１を用いて、単語抽出部２０が抽出したカラム名構成単語２７を、いずれかのクラスに分類する。単語分類部６０は、カラム名構成単語２７を分類したクラスのクラス識別子６１を、クラス識別子６２とする。
このとき、単語分類部６０は、異なる位置に出現する同じ綴りの単語を区別しない。すなわち、単語分類部６０は、異なる位置に出現する同じ綴りの単語を、必ず同じクラスに分類する。
【００５６】
単語分類部６０は、各テーブルの各カラムについて、クラスベクトル６３を生成する。単語分類部６０は、カラムの総数と同じ数のクラスベクトル６３を生成する。クラスベクトル６３は、そのカラムのカラム名に含まれるカラム名構成単語２７が分類されたクラスを表わす。
クラスベクトル６３の各要素は、クラス識別子６１によって識別されるクラスに対応づけられている。クラスベクトル６３の各要素は、そのカラムのカラム名に含まれるカラム名構成単語２７のなかに、そのクラスに分類された単語があるか否かを表わす。
例えば、単語分類部６０は、テーブル識別子２５で識別されるテーブルのカラム識別子２６で識別されるカラムそれぞれについて、あらかじめ定められたクラスの数を次数とするクラスベクトル６３を生成する。単語分類部６０は、単語抽出部２０が生成したカラム名構成単語データ２４と、分類したクラスのクラス識別子６２とに基づいて、クラス識別子６１のなかから、そのカラムに属する単語を分類したクラスのクラス識別子６２と一致するクラス識別子６１を選択する。単語分類部６０は、クラスベクトル６３の要素のうち、選択したクラス識別子６１に対応づけられた要素の値を「１」（そのカラムのカラム名に含まれるカラム名構成単語２７のなかに、そのクラスに分類された単語があることを表わす値の一例。）にし、それ以外の要素の値を「０」（そのカラムのカラム名に含まれるカラム名構成単語２７のなかに、そのクラスに分類された単語がないことを表わす値の一例。）にする。
【００５７】
例えば、単語分類部６０が、単語「ＯＲＤＥＲ」をクラス｛ｙ３｝に分類し、単語「ＤＡＴＥ」をクラス｛ｙ３｝に分類し、単語「ＬＩＮＥ」をクラス｛ｙ４｝に分類し、単語「ＮＯ」をクラス｛ｙ１｝に分類し、単語「ＴＥＬ」をクラス｛ｙ１｝に分類したとする。
テーブル｛Ｔ０００１｝（ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブル）のカラム｛Ｃ００１１｝（ＯＲＤＥＲ＿ＤＡＴＥカラム）について、単語分類部６０は、単語「ＯＲＤＥＲ」をクラス｛ｙ３｝に分類し、単語「ＤＡＴＥ」をクラス｛ｙ３｝に分類したことから、クラスベクトル６３の要素のうち、クラス｛ｙ３｝に対応づけられた要素の値を「１」にし、それ以外のクラスに対応づけられた要素の値を「０」にする。
【００５８】
また、テーブル｛Ｔ０００１｝のカラム｛Ｃ００１２｝（ＬＩＮＥ＿ＮＯカラム）について、単語分類部６０は、単語「ＬＩＮＥ」をクラス｛ｙ４｝に分類し、単語「ＮＯ」をクラス｛ｙ１｝に分類したことから、クラスベクトル６３の要素のうち、クラス｛ｙ１｝及びクラス｛ｙ４｝に対応づけられた要素の値を「１」にし、それ以外のクラスに対応づけられた要素の値を「０」にする。
また、テーブル｛Ｔ０００２｝（ＯＲＤＥＲテーブル）のカラム｛Ｃ００２３｝（ＴＥＬカラム）について、単語分類部６０は、単語「ＴＥＬ」をクラス｛ｙ１｝に分類したことから、クラスベクトル６３の要素のうち、クラス｛ｙ１｝に対応づけられた要素の値を「１」にし、それ以外のクラスに対応づけられた要素の値を「０」にする。
【００５９】
単語分類部６０は、同じテーブルに属するカラムについて生成したクラスベクトル６３が、互いに異なるよう、カラム名構成単語２７をクラスに分類する。
例えば、単語分類部６０は、すべてのカラム名構成単語２７を分類したのちにクラスベクトル６３を生成する。同じテーブルに属するカラムについて生成したクラスベクトル６３のなかに一致するものがある場合、単語分類部６０は、分類をやり直す。
あるいは、単語分類部６０は、カラム名構成単語２７を順に分類していき、カラム名に含まれるすべての単語を分類したカラムから順に、クラスベクトル６３を生成する。新たに生成したクラスベクトル６３が、同じテーブルに属する他のカラムについて既に生成してあるクラスベクトル６３と一致している場合、単語分類部６０は、最後に分類したカラム名構成単語２７のクラスを変更する。
【００６０】
図１３は、この実施の形態における単語分類部６０の動作の一例を説明するための図である。
【００６１】
単語分類部６０（特徴ベクトル生成部の一例。）は、処理装置９１１を用いて、文脈解析部５０が生成した文脈ベクトル５４と、特徴ベクトル生成部４０が生成した概念ベクトル４４とを結合して、特徴ベクトル６４を生成する。前置単語５１の次数がｍ、概念識別子４１の次数がｎであるとすると、特徴ベクトル６４の次数は、ｍ＋ｎである。
このとき、単語分類部６０は、文脈解析部５０と同様、異なる位置に出現する同じ綴りの単語を区別する。単語分類部６０は、文脈解析部５０が生成した文脈ベクトル５４の数と同じ数の特徴ベクトル６４を生成する。
特徴ベクトル６４の各要素は、前置単語５１、後置単語５２、テーブル名構成単語５３及び概念識別子４１のいずれかに対応づけられている。
【００６２】
例えば、単語分類部６０は、文脈解析部５０が生成した文脈ベクトル５４のそれぞれについて、特徴ベクトル生成部４０が生成した概念ベクトル４４のなかから、カラム名構成単語２７が一致する概念ベクトル４４を選択する。単語分類部６０は、文脈ベクトル５４のｍ個の要素と、選択した概念ベクトル４４のｎ個の要素との合計ｍ＋ｎ個の要素を持つ特徴ベクトル６４を生成する。
【００６３】
図１４は、この実施の形態における単語分類部６０の動作の一例を説明するための図である。
【００６４】
単語分類部６０（重みベクトル生成部の一例。）は、処理装置９１１を用いて、クラス識別子６１によって識別されるクラスそれぞれについて、重みパラメータベクトル６５（重みベクトルの一例。）を生成する。単語分類部６０は、あらかじめ定められたクラスの数と同じ数の重みパラメータベクトル６５を生成する。
重みパラメータベクトル６５の次数は、特徴ベクトル６４の次数と同じである。重みパラメータベクトル６５の各要素は、前置単語５１、後置単語５２、テーブル名構成単語５３及び概念識別子４１のいずれかに対応づけられている。
【００６５】
重みパラメータベクトル６５は、カラム名構成単語２７がそのクラスに属する尤度を算出するために用いられる。単語分類部６０は、あるカラム名構成単語２７について生成した特徴ベクトル６４と、あるクラスについて生成した重みパラメータベクトル６５との内積を算出することにより、そのカラム名構成単語２７がそのクラスに属する尤度を算出する。重みパラメータベクトル６５の各要素は、その要素が対応づけられた項目（前置単語５１、後置単語５２、テーブル名構成単語５３または概念識別子４１）が、単語がそのクラスに属する尤度にどのように影響するかを表わす。要素の値が正である場合、単語がその項目に該当するときに、その単語がそのクラスに属する尤度が高いことを意味する。逆に、要素の値が負である場合、単語がその項目に該当しないときに、その単語がそのクラスに属する尤度が高いことを意味する。要素の値の絶対値が大きいほど、影響が大きいことをを表わす。要素の値が０である場合、単語がその項目に該当するかしないかは、その単語がそのクラスに属するか否かと無関係であることを意味する。
【００６６】
最初に、単語分類部６０は、条件を充足する範囲内でランダムに、カラム名構成単語２７を分類する。
【００６７】
次に、単語分類部６０は、その分類に最適な重みパラメータベクトル６５を生成する。単語分類部６０は、例えば、多クラスロジスティック回帰の教師あり学習を用いる。単語分類部６０は、例えば、反復重み付き最小二乗法（ｉｔｅｒａｔｉｖｅ  ｒｅｗａｉｔｅｄ  ｌｅａｓｔ  ｓｑｕａｒｅｓ  ｍｅｔｈｏｄ）によって最適解を求めることにより、重みパラメータベクトル６５を算出する。
単語分類部６０は、算出した重みパラメータベクトル６５を用いて、カラム名構成単語２７がそれぞれのクラスに属する尤度を算出する。単語分類部６０は、算出した尤度を用いて、カラム名構成単語２７を分類し直す。単語分類部６０は、例えば、多クラスロジスティック回帰モデルを用いた制約付き教師なしクラスタリングにより、カラム名構成単語２７を分類する。
【００６８】
単語分類部６０は、新たに分類し直した分類と、分類し直す前の分類とを比較する。分類に変化があった場合、単語分類部６０は、重みパラメータベクトル６５を算出し直し、算出し直した重みパラメータベクトル６５を用いて、カラム名構成単語２７を分類し直す。単語分類部６０は、これを、分類が変化しなくなるまで繰り返す。
なお、分類が収束しない場合もあるので、繰り返しの最大回数をあらかじめ定めておく構成であってもよい。単語分類部６０は、繰り返し回数が最大回数に達した場合、処理を打ち切る。
【００６９】
図１５は、この実施の形態における関連語決定部７０の動作の一例を説明するための図である。
【００７０】
関連語決定部７０は、単語分類部６０による分類の結果に基づいて、関連カラムデータ７１を生成する。関連カラムデータ７１は、関連カラムである可能性の高い複数のカラムの組を表わす。関連カラムデータ７１は、例えば、テーブル識別子２５とカラム識別子２６との組を複数含む。関連カラムデータ７１は、テーブル識別子２５によって識別されるテーブルのカラム識別子２６によって識別されるカラムが、関連カラムである可能性が高いことを表わす。
【００７１】
関連語決定部７０は、例えば、単語分類部６０がカラム名構成単語２７を最終的に分類したクラスに基づいて単語分類部６０が生成したクラスベクトル６３に基づいて、クラスベクトル６３が一致する複数のカラムが存在するか否かを判定する。クラスベクトル６３が一致する複数のカラムが存在する場合、関連語決定部７０は、それぞれのカラムが属するテーブルのテーブル識別子２５とそれぞれのカラムのカラム識別子２６とに基づいて、関連カラムデータ７１を生成し出力する。
【００７２】
例えば、関連語決定部７０は、テーブル｛Ｔ０００１｝（ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲテーブル）のカラム｛Ｃ００１１｝（ＯＲＤＥＲ＿ＤＡＴＥカラム）について単語分類部６０が生成したクラスベクトル６３と、テーブル｛Ｔ０００２｝（ＯＲＤＥＲテーブル）のカラム｛Ｃ００２１｝（ＯＤＲ＿ＤＡＴカラム）について単語分類部６０が生成したクラスベクトル６３とが一致するので、この２つのカラムを、関連カラムである可能性が高いカラムであると判定し、この２つのカラムのテーブル識別子２５及びカラム識別子２６を含む関連カラムデータ７１を生成する。
また、関連語決定部７０は、テーブル｛Ｔ０００１｝のカラム｛Ｃ００１２｝（ＬＩＮＥ＿ＮＯカラム）について単語分類部６０が生成したクラスベクトル６３と、テーブル｛Ｔ０００２｝のカラム｛Ｃ００２２｝（ＩＴＥＭ＿ＮＯカラム）について単語分類部６０が生成したクラスベクトル６３とが一致するので、この２つのカラムを、関連カラムである可能性が高いカラムであると判定し、この２つのカラムのテーブル識別子２５及びカラム識別子２６を含む関連カラムデータ７１を生成する。
【００７３】
なお、関連語決定部７０は、更に、テーブル識別子２５によって識別されるテーブルのテーブル名や、カラム識別子２６によって識別されるカラムのカラム名などを、関連カラムデータ７１に含める構成であってもよい。
また、関連語決定部７０は、関連語抽出元データ１０から、各カラムのデータ型を取得し、取得したデータ型が一致しもしくは近いカラムだけを、関連カラムである可能性が高いカラムであると判定する構成であってもよい。
【００７４】
また、関連語決定部７０は、関連カラムデータ７１を出力するのではなく、単語分類部６０が同じクラスに分類したカラム名構成単語２７の組を出力する構成であってもよい。
【００７５】
図１６は、この実施の形態における関連抽出処理Ｓ８００の流れの一例を示すフロー図である。
【００７６】
関連抽出処理Ｓ８００において、関連カラム判定装置９０３は、概念辞書データ３０が記憶したデータベース定義データによって表わされる複数のテーブルの複数のカラムのなかから、関連カラムである可能性の高いカラムを抽出する。
関連抽出処理Ｓ８００は、例えば、単語抽出処理Ｓ８０１と、文脈解析処理Ｓ８０２と、概念解析処理Ｓ８０３と、単語分類処理Ｓ８０４と、関連決定処理Ｓ８０５とを有する。関連カラム判定装置９０３は、単語抽出処理Ｓ８０１から関連抽出処理Ｓ８００を開始する。
【００７７】
単語抽出処理Ｓ８０１において、単語抽出部２０は、データベース定義記憶装置９０１から関連語抽出元データ１０を取得する。単語抽出部２０は、取得した関連語抽出元データ１０から、カラム名構成単語２７を抽出する。
文脈解析処理Ｓ８０２において、文脈解析部５０は、単語抽出処理Ｓ８０１で単語抽出部２０が抽出したカラム名構成単語２７それぞれについて、文脈ベクトル５４を生成する。
概念解析処理Ｓ８０３において、特徴ベクトル生成部４０は、概念辞書記憶装置９０２が記憶した概念辞書データ３０を使って、単語抽出処理Ｓ８０１で単語抽出部２０が抽出したカラム名構成単語２７それぞれについて、概念ベクトル４４を生成する。
単語分類処理Ｓ８０４において、単語分類部６０は、文脈解析処理Ｓ８０２で文脈解析部５０が生成した文脈ベクトル５４と、概念解析処理Ｓ８０３で特徴ベクトル生成部４０が生成した概念ベクトル４４とに基づいて、単語抽出処理Ｓ８０１で単語抽出部２０が抽出したカラム名構成単語２７を分類する。
関連決定処理Ｓ８０５において、関連語決定部７０は、単語分類処理Ｓ８０４で単語分類部６０が分類した分類結果に基づいて、関連カラムである可能性の高いカラムを判定する。
【００７８】
図１７は、この実施の形態における単語分類処理Ｓ８０４の流れの一例を示すフロー図である。
【００７９】
単語分類処理Ｓ８０４は、例えば、初期化工程Ｓ８１０と、重み最適化工程Ｓ８２０と、分類算出工程Ｓ８３０と、収束判定工程Ｓ８４０とを有する。
【００８０】
初期化工程Ｓ８１０において、単語分類部６０は、処理装置９１１を用いて、暫定正解クラスを、制約を充足しなからランダムに与える。単語分類部６０は、以下の一致制約と排他制約を充足させながら、各単語に対し、暫定正解クラスをランダムに割り当てる。
（１）一致制約：表記が等しい単語は、テーブル／カラムの出現文脈に依らず同一の正解クラスを割り当てる。
（２）排他制約：同一テーブルを構成するカラム間では、異なるクラスの単語が１つ以上存在するように正解クラスを割り当てる。
【００８１】
重み最適化工程Ｓ８２０において、単語分類部６０は、処理装置９１１を用いて、暫定正解クラスを固定して、重みパラメータベクトル６５などのモデルパラメータを最適化する。単語分類部６０は、例えば次の式を用いて、正解クラスの割り当てＡｔをＡｔ（η−１）に固定して、モデルパラメータｗを最適化する。
【数１１】
2013120534.tif 000003
ただし、モデルパラメータｗは、Ｋ個の重みパラメータベクトル｛ｗｋ｜ｋ＝１，２，…，Ｋ｝を並べたＭ行Ｋ列の行列（ｗ１，ｗ２，…，ｗＫ）を表わす。Ｋは、あらかじめ定めれらたクラスの数を表わす。重みパラメータベクトルｗｋは、Ｍ次の縦ベクトルである。Ｍは、特徴ベクトルの次数を表わす。ａｒｇ  ｍａｘは、下に記した変数（この場合、ｗ。）を変化させた場合に、引数である関数（この場合、ｌｏｇ  ｐ（ｔ，ｗ，Ａｔ（η−１）｜Φ）。）の値が最大になる変数の値を表わす。ｌｏｇは、オイラー数を底とする対数（自然対数）を表わす。ｐ（ｔ，ｗ，Ａｔ（η−１）｜Φ）は、ΦにおけるｔかつｗかつＡｔ（η−１）の条件付き確率を表わす。ｔは、Ｎ個の正解クラス｛ｔｉ｜ｉ＝１，…，Ｎ｝を要素とするＮ次のベクトルを表わす。Ｎは、同じ綴りを区別したカラム名構成単語２７の数を表わす。ｔｉは、ｉ番目のカラム名構成単語ｘｉ（ｉ＝１，…，Ｎ）に割り当てる正解クラスを表わす。Ａｔは、ｔの割り当てを表わす。ηは、１以上の整数である。ηは、重み最適化工程Ｓ８２０〜収束判定工程Ｓ８４０のループを実行した繰り返し回数を表わす。例えば、ｗ（η）は、η回目の重み最適化工程Ｓ８２０で算出するｗを表わす。Ａｔ（η）は、η回目の分類算出工程Ｓ８３０で算出するＡｔを表わす。Ａｔ（０）は、初期化工程Ｓ８１０で単語分類部６０が割り当てた暫定正解クラスの割り当てを表わす。Φは、Ｎ個の特徴ベクトル｛φｉ｜ｉ＝１，２，…，Ｎ｝を並べたＭ行Ｎ列の行列（φ１，φ２，…，φＮ）を表わす。特徴ベクトルφｉは、Ｍ次の縦ベクトルである。特徴ベクトルφｉは、ｉ番目のカラム名構成単語ｘｉについて、単語分類部６０が生成した特徴ベクトル６４を表わす。
【００８２】
単語分類部６０は、例えば次の式によりｌｏｇ  ｐ（ｔ，ｗ，Ａｔ｜Φ）の値を求める。
【数１２】
2013120534.tif 000004
【００８３】
ここで、ｌｏｇ  ｐ（ｗ）は、モデルパラメータｗに対する二次の正則化項であり、モデルが過剰に大きな重みを使って学習データにオーバーフィッティングするのを防ぐ。単語分類部６０は、例えば次の式により、ｌｏｇ  ｐ（ｗ）の値を求める。
【数１３】
2013120534.tif 000005
ただし、Ｃ１は、あらかじめ定めた定数（ハイパーパラメータ）である。
例えば、関連カラム判定装置９０３は、入力装置９１２を用いて、Ｃ１の設定値を入力し、記憶装置９１４を用いて、入力したＣ１の設定値を記憶しておく。単語分類部６０は、記憶したＣ１の設定値を使って、ｌｏｇ  ｐ（ｗ）の値を算出する。
あるいは、Ｃ１は、固定値ではなく、繰り返し回数ηが多くなるにしたがって減衰する値であってもよい。例えば、関連カラム判定装置９０３は、入力装置９１２を用いて、Ｃ１の初期値Ｃ１（１）と、Ｃ１の収束値Ｃ１（∞）と、減衰係数ε１とを入力する。関連カラム判定装置９０３は、記憶装置９１４を用いて、入力したＣ１の初期値Ｃ１（１）と、Ｃ１の収束値Ｃ１（∞）と、減衰係数ε１とを記憶しておく。単語分類部６０は、η回目の繰り返し（ただし、η≧２。）において、前回の繰り返しで使ったＣ１の値Ｃ１（η−１）と、記憶したＣ１の収束値Ｃ１（∞）と減衰係数ε１とに基づいて、例えば次の式により、今回の繰り返しで使う定数Ｃ１（η）を算出する。
【数１４】
2013120534.tif 000006
このように、Ｃ１の値を徐々に減衰させることにより、学習の強度を徐々に強めることができる。これにより、不安定な学習の初期段階において誤ったクラス割り当てをしてしまったとしても、その後の反復において大域的なクラス割り当てに基づいて誤ったクラス割り当ての変更が起きやすくなる。
【００８４】
また、ｌｏｇ  ｐ（Ａｔ｜ｗ）は、各クラスで全学習データから受ける重みの総和を最大化する。上述の正則化項による大きさに対するペナルティと合わせて、クラス間でクラスの大きさ（単語の種類数）がバランスするようなペナルティとして働く。単語分類部６０は、例えば次の式により、ｌｏｇ  ｐ（Ａｔ｜ｗ）の値を求める。
【数１５】
2013120534.tif 000007
ただし、Ｃ２は、あらかじめ定めた定数（ハイパーパラメータ）である。例えば、関連カラム判定装置９０３は、入力装置９１２を用いて、Ｃ２の設定値を入力し、記憶装置９１４を用いて、入力したＣ２の設定値を記憶しておく。単語分類部６０は、記憶したＣ２の設定値を使って、ｌｏｇ  ｐ（Ａｔ｜ｗ）の値を算出する。
あるいは、Ｃ２は、固定値ではなく、繰り返し回数ηが多くなるにしたがって減衰する値であってもよい。例えば、関連カラム判定装置９０３は、入力装置９１２を用いて、Ｃ２の初期値Ｃ２（１）と、Ｃ２の収束値Ｃ１（∞）と、減衰係数ε２とを入力する。関連カラム判定装置９０３は、記憶装置９１４を用いて、入力したＣ２の初期値Ｃ２（１）と、Ｃ２の収束値Ｃ２（∞）と、減衰係数ε１とを記憶しておく。単語分類部６０は、η回目の繰り返し（ただし、η≧２。）において、前回の繰り返しで使ったＣ２の値Ｃ２（η−１）と、記憶したＣ２の収束値Ｃ２（∞）と減衰係数ε２とに基づいて、例えば次の式により、今回の繰り返しで使う定数Ｃ２（η）を算出する。
【数１６】
2013120534.tif 000008
このように、Ｃ２の値を徐々に減衰させることにより、学習の強度を徐々に強めることができる。これにより、不安定な学習の初期段階において誤ったクラス割り当てをしてしまったとしても、その後の反復において大域的なクラス割り当てに基づいて誤ったクラス割り当ての変更が起きやすくなる。
【００８５】
また、ｌｏｇ  ｐ（ｔ｜Φ；ｗ，Ａｔ）は、モデルによる学習データの尤度である。例えば、単語分類部６０は、次の式により、ｌｏｇ  ｐ（ｔ｜Φ；ｗ，Ａｔ）の値を求める。
【数１７】
2013120534.tif 000009
【００８６】
多クラスロジスティック回帰を用いる場合、単語分類部６０は、例えば次の式を用いて、ｉ番目の単語ｘｉがｋ番目のクラスｙｋに属する尤度ｐ（ｙｋ｜φｉ；ｗ，Ａｔ）を求める。
【数１８】
2013120534.tif 000010
ただし、ｅｘｐは、オイラー数を底とする指数関数を表わす。Ｚｉは、正規化係数である。単語分類部６０は、例えば次の式により、正規化係数Ｚｉを求める。
【数１９】
2013120534.tif 000011
【００８７】
分類算出工程Ｓ８３０において、単語分類部６０は、処理装置９１１を用いて、モデルパラメータを固定して、制約付き最尤クラスを求める。単語分類部６０は、例えば次の式により、モデルパラメータｗをｗ（η）に固定して、制約付きで最適なクラスを探索し、正解クラスＡｔ（η）として割り当て直す。
【数２０】
2013120534.tif 000012
ただし、Ｓは、制約条件を充足するＡｔの集合を表わす。
【００８８】
例えば、単語分類部６０は、各カラム名構成単語２７を、各クラスに分類するかしないかを変数とする０−１整数計画問題を解くことにより、クラス選択の最適解（制約付き最尤解）を求める。この方式は、クラス数や単語数が小規模の場合に有効である。
あるいは、単語分類部６０は、貪欲法により平均尤度の高い単語から順番にクラスを割り当てることにより、準最適解を求める。この方式は、クラス数や単語数が大規模な場合に有効である。
【００８９】
収束判定工程Ｓ８４０において、単語分類部６０は、処理装置９１１を用いて、クラスタリング処理の収束判定を行う。例えば、単語分類部６０は、いずれの単語に割り当てた暫定正解クラスも前回の反復で割り当てたクラスと変わらなければクラスタリング処理が収束したと判定し、反復を打ち切る。あるいは、単語分類部６０は、繰り返し回数ηが所定の最大反復回数に達したら、強制的に反復を打ち切る。
反復を打ち切らないと判定した場合、単語分類部６０は、重み最適化工程Ｓ８２０に処理を戻す。
反復を打ち切ると判定した場合、単語分類部６０は、単語分類処理Ｓ８０４を終了する。
【００９０】
図１８は、この実施の形態における初期化工程Ｓ８１０の流れの一例を示すフロー図である。
【００９１】
初期化工程Ｓ８１０は、例えば、単語選択工程Ｓ８１１と、暫定クラス割当工程Ｓ８１２と、カラム選択工程Ｓ８１３と、兄弟カラム選択工程Ｓ８１４と、排他制約判定工程Ｓ８１５とを有する。
【００９２】
単語選択工程Ｓ８１１において、単語分類部６０は、まだ暫定正解クラスを割り当てていないカラム名構成単語２７のなかから、単語ζを一つ選択する。
全語彙（カラム名構成単語２７）に暫定正解クラスを付与済みであり、選択すべき単語が存在しない場合、すべての単語に暫定正解クラスを割り当てたので、単語分類部６０は、初期化工程Ｓ８１０を終了する。
暫定正解クラスを未付与の語彙がある場合、単語分類部６０は、暫定正解クラスを割り当てていない単語を一つ取り出し、単語ζとする。単語分類部６０は、暫定クラス割当工程Ｓ８１２へ処理を進める。
【００９３】
暫定クラス割当工程Ｓ８１２において、単語分類部６０は、単語選択工程Ｓ８１１で選択した単語ζに対してまだ割り当てていないクラスのなかから、暫定正解クラスを一つ選択する。例えば、単語分類部６０は、すべてのクラスをランダムな順序に並べ替えたリストを生成して、暫定正解クラス候補リストとする。単語分類部６０は、暫定正解クラス候補リストの先頭にあるクラスを暫定正解クラスとして選択し、選択したクラスを暫定正解クラス候補リストから削除する。単語分類部６０は、その単語ζについての暫定正解クラス候補リストを記憶しておく。次回の暫定クラス割当工程Ｓ８１２を同じ単語ζに対して実行する場合、単語分類部６０は、その単語ζについて記憶しておいた暫定正解クラス候補リストを使い、暫定正解クラス候補リストの先頭にあるクラスを暫定正解クラスとして選択し、選択したクラスを暫定正解クラス候補リストから削除する。
単語ζに対してまだ割り当てていないクラスが存在しない場合、例えば、その単語ζについて記憶している暫定正解クラス候補リストが空である場合、単語分類部６０は、その単語ζに対してクラスを割り当てることができない。単語分類部６０は、その単語ζに対してクラスを割り当てることを諦め、前回の単語選択工程Ｓ８１１で選択した単語にロールバックする。単語分類部６０は、単語選択工程Ｓ８１１で選択した単語ζを未選択に戻し、前回の単語選択工程Ｓ８１１で選択した単語に対して割り当てた暫定正解クラスを変更する。単語分類部６０は、前回の単語選択工程Ｓ８１１で選択した単語ζに対して、まだ割り当てていないクラスのなかから、暫定正解クラスを一つ選択する。例えば、単語分類部６０は、前回の単語選択工程Ｓ８１１で選択した単語ζについて記憶しておいた暫定正解クラス候補リストの先頭にあるクラスを暫定正解クラスとして選択し、選択したクラスを暫定正解クラス候補リストから削除する。
【００９４】
カラム選択工程Ｓ８１３において、単語分類部６０は、全カラムのなかから、暫定クラス割当工程Ｓ８１２で暫定正解クラスを割り当てた単語ζを含むカラムを抽出する。単語分類部６０は、抽出したカラムのなかから、そのカラムのカラム名に含まれるすべての単語（全構成語）に対して暫定正解クラスを割り当てたカラムを抽出して、カラム集合Ｃ１とする。
カラム集合Ｃ１が空集合であって、カラム集合Ｃ１に属するカラムが存在しない場合、単語分類部６０は、単語選択工程Ｓ８１１に処理を戻し、次の単語ζを選択する。
カラム集合Ｃ１が空集合でなく、カラム集合Ｃ１に属するカラムが存在する場合、単語分類部６０は、カラム集合Ｃ１に属するカラムのなかからカラムを１つ選択し、選択したカラムをカラム集合Ｃ１から削除する。単語分類部６０は、その単語ζについてのカラム集合Ｃ１を記憶しておく。次回のカラム選択工程Ｓ８１３を同じ単語ζに対して実行する場合、単語分類部６０は、記憶しておいたカラム集合Ｃ１を使い、カラム集合Ｃ１に属するカラムのなかから、カラムを１つ選択し、選択したカラムをカラム集合Ｃ１から削除する。
単語分類部６０は、選択したカラムについてクラスベクトル６３を生成し、生成したクラスベクトル６３を記憶しておく。単語分類部６０は、兄弟カラム選択工程Ｓ８１４へ処理を進める。
【００９５】
兄弟カラム選択工程Ｓ８１４において、単語分類部６０は、全カラムのなかから、カラム選択工程Ｓ８１３で選択したカラムと同じテーブルに属するカラムを抽出する。単語分類部６０は、抽出したカラムのなかから、そのカラムのカラム名に含まれるすべての単語に対して暫定正解クラスを割り当てたカラムを抽出して、カラム集合Ｃ２とする。カラム集合Ｃ２には、カラム選択工程Ｓ８１３で選択したカラムが必ず含まれるので、単語分類部６０は、カラム選択工程Ｓ８１３で選択したカラムをカラム集合Ｃ２から削除する。
カラム集合Ｃ２が空集合であって、カラム集合Ｃ２に属するカラムが存在しない場合、単語分類部６０は、カラム選択工程Ｓ８１３に処理を戻し、次のカラムをカラム集合Ｃ１から選択する。
カラム集合Ｃ２が空集合でなく、カラム集合Ｃ２に属するカラムが存在する場合、単語分類部６０は、カラム集合Ｃ２に属するカラムのなかからカラムを１つ選択し、選択したカラムをカラム集合Ｃ２から削除する。単語分類部６０は、そのカラムについてのカラム集合Ｃ２を記憶しておく。次回の兄弟カラム選択工程Ｓ８１４を同じカラムに対して実行する場合、単語分類部６０は、記憶しておいたカラム集合Ｃ２を使い、カラム集合Ｃ２に属するカラムのなかから、カラムを１つ選択し、選択したカラムをカラム集合Ｃ２から削除する。
単語分類部６０は、排他制約判定工程Ｓ８１５へ処理を進める。
【００９６】
排他制約判定工程Ｓ８１５において、単語分類部６０は、カラム選択工程Ｓ８１３で選択したカラムについて生成したクラスベクトル６３と、兄弟カラム選択工程Ｓ８１４で選択したカラムについて記憶しておいたクラスベクトル６３とを比較する。
２つのクラスベクトル６３が一致している場合、単語分類部６０は、制約違反であると判定し、暫定クラス割当工程Ｓ８１２に処理を戻して、単語ζに対して次の暫定正解クラスを割り当てる。
２つのクラスベクトル６３が異なる場合、単語分類部６０は、制約を充足していると判定し、兄弟カラム選択工程Ｓ８１４に処理を戻して、次のカラムをカラム集合Ｃ２から選択する。
【００９７】
図１９は、この実施の形態における分類算出工程Ｓ８３０の流れの一例を示すフロー図である。
【００９８】
分類算出工程Ｓ８３０は、例えば、単語選択工程Ｓ８３１と、暫定クラス割当工程Ｓ８３２と、カラム選択工程Ｓ８１３と、兄弟カラム選択工程Ｓ８１４と、排他制約判定工程Ｓ８１５とを有する。
【００９９】
単語選択工程Ｓ８３１において、単語分類部６０は、すべての単語について、すべてのクラスに対する平均尤度を算出する。単語分類部６０は、例えば次の式により、単語ζがクラスｙｋに属する尤度をすべての出現箇所について平均した平均尤度ｐ￣（ｙｋ｜ζ）を算出する。
【数２１】
2013120534.tif 000013
ただし、Ｘζは、単語ｘｉがζである添え字ｉの集合を表わす。
【０１００】
単語分類部６０は、それぞれの単語ζについて、平均尤度が大きい順にクラスを並べたリストを生成し、その単語ζについての暫定正解クラスリストとする。
単語分類部６０は、暫定正解クラスリストの先頭にあるクラスに対する平均尤度（すなわち、平均尤度の最大値）が大きい順に単語ζを並べたリストを生成し、割当順単語リストとする。
単語分類部６０は、割当順単語リストのなかから、未処理の単語を１つ選択する。
割当順単語リストに未処理の単語が存在しない場合、すべての単語に対するクラス割当てが完了したので、単語分類部６０は、分類算出工程Ｓ８３０を終了する。
割当順単語リストに未処理の単語が存在する場合、単語分類部６０は、未処理の単語のなかで一番前にある単語（すなわち、最大平均尤度が一番大きい単語）を選択して、単語ζとする。単語分類部６０は、暫定クラス割当工程Ｓ８３２へ処理を進める。
【０１０１】
暫定クラス割当工程Ｓ８３２において、単語分類部６０は、単語選択工程Ｓ８３１で選択した単語ζに対して、単語選択工程Ｓ８３１で生成した暫定正解クラスリストを使って、クラスを割り当てる。単語分類部６０は、暫定正解クラスリストのなかから、未選択のクラスを１つ選択する。
暫定正解クラスリストに未選択のクラスが存在しない場合、その単語ζに対してクラスを割り当てることができないので、単語分類部６０は、１つ前の単語にロールバックする。単語分類部６０は、単語選択工程Ｓ８３１で選択した単語ζについての暫定正解クラスリストをすべて未選択状態に戻す。単語分類部６０は、割当順単語リストの処理済の単語のなかから、一番後ろにある単語を選択して、単語ζとし、未処理状態に戻す。単語分類部６０は、ロールバックした単語ζについての暫定正解クラスリストのなかから、未選択のクラスを１つ選択する。
暫定正解クラスリストに未選択のクラスが存在する場合、単語分類部６０は、未選択のクラスのなかで一番前にあるクラス（すなわち、平均尤度が一番大きいクラス）を選択する。
【０１０２】
カラム選択工程Ｓ８１３、兄弟カラム選択工程Ｓ８１４及び排他制約判定工程Ｓ８１５は、クラスの割当てが排他制約に違反しないかを検証する工程であり、初期化工程Ｓ８１０と同様である。
【０１０３】
初期化工程Ｓ８１０では、単語の選択順やクラスの選択順がランダムであるのに対し、分類算出工程Ｓ８３０では、最大平均尤度が高い順に単語を選択し、平均尤度が高い順にクラスを選択する。これにより、排他制約に反しないという条件を充足しつつ、全体として尤度が高いクラス割当を見つけることができる。
【０１０４】
図２０は、この実施の形態における分類算出工程Ｓ８３０単語分類部６０の動作の一例を説明するための図である。
【０１０５】
単語選択工程Ｓ８３１において、単語分類部６０は、異なる位置に出現する同じ綴りの単語を区別して、それぞれのカラム名構成単語２７について、それぞれのクラスに対する尤度６６を算出する。
単語分類部６０は、異なる位置に出現する同じ綴りの単語について算出した尤度６６に基づいて、平均尤度６７を算出する。この例では、単語「ＮＯ」が３箇所に出現しているので、単語分類部６０は、それぞれのクラスについて、算出した３つの尤度６６から、平均尤度６７を算出する。
単語分類部６０は、異なる位置に出現する同じ綴りの単語を区別せず、それぞれの単語について、算出した平均尤度６７が大きい順にクラスを並べた暫定正解クラスリスト６８を生成する。また、単語分類部６０は、異なる位置に出現する同じ綴りの単語を区別せず、算出した平均尤度６７のうち最大の平均尤度６７が大きい順に単語を並べた割当順単語リスト６９を生成する。
【０１０６】
単語分類部６０は、割当順単語リスト６９の上位に位置する単語から順に、クラスを割り当てる。単語分類部６０は、暫定正解クラスリスト６８の先頭に位置するクラスを割り当て、それで排他制約違反になる場合には、次のクラスを割り当てる。
【０１０７】
例えば、単語分類部６０は、単語選択工程Ｓ８３１で、割当順単語リスト６９の先頭にある単語「ＮＯ」を選択し、暫定クラス割当工程Ｓ８３２で、その単語の暫定正解クラスリスト６８の先頭にあるクラス｛ｙ４｝を選択し、単語「ＮＯ」にクラス｛ｙ４｝を割り当てる。
上述したように、単語「ＮＯ」は、３箇所に出現している。それぞれの出現位置について別々に算出した尤度６６によれば、テーブル｛Ｔ０００１｝のカラム｛Ｃ００１２｝で尤度６６が一番大きいのはクラス｛ｙ４｝であり、テーブル｛Ｔ０００１｝のカラム｛Ｃ００１３｝で重みパラメータベクトル６５が一番大きいのもクラス｛ｙ４｝であるが、テーブル｛Ｔ０００２｝のカラム｛Ｃ００２２｝で尤度６６が一番大きいのはクラス｛ｙ２｝である。しかし、単語分類部６０は、出現位置を区別せずに単語「ＮＯ」にクラス｛ｙ４｝を割り当てる。これにより、一致制約を充足する割当てを見つけることができる。
【０１０８】
次に、単語分類部６０は、単語選択工程Ｓ８３１で、割当順単語リスト６９の２番目にある単語「ＩＴＥＭ」を選択し、暫定クラス割当工程Ｓ８３２で、その単語の暫定正解クラスリスト６８の先頭にあるクラス｛ｙ１｝を選択し、単語「ＩＴＥＭ」にクラス｛ｙ１｝を割り当てる。この時点で、テーブル｛Ｔ０００２｝のカラム｛Ｃ００２２｝について、カラム名に含まれるすべての単語についてクラスを割り当てたので、単語分類部６０は、カラム選択工程Ｓ８１３で、クラスベクトル６３を生成する。このように、単語分類部６０は、すべての単語にクラスを割り当てたカラムから順に、クラスベクトル６３を生成していく。テーブル｛Ｔ０００２｝に属する他のカラムについては、クラスベクトル６３をまだ生成していないので、単語分類部６０は、排他制約違反ではないと判定する。
【０１０９】
このようにして、単語分類部６０は、割当順単語リスト６９の順に、単語にクラスを割り当てていく。
【０１１０】
分類算出工程Ｓ８３０が単語「ＤＡＴＥ」まで終わったとする。この時点で、単語分類部６０は、テーブル｛Ｔ０００１｝のカラム｛Ｃ００１２｝と、テーブル｛Ｔ０００２｝のカラム｛Ｃ００２２｝と、テーブル｛Ｔ０００３｝のカラム｛Ｃ００３２｝とについて、カラム名に含まれるすべての単語についてクラスを割り当て終わり、クラスベクトル６３を生成している。
次に、単語分類部６０は、単語選択工程Ｓ８３１で、割当順単語リスト６９の次にある単語「ＰＨＯＮＥ」を選択し、その単語の暫定正解クラスリスト６８の先頭にあるクラス｛ｙ１｝を選択し、単語「ＰＨＯＮＥ」にクラス｛ｙ１｝を割り当てる。テーブル｛Ｔ０００１｝のカラム｛Ｃ００１３｝について、カラム名に含まれるすべての単語についてクラスを割り当てたので、単語分類部６０は、カラム選択工程Ｓ８１３で、クラスベクトル６３を生成する。しかし、生成したクラスベクトル６３は、同じテーブル｛Ｔ０００１｝のカラム｛Ｃ００１２｝について生成したクラスベクトル６３と一致しているので、単語分類部６０は、排他制約違反であると判定する。そこで、単語分類部６０は、暫定クラス割当工程Ｓ８３２に処理を戻し、単語「ＰＨＯＮＥ」の暫定正解クラスリスト６８の２番目にあるクラス｛ｙ２｝を選択し、単語「ＰＨＯＮＥ」にクラス｛ｙ２｝を割り当て直す。これにより、排他制約を充足する割当てを見つけることができる。
【０１１１】
このようにして、教師なし学習だけでは識別が難しいサンプルにおいても、大域的な識別状況とタスクのヒューリスティクスに基づいて、正しいクラスを割り当てることができ、高精度なクラスタリングを実現できる。
【０１１２】
この実施の形態における関連語抽出方式（関連カラム判定装置９０３、関連語分類装置）は、テキストを含むデータから多クラス識別モデルを用いて関連語を抽出する。
単語分類部６０（重みベクトル算出部）は、単語のクラスを識別するためのモデルパラメータを、データ中に出現する単語に割り当てられた暫定正解クラスに基づいて最適化する。
単語分類部６０は、現在のモデルパラメータを使って求めたクラスの尤度に基づいて、クラス割り当てに関する制約を充足するクラスのなかで最尤のクラスを選択し、新たな暫定正解クラスとして単語に割り当てる。
単語分類部６０は、この２つを交互に反復処理した後に、同一クラスに分類された単語を関連語として抽出する。
【０１１３】
前記テキストを含むデータは、データベースのスキーマ定義データ（テーブルスキーマ）である。
【０１１４】
前記クラス割り当てに関する制約は、データ構造中の姉妹データ要素が、異なるクラスのデータ要素を有するような割り当てである。
【０１１５】
この実施の形態における関連語抽出方式によれば、関連語をテーブルスキーマ群から高い精度で自動抽出することができる。
【０１１６】
この実施の形態における関連語抽出方式は、「類似した単語は類似した文脈で出現する」との仮定に基づいて、共起語の出現頻度ベクトルをもとに適当な重み付けを行って特徴ベクトルとし、その類似度を基準に関連語を抽出する。
しかし、テーブルスキーマなどの構造化データは、新聞記事やウェブページなどと比べて、利用可能なデータ量が限定される。このため、共起頻度ベクトルがスパースとなり、共起語だけでは単語間の類似性を十分説明できないことがある。
そこで、この実施の形態における関連語抽出方式は、更に、概念辞書を用いて特徴量を追加する。
【０１１７】
しかし、概念辞書を用いて追加した特徴量は、自然言語処理一般に存在する課題である曖昧性や多義性の影響を受ける。
そこで、この実施の形態における関連語抽出方式は、以下の３つの仮定を導入して、単語の使い分けを判別する。
【０１１８】
仮定（１）：関連語は、出現文脈の特徴または概念辞書における登録階層が近い。
仮定（１）は、特徴ベクトルのクラスタリングで関連語を抽出するための基本的な仮定である。仮定（１）は、特徴ベクトル６４の構成に反映されている。文脈ベクトル５４及び概念ベクトル４４を含む特徴ベクトル６４を使うことにより、仮定（１）に沿ったクラスタリングを実現する。
【０１１９】
仮定（２）：単語は、出現文脈に依らず一貫して同じ概念を表している。
仮定（２）は、スパースなスキーマデータで頻度を集約するために導入するやや強い仮定である。仮定（２）は、上述の一致制約に反映されている。単語分類部６０が、異なる位置に出現する同じ綴りの単語に対して、同じクラスを割り当てることにより、仮定（２）に沿ったクラスタリングを実現する。
【０１２０】
仮定（３）：カラム名は、テーブル内で異なる概念を表している。
仮定（３）は、テーブル設計のヒューリスティックスに基づく最も強い仮定である。仮定（３）は、上述の排他制約に反映されている。カラム名が複数の単語で構成されている場合、カラム名が表わす概念は、それを構成する単語が表わす概念を総合したものと考えられる。そこで、仮定（３）に基づいて、単語分類部６０は、同じテーブルに属する複数のカラムの間で、カラム名を構成する単語に割り当てたクラスの組合せが異なるよう、単語にクラスを割り当てる。
【０１２１】
上述の例において、「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲ」テーブルには、「ＬＩＮＥ＿ＮＯ」カラムと「ＰＨＯＮＥ＿ＮＯ」カラムとが属する。仮に、単語「ＬＩＮＥ」と単語「ＰＨＯＮＥ」とを同じクラスに分類したとすると、「ＬＩＮＥ＿ＮＯ」と「ＰＨＯＮＥ＿ＮＯ」とを概念的に区別できなくなる。仮定（３）は、このような直観にそぐわないクラスタリングを回避するための仮定である。
【０１２２】
以上のように、この実施の形態における関連語抽出方式は、単語特徴ベクトルのクラスタリングにおいて、特徴ベクトルの類似度を尺度とするだけでなく、元データから取得するヒューリスティクスをクラス分類の一致制約ないし排他制約として利用して、クラスタリングをする。
このように制約条件としてヒューリスティクスを利用する方式は、特徴ベクトルの類似度にペナルティを加えるようなアドホックな方式と異なり、教師あり学習で用いられる識別モデルを用いたクラスタリングにおいて匿名クラス割り当てに反映させて識別学習する方式である。このため、効果的にクラスタリングの精度を向上することができる。
【０１２３】
更に、この実施の形態における関連語抽出方式は、ヒューリスティクスとして、スキーマ構造中の姉妹データ要素（同じテーブルに属するカラム）は、異なる概念を表すよう設計されていることを仮定し、それゆえ、それらデータ要素は互いに異なるクラスのデータ要素を有することを利用する。この仮定は、スキーマデータから容易に取得可能で、かつ、スキーマ設計においては広く成立することが期待される。これにより、類似した単語の使い分けを混同することなくクラスタリングをすることができる。
【０１２４】
この実施の形態における関連語抽出方式は、本来区別して扱われるべき単語とそうでない単語とを判別し、関連語として抽出しないという、高精度な関連語抽出を実現する。
また、この実施の形態における関連語抽出方式は、辞書に登録されている関連語の組み合わせに基づいて学習のためのサンプルを生成する必要がないので、対象ドメインの単語が辞書にあらかじめ十分登録されていない場合であっても適用可能であり、対象ドメインの単語が辞書に登録されていない状態であっても、高精度な関連語抽出を実現することができる。
【０１２５】
なお、文脈解析部５０は、カラム名構成単語２７の直前や直後に位置する単語に対応づけられた文脈ベクトル５４の要素の値を「１」にするだけでなく、同じカラム名のなかで離れた位置にある単語に対応づけられた文脈ベクトル５４の要素の値も「１」にする構成であってもよい。
あるいは、文脈解析部５０は、離れた位置にある単語に対応づけられた文脈ベクトル５４の要素に、単語間の距離が遠くなるほど小さくなる数値を与える構成であってもよい。例えば、文脈解析部５０は、２つ前もしくは２つ後の単語に対応づけられた文脈ベクトル５４の要素の値を「１／２」、３つ前もしくは３つ後の単語に対応づけられた文脈ベクトル５４の要素の値を「１／３」にする構成であってよい。
【０１２６】
また、特徴ベクトル生成部４０は、カラム名構成単語２７が表わす概念及びその上位概念に対応づけられた概念ベクトル４４の要素の値を「１」にするだけでなく、カラム名構成単語２７が表わす概念の下位概念に対応づけれらた要素の値も「１」にする構成であってもよい。
【０１２７】
あるいは、特徴ベクトル生成部４０は、階層が離れた概念に対応づけられた概念ベクトル４４の要素に、階層差が大きくなるほど小さくなる数値を与える構成であってもよい。例えば、特徴ベクトル生成部４０は、すぐ上の上位概念に対応づけられた要素の値を「１／２」、２階層上の上位概念に対応づけれらた要素の値を「１／３」にする構成であってもよい。
【０１２８】
あるいは、特徴ベクトル生成部４０は、カラム名構成単語２７が多義語である場合、その意味の使用頻度に応じて、概念ベクトル４４の要素に与える数値を按分する構成であってもよい。例えば、特徴ベクトル生成部４０は、その単語の第一義である概念に対応づけられた要素の値を「０．５」、第二義である概念に対応づけられた要素の値を「０．３」、第三義である概念に対応づけられた要素の値を「０．２」にする構成であってもよい。
【０１２９】
また、クラスベクトル６３は、排他制約違反を見つけるため、そのカラムのカラム名に含まれる単語に割り当てたクラスの組合せと、他のカラムのカラム名に含まれる単語に割り当てたクラスの組合せとが一致するか否かを判定するためのものである。単語分類部６０は、クラスベクトル６３を生成する代わりに、他のデータを使って、排他条件違反を見つける構成であってもよい。例えば、単語分類部６０は、カラム名に含まれる単語に割り当てたクラスのリストや集合を生成し、生成したリストや集合を使って、そのカラムのカラム名に含まれる単語に割り当てたクラスの組合せと、他のカラムのカラム名に含まれる単語に割り当てたクラスの組合せとが一致するか否かを判定する構成であってもよい。
【０１３０】
また、単語分類部６０（重みベクトル算出部）は、多クラスロジスティクス回帰ではなく、他の最適化手法を用いて、重みパラメータベクトル６５（重みベクトル）を算出する構成であってもよい。
あるいは、単語分類部６０は、貪欲法ではなく、他のクラスタリング手法を用いて、単語をクラスタリングする構成であってもよい。
【０１３１】
実施の形態２．
実施の形態２について、図２１を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１３２】
この実施の形態における関連カラム抽出システム９００の全体構成、関連カラム判定装置９０３などのハードウェア構成、関連カラム判定装置９０３のブロック構成は、実施の形態１と同様である。
【０１３３】
図２１は、この実施の形態における文脈解析部５０の動作の一例を示す説明するための図である。
【０１３４】
文脈解析部５０（特徴ベクトル生成部の一例。）は、異なる位置に出現する同じ綴りの単語を区別せず、それぞれのカラム名構成単語２７について、文脈ベクトル５４を生成する。
文脈ベクトル５４の要素のうち、前置単語５１及び後置単語５２に対応づけられた要素は、その単語の前接単語及び後接単語の出現頻度を表わす。また、文脈ベクトル５４の要素のうち、テーブル名構成単語５３に対応づけられた要素は、その単語を含むカラムが属するテーブルであって、テーブル名構成単語５３を含むテーブル名を有するテーブルの数を表わす。
【０１３５】
例えば、文脈解析部５０は、それぞれのカラム名構成単語２７について、すべてのカラムのなかから、その単語を含むカラム名を有するカラムを抽出して、カラム集合とする。文脈解析部５０は、抽出したカラム集合に属するカラムのカラム名を構成するカラム名構成単語２７のなかから、その単語に前接する前接単語を抽出して、前接単語集合とする。なお、前接単語集合において、文脈解析部５０は、同じ綴りの単語を区別する。すなわち、その単語に前接する単語が同じ綴りであるカラムが複数ある場合、前接単語集合には、同じ綴りの単語が複数含まれる。文脈解析部５０は、それぞれの前置単語５１について、前接単語集合のなかから、その前置単語５１と一致する単語を抽出する。文脈解析部５０は、抽出した単語の数を、その前置単語５１に対応づけられた文脈ベクトル５４の要素の値とする。
同様に、文脈解析部５０は、抽出したカラム集合に属するカラムのカラム名を構成するカラム名構成単語２７のなかから、その単語に後接する後接単語を抽出して、後接単語集合とする。後接単語集合においても、文脈解析部５０は、同じ綴りの単語を区別する。文脈解析部５０は、それぞれの後置単語５２について、後接単語集合のなかから、その後置単語５２と一致する単語を抽出する。文脈解析部５０は、抽出した単語の数を、その後置単語５２に対応づけられた文脈ベクトル５４の要素の値とする。
また、文脈解析部５０は、すべてのテーブルのなかから、抽出したカラム集合に属するカラムが属するテーブルを抽出して、テーブル集合とする。なお、テーブル集合において、文脈解析部５０は、同じテーブルを区別しない。すなわち、同じテーブルに含まれるカラムがカラム集合内に複数ある場合でも、テーブル集合には、そのテーブルが１つだけ含まれる。文脈解析部５０は、テーブル集合に属するテーブルのテーブル名を構成する単語を抽出して、テーブル名構成単語集合とする。テーブル名構成単語集合において、文脈解析部５０は、同じ綴りの単語を区別する。すなわち、異なるテーブルのテーブル名に同じ綴りの単語が含まれる場合、テーブル名構成単語集合には、同じ綴りの単語が複数含まれる。文脈解析部５０は、それぞれのテーブル名構成単語５３について、テーブル名構成単語集合のなかから、そのテーブル名構成単語５３と一致する単語を抽出する。文脈解析部５０は、抽出した単語の数を、そのテーブル名構成単語５３に対応づけられた文脈ベクトル５４の要素の値とする。
【０１３６】
例えば、単語「ＮＯ」が、「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲ」テーブルの「ＬＩＮＥ＿ＮＯ」カラムと、同じく「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲ」テーブルの「ＰＨＯＮＥ＿ＮＯ」カラムと、「ＯＲＤＥＲ」テーブルの「ＩＴＥＭ＿ＮＯ」カラムとの３箇所に出現しているとする。
【０１３７】
単語「ＮＯ」について、文脈解析部５０は、「ＬＩＮＥ＿ＮＯ」カラムと「ＰＨＯＮＥ＿ＮＯ」カラムと「ＩＴＥＭ＿ＮＯ」カラムとの３つのカラムからなる集合を生成して、カラム集合とする。
文脈解析部５０は、単語「ＬＩＮＥ」と単語「ＰＨＯＮＥ」と単語「ＩＴＥＭ」との３つの単語からなる集合を生成して、前接単語集合とする。文脈解析部５０は、前置単語５１に対応づけられた文脈ベクトル５４の要素のうち、単語「ＬＩＮＥ」に対応づけられた要素と、単語「ＰＨＯＮＥ」に対応づけられた要素と、単語「ＩＴＥＭ」に対応づけられた要素との３つの要素の値を「１」にし、それ以外の前置単語５１に対応づけられた要素の値を「０」にする。
また、文脈解析部５０は、単語を含まない空集合を、後接単語集合とする。文脈解析部５０は、後置単語５２に対応づけられた文脈ベクトル５４の要素の値をすべて「０」にする。
また、文脈解析部５０は、「ＰＵＲＣＨＡＳＥ＿ＯＲＤＥＲ」テーブルと「ＯＲＤＥＲ」テーブルとの２つのテーブルからなる集合を生成して、テーブル集合とする。文脈解析部５０は、単語「ＰＵＲＣＨＡＳＥ」と単語「ＯＲＤＥＲ」と単語「ＯＲＤＥＲ」とからなる集合（単語「ＯＲＤＥＲ」が２つ含まれる点に留意。）を生成して、テーブル名構成単語集合とする。文脈解析部５０は、テーブル名構成単語５３に対応づけられた文脈ベクトル５４の要素のうち、単語「ＰＵＲＣＨＡＳＥ」に対応づけられた要素の値を「１」にし、単語「ＯＲＤＥＲ」に対応づけられた要素の値を「２」にし、それ以外のテーブル名構成単語５３に対応づけられた要素の値を「０」にする。
【０１３８】
文脈解析部５０が、単語の出現位置を区別せず、異なる位置に出現した同じ綴りの単語を統合した文脈ベクトル５４を生成するのに伴い、単語分類部６０（特徴ベクトル生成部の一例。）も、単語の出現位置を区別せず、異なる位置に出現した同じ綴りの単語を統合した特徴ベクトル６４を生成する。単語分類部６０は、それぞれの単語について、文脈解析部５０が生成した文脈ベクトル５４と、特徴ベクトル生成部４０が生成した概念ベクトル４４とを結合して、特徴ベクトル６４とする。
【０１３９】
同じ綴りの単語に対する特徴ベクトル６４が一つしかないので、単語分類部６０は、単語の出現位置を区別せず、それぞれのクラスに対する尤度６６を算出する。したがって、単語分類部６０は、平均尤度６７を算出する必要がない。単語分類部６０は、算出した尤度６６に基づいて、単語をいずれかのクラスに分類する。
【０１４０】
以上、各実施の形態で説明した構成は、一例であり、他の構成であってもよい。例えば、異なる実施の形態で説明した構成を組み合わせた構成であってもよいし、本質的でない部分の構成を、他の構成で置き換えた構成であってもよい。
【０１４１】
以上説明した関連語分類装置（関連カラム判定装置９０３）は、複数の単語を関連する単語同士のグループ（クラス）に分類する。
関連語分類装置は、データを処理する処理装置（９１１）と、テキスト取得部（単語抽出部２０）と、特徴ベクトル算出部（特徴ベクトル生成部４０、文脈解析部５０、単語分類部６０）と、単語分類部（６０）と、重みベクトル算出部（単語分類部６０）とを有する。
上記テキスト取得部は、上記処理装置を用いて、１つ以上の単語（カラム名構成単語２７）からなる単語群（カラム名）を１つ以上含むテキスト（テーブルスキーマ）を複数取得する。
上記特徴ベクトル算出部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれについて、上記単語の特徴を表わす特徴ベクトル（６４）を算出する。
上記単語分類部は、上記処理装置を用いて、上記テキスト取得部が取得した複数のテキストに含まれる複数の単語のそれぞれを、複数のグループのいずれかに分類する。
上記重みベクトル算出部は、上記処理装置を用いて、上記複数のグループのそれぞれについて、上記特徴ベクトルとの内積が上記特徴ベクトルによって特徴を表わされた単語が上記グループに属する尤度を表わす重みベクトル（重みパラメータベクトル６５）であって、上記単語分類部による分類に最もよく適合する重みベクトルを算出する。
上記単語分類部は、更に、上記処理装置を用いて、上記複数の単語のそれぞれについて上記特徴ベクトル算出部が算出した特徴ベクトルと、上記複数のグループのそれぞれについて上記重みベクトル算出部が算出した重みベクトルとに基づいて、上記複数の単語のそれぞれが上記複数のグループのそれぞれに属する尤度を算出し、算出した尤度に基づいて、上記複数の単語を分類し直す。
【０１４２】
これにより、構造化データなどを対象テキストとする場合でも、使い分けられている語を識別しつつ、関連語を抽出することができる。
【０１４３】
上記重みベクトル算出部は、更に、上記単語分類部が分類し直した回数が所定の回数より少ない場合と、上記単語分類部が分類し直した後の分類と上記単語分類部が分類し直す前の分類とが異なる場合とのうち少なくともいずれかの場合に、上記処理装置を用いて、上記単語分類部が分類し直した後の分類に基づいて、上記重みベクトルを算出し直す。
【０１４４】
重みベクトルの算出と、単語の分類とを交互に繰り返すことにより、使い分けられている語を識別しつつ、関連語を抽出することができる。
【０１４５】
上記単語分類部は、ある単語群に含まれる１つ以上の単語をそれぞれ分類したグループの組と、上記単語群と同じテキストに属する他の１つの単語群に含まれる１つ以上の単語をそれぞれ分類したグループの組とが異なるように、上記複数の単語を分類する。
【０１４６】
データベース定義などの構造化データの特徴に基づいて単語を分類するので、使い分けられている語を識別しつつ、関連語を抽出することができる。
【０１４７】
上記単語分類部は、ある単語を分類したグループと、上記複数のテキストのなかで上記単語と異なる位置に出現する上記単語と同一の単語を分類したグループとが同じになるように、上記複数の単語を分類する。
【０１４８】
データベース定義などの構造化データの特徴に基づいて単語を分類するので、使い分けられている語を識別しつつ、関連語を抽出することができる。
【０１４９】
上記特徴ベクトル算出部は、上記複数の単語のそれぞれについて、上記単語が表わす概念と、上記単語が属する単語群に属する他の単語（前置単語５１、後置単語５２）と、上記単語が属する単語群の名称（テーブル名）を構成する単語（テーブル名構成単語５３）とのうち少なくともいずれかに基づいて、上記特徴ベクトルを算出する。
【０１５０】
単語が表わす一般的な概念や、単語が現れる文脈などに基づいて、単語を分類するので、使い分けられている語を識別しつつ、関連語を抽出することができる。
【０１５１】
上記テキスト取得部が取得するテキストは、データベースにおけるテーブルを定義するテーブル定義データである。上記単語群は、上記テーブルを構成するカラムのカラム名である。
上記関連語分類装置は、更に、関連カラム判定部（関連語決定部７０）を有する。
上記関連カラム判定部は、上記処理装置を用いて、上記単語分類部があるカラムのカラム名を構成する１つ以上の単語をそれぞれ分類したグループの組と、上記単語分類部が別のカラムのカラム名を構成する１つ以上の単語をそれぞれ分類したグループの組とが一致する場合に、上記２つのカラムが、同一の内容を格納するカラム（関連カラム）である可能性があると判定する。
【０１５２】
単語の分類結果に基づいて、関連カラムである可能性があるカラムを判定するので、関連カラムを判別する作業の効率を高めることができる。
【符号の説明】
【０１５３】
１０  関連語抽出元データ、２０  単語抽出部、２１  テーブル名構成単語データ、２２，２５  テーブル識別子、２３，５３  テーブル名構成単語、２４  カラム名構成単語データ、２６  カラム識別子、２７  カラム名構成単語、３０  概念辞書データ、３１  概念データ、３２，４１  概念識別子、３３  概念表示語、３４  上位概念識別子、４０  特徴ベクトル生成部、４４  概念ベクトル、５０  文脈解析部、５１  前置単語、５２  後置単語、５４  文脈ベクトル、６０  単語分類部、６１，６２  クラス識別子、６３  クラスベクトル、６４  特徴ベクトル、６５  重みパラメータベクトル、６６  尤度、６７  平均尤度、６８  暫定正解クラスリスト、６９  割当順単語リスト、７０  関連語決定部、７１  関連カラムデータ、８０  関連語データ、９００  関連カラム抽出システム、９０１  データベース定義記憶装置、９０２  概念辞書記憶装置、９０３  関連カラム判定装置、９１１  処理装置、９１２  入力装置、９１３  出力装置、９１４  記憶装置、Ｓ８００  関連抽出処理、Ｓ８０１  単語抽出処理、Ｓ８０２  文脈解析処理、Ｓ８０３  概念解析処理、Ｓ８０４  単語分類処理、Ｓ８０５  関連決定処理、Ｓ８１０  初期化工程、Ｓ８１１，Ｓ８３１  単語選択工程、Ｓ８１２，Ｓ８３２  暫定クラス割当工程、Ｓ８１３  カラム選択工程、Ｓ８１４  兄弟カラム選択工程、Ｓ８１５  排他制約判定工程、Ｓ８２０  重み最適化工程、Ｓ８３０  分類算出工程、Ｓ８４０  収束判定工程。
【図１】
2013120534.tif 000014
【図２】
2013120534.tif 000015
【図３】
2013120534.tif 000016
【図４】
2013120534.tif 000017
【図５】
2013120534.tif 000018
【図６】
2013120534.tif 000019
【図７】
2013120534.tif 000020
【図８】
2013120534.tif 000021
【図９】
2013120534.tif 000022
【図１０】
2013120534.tif 000023
【図１１】
2013120534.tif 000024
【図１２】
2013120534.tif 000025
【図１３】
2013120534.tif 000026
【図１４】
2013120534.tif 000027
【図１５】
2013120534.tif 000028
【図１６】
2013120534.tif 000029
【図１７】
2013120534.tif 000030
【図１８】
2013120534.tif 000031
【図１９】
2013120534.tif 000032
【図２０】
2013120534.tif 000033
【図２１】
2013120534.tif 000034