自然语言处理数据库查询

问题描述 投票:0回答:3

我需要为结构化数据库开发自然语言查询工具。我尝试了两种方法。

  • 使用 Python nltk(Python 自然语言工具包)使用
  • Javascript 和 JSON(用于数据源)

在第一种情况下,我做了一些 NLP 步骤,通过删除停用词、词干提取、最后使用特征语法映射来映射关键字来格式化自然查询。这种方法适用于简单的场景。

然后我转向第二种方法。在 JSON 中查找数据并获取对应的列名和表名,然后构建 sql 查询。对于这个,我还实现了删除停用词,使用 javascript 进行词干提取。

这两种技术都有局限性。我想实现语义搜索方法。

任何人都可以建议我更好的方法来做到这一点..

javascript python json nlp nltk
3个回答
1
投票

NLIDB(数据库的自然语言接口)的语义解析是一个非常发达的领域,有许多技术:基于规则的方法(涉及语法)或机器学习技术。它们涵盖了大范围的查询输入,并提供了比纯 NL 处理或正则表达式方法更多的结果。

我喜欢的技术是基于基于特征的上下文无关语法FCFG。对于初学者,在 NTLK 书中可在线获取,查找字符串“sql0.fcfg”。代码示例显示了如何通过特征“SEM”或 FCFG 的语义将 NL 短语结构查询“What cities are located in China”映射到 SQL 查询“SELECT City FROM city_table WHERE Country="china”。

我推荐卡文顿的书

  • Prloog 程序员的 NLP(1994)
  • 深入 Prolog 编程(1997)

他们会帮助你走得更远。这些 PDF 可从他的 site.

下载

0
投票

正如我评论的那样,我认为您应该添加一些代码,因为不是每个人都读过这本书。

无论如何,我的结论是,是的,正如你所说,它有很多限制,实现更复杂查询的唯一方法是编写非常广泛和完整的语法产品,这是一项非常艰苦的工作。


0
投票

更现代的答案是我们需要使用大型语言模型,例如https://openai.comhttps://text-generator.io 一个接受过文本和 SQL 培训,然后是一个提示,例如 https://text-generator.io/use-cases/sql-code-generation

在处理它返回的输出时要小心,它可能在各种方面都是错误的并且需要清理,而且给出的提示需要列/表名称来知道如何查询数据库以及类似查询的其他示例。

对于验证,您可能必须构建类似于 ide 自动修复语法的验证,例如例如错过任何右大括号

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.