如何实现带优先级的关键词层级匹配与文本分类功能
带优先级的关键词层级匹配实现思路
这类带层级的匹配核心逻辑是按规则优先级从高到低做顺序命中,避免短关键词提前触发匹配导致归类错误。
核心匹配规则(优先级从高到低)
- 最高优先级:文本中出现连续的「English Science Mathematics」关键词组合,归类为A类
- 次高优先级:未命中A类规则时,文本中出现连续的「Science Mathematics」关键词组合,归类为B类
- 最低优先级:未命中上述两类规则时,文本中出现单独的「Mathematics」关键词,归类为C类
注意:匹配时需要忽略大小写差异,否则会出现小写的
english无法命中A类规则的问题;同时必须严格按优先级从高到低校验,不能先匹配短关键词,否则所有带Mathematics的文本都会被错误归为C类。
待分类示例文本
I like english science mathematics Science Mathematics are my favourite I hate Mathematics
预期分类结果
Column Description Category I like english science mathematics A Science Mathematics are my favourite B I hate Mathematics C
通用实现步骤
- 把所有匹配规则按优先级从高到低整理成有序映射表,长关键词组合排在最前面,示例结构参考:
规则列表(按优先级排序): [ 关键词组: ["english", "science", "mathematics"], 对应类别: A 关键词组: ["science", "mathematics"], 对应类别: B 关键词组: ["mathematics"], 对应类别: C ]
- 单条文本预处理:去除首尾多余空格,将文本和匹配关键词统一转为小写/大写,按空格拆分为独立单词列表
- 顺序遍历规则列表:
- 校验当前规则的关键词组是否在文本单词列表中连续出现
- 校验通过则直接返回对应类别,停止后续所有规则匹配
- 遍历完所有规则无匹配则返回默认分类(如未分类)
内容的提问来源于stack exchange,提问作者Mini
相关产品推荐
相关产品推荐

