You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何读取带词性标注的文本文件并按词性生成分类字典

实现方案

思路说明

  • 首先读取文本文件所有内容,按规则提取每个「单词(词性)」格式的条目
  • 拆分每个条目得到单词本身和对应的词性标识
  • 初始化分类字典,将相同词性的单词追加到对应列表中,可按需选择是否对单词去重

完整代码实现

import re
from collections import defaultdict

def classify_words_by_pos(file_path: str, deduplicate: bool = False) -> dict:
    # 初始化分类字典,值默认是空列表
    result = defaultdict(list)
    # 正则匹配规则:分组1是单词,分组2是词性标识
    pattern = re.compile(r'(\w+)\(([avnd])\)')
    
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 遍历所有匹配结果归类
    for word, pos in pattern.findall(content):
        if deduplicate and word in result[pos]:
            continue
        result[pos].append(word)
    
    return dict(result)

# 调用示例
if __name__ == '__main__':
    # 替换为你的实际文件路径
    res = classify_words_by_pos('word_list.txt', deduplicate=False)
    print(res)

代码说明

  • 用正则匹配比手动拆分字符串更稳定,不会受空格、换行符的影响
  • 提供可选的去重参数,默认关闭和原文出现顺序保持一致,开启后同一词性下不会出现重复单词
  • 如果不想引入正则依赖,也可以手动拆分每个条目:先按空白字符拆分内容得到所有条目,再对单个条目用.strip(')').split('(')拆分得到单词和词性

测试输出

针对你给出的示例文本,运行后输出结果如下:

{'a': ['radiant', 'bright', 'graceful', 'dazzling', 'running', 'running', 'divine'],
 'n': ['vibe', 'pen', 'dust', 'inkwell', 'sky', 'tear'],
 'd': ['lightly', 'abruptly', 'cheerfully', 'rappidly'],
 'v': ['stares', 'wriggles']}

内容的提问来源于stack exchange,提问作者Willemijn de Boer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:09:03