json 自然语言处理数据库查询

vulvrdjw  于 2023-03-13  发布在  其他
关注(0)|答案(3)|浏览(225)

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

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

在第一种情况下,我做了一些NLP步骤来格式化自然查询,通过删除停用词,词干,最后使用特色语法Map来Map关键字。
然后我转向了第二种方法。在JSON中查找数据并获得相应的列名和表名,然后构建一个SQL查询。对于这个方法,我还实现了删除停用词,使用JavaScript进行词干分析。
这两种技术都有局限性,我想实现语义搜索方法。
请任何人能给我建议更好的方法来做这件事。

iklwldmw

iklwldmw1#

NLIDB(数据库的自然语言接口)的语义解析是具有许多技术的非常演进的领域:基于规则的方法(包括语法)或机器学习技术。它们覆盖了大范围的查询输入,并提供了比纯NL处理或正则表达式方法多得多的结果。
我喜欢的技术是基于特性的上下文无关语法FCFG。对于初学者,在NTLK书available online中,查找字符串“sql0.fcfg”。代码示例显示如何通过FCFG的特性“SEM”或语义将NL短语结构查询“What cities are located in China”Map到SQL查询“SELECT City FROM city_table WHERE Country=“china”。
我推荐卡温顿的书

  • Prolog程序员的NLP(1994年)
  • Prolog编程的深度(1997)

他们将帮助你走很长的路。这些PDF文件可以从他的site下载。

yqlxgs2m

yqlxgs2m2#

正如我所评论的,我认为您应该添加一些代码,因为不是每个人都读过这本书。
不管怎样,我的结论是,是的,正如你所说,它有很多限制,实现更复杂查询的唯一方法是编写非常广泛和完整的语法产品,这是一项相当艰苦的工作。

axkjgtzd

axkjgtzd3#

更现代的答案是,我们将需要使用大型语言模型,如https://openai.comhttps://text-generator.io。一个人接受过文本和SQL培训,然后是提示符,如https://text-generator.io/use-cases/sql-code-generation
当处理它返回的输出时要小心,它可能在各种方面是错误的,需要清理,而且给出的提示需要列/表名来知道如何查询数据库,也许还有类似查询的其他示例。
对于验证,您可能必须构建类似于ide自动修复语法的验证,例如,任何丢失的右括号

相关问题