自然言語クエリの処理方法は?


11

自然言語のクエリについて知りたいです。スタンフォードには、自然言語を処理するための強力なソフトウェアのセットがあるようです。また、Apache OpenNLPライブラリ、およびText EngineeringのGeneral Architectureも見ました。

自然言語処理には信じられないほど多くの用途があり、これらのプロジェクトのドキュメントをすばやく吸収することは困難です。

少し単純化して、簡単な質問のSQLへの基本的な変換を実行するために必要なタスクの概要を説明できますか?

私のフローチャートの最初の四角形は少し謎です。

ここに画像の説明を入力してください

たとえば、私は知りたいかもしれません:

How many books were sold last month?

そして、私はそれを

Select count(*) 
  from sales 
  where 
   item_type='book' and 
   sales_date >= '5/1/2014' and 
   sales_date <= '5/31/2014'

回答:


6

自然言語クエリは、一般化するのが非常に難しい非常に多くの複雑さをもたらします。高いレベルから、名詞と動詞の観点から物事を考えることから始めます。

だから文のために:先月何冊の本が売れたの?

まず、次のようなツリー形式を返すパーサーで文を分解します。

ここに画像の説明を入力してください

主題図書、過去の売りの行動を示す複合語句、そして月の時間に焦点を合わせた名詞句があることがわかります。

修飾子の主題をさらに細かく分類できます。本の場合は「いくつ」、月の場合は「最後」です。

文を分解したら、それらの要素をSQL言語にマップする必要があります。

最後に、言語の要素を取得したら、さまざまなエンティティが相互にどのように相互作用するかについて一連のルールを作成する必要があります。

item_type = 'book' and sales_date> = '5/1/2014' and sales_date <= '5/31/2014'であるsalesからcount(*)を選択します

これは私が始める方法のハイレベルですが、私が述べたほとんどすべてのステップは簡単ではなく、実際にはウサギの穴は無限である可能性があります。これにより、接続するドットの多くが得られます。


1

単純な質問を答えに変えることは決して簡単ではありません。

テクノロジー全体で広くこれを正確に行う最初のテクノロジーは、大きな勝者となるでしょう。

ただし、人工知能(「IBM Watson」や「Amazon Alexa」など)で「質問に答える」ことでギャップを埋める人もいます。これには、問題のデータに関連する言語の複雑さ、データストアの内容、および名詞、動詞、代名詞の解決が必要です。

MicrosoftはEnglish Queryでここに挑戦しましたが、その後停止しました。Kueri.meはPythonベースのプラットフォームで、ほぼ同じことを行います。

構造化クエリ言語(SQL)など、SOQL、MDX、Hive、Impalaなどは、昔ながらのSQLを採用しています。まだほとんど何も置き換えられていません。これらのすべての要素は、より大きな「最終目標」に対する小さな修正であり、人工知能(AI)、特に機械学習にあります。

問題は:

「コンピュータは、あなたが望むものを理解することができます。」

未だに。言語学者、数学者、エンジニアなどの全員がパイの一部を提供するために、人工知能と機械学習の甘いケーキを楽しむことができます。


0

プレーンテキストメッセージをSQLに解析するパーサーを作成するには、いくつかの方法があります。たとえば、文法ベースのパーサーを作成し、NLPアルゴリズムを使用して構造化クエリを構築できます。1つのドメインからの解析済みメッセージ(eコマースなど)がすでにたくさんある場合は、機械学習アプローチを試し、それをさらに解析するために使用できます。

ただし、テキストからSQLへの変換のための文法ベースのパーサーとMLを組み合わせて、構文を修正したり、タイプミスを根絶したりすることで、ルールベースの文法を補完するのが最善のアプローチだと思います。

さまざまなアプローチについて詳しくは、こちらをご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.