微软学生俱乐部

登录

编程之美

编程之美挑战赛是微软面向学生开展的大型编程比赛,自2012年以来已成功举办了五届比赛,先后有来自国内外77000+高校学生参加过编程之美大赛。现已成为以解决挑战性问题为目标的优秀学生切磋交流及实现梦想的平台。

它致力于帮助学生们了解、学习最新的技术理念,动手实践最热门的技术,玩转最酷炫的工具,并通过比赛加强他们在协作、沟通等方面的软实力,从而提高青年开发者的综合实践能力,成为能够解决当今热点问题,走在时代前沿的青年典范。

编程之美挑战赛是微软面向学生开展的大型编程比赛,自2012年以来已成功举办了五届比赛,先后有来自国内外77000+高校学生参加过编程之美大赛。现已成为以解决挑战性问题为目标的优秀学生切磋交流及实现梦想的平台。今年,编程之美挑战赛2.0时代到来,它致力于帮助学生们了解、学习最新的技术理念,动手实践最热门的技术,玩转最酷炫的工具,并通过比赛加强他们在协作、沟通等方面的软实力,从而提高青年开发者的综合实践能力,成为能够解决当今热点问题,走在时代前沿的青年典范。

微软认为,在信息科技史上真正的第三个大时代是人工智能时代,而它的核心革命,就是“对话即平台” Conversation as a Platform的崛起。在对话即平台的时代,不管是一个App、一块屏幕、一个设备,还是一个眼镜、一盏台灯,甚至是一个桌子,都会有一个对话的“窗口”,所有的交互都通过对话来完成。起床,你用自然语言唤起梳妆台的镜子显示今日的天气和新闻。家里的小娜(Cortana)提醒你今天因为限号4,9,根据历史的预测会提早堵车,需要提前20分钟出发。头疼得要紧,与手机里的医疗助力探讨后,他觉得你是因为劳累过度颈椎病犯了,建议你应该去挂骨科看颈椎。旅游途中,看到一座不知名的古城,你向你的的太阳眼镜询问这是哪里,是否好玩儿?它立刻告诉你古城的历史和现在的信息,建议你修改原来的行程,去古城里转转会有更好的收获。

怎么样才能实现“物物智能、智能众生”的构想呢?微软将微软亚洲研究院研究技术Bot Framework和Cognitive Services开放出来。不论是大公司还是小团队,又或者是独立开发者,都可以借助这智能的洪荒之力,一起来实现四海八荒智能对话的未来。

因此,编程之美挑战赛2017的主题应运而生,请同学们利用微软Bot Framework和Cognitive Services,为你所爱的学校打造一个最美Bot。

  • 它是为学校提供信息咨询服务的智能Bot,让学校信息的获取变得简单有趣!
  • 它是服务老师和同学的智能助手,让你的才能用最酷的方式进行展现!
  • 它会成学校最炫的一张名片,让Everybody爱上你的学校!

2017编程之美挑战赛,智出乎争,等你来战!

赛制简介:

大赛分为资格赛、初赛和决赛三个阶段,资格赛要求参赛队伍学习Bot Framework和Cognitive Services(以LUIS为主)相关的技术,完成大赛发布的在线培训课程,最后参加在线考评,排名前50进入初赛。

初赛基本要求为参赛队伍以Bot Framework为技术平台,使用LUIS使Bot具有自然语言理解能力,以参赛者各自学校官方网页中的“学校概况”和“学院设置”为数据源,开发具有自然语言理解的智能问答Bot。使用户可以用自然语言的方式向“小美”以文本形式进行提问,“小美”会用自然语言的方式给出文本回答,初赛以回答问题正确率进行排名,选出初赛前8名,进入决赛。

进入决赛的团队,将被指派企业导师,可以进一步完善比赛作品后,参加在决赛活动。决赛基本要求为参赛队伍以Bot Framework为技术平台,尽可能利用微软认知服务,发挥最大创造力为你的学校打造出一个提供学校相关信息服务的智能Bot “小美” ,决赛会从Bot功能性、鲁棒性、UI 设计、微软技术利用性和用户体验五个方面进行考评,现场展示作品角逐出冠、亚、季军。

信息发布:

比赛选手可以通过访问编程之美挑战赛官方网站获取大赛最新最全信息,亦可扫描下方二维码关注微软学生俱乐部微信公众号和编程之美挑战赛官方微博同步获取我们推送的最热消息。

微软学生俱乐部微信公众号 编程之美挑战赛官方微博

一. 资格赛任务描述

1. 5月12期间5月26日 参加编程之美系列直播培训课程进行线上集中学习

2. 6月5日至6月6日12:00AM 登录编程之美大赛官网完成资格赛测试

二. 资格赛测试形式和内容范围

