Python中如何基于自定义字典实现文档的规则分类标注?
基于关键词字典的文档分类标注实现
直接按下面的步骤写代码就能实现需求:
- 先把分类和关键词的对应关系整理为Python字典结构
- 遍历每个文档,将文档下的所有句子拼接为完整文本做统一匹配
- 逐分类检查关键词命中情况,只要分类下任意一个关键词在文档中出现,就给文档打上对应分类标签
完整可运行代码示例:
# 分类关键词映射,可根据实际需求扩充 category_keywords = { "Reg": ["A", "B", "C"], "Gov": ["D", "E", "F", "G"] } # 待标注文档,和你给出的存储结构完全一致 Document1 = ["Sentence contains keyword A", "Normal sentence without keyword"] Document2 = ["Sentence with D", "Sentence mentions G"] doc_set = { "Document1": Document1, "Document2": Document2 } def get_doc_tags(doc_sentence_list, keyword_map): # 拼接文档所有内容为单个字符串,降低匹配逻辑复杂度 full_content = " ".join(doc_sentence_list) tags = [] for cat, kw_list in keyword_map.items(): for kw in kw_list: if kw in full_content: tags.append(cat) # 命中当前分类任意一个关键词就终止匹配,避免重复打标 break return tags # 批量生成标注结果 annotation_result = {} for doc_name, sentences in doc_set.items(): annotation_result[doc_name] = get_doc_tags(sentences, category_keywords) # 打印结果验证 print(annotation_result) # 输出: {'Document1': ['Reg'], 'Document2': ['Gov']}
适配特殊场景的调整说明
- 如果需要忽略大小写匹配,只需要把拼接后的全文和所有关键词都转为小写再比对即可,比如将
full_content赋值改为full_content = " ".join(doc_sentence_list).lower(),关键词字典里的关键词也统一存为小写格式 - 如果需要避免子串误匹配(比如关键词"AI"不想匹配到"said"里的"ai"片段),可以引入正则的单词边界匹配替换原有简单的
in判断逻辑 - 如果文档同时命中多个分类的关键词,代码会自动返回多个分类标签,支持多分类标注场景
内容的提问来源于stack exchange,提问作者Diep Tran
相关产品推荐
相关产品推荐

