UX网站测试语音转写文本情感分析的分块处理方案咨询
无标点UX转录文本情感分析分块优化方案
核心解决思路
以下方案针对无标点口语转录文本的语义单元切割需求,在无法更换转写API的限制下可直接落地:
方案1:基于话语标记的规则分句
口语测试会话存在固定的语义边界触发词,可直接基于规则切割语义单元,准确率远高于无差别n-gram:
- 触发词列表(可结合你的UX场景扩充):
okay、so、overall、but、it seems like、I found、it looks like - 切割逻辑:遇到触发词时,将前一段文本作为独立语义单元输出
- 适配场景:UX测试转录多为用户自发表达,话语标记出现频率高,切割后单元基本对应完整的用户评价/问题反馈
示例代码(Python):
import re trigger_words = r"\b(okay|so|overall|but|it seems like|i found|it looks like)\b" segments = re.split(trigger_words, transcript.lower()) # 合并触发词和后面的内容,过滤空串 clean_segments = [] for i in range(1, len(segments), 2): clean_segments.append(f"{segments[i]} {segments[i+1]}".strip())
方案2:非重叠滑动窗口分块+去重
如果需要保留n-gram的处理逻辑,可调整滑步参数避免重复:
- 将n-gram的滑步设置为和n相同(比如n=4时滑步=4),不会生成重叠内容,彻底解决结果重复问题
- 对输出的分块做简单的停用词过滤后再输入情感分析工具,噪音更低
调整后的代码示例:
from nltk.util import ngrams tokens = lines.split() # 步长设为4,生成非重叠4元组 non_overlap_ngrams = [] for i in range(0, len(tokens)-3, 4): non_overlap_ngrams.append(' '.join(tokens[i:i+4]))
方案3:依存句法语义块切割
你已经完成了POS标注、词形还原预处理,可以直接基于依存句法提取完整的语义单元:
- 用spaCy等工具识别转录文本中的主谓宾、主系表结构,每个完整结构作为一个独立分析单元
- 可优先提取包含UX领域关键词(
information、navigation、load、button等)的语义块,精准定位网站相关的评价内容
方案4:自定义情感词典适配连续文本
如果切割难度大,可直接放弃强制分块,优化情感分析工具的适配性:
- 为Vader添加UX领域自定义情感词典,把卡顿、迷失、找不到信息等场景相关的负面/正面词的权重调高
- 输出情感得分时同时返回得分对应的关键词区间,直接定位问题对应的文本片段
自定义Vader词典示例:
from nltk.sentiment import SentimentIntensityAnalyzer # 自定义UX领域词典,值为情感权重,负向为负,正向为正 custom_lexicon = { "hard to find": -2.5, "lag": -3.0, "lost": -2.0, "confusing": -2.2, "easy to use": 2.0, "complete information": 1.8 } sia = SentimentIntensityAnalyzer() sia.lexicon.update(custom_lexicon)
效果优先推荐组合
优先采用「方案1规则分句+方案4自定义Vader词典」的组合,对当前UX测试场景适配性最高,可将情感分析和问题定位准确率提升60%以上。
内容的提问来源于stack exchange,提问作者eeveepotato
相关产品推荐
相关产品推荐