2017编程之美挑战赛的资格赛测试,将包含5个在线提交的测试题,其中4个选择题,1个任务题。所有考评内容都将包含在5月12日至5月26日编程之美系列直播培训课程之中,培训课程见规则底部。

三. 资格赛任务题介绍

资格赛任务题是基于文档的问答任务(Document-based Question Answering task, DBQA),它是对于给定的一篇文档(Document)和一个从文档中提出的自然语言问题(Question),参赛队伍需要使用提供的数据集训练模型算法,让模型可以回答问题,回答时仅限于从组成该文档的句子中选出能回答该问题的句子(Answer Selection in Question Answering)。鼓励参赛队伍发挥算法创造力并使用各种资源来训练模型,比如句子匹配模型(Sentence Matching Model),以使模型能准确地回答问题。

四. 资格赛任务题数据描述

在资格赛中,我们为参赛队伍提供训练数据集training_set.txt、开发数据集development_set.txt[1]、测试数据集testing_set.txt和提交结果样例sample_output.txt,分两部分公布给参赛队伍。

第一部分为训练数据集与开发数据集,在资格赛开始时公布给参赛队伍,它们的数据格式如表格1所示:

答案标签 问题 句子
0\t 贝加尔湖的面积有多大?\t 贝加尔湖,中国古代称为北海,位于俄罗斯西伯利亚南部。
0\t 贝加尔湖的面积有多大?\t 贝加尔湖是世界上最深,容量最大的淡水湖。
0\t 贝加尔湖的面积有多大?\t 贝加尔湖是世界上最深和蓄水量最大的淡水湖。
0\t 贝加尔湖的面积有多大?\t 它位于布里亚特共和国和伊尔库茨克州境内。
0\t 贝加尔湖的面积有多大?\t 湖型狭长弯曲,宛如一弯新月,所以又有“月亮湖”之称。
1\t 贝加尔湖的面积有多大?\t 贝加尔湖长636公里,平均宽48公里,面积3.15万平方公里。
0\t 贝加尔湖的面积有多大?\t 贝加尔湖湖水澄澈清冽,且稳定透明,为世界第二。
0\t 微软亚洲研究院何时建立?\t 微软亚洲研究院是微软公司在亚太地区设立的研究机构,
0\t 微软亚洲研究院何时建立?\t 也是微软在美国本土以外规模最大的一个。
1\t 微软亚洲研究院何时建立?\t 从1998年建院至今,
0\t 微软亚洲研究院何时建立?\t 通过从世界各地吸纳而来的专家学者们的鼎力合作,

表格1: 训练集和开发集的数据格式

训练数据集和开发数据集中包含答案标签、问题和句子三列内容。

数据集中包含多篇文档,一篇文档由多行句子组成,问题是针对一篇文档提出的自然语言问题,每篇文档对应唯一的问题。例如,表格1中问题“贝加尔湖的面积有多大?”是针对前7行句子组成的文档提出的。

答案标签是句子是否能作为问题的答案的标记,如果文档中的某一个句子是问题的答案,那么这句话的对应的答案标签是1,并将这句话称为问题的“最优回答”;反之,则是0。例如,上面第6句话可以作为问题的答案,因此它的标签是1。数据集包含的三列数据通过\t符号(\table)分割。

第二部分为测试数据集testing_set.txt和提交结果样例sample_output.txt,将在6月05日公布给参赛队伍。测试数据集用于资格赛评比,数据包含问题和句子两列内容,格式如表格2所示:

问题 句子
中国第一所职业学校成立时间?\t 职业教育是旨在培养从业人员实用性技能的教育领域。
中国第一所职业学校成立时间?\t 中国的职业教育可以追溯到洋务运动时期。
中国第一所职业学校成立时间?\t 1866年,清政府成立福州船政学堂是中国的第一所职业学校
中国第一所职业学校成立时间?\t 1917年成立的中华职业教育社是中国第一个推进职业教育的团体。
中国第一所职业学校成立时间?\t 该团体提出了提出了“使无业者有业,使有业者乐业”的理念。
中国第一所职业学校成立时间?\t 中华人民共和国成立后,创办了大量职业学校。
中国第一所职业学校成立时间?\t 改革开放以后,中国经济快速发展,职业教育也随之蓬勃发展。
微软总部在哪里?\t 微软,是一家美国跨国科技公司。
微软总部在哪里?\t 也是世界PC(Personal Computer,个人计算机)软件开发的先导,
微软总部在哪里?\t 公司总部设立在华盛顿州的雷德蒙德。

表格2: 测试集的数据格式

测试集中句子的答案标签会提前标注好,用于测评参赛队伍的提交结果。

