英語のテキストをSQLクエリに変換するための最良の方法は何でしょうか。たとえば、ユーザーに「GPAが3より大きい大学生を見せて」と入力してクエリを実行してもらいたい場合です。または「2人以上の子供を持つ母親を表示する」これまでに見つけた最も近いリンクは次のとおりです:http ://english2sql.com/demo.htmlですが、送信したメールが返送されたため、あまりサポートされていないようです。私に。これに使用できるオープンソースライブラリがいくつかある場合は、できればC#で使用できます。助言がありますか?
4 に答える
あなたが直面する問題は、緩い文法 (英語) を厳密な文法 (SQL) に変換することです。たとえば、「子供が高校に通っている親に関するすべての記録を取得してください。」、「子供が高校生の親を見せてください。」 -学校」、「高校生の子供を持つ親を見てみましょう。」
これらのステートメントはすべて SQL に解決される可能性があります...
SELECT * FROM Parents WHERE AttendsHighSchool = 1;
この自然言語からクエリへのシステムを構築するには、人工知能の領域を掘り下げます。特定のパラメーターに基づいて SQL クエリを構築する UI の構築を検討することをお勧めします。
すなわち
"Show me " [DropDown containing tables]
where [DropDown containing Arguments] [DropDown containing operators] [DropDown containing values] "
平易な英語を SQL に変換するプラットフォーム、Kueri.meを試すことができます。さまざまな形式で提供されている場合でも、ユーザー入力を理解できます。
例えば、
- GPAが3以上の大学生を見せて
- GPAが3以上の学生
- 成績評価 > 3
プラットフォームは、基本的なフィルタリング、グループ化、および順序付けの準備が整った状態で提供されます。テーブルをさらに構成して、追加の言語範囲を取得できます。
たとえば、次のように地理位置情報を有効にすることができます。
- GPA が 3 より大きいデトロイトの学生を見せて
- NYC から 20 km 以内の学生を見せて
または動詞を定義する
- 昨年登録し、30 を超えるレッスンに参加した生徒を表示してください
注意してください、私はクエリ出身です。
SharpNLPプロジェクトを見ることができます。文を解析してトークン化する非常に興味深い機能があります。トークンのストリームを取得したら、SQL などで、そこから他の「文」を分析して構築できます。
たとえば、「show」、「display」などの動詞トークンを認識でき、それが SELECT クエリになることがわかっている場合、名詞を見つけてそれをテーブル名として扱うと、「with」などの前置詞は「WHERE」になります。 "、記事のトークンは無視される可能性があります。
以下は、文をトークン化し、すべてのトークンの種類を認識する方法などの例です。
また、Microsoft の DSL モデリング言語であるM 言語も参照してください(PDC の 1 つで紹介されているのを見ました)。独自の文法規則を簡単に定義できるため、「2 人以上の子供を持つ母親を見せてください」などのフレーズを理解し、それらをどうするかを正確に知ることができるため、SharpNLP などよりも使いやすいでしょう。しかし、M言語が今どうなっているのか、私にはわかりません。