Jupyter Notebook下对话文本角色统计与唯一词汇提取需求
对话转录文本处理方案
任务1:统计唯一对话角色数量
通过集合去重+文本分割实现角色提取,代码如下:
import re from collections import defaultdict # 读取目标转录文本文件 with open('transcript.txt', 'r', encoding='utf-8') as f: lines = f.readlines() # 初始化角色集合和对话词汇字典 unique_characters = set() character_words = defaultdict(set) for line in lines: line = line.strip() if not line: continue # 分割角色名与对话内容(仅以第一个冒号为分隔点) char, _, content = line.partition(':') char = char.strip() unique_characters.add(char) # 提取对话中的词汇(支持带撇号的缩写,统一转为小写) words = re.findall(r"\b[\w’]+\b", content.lower()) for word in words: character_words[char].add(word) # 输出唯一角色数量 print(f"唯一对话角色数量:{len(unique_characters)}")
任务2:生成角色专属词汇文件
遍历每个角色的唯一词汇集合,以角色名为文件名创建文本文件,每行存储一个词汇:
# 为每个角色生成词汇文件 for char, words in character_words.items(): with open(f"{char}.txt", 'w', encoding='utf-8') as f: # 按字母排序后写入,提升可读性 for word in sorted(words): f.write(f"{word}\n") print(f"已完成文件:{char}.txt")
关键说明
- 用
partition(':')分割角色与对话,避免因对话内容含冒号导致的分割错误 - 正则
r"\b[\w’]+\b"适配英文对话中的缩写(如won’t、I’ve),统一转小写避免大小写重复计数 - 借助
set自动去重特性,确保每个文件仅保留角色说过的唯一词汇
内容的提问来源于stack exchange,提问作者Lakhvinder Singh
相关产品推荐
相关产品推荐