参赛队伍提交文件必须和提交结果样例sample_output.txt的格式一致。该格式如表格3所示:每一行数据只包含一个实数,该实数值表示该行句子与问题的答案的相关性,实数值越大,表明该句子更能作为问题的答案。例如,表格3是模型在表格2所示的2篇文档上运行出来的结果。第1篇文档中(前7行),第3行的数值最大,则表明参赛队伍训练的模型把第3行的句子“1866年,清政府成立福州船政学堂是中国的第一所职业学校”作为最能回答问题“中国第一所职业学校成立时间?”的答案;同理,第2篇文档中(8-10行),第10行数值最大,则模型预测“公司总部设立在华盛顿州的雷德蒙德。”是与问题“微软总部在哪里?”最相关的答案。

0.2343556
0.5634232
1.2384834
0.2324467
0.1283447
0.3434554
0.4754545
0.1983526
0.4822313
1.1308653

表格3.提交结果的格式

参赛队伍务必注意:提交结果中,各个相关性得分所在的行号(line number)必须与测试集中句子的行号(line number)一一对应。

五. 资格赛任务题评价指标

• Mean Reciprocal Rank(MRR)

|Q|表示评比数据集中问题的总数量,也是文档的总数量。

ranki表示对于第i个问题Qi,Qi的最优回答在答案集合Ci[2]中对应的实数值所排的顺序位。例如表格2中,Q1“中国第一所职业学校成立的时间?”的最优回答是第3个句子,在表格3的提交结果中第3个句子的实数值是1.2384834,它排在C1中第1位,因此 rank1=1。以此类推第i个问题的ranki。特别的,如果Ci没有覆盖标注的答案,那么1/ranki=0。

六. 资格赛作品提交

提交时间:2017年6月6日12:00am前

提交内容:

1.选择题在线提交答案

2.任务题需提交与sample_output.txt的格式一致的txt文本文档

七. 资格赛晋级条件

A. 四个选择题全对。

B. 在条件A的基础上,任务题按MRR的得分高低排序,得分最高的前200支队伍进入初赛。

[1] 训练集数据用于训练模型;开发集数据用于参赛队伍测试自己模型的效果。

[2] Ci表示对于第i个问题参赛队伍给出的答案集合。以表格2、表格3为例,第1个问题“中国第一所职业学校成立时间?”的答案集合C1

0.2343556
0.5634232
1.2384834
0.2324467
0.1283447
0.3434554
0.4754545

第2个问题“微软总部在哪里?”的答案集合C2

0.1983526
0.4822313
1.1308653

八. 课程安排

时间 题目 内容 讲师
5月12日 17:00~17:30 自动问答系统简介 介绍典型的自动问答系统,包括基于知识库的自动问答(KB-QA)、基于文本的问答(Text-QA)和基于FAQ的问答(Community-QA)等。此外,还会对本次大赛问答任务中涉及到的技术做简要说明。 段楠
5月16日 17:00~17:30 如何建立面向任务的自然语言理解模型 人工智能助理(AI Bot)的一个重要部分是自然语言理解模型。本课程将介绍面向任务的自然语言理解模型,以及如何利用微软认知服务的自然语言理解智能服务(LUIS)快速开发应用合适的模型。 曹涌
5月19日 17:00~17:30 用微软Bot Framework开发聊天机器人 1. 介绍微软Bot Framework 的配置以及如何用Bot Framework SDK开发对话聊天机器人
2. 介绍如何使用Bot Framework中的QnA Maker开发问答聊天机器人
3. 介绍如何使用Bot Framework讲自己开发的聊天机器人发布到多个聊天工具中
4. 用实际案例帮助大家熟悉Bot Framework的使用以及在开发过程中需要注意的问题
黄文灏
5月23日 17:00~17:30 集中答疑 从选手提问中选出有代表性的问题,进行集中答疑 韦福如/段楠/曹涌/黄文灏

1 课程回看

第一次课:点击观看

第二次课:点击观看

第三次课:点击观看

2 配套PPT

第一次课:点击下载

第二次课:点击下载

第三次课:点击下载


训练集和开发集数据下载 MRR评分计算 测试集数据下载

