自然语言处理数据库查询

时间:2016-03-31 09:56:22

标签: javascript python json nlp nltk

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

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

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

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

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

请有人建议我更好地做这件事。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

我偏爱的技术基于基于特征的上下文无关文法FCFG。首先,请在NTLK书available online中,查找字符串“ sql0.fcfg”。该代码示例演示如何通过功能“ SEM”或FCFG的语义将NL短语结构查询“中国位于哪些城市”映射到SQL查询“ SELECT city FROM city_table WHERE Country =“ china”。

我推荐卡温顿的书

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

它们将帮助您走很长一段路。这些PDF可从他的site下载。