def Test(f, name, num): rules = reg.Rules.get(name) handlers = reg.Handlers.get(name, []) ts0 = time.strftime('%H:%M:%S') numpass = 0 numfail = { '1': 0, } ki = None try: for case in Polymer.ModelsChooser(rules, num).Gen(): sentence = ''.join([v[1] for v in case]) ts = time.time() intent = api.Do(AGENT, USERID, sentence) if intent.NAME == name: # TODO: match handlers #resp = intent.Go() msg = '{}, {}ms, +pass, {} {}'.format( time.strftime('%H:%M:%S'), int((time.time() - ts) * 1000), name, sentence, ) numpass += 1 else: msg = '{}, {}ms, -fail, 1(intent dismatch), {} => {} {}'.format( time.strftime('%H:%M:%S'), int((time.time() - ts) * 1000), name, intent.NAME, sentence, ) numfail['1'] += 1 f.write(msg+'\n') print(msg) except KeyboardInterrupt as e: ki = e tfail = 0 for k in numfail: tfail += numfail[k] total = numpass+tfail msg = 'Passed {}, Total {}, {}, {}-{}'.format( str(round(numpass/total*100, 1))+'%' if total else 'N/A', total, name, ts0, time.strftime('%H:%M:%S'), ) msg = '{}\n{}\n{}'.format( '---', msg, '---', ) f.write(msg+'\n') print(msg) if ki: raise ki return numpass, tfail, numfail
'夜间', '晚', '夜', ]) a = Polymer( ['前', '后', '前后'], [Polymer.Range(0, 101), Polymer.RangeCN(0, 100)], Polymer(日期), ) day = Polymer(['前', '大前', '当', '昨', '今', '明', '后', '大后'], ['天', '日']) week = Polymer(['上上', '上', '本', '这', '这个', '当', '下', '下下'], ['周', '礼拜']) month = Polymer(['上上', '上', '上半', '本', '这', '这个', '当', '下', '下半', '下下'], ['月']) xun = Polymer(['上', '中', '下'], ['旬']) year = Polymer(['今', '当', '本', '这', '去', '后', '前', '大前', '后', '大后'], ['年']) models = [ sys_time, sys_period, day, week, month, xun, year, common, a, ] user_t = Polymer(models) 时间段 = Polymer.ModelsChooser(models, 100)