1. 基本要求:

  • 初赛命题:学习智能问答技术和自然语言理解技术,以Bot Framework为技术平台,利用Cognitive Service,例如:LUIS(语言理解智能服务),QnA Maker等技术,开发出具有自然语言理解能力的智能对话Bot。用户可以用自然语言的方式向Bot进行交互。例:
    假设是清华大学的bot
    问题1 请问计算机科学与技术系的系主任是谁?
    Bot回答 吴建平
    问题2 请问贵校建校于哪一年?
    Bot回答 1911年
    问题3 清华有多少本科专业?
    Bot回答 78
    问题4 贵校的校风是什么?
    Bot回答 行胜于言
  • 技术要求:要求至少使用Bot Framework搭建Bot,并将Bot通过Web chat channel发布利用Cognitive Service,使Bot具有自然语言理解和交互能力。
  • 数据:大赛要求同学们至少以各自学校的官网为数据源,是让自己的Bot对这些信息,做到有问必答。其中初赛考评题目和答案都来源于在参赛队各自学校官方网页中的“学校概况”、“学院设置”、“人才师资”、“科学研究”等栏目,以及 每个院系的“院系简介”等栏目。
  • 评审:初赛考评Bot对所提问题的自然语言理解能力,按回答问题的正确与否进行积分统计排名。
  • 时间:

    6月17日至7月4日为初赛Bot作品开发阶段

    6月26日,向选手发布20题测试问题,供选手自行测试bot能力。

    7月5日至7月6日为作品提交时间

    7月7日至7月13日初赛评审时间

    7月14日公布初赛结果和复赛比赛细则

2. 提问标准与评审规则:

2.1 难度变化

初赛考评Bot自然语言理解能力。考评问题会通过增加参数和变体等因素,变换难度。

例1:增加参数

假设是清华大学的bot 题目解析
问题1 请问计算机科学与技术系的系主任是谁? 参数:计算机科学与技术系
Bot回答 吴建平
问题2 请问计算机科学与技术系上一任系主任是谁? 参数:计算机科学与技术系+上一任
Bot回答 孙茂松
问题3 请问计算机系上一任系主任是谁? 参数:计算机系+上一任,变体:计算机系(计算机科学与技术系),前任(上一任)
Bot回答 孙茂松

例2:连续对话

假设是清华大学的bot 题目解析
问题1 请问清华大学的校长是谁
Bot回答 邱勇
问题2 那上一任是谁呢? 基于上下文语境理解
Bot回答 陈吉宁

例3:常识推理

假设是清华大学的bot 题目解析
问题1 请问清华大学是建校于建国前么? 清华大学建校时间,与建国时间的比对和判定。
Bot回答

2.2 答案判定

答案判定标准如下:

  • 答案可以是字、词、词组,句子和一段话,但必须给出针对问题本身的唯一回答。
  • 鼓励同学们用自然语言表达的方式回答问题,如例题中的方式2。
  • 回答如果本身信息错误,不得分,如例题中的方式3。
  • 回答如果中心表达意思不对,只是包含了正确的答案要素,不得分的,如例题中的方式4。
  • 回答如果列举了问题的所有相关答案,其中也包含了正确的答案要素,不得分的,如例题中的方式5。

    例题:

    假设是清华大学的bot 得分
    问题1 你们学校的上一任校长是谁?
    Bot回答 方式1:陈吉宁 正确 1
    方式2:我校上一任校长是陈吉宁 正确 1
    方式3:邱勇 错误 0
    方式4:4月28日上午,校长陈吉宁在工字厅会见了印度驻华大使阿肖克·康特先生。 错误 0
    方式5:邱勇、陈吉宁、顾秉林、王大中 错误 0

2.3 比赛评分

  • 初赛基础测评会从给定数据源中抽60个问题,每题一分,共60分。
  • 选手的bot每回答正确一题,积一分,错误一题,不得分,最后根据积分进行排名,选出前八名。
  • 如若60题筛选不出前8名,则会加试20~40题,直到筛选出前八名,进入决赛。

3. 作品提交:

  • 提交时间:7月5日至7月6日。提交系统将于7月6日中午12时关闭。
  • 提交地址:大赛官方网站,初赛规则页面。
  • 提交须知:在7月5日到7月13日期间,一定要打开Bot framework direct line功能,如果没有打开,影响评审的团队,视为自动弃权。
  • 提交内容:

    1. 基于Bot framework web chat发布的Bot访问页面地址

    2. 通过direct line生成的Secret Key(两个Secret Key均需提供)。

注:本说明中使用的样例数据答案均来自清华大学官网。


样例问题 查看我的作品提交

