architecture - 使用 NLP API 创建客户自助服务?

标签 architecture full-text-search nlp

我想使用 NLP(自然语言处理)创建客户自助服务。 只需用户输入搜索语句,例如“我如何支付每周费用?”自助服务将为用户提供最相关的常见问题解答及其答案。

  1. 我将使用Alchemyapi (NLP API)分析用户搜索句子。
  2. 使用 NLP API 返回的关键字和实体在数据库中进行搜索(标记的答案将保存在其中)。
  3. 向用户显示结果。
  4. 根据用户反馈(排名)更新答案标签。

这是我构建一个简单的自助服务时将要经历的逻辑,任何人都可以建议有效的方法来做到这一点,或者现有的 API 可以为我做到这一点。

提前致谢

最佳答案

你想要构建的东西对我来说看起来像是一个信息检索(搜索引擎)问题。假设您的数据库中有一组问题及其答案。您想要做的是,当有人输入问题时,您在数据库中的问题中找到与他的问题最匹配的问题,然后返回相应的答案。

实现方面。您实际上应该有两个数据库。一张简单的表格,其中包含问题 ID、问题文本和答案文本。另一个是您的搜索索引,您可以使用问题文本及其 ID 来构建搜索索引。我建议您使用Vector Space Model 。您可以使用 Apache Lucene、Solr 或 ElasticSearch。我自己更喜欢 ElasticSearch。

附注由于您是提出要存储在数据库中的问题的人,并且这些问题的唯一用途是与用户的问题相匹配,即没有人真正看到它们。那么,也许您可​​以让它们更详细,填充更相关的关键字,并播放它们的格式以使匹配更容易。

附注通常你使用 TF-IDF 作为索引,余弦距离用于匹配文本相关性,但我记得有一次在类似的任务中,由于问题足够短,禁用 TF-IDF 给了我更好的结果。我想说的是,你应该尝试使用这些参数,看看什么最适合你。

P.S.与向量空间模型相反的其他模型是二元独立模型和 Language Model 。检查它们here 。我在 this Python library 中实现了语言模型,但是当然,您可以找到更好的库。我喜欢语言模型,因为它需要更少的内存,并且有更好的方法来处理看不见的术语(单词)。

关于architecture - 使用 NLP API 创建客户自助服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35577824/

相关文章:

php - 客户端-服务器架构决策

c# - 如何在企业项目中使用依赖注入(inject)

mysql - 使用 innoDb 实现搜索功能的最佳方式

java - 如何连接 DisMax 处理程序 solr?

mysql全文搜索 "all but"查询

java - 从句子生成 N 元语法

Python NLTK : Extract lexical head item from Stanford dependency parsed result

architecture - 您使用哪些工具(免费)来设计软件

javascript - 可扩展和可修改 Node (npm) 模块的最佳实践

algorithm - 是否有一种算法可以判断两个短语的语义相似性