瑞典NLP用于结构化数据的产品搜索引擎

时间:2017-08-25 09:21:57

标签: python sql nlp search-engine

我目前正在开发一个项目,其中我有一个包含1000个产品(洗衣机)的数据库,每个产品都有21个产品属性(如重量,尺寸,颜色,功耗等)。 我的目标是使用NLP使用户能够通过自然语言查询来搜索产品数据库,例如:

  

“找一台可以装载至少8公斤衣物的洗衣机,高度不超过60厘米,前面是不锈钢”

     

“我正在寻找一台价格低于6000瑞典克朗的洗衣机,前面有开口,而不是顶部”

此NL查询需要转换为SQL查询以与我的数据库一起使用。问题是我需要它用瑞典语工作。 我找到了一个很好的API(https://json-tagger.com/),它为我做了句子的预处理,标记化和标记瑞典语的词性。谢谢!但是现在我真的想要一些关于如何最好地将它转换为SQL查询的技巧?

我想我需要提取用户输入的关系和语义才能查询数据库,但我不知道如何做到这一点。由于这是一个相当有限的领域(洗衣机产品搜索),我希望我可以为此做一些规则,但我不确定这是否是正确的方法。任何帮助或想法都非常感谢! :)

我是NLP的新手,我更喜欢使用Python3。谢谢!

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,那么您正在为瑞典语寻找语义解析器,它将自然语言句子翻译成适用于您产品的SQL查询套件。这项任务非常庞大,可能是一个庞大的项目。如果您正在寻找快速解决方案,请跳到最后一段。

计算语义中很好的旧标准方法是为解析器编写语法并将每个单词转换到数据库中。例如this NLTK package中有一些例子。

此类路径的挑战是您需要在单个语法文件中手动硬编码所有可能的词汇表。更高级的类似解决方案是使用Grammatical Framework并在GF中编写受控语言。在那里,你可以从他们的大量资源语法开始,你不必担心不同语言的语法。这将是一个包,您可以添加到您的python程序或类似的东西。

如果那些受控语言的解决方案不能很好地为您服务,还有其他选项,例如概率CCG解析器将自然语言翻译成SQL(例如English-to-SQLother ideas),你可能需要自己训练。并且,如果你有很多带注释的数据并且想要拥有最先进的技术,那么你可以使用神经机器翻译器来查看解析器,例如neural programmer

最后,如果您想要快速解决方案,请为您知道的模式编写正则表达式。结果可能仍然与WolframAlpha查询非常相似。您甚至可以根据数据库中的已知名称实体使这些正则表达式中的一些动态化。希望这能回答你的问题。