一. 基本要求

  • 决赛命题:
    • 发挥最大创造力为你的学校打造出一个提供学校相关信息服务的智能Bot “小美“。用户可以用自然语言的方式向“小美” 进行提问,“小美”会用自然语言的方式给出回答,提问和回答方式不限。与初赛不同,决赛的问题范围不设任何限制,任何与大家的校园生活有关的问题都可能出现。
    • 同时要求”小美”至少可以完成一类任务例如校园学习助手或是校园生活助手。
      假设是清华大学的bot
      问题1 请问清华大学的校长是谁?
      Bot回答 邱勇
      问题2 今天上午9点的《计算机基础》在哪个教室上课?
      Bot回答 东主楼205
      问题3 东主楼地址发给我?
      Bot回答
      问题4 附近有地铁站么?
      Bot回答 附近有五道口站和清华东路西口站。
    • 应用场景:
      希望各个队伍在开发bot时,除了实现普通的bot功能,能够有学校和队伍的特色,而不是千篇一律。可以尝试寻找一个创意点或者主攻方向作为bot开发的重点。
      例如:
      学霸bot:
      当同学们在校园生活中需要查询成绩,学校机构联系方式,了解学校的一些基本信息时,查询空闲自习室,查询图书馆书目,等等与学习需求息息相关的各项功能。
      生活bot:
      新生想要了解周边交通,学校食堂,校园生活设施等等各种与生活内容紧密联系的内容。
      组委会鼓励各队发挥创意,寻找自己bot的独特之美。
  • 技术要求:以Bot Framework为技术平台,尽可能地多使用Cognitive Service使Bot更智能,多使用微软其他产品和设备,使Bot酷炫。
  • 数据要求:除以学校官方网页为数据源外,可根据Bot功能特色场景需求,自行添加其他数据来源,内容将涉及校园生活的方方面面。
  • 导师要求:
    • 必须邀请学校老师担任比赛团队的指导老师,大赛会邀请指导老师来参加决赛活动,并评出最佳指导老师奖。
    • 同时,主办方会从微软邀请分别来自4位工程领域和4位科研领域的导师,为参赛队伍提供多角度的指导。每位导师都将带领2支队伍,每支队伍也会有工程和科研领域各一位导师。
  • 时间安排:
    07月14日 决赛名单及赛题公布
    07月15日至07月16日 导师分配
    07月17日至08月14日 决赛开发
    08月14日 决赛作品提交,评委提前准备问题
    08月15日 决赛展示、评审和颁奖

二. 评审细则:

满分100分,根据分数高低角逐一、二、三等奖。

  • 评分分为两个部分,现场评分和自动评分。其中,现场评分80分,自动评分20分。
  • 自动评分将采用初赛的模式,对各队提交的bot提问20个校园问题,并根据返回的答案正确性进行打分。决赛无数据源限制,问题可能来自于校园生活的方方面面。请大家参考初赛的比赛模式进行开发,并对各类可能提出的问题进行充分的扩展。
  • 作品提交:
    • 提交Bot web chat的url以及direct line的secret key。
    • 决赛现场展示PPT
    • 团队展示视频 (一分钟左右,展现队伍特色,队员风采等)
  • 现场评分部分,由评委团在决赛现场评审。按Bot功能性、鲁棒性、UI 设计、微软技术利用性和用户体验五个方面考评。
    Bot 功能性 鲁棒性 微软技术利用性 UI设计 用户体验
    30 10 20 10 10
    • Bot功能性的30分将分为创意性10分以及功能完整性20分。创意性将考察作品是否能够有创意的解决某一校园生活场景的问题,发挥独特的作用。功能完成性将考察作品是否能够正常对评委们的问题做出相应回答。
    • 鲁棒性将考察作品1.能否正常进行反应,而不在决赛现场的考验出现意外崩溃等情况;2.对于意料之外的问题,能否做出合适的处理;3.对于自然语言的不同表达方式,能否准确的理解。
    • 微软技术利用性将由评委对队伍的答辩进行考察,询问关于bot的技术实现细节,以及其中微软相关技术的占比和使用深度。
    • UI设计将对bot作品界面的美观程度进行打分。
    • 用户体验分数来自决赛当天作品展示环节中观众投票结果。获票数最高的队伍10分,后面的队伍依次减一分。最高票队伍可同时获得最佳人气奖。

三. 决赛评审安排和颁奖:

决赛评审和颁奖活动将在8月15日在北京举办,分为评委评审环节、作品展示环节、技术分享环节、颁奖典礼环节

  • 评委评审环节:
    • 现场评分展示将于8月15日上午在MSRA北京现场进行,8个队伍抽签决定展示出场顺序。
    • 每个参赛队伍考评时间为25分钟,其中15分钟为队伍展示时间,10分钟为答辩时间。各队可以发挥创造力,选取最合适自己队伍的方式,包括但不限于PPT 展示,小品等,向大家展现你们的bot。
    • 评委现场打分。根据选手现场表现给出Bot功能性、鲁棒性、UI 设计、微软技术利用性相应的分数。
  • 作品展示环节:
    • 决赛当天中午,将安排8支队伍在微软大厦内进行产品展台形式的展示,展示观众为微软员工、微软学生俱乐部成员、媒体等。
    • 观众将给自己喜爱的bot投票。各队可以向员工们展现自己的bot,以获得更高的投票。这将作为现场评分部分用户体验模块以及最佳人气奖的评分依据。
  • 技术分享环节:
    邀请相应领域专家分享技术,探讨发展。是给决赛选手举办的大福利,细节另行通知。
  • 颁奖典礼环节:
    细节另行通知。

