头天贴主参加了阿里的笔试,第一道编程题就够做了。不是时间短,是脑子不够用。好了,不废话了,上干货。

题目介绍

现下互联网AI战争以智能音箱为切入口,敲开市场大门,抢夺市场用户。智能音箱需要语音交互,这就涉及到query指令的语义理解。例如:"我要看章子怡的一代宗师",这里边需要识别出来:动作“看”,“章子怡”,“一代宗师”。一般都会建立一个知识库:名词标注各种标签,这里边可能会有:章子怡是演员,一代宗师是电影。另外有的名词可能会有包含关系,例如,“周杰”,“周杰伦”,这个采用从左到右最长字符串优选匹配原则。

输入格式:

       第一行是简化版知识库:<标签1>_<名词1>|<名词2>|<名词3>;<标签2>_<名词2>|<名词4>|<名词5>;.....

       第二行是query指令。

输出格式:

       **** <名词1>/<标签1> **** <名词2>/<标签1>,<标签2> ****

范例:      

  输入:

      singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪

      请播放周杰伦的七里香给周杰伦周杰孙俪听周杰王力宏

  输出:

      请播放 周杰伦/singer,actor 的 七里香/song 给 周杰伦/singer,actor 周杰/singer 孙俪/actor 听 周杰/singer 王力宏/singer

思路

由于有从左到右优先的匹配的选择,所以考虑把输入的知识库转换成名词映射多个标签:{"<名词2>": ["<标签1>", "<标签2>"], ....},并且按key=<名词k>倒序;之后按排序后的key依次遍历匹配query,匹配成功,则替换query中名词为带编号的特殊标识(为了不让后边短的子字符串覆盖长的父字符串),并且记录这个名词,遍历完之后,得到一个有序的名词列表,最后遍历有序的名词列表,替换query中的特殊标识得到最终的输出结果。

代码

#!/usr/bin/env python
# -*-encoding=utf8-*-import redef match_process():row1 = raw_input()datas = {}entity_str_list = row1.split(";")for entity_str in entity_str_list:entity_name, entity_values = entity_str.split("_")entity_value_list = entity_values.split("|")for entity_value in entity_value_list:if datas.has_key(entity_value):datas[entity_value].append(entity_name)else:datas[entity_value] = [entity_name]entity_list = sorted(datas.keys(), reverse=True)row2 = raw_input()words = row2result = []tmp_words = wordstemp_entity = ""count = 1for entity_value in entity_list:if entity_value in tmp_words:if temp_entity == "":temp_entity = entity_valueelse:resulta.append(temp_entity)tmp_words = tmp_words.replace(temp_entity, "|&{}&|".format(count))count += 1temp_entity = entity_valueelse:if temp_entity != "":resulta.append(temp_entity)tmp_words = tmp_words.replace(temp_entity, "|&{}&|".format(count))count += 1temp_entity = ""if temp_entity != "":resulta.append(temp_entity)tmp_words = tmp_words.replace(temp_entity, "|&{}&|".format(count))final_list = sorted(result, reverse=True)for index in xrange(len(final_list)):st = ",".join(datas[final_list[index]])new_str = " " + final_list[index] + "/" + st + " "tmp_words = tmp_words.replace("|&{}&|".format(index + 1), new_str)print " ".join(tmp_words.split())if __name__ == '__main__':match_process()#singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪
# 请播放周杰伦的七里香给周杰伦周杰孙俪听周杰王力宏

运行截图:

