自然言語クエリを受け取り、それを SQL-Server の Microsoft MDX クエリに変換して Cube をクエリする Python アプリケーションを作成しようとしています。
私は spacy.io を使用していますが、名詞チャンクをデータソース/メジャー/フィルター/その他の名前と比較する最良の方法を見つけるのに苦労しています。
入力文例:
"Give me household count split by net sales from the base customer cube"
そこから、次の名詞のチャンクを抽出できます。
NP: household count split
NP: net sales
NP: the base customer cube
これらの名詞チャンクをテスト キューブの次の表示名と比較する最良の方法は何ですか?
Household Count
Net Sales
Base Customer
問題は、名詞のチャンクの 1 つに「split」という単語が含まれていることです。キューブの表示名の 1 つにもその単語が含まれている場合、単に削除することはできません。
文字列間のレーベンシュタイン距離を計算するなど、いくつかのことを試してみることを考えましたが、結果は一致を宣言するのに十分信頼できるものではありません。
だから私の質問は、どうすればこれを解決し、より信頼性の高い一致を得ることができるでしょうか? 私は間違った木を吠えていますか?それとも、Spacy.io を最大限に活用していないのでしょうか?
レーベンシュタイン距離を取得する前に、名詞のチャンクを解析し、「split」などのキーワードや「the」などの不要な単語を削除することを考えましたが、削除する可能性のある単語のリストを提供することに不安を感じています。キーワードの 1 つを含む本物の表示名がいくつかあることを確認します。