附:决赛入围名单(排名不分先后)

队伍学校 姓名 专业 年级
东北大学 张悦 软件工程 大二
东北大学 谢俊琨 计算机 大一
东北大学 董雨辰 信息安全 大二
东北大学 夏浩耘 软件工程 大二
北京航空航天大学 肖暐奇 软件工程 大二
北京航空航天大学 李弈成 计算机科学与技术 大二
北京大学 潘虹 计算机科学 大四
北京大学 苗睿 计算机科学 大四
北京大学 王丰 计算机科学 大四
北京大学 王佩 计算机科学 大四
北京邮电大学 李思珍 计算机技术 研一
北京邮电大学 陈廷硕 信息与通信工程 研二
北京邮电大学 郭增荣 软件理论中心 研一
上海交通大学 刘容嘉 设计学 研一
上海交通大学 王贇超 软件工程 大三
上海交通大学 王哲 机械工程 研一
上海交通大学 张霄远 机械工程 大一
武汉大学 孙琦 软件工程类 大一
武汉大学 陈子轩 计算机科学与技术 大一
武汉大学 陈子轩 物联网工程专业 大三
武汉大学 富鑫 电子信息 大二
北京邮电大学 郎爽 计算机科学与技术 研一
北京邮电大学 贾已 计算机科学与技术 研一
北京邮电大学 张思遥 计算机科学与技术 研一
北京邮电大学 赵明星 计算机科学与技术 研一
中山大学 吴璐璐 软件工程(移动信息工程) 大四

本文档旨在向参赛学生提供大赛所需的学习资源,包括Bot Framework 、认知服务(Cognitive Services例如LUIS)官方文档、案例资料、线上课程以及其他相关的学习资料。强烈推荐大家重点学习官方文档。

一. Bot Framework

1.1 官方文档

1.2 案例

1.3 线上课程

1.4 技术帖

二. Azure

2.1 官方文档

2.2 技术贴

三. 认知服务

3.1 官方文档

3.2 技术贴

四. Visual Studio

4.1 官方文档

4.2 技术帖

五. .NET Framework及C#

5.1 官方文档

六.资格赛培训课程学习资源

6.1 课程回看

第一次课:点击观看

第二次课:点击观看

第三次课:点击观看

6.2 配套PPT

第一次课:点击下载

第二次课:点击下载

第三次课:点击下载

第一步:搜索引擎输入关键字“世纪互联Azure”,进入世纪互联azure官网,并点击申请试用,如下图红色框所示

图1:中国区Azure官网页面

第二步:点击申请试用后,弹出链接,填写电话号码与手机收到的验证码。

第三步:填写完验证码后将弹出下图页面,将必要信息填入到网页中。身份证正反面扫描件或者照片均可,建议选手在身份证正反面照片中打上水印,如“仅限申请Azure账户使用”,但不应该遮蔽身份证号码等必要的验证信息。

图2:Azure试用申请表

第四步:提交之后,你将收到一封邮件(可能稍有延迟)。打开你上图中填写的邮箱,查看主题为“Azure一元试用激活码”的邮件,邮件正文如下图所示:

图3:Azure一元试用激活码邮件内容

第五步:执行邮件的正文中的第一步“点击进入输入激活码页”

第六步:执行邮件正文中的第二步,创建用户账号并付费完成注册。第七步的具体过程如下:

  • 点击邮件中的链接进入如下界面,填写相关信息,由此生成登录账号。

    图4:填写信息

  • 设置账号密码(密码需要包含大小写字母、符号和数字),并填写手机号获取验证码。

    图5:填写信息

  • 自动跳转登录界面,输入密码登录。

    图6:登录页面

  • 选择支付宝,支付一元钱。

    图7:一元订阅支付页面

第七步:收到主题为“由世纪互联运营的 Windows Azure 购买确认”邮件以及主题为“欢迎使用 Windows Azure Active Directory”表示azure注册成功。具体图片分别如下图8和9所示:

图8:邮件主题为“由世纪互联运营的 Windows Azure 购买确认”截图

图9:邮件主题为“欢迎使用 Windows Azure Active Directory”截图

每个账户下只能创建一个同类型订阅,如果您的账户下没有其他订阅可以按照以下步骤完成注册:

  • 1元试用优惠详情 - http://www.azure.cn/offers/ms-mc-azr-44p/
  • 打开账户管理界面
  • 使用您的账户名登陆。
  • 登陆后看到“看来您还未创建任何订阅”提示 (如果页面上没有看到该提示,则说明账户下已经有其他订阅)
  • 在同一个浏览器打开新的页面(或重新执行图3邮件中的“创建 Azure 帐号的步骤”)
  • 输入您邮件中的激活码,并点击“提交”
  • 弹出新的页面,输入付款信息,完成之后的步骤,就可以成功激活订阅。

