当社のインド法人 System Consultant Information India(P) Ltd.(略称SCII)では、最新技術にも取り組んでいます。その中から今回は、自然言語処理への取り組みをご紹介いたします。
現在の取り組み状況
当社は、リレーショナルデータベースのコアテクノロジーでお客様の業務システム構築のご支援を行っております。SCIIでの自然言語処理への取り組みに、当社のデータベーステクノロジーを組み合わせて、今回SCIIにて、自然言語によるデータベースアクセス機能を実装した画面を構築いたしました。現状では言語は英語のみとなっています。
■画面機能
1.自然言語で照会したい内容を入力する
2.自然言語処理
3.SQL文生成処理
4.実行結果出力
5.解釈済自然言語の出力
以下で、これらの処理内容をご紹介いたします。
1.自然言語で見たい内容を入力する
照会したい内容を自然言語で入力する。
ex.「収入が150より多い既婚女性顧客」
2.自然言語処理
最適な機械学習ツールを使って、前処理→入力内容の意味の理解、の順番で入力された内容を把握します。
==前処理で行っていること==
・入力文のクレンジング(接続詞などの不要な言葉の削除)
・昨日、今日、先月などの時間的表現を識別。「Chrono Performance API」を活用
https://github.com/wanasit/chrono-java/tree/master/src
・指定された形式で日付を日付/月/年および時/分/秒に解析。「PrettyTime NLP」を活用
https://github.com/ocpsoft/prettytime/tree/master/nlp/src
・SQL化するために不足している言葉を追加。「Keras」を活用
https://keras.io/ja/
==入力内容の意味の理解で行っていること==
・N-Gramチェック:数単語ごとにスペルや文法をチェック。
・POS Tagging:単語に品詞をつける。いずれも「OpenNLP」を使って実装しています。
https://opennlp.apache.org/
3.SQL文生成処理
自然言語の意味が理解出来たら、対象テーブルの確定→対象カラムの確定→SQL文の生成、の順番でSQL文を構築します。
==対象テーブルの確定==
・自然言語の単語から、同義語、上位語を検索。「Wordnet」を活用
例: 識別された単語が「Client」の場合、単語のさまざまな同義語(「Customer」、「User」、 「Consumer」など)がテーブルリストから検索されます。
・入力された単語、同義語、上位語から、検索対象となるテーブルを特定するため、テーブルのメタデータをチェック。
・テーブル同士の結合条件の把握。最短経路を求めるアルゴリズム「Warshall’s Algorithm」を使用
==対象カラムの確定==
・自然言語の単語から、同義語、上位語を検索。「Wordnet」を活用
・カラム名確定のため、テーブルのメタデータをチェック。
・単語が、カラムではなくデータに中身を表すものと識別された場合、そのデータを格納できるカラムがあるかどうかを、上位語チェックを使用して確認します。
例: 識別されたデータが「赤」の場合、その上位語 (「色」) がカラムのリストでチェックされ、データが属するカラムが識別されます。
==SQL文の生成==
・SQLの文法チェック
・SQL文を組み立てる
検索したいカラム、条件となるカラムと条件内容、表示順や、テーブル間の結合条件等を組み立てます。
4.実行結果出力
・SQL文を実行して、その結果を画面出力プログラムにパラメータとして渡します。
5.解釈済自然言語の出力
・パラメータは、SQL文実行結果、生成し実行したSQL文、およびSQL文を簡易な自然言語に戻した文(自然言語として把握した内容)を画面に出力します。
この画面では、AIが理解した検索内容を自然言語に戻した文も画面に表示しています(上記の赤点線で囲った箇所)。これによって、AIとしての自然言語の正確さを入力者に判定していただくことができます。機械学習の精度を上げるために活用しています。
今後の活用について
この機能は、将来的には、SQLの知識がなくても、またデータベース・アクセスツールの使い方を覚えなくても、さらに日本語でも、いつでもほしい情報をデータベースから取得することを目指しています。
今回ご紹介した自然言語処理はテキスト入力ですが、似たような機能として「音声認識+辞書機能」によるデータベースアクセス機能も実装しております。製造業のお客様での事例をブログにて紹介しておりますので、こちらもぜひご覧ください。
お問い合わせはこちらまで
当社のAI技術のご活用にご興味がおありでしたら、当社第一営業部までご連絡をお願い申し上げます。
最後までお読みいただき
ありがとうございました。