阿里笔试--智能对话简化版之query指令槽位识别相关推荐

  1. 阿里云智能对话分析服务

    2019独角兽企业重金招聘Python工程师标准>>> 关于智能对话分析服务 智能对话分析服务 (Smart Conversation Analysis) 依托于阿里云语音识别和自然 ...

  2. 当你和天猫精灵对话时,它在想什么?阿里智能对话技术深度解读

    摘要: 术语对齐 TaskBot引擎: 核心处理对象是"技能",我们把技能定义成结构化(query+content).垂直场景化的任务,比如实时场景查询.工具类.控制类等QABot ...

  3. 当你和天猫精灵对话时,它在想什么?阿里智能对话技术深度解读 1

    术语对齐 TaskBot引擎: 核心处理对象是"技能",我们把技能定义成结构化(query+content).垂直场景化的任务,比如实时场景查询.工具类.控制类等 QABot引擎: ...

  4. 【阿里云】| 智能对话机器人(云小蜜) | 快速开发入门

    文章目录 一.环境要求 二.实现代码 三.参考文档 一.环境要求 Python 3 安装 SDK 核心库 OpenAPI ,使用pip安装包依赖: pip install alibabacloud_t ...

  5. 一个中心、三大原则,阿里这样做智能对话开发平台

    作者 | 阿里巴巴高级算法专家  李永彬(水德) 整理 | 一一 出品 | AI科技大本营 在阿里巴巴的X峰会上,阿里巴巴-智能服务事业部高级算法专家李永彬(水德)分享了小蜜智能开发平台的构建,他围绕 ...

  6. 阿里智能对话交互实践与创新

    来源:人工智能头条 作者 :孙健,李永彬,陈海青,邱明辉 概要:过去 20 多年,互联网及移动互联网将人类带到了一个全新的时代,如果用一个词来总结和概括这个时代的话,「连接」这个词再合适不过. 过去 ...

  7. 阿里智能对话交互技术实践与创新

    本文来源「中国人工智能学会通讯」第11期,感谢作者授权转载. 作者 | 孙健,李永彬,陈海青,邱明辉 过去 20 多年,互联网及移动互联网将人类带到了一个全新的时代,如果用一个词来总结和概括这个时代的 ...

  8. 北京/杭州内推 | 阿里达摩院对话智能团队招聘NLP算法研究型实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 阿里巴巴达摩院 阿里巴巴达摩院对话智能团队 (Conversational ...

  9. 报名啦!阿里云智能客服对话式AI算法大赛之知识图谱构建与问答

    看为推动知识图谱与语义计算技术发展及应用落地,阿里云智能客服 CATC(Conversational AI Technology Challenge)大赛系列一"CCKS 2021 知识图谱 ...

  10. AI时代的神马搜索!神马智能对话技术深度解读

    智能对话是搜索引擎的未来形态,神马搜索在发展全网搜索.国内信息流.国际信息流等大数据业务的同时,智能对话的探索和沉淀也逐渐浮出水面.过去一年基于搜索推荐多年的积累,我们完成了平台架构.生产体系.算法体 ...

最新文章

  1. Weex第一天:手势
  2. 【译】一行css代码搞定响应式布局
  3. YBTOJ:放置棋子(费用流)
  4. html设置json请求头,当我想在zf2客户端代码中使用“application/json”时,接受请求标头是“text/html,application/xhtm ...(etc)”...
  5. 对于早期Servlet内核你清楚吗,这些基础的东西,不能忘哦
  6. Flexbox属性介绍
  7. 软件工程师证书怎么考_2020年想考一个证书,考一级造价工程师还是考咨询工程师?...
  8. Abaqus怎么切换中英文界面
  9. Warshall 算法
  10. 用游戏编辑器制作MOD脱颖而出
  11. 一个人、一瓶酒、半斤肉饼、两杯饮料
  12. Re32:读论文 Summarizing Legal Regulatory Documents using Transformers
  13. python灰色预测_【数学建模】灰色预测及Python实现
  14. iCCP: cHRM chunk does not match sRGB
  15. 宠爱吖用计算机怎么弹,宠爱吖简谱-歌谱-歌词
  16. Android车载性能自动化测试Case设计
  17. android传感器介绍
  18. hutool导出excel 设置单元格日期格式 poi设置excel单元格日期格式
  19. Android注解之从入门到并没有放弃
  20. 利用python打开Matlab的mat文件

热门文章

  1. [经典论文分享] Decision Transformer: Reinforcement Learning via Sequence Modeling
  2. 尚硅谷nodejs入门教程_笔记
  3. nginx 二 配置conf
  4. 21.0425开课吧开课前学习
  5. spring mvc +maven 集成 quartz实现定时任务
  6. iOS 百度地图_自定义Annotation大头针_修改大头针图片
  7. java 批量文件编码转换 GBK to UTF-8(swing界面)
  8. 高性能`锁库存`/`释放库存`重构实战
  9. 计算机取证volatility
  10. numpy学习线性回归, 并用matplotlib画动态图