diff --git a/backend/app/analysis/intent.py b/backend/app/analysis/intent.py index f0f68458..e5055bb6 100644 --- a/backend/app/analysis/intent.py +++ b/backend/app/analysis/intent.py @@ -17,7 +17,7 @@ 不是数,不算 - 异常(anomaly):「是否异常 / 异常吗 / 正常吗 / 算不算异常 / 有没有异动 / 是不是暴跌了」这类问句,和「超出正常范围」。 「异常订单有多少」「有没有异常记录」「门店是否正常营业」问的是业务状态,「系统正常吗」「连接正常吗」问的是服务,都不算 -- 波动(fluctuation):「波动大吗 / 是不是正常波动 / 只是波动」。「列出价格波动超过 10% 的商品」是筛选,「网络波动大吗」问的 +- 波动(fluctuation):「波动大吗 / 变化大不大 / 是不是正常波动 / 只是波动」。「列出价格波动超过 10% 的商品」是筛选,「网络波动大吗」问的 是服务,都不算 - 趋势(trend):「趋势 / 走势」「持续上升 / 下降会持续吗 / 一直在降 / 连续三周下降 / 越来越少 / 是不是在涨 / 稳步增长」。 「活动会持续几天」「促销还在持续吗」不算(「持续」前后要有涨跌) @@ -93,8 +93,7 @@ _RULES: list[tuple[str, re.Pattern[str], bool]] = [ ("why", re.compile(rf"(?:什么|啥|哪些)原因.{{0,12}}?(?:{_CHANGE})"), False), ("source", re.compile(r"归因分析|做(?:个|一下|下)?归因|归因一下|(?:怎么|如何)归因|驱动(?:因素|力)" r"|(?:由|靠)(?:什么|哪些|哪个).{0,4}?驱动"), False), - ("source", re.compile(r"怎么变(?:了|的|化)|如何变化|有(?:什么|啥|哪些)变化" - r"|变化(?:在哪|如何|怎么样|大吗|大不大|情况)"), True), + ("source", re.compile(r"怎么变(?:了|的|化)|如何变化|有(?:什么|啥|哪些)变化|变化(?:在哪|如何|怎么样|情况)"), True), ("source", re.compile(r"(?:哪|谁|什么).{0,10}?(?:拖累|拉低|拉高|拉动|带动|推动|贡献)" r"|(?:拖累|拉动|带动|推动|贡献)了?.{0,6}?(?:最大|最多|最明显)"), False), ("source", re.compile(rf"对.{{0,12}}?(?:{_CHANGE}|增量|增幅|降幅).{{0,2}}?贡献"), False), @@ -111,7 +110,7 @@ _RULES: list[tuple[str, re.Pattern[str], bool]] = [ ("anomaly", re.compile(r"(?:超出|超过|偏离)了?(?:正常|常规|历史)的?(?:范围|水平|波动|区间)" r"|(?:有没有|是否有|是不是)异动|异动分析|异动吗"), True), ("anomaly", re.compile(r"(?:是否|是不是|算不算|有没有).{0,6}?(?:大幅|骤降|暴跌|激增|飙升|突增|突降|大涨|大跌)"), True), - ("fluctuation", re.compile(r"波动(?:大吗|大么|大不大|算大|有多大|正常吗|正不正常)" + ("fluctuation", re.compile(r"(?:波动|变化)(?:大吗|大么|大不大|算大|有多大)|波动(?:正常吗|正不正常)" r"|(?:正常|常规|一般|季节性|随机|自然)的?波动" r"|(?:只是|仅仅是|是不是|是否|算不算|属于|算是)(?:正常|常规)?的?波动"), True), ("trend", re.compile(r"趋势|走势"), False), diff --git a/backend/tests/test_analysis_intent.py b/backend/tests/test_analysis_intent.py index b08178a4..811ef234 100644 --- a/backend/tests/test_analysis_intent.py +++ b/backend/tests/test_analysis_intent.py @@ -41,6 +41,7 @@ POSITIVE = [ # 波动 ("最近销售额波动大吗", "fluctuation"), ("这是不是正常波动", "fluctuation"), + ("销售额同比变化大不大", "fluctuation"), # 趋势 ("线上销售额的趋势怎么样", "trend"), ("看一下近半年订单数的走势", "trend"),