我想使用 NLP(自然语言处理)创建客户自助服务。 只需用户输入搜索语句,例如“我如何支付每周费用?”自助服务将为用户提供最相关的常见问题解答及其答案。
- 我将使用Alchemyapi (NLP API)分析用户搜索句子。
- 使用 NLP API 返回的关键字和实体在数据库中进行搜索(标记的答案将保存在其中)。
- 向用户显示结果。
- 根据用户反馈(排名)更新答案标签。
这是我构建一个简单的自助服务时将要经历的逻辑,任何人都可以建议有效的方法来做到这一点,或者现有的 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/