【问题标题】:Natural Language Processing Database Querying自然语言处理数据库查询
【发布时间】:2016-07-19 16:59:36
【问题描述】:

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

  • 使用 Python nltk (Natural Language Toolkit for python) 使用
  • Javascript 和 JSON(用于数据源)

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

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

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

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

【问题讨论】:

  • 您能否更清楚地了解您的目标是什么?您是指将人类句子解析为数据库查询的东西吗?
  • 是的,我想将人类句子解析成数据库查询..
  • 我认为您应该提供一些示例和一些代码,并说明这些限制是什么
  • 第一种方法是使用nltk.org/book/ch10.html
  • 这个只能实现简单的查询

标签: javascript python json nlp nltk


【解决方案1】:

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 下载。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 同意亚历克斯。感谢您的反馈
    • 回答“是,但很难”和“在您的问题中添加一些代码”不是答案。投反对票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多