我正在尝试编写一个 Python 应用程序,它将采用自然语言查询并尝试将其转换为 SQL-Server 的 Microsoft MDX 查询,以查询 Cube。
我正在使用 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
问题是其中一个名词块包含单词“split”,我不能只删除它,以防多维数据集的显示名称之一也包含该单词。
我考虑过尝试一些事情,例如计算字符串之间的 Levenstein 距离,但结果并不可靠,无法声明匹配。
所以我的问题是如何解决这个问题并获得更可靠的匹配?我在吠叫错误的树吗?或者也许没有充分利用 Spacy.io 的潜力?
在获得 Levenshtein 距离之前,我曾考虑过解析名词块并删除诸如“split”之类的关键词和诸如“the”之类的不必要的词,但在这种情况下,我对提供可能要删除的词列表感到不舒服有一些真正的显示名称包含其中一个关键字。