python - 询问动态问题以获取信息
问题描述
我正在开发一个聊天机器人,它会询问用户数据库中不存在的信息。
考虑数据库有每个人的 40 个详细信息:姓名、年龄、最喜欢的食物、最喜欢的餐厅、最喜欢的城市、最喜欢城市的原因、城市中最喜欢的四个东西等。
所以,问题可以是“我们叫什么名字?” “你为什么喜欢巴黎?” “说出你最喜欢巴黎的四个地方吗?”
等等
我希望这些问题由机器人即时生成,但不知道如何用英语表达这些问题。任何帮助或方向(研究论文/图书馆/代码等)将不胜感激。
解决方案
自然语言生成是一个广阔的领域。如果您有一个(不仅是有限的而且)足够小的可能问题集,您可以使用固定文本,这意味着您准备模板字符串,并使用数据库中的必要信息来丰富,例如
"why do you like {}?"format("Paris").
这不是最优雅的方式,但绝对是 NLP 系统中经常应用的一种方法。或者,您必须构建内容确定、文本规划、微观规划和表面实现的完整管道。第一个意味着您确定问题的内容,例如“喜欢巴黎的原因”。中间概念意味着构建一个类似于 HPSG 的结构,该结构揭示了你的表达的构成结构、语义角色、动词的论点、附属词等。表面实现可以在不使用 simpleNLG 或您选择/平台的其他工具的情况下完成。两种方式都可以用于在线生成,但第一种肯定是更少的工作。要获得良好的科学概述:https ://arxiv.org/pdf/1703.09902.pdf
推荐阅读
- java - 我可以在特定情况下使用静态上下文字段吗?
- php - 如何在 SQL 查询中提供条件?
- java - 为什么在帖子 mvc 测试中出现此 415 响应?
- amazon-web-services - 无法通过 CloudFormation 将 IAM 角色分配为基于 AWS Lambda 资源的策略中的委托人
- android - 接收暂停活动的 LiveData 回调
- c# - Firebase 统一回调未调用 GameObject.SetActive()
- elasticsearch - 翻转时的 Elasticsearch 暖阶段不起作用
- xml - 使用 XQuery 3.0 将新元素插入 XML 文档
- amazon-web-services - 按用户定义的标签过滤 aws 成本管理时缺少服务
- python - 使用 fftconvolve 的数值积分错误