查看图9,使用图9中的用户ID登陆Azure而不是使用你的MS ID(微软账户)登陆Azure。

准备工作:已经具备一个Microsoft ID

第一步:登录 Bot Framework网站https://dev.botframework.com/如果你还没有微软账号,请先注册一个。

第二步:点击网站页面“Register a Bot”菜单https://dev.botframework.com/bots/new注册一个Bot。点击“Register a Bot”会跳转到登录页面,使用团队的Microsoft ID登录,出现注册信息填写页面,如图10所示。

图10:Bot信息填写页面

然后在页面中填写以下相关的信息:

  • Bot Profile

    "Name":你的bot的名字,比如我的叫做“清华Bot”。

    "Bot Handle":随便写一串字母,比如我的写"THUbot",其实就是你的Bot的id。

    "Description":你的Bot的描述,会在你的publish之后主页上显示,比如“清华Bot是本文档用来测试和演示的Bot”。

  • Configuration

    “Messaging endpoint”: 就是你后台服务的地址:https://你的服务器地址/api/messages。 此处的后台服务器地址就是用Visual Studio发布的template的默认接口。如果是开发者先注册Bot,后开发并发布自己的Bot应用,则此时可以先将“Messaging Endpoint”空着,等开的应用在Visual Studio上发布到Azure之后在回到https://dev.botframework.com/ “My bots”中“Edit”你的Bot的信息。

    “Register your bot with Microsoft to generate a new App ID and password”:开发者需要点击"Create Microsoft App ID and password"。点击之后,首先会生成App ID,如图11所示。然后继续点击“生成密码以继续”会生成App的password,如图12所示(注意,切记把这个app password记下来,只显示一次)。继续点击图12的“确定”,页面转到图13所示,点击“完成并返回到Bot Framework”此时表明App ID和Password创建完成,可以看到图10红框中的“Create Microsoft App ID and password”变成了“Manage Microsoft App ID and password”。

    图11:Create Microsoft App ID and password

    清华Bot应用的ID:ec1b1d27-116b-4681-978a-1a2d14191563

    图12:Create Microsoft App ID and password

    清华Bot应用的password:4ZntHvkgVmme9fcet9mc0Lz

    图13:Create Microsoft App ID and password

  • Admin

    选填项,可以不必填写。

第三步:点击小方框里的同意"Privacy statement",点击"Register",出现"Bot Created"点击"OK",完成Bot注册,页面跳转到图14所示。在https://dev.botframework.com/"My bots"中同样可以看到该页面。

图14:清华Bot主页面

第四步:配置清华Bot的Web Chat Channel。点击图14中"web chat"后方的"edit"按钮,进入Configure Web Chat页面;点击该页面的"Add new site"进入图15所示页面;填写Bot的"Site name"点击"Done"。

图15:配置Web Chat

点击“Done”之后跳转到图16的页面,记住这里包含的Web Chat Channel的secret keys和Embed code会在bot程序开发中用到。

图16:配置Web Chat

点击"I'm done configuring Web Chat",完成Web Chat配置

第五步:点击图14中Add another channel中“Direct Line”后方的Add,在弹出页面为该channel命名,例如仍命名为“清华大学测试Bot”。然后点击“I’m done configuring Direct Line”。如下图所示。

图17

第六步:此时便完成了除“Messaging endpoint”填写之外的注册并配置Bot的所有工作。

第一种管理解决方案的NuGet包的方法是:

点击Visual Studio菜单栏中的工具(Tool)——Library Package,出现图18所示页面,其中Package Manager Console是包管理器控制台,“Manage Nuget Packages for solution…”是管理解决方案的包,点击该选项进入图19的页面,可以对包进行管理(更新、删除、下载等)。

图18:Nuget包管理器

图19:Nuget包管理器管理解决方案相关的包

另一种管理解决方案的NuGet包的方法是:

在解决方案资源管理器种右击——管理NuGet程序包(图20)——出现与该解决方案相关包的情况(图20abc)

图20a:Nuget包管理器管理解决方案相关的包

图20b:Nuget包管理器管理解决方案相关的包

图20c:Nuget包管理器管理解决方案相关的包

图20a, 图20b, 图20c展示的是下载的Microsoft.Bot.Builder SDK是要求.NET 4.6与电脑中的.NET Framework 4.5版本不兼容,通过NuGet包管理器,下载更新符合.NET 4.5的Microsoft.Bot.Builder.Net45(图20b)。

Azure文档提供了以下链接:https://www.azure.cn/documentation/articles/web-sites-dotnet-get-started/

更为具体和详细的步骤如下:

