SMP2017-ECDT评测任务1具体评测方案:
考虑到不同参评者程序运行环境的差异和比赛的公平性,组织方决定采用参评者自行根据组织方提供的服务端模板修改并搭建服务(也可以选择不根据模板,自行搭建服务)。
模板github地址如下:https://github.com/HITlilingzhi/SMP2017-ECDT-TASK1.git
评测当天组织方批量向参评者服务端发送请求,收集结果并统计,最终给出评测成绩。具体细节如下:
一、 使用模板搭建服务
1. 参评者至github下载模板代码。模板采用python2.7 + flask包 (若未安装flask可运行pip install flask 进行安装) 编写。模板内含三个代码文件,分别是:
a) ServerDemo.py 搭建服务的代码,默认端口21628 (若更换端口则修改该文件,并告知组织方),无需修改。
b) RequestHandler.py 参评者需修改该文件内部的getResult(self, sentence) 函数,在内部得到分类结果并返回。若参评者想批量获取分类结果,也可修改getBatchResults(self, sentencesList) 函数,函数说明见内部注释。
c) test.py 该文件用于给参评者自行测试服务是否能够顺利跑通,用了python的requests包编写,当把服务搭建在服务器上后,修改test.py内部的url地址,然后在其他任意连接公网的网络运行test.py文件,模拟组织方向参评者服务器发送请求。
2. 评测日前一周左右,组织方会与参评者一一联系,记录其服务器地址和端口,测试服务运行情况,具体时间待通知。
3. 评测当日,组织方批量向所有参评者同时发送请求,内含测试服务能否正常运行的用例和正式评测用例,获取分类结果并记录。
二、 不采用模板,自行搭建服务
考虑到不同参评者程序的运行环境,参评者也可以自行搭建服务,评测过程中组织方会向 http://xxx.xxx.xxx.xxx:21628/smp2017_ecdt 发送HTTP POST请求,其中xxx部分为参赛者服务器的公网IP地址,端口默认21628,如有修改请告知组织方。
1. POST请求的参数数据格式为json格式,具体格式举例如下:
{
‘sentencesList’ : [
{'id': 121, 'content': "帮我订一张火车票好吗?"},
{'id': 122, 'content': "好难过啊"},
{'id': 123, 'content': "晚上吃饭了吗?"},
{'id': 124, 'content': "好饿啊!"},
……
]
}
其中键sentencesList的值为一组有序的语句集合,长度不定,每个集合内部有两个键值对,分别为语句id和语句内容content。
2. 参赛方返回的数据也需要为json格式,举例如下:
{
‘resultsList’ : [
{'id': 121, 'result': "train"},
{'id': 122, 'result': "chat"},
{'id': 123, 'result': "chat"},
{'id': 124, 'result': "chat"},
……
]
}
其中键resultsList的值为一组有序的语句集合(顺序需要与请求中的语句集合顺序一致),长度与输入语句集合长度一致,每个集合内部有两个键值对,分别为语句id和分类结果result。
3. 当服务搭起来后,可以去组织方提供的模板地址下载模板包,修改test.py的IP地址和端口并运行,来自行测试服务是否能够跑通。
三、 注意事项和联系方式
- 建议参赛者短期租用云服务器来搭建服务,如参赛者本身处于局域网并想在本机搭建服务,可能需要下载相关软件做地址映射,确保在公网可以顺利访问到局域网内的服务。
- 如有关于服务端模板、服务搭建等问题或建议,请反馈至 smp2017ecdt@126.com 或者 lzli@ir.hit.edu.cn。