我需要为结构化数据库开发自然语言查询工具。我尝试了两种方法。
在第一种情况下,我做了一些NLP步骤,通过删除停用词,词干,最后使用特色语法映射来映射关键字来格式化自然查询。这种方法适用于简单的场景。
然后我转向第二种方法。在JSON中查找数据并获取相应的列名和表名,然后构建一个sql查询。对于这个,我还实现了删除停用词,使用javascript来阻止。
这两种技术都有局限性。我想实现语义搜索方法。
请有人建议我更好地做这件事。
答案 0 :(得分:1)
正如我评论的那样,我认为你应该添加一些代码,因为不是每个人都读过这本书。
无论如何,我的结论是肯定的,正如你所说它有很多限制,实现更复杂查询的唯一方法就是编写非常广泛和完整的语法作品,这是一项非常艰苦的工作。
答案 1 :(得分:0)
NLIDB(数据库的自然语言接口)的语义解析是一个非常发展的领域,它具有许多技术:基于规则的方法(涉及语法)或机器学习技术。它们涵盖了广泛的查询输入,并且比纯NL处理或正则表达式方法提供了更多的结果。
我偏爱的技术基于基于特征的上下文无关文法FCFG。首先,请在NTLK书available online中,查找字符串“ sql0.fcfg”。该代码示例演示如何通过功能“ SEM”或FCFG的语义将NL短语结构查询“中国位于哪些城市”映射到SQL查询“ SELECT city FROM city_table WHERE Country =“ china”。
我推荐卡温顿的书
它们将帮助您走很长一段路。这些PDF可从他的site下载。