第一步:以中文版VS2013 Ultimate为例,在图21的解决方案资源管理器中右击项目,选择发布

图21:在解决方案资源管理器右击将应用发布

第二步:配置文件中选择“导入”,如图22所示 。

图22:选择导入

第三步:在“导入”的弹出窗口选择“从Windows Azure网站导入”并点击“添加Windows Azure订阅”,如图23所示。

图23:选择从Windows Azure导入-点击添加Windows Azure

第四步:在“添加Windows Azure订阅”的弹出窗口中首先点击“下载订阅文件(国际版azure)”或点击https://manage.windowsazure.cn/publishsettings,然后浏览,选择刚才下载的.publishsettings文件,然后点击“导入”,如图24所示。

图24:下载订阅文件-浏览

第五步:导入之后,回到原界面,此时点击下拉箭头,出现可发布的站点“mscbop2017demo1”,如图25所示,选择它,并点击OK。

图25:导入发布配置文件

第六步:在连接(Connection)部分,记录下目标URL(Destination URL)并点击next,该https://URL/api/messages用于填写在注册的Bot的Messaging endpoint。如图26a和图26b所示

图26a:目标URL

图26b:Bot Messaging endpoint

第七步:在Setting部分不做设置,直接点击next

第八步:在下图27页面中点击发布,完成发布。

图27:Visual Studio发布应用

请参考Azure官网文章《中国区Azure应用程序开发说明》部署开发环境,具体链接如下:

https://www.azure.cn/documentation/articles/developerdifferences/

按照安装VS的过程进行,在“安装”“修复”“卸载”中选择卸载。不按照此方法可能导致后续安装其他版本VS时出现VS程序崩溃。

如果遇到不能更新解决方案的包的情况,首先需要做的是更新Nuget包管理器,按照图28鼠标指向的选项与图29执行即可更新NuGet包管理器。更新NuGet包管理器之后便可进行与“管理解决方案的包”相关的下载、更新等操作。

图28:扩展与更新

图29:更新NuGet包管理器

LUIS的注册请参考以下步骤。

第一步、登录LUIS官网https://www.luis.ai/home/index点击右上角的Sign in,用自己的Microsoft ID登录。

第二步、点击上方“My apps”菜单,点击“New App”,出现下图页面,填写必要信息,并点击“Create”。

图30

第三步、点击“Create”之后,出现Dashboard(仪表板)页面

图31

第四步、点击右侧“Entity”创建Entity。以“清华大学校长叫什么?”这一问题为例,分析该句子的语义:将句子中的名词性成分“校长”抽象概括,创建一个“领导类型”Entity;将“叫什么(即姓名)”抽象概括,创建一个“被查询信息的类型”Entity。

图32

图33

第五步、点击右侧“Intents”,并点击“Add Intent”创建Intent。仍然以“清华大学校长叫什么?”这一问题为例,该问题是在查询姓名,其背后的意图可以抽象概括成查询领导的信息,所以为该问题创建一个“查询领导信息”Intent。

图34

将第四、五步结合起来理解:我们的意图(Intent)是查询领导的个人信息,因此我们需要知道领导的类型是什么——是校长,是党委书记,还是贵系系主任?我们还需要知道查询领导的什么信息——是名字,是年龄,还是性别?所以“查询领导的个人信息”这一个Intent需要设计“领导类型”和“被查询信息的类型”两个Entity。

第六步、保存(Save)创建的Intent,并在保存后的跳转页面的输入框中输入新的Utterances然后点击Enter,如下图所示“Type a new utterance & Enter”。

图35

第七步、在输入框中输入问题“清华大学校长叫什么?”然后Enter确认。

左击“校”“长”二字,将其标记为“领导类型”Entity,如下图所示。标记完成之后可以看到“校长”二字变成了[$领导类型]。继续将“叫什么”标记为“被查询信息的类型”Entity。

如果标记错误可以左击[$领导类型],选择Remove Label。

图36

第八步、重复第七步的过程,多输入几个类似的问题,比如我输入了三个问题,然后进行标记,如下图所示。最后点击输入框下方的“Save”完成。

图37

图38

图39

第九步、点击左侧“Publish App”菜单,将LUIS应用发布。在Endpoint Key中填写Programatic Key(如果是国际版Azure可以通过购买LUIS服务,填写的购买之后的Key,目前中国区Azure中LUIS暂没有落地)。然后顺序点击Train和Publish,完成应用发布,如下图所示。

比赛选手应该记住LUIS ID与Subscription Key,该内容在下图Endpoint url链接中:ID:491d18bb-dddd-46bd-893e-98563504930a

Key:7bff94…………….cf6

图40

第十一步、测试功能(Optional)

在输入框“Type a test utterance and press Enter”

图41