一、文本特征处理的作用
1.1 文本特征处理的核心意义
文本特征处理是自然语言处理(NLP)工作流程中的关键环节,主要目的是提取和规范化文本数据中的重要特征,从而更好地支持后续模型的训练与评估。其核心意义体现在以下几个方面:
- 提升模型对语义的理解能力:通过特征工程(如 n-gram 特征的加入),可以捕捉文本中词汇或字符之间的重要关联。
- 提高模型训练的效率与稳定性:通过规范化文本长度,确保模型输入的一致性,减少噪声对模型的干扰。
- 优化模型评估指标:高质量的文本特征可以使模型在分类、预测等任务中的性能表现更优。
1.2 常见的文本特征处理方法
文本特征处理方法主要可以分为两大类:
-
特征生成:
- 通过生成新的文本特征(如 n-gram 特征)来增强模型的特征空间,捕捉更丰富的上下文信息。
-
特征规范化:
- 通过规范文本的长度、格式等,确保数据输入的一致性。
具体方法包括:
- 添加 n-gram 特征:提取文本中相邻的词或字对信息(例如 bi-gram 和 tri-gram)。
- 文本长度规范:对文本进行截断或补齐,保证输入的固定长度。
二、添加 n-gram 特征
2.1 什么是 n-gram 特征
2.1.1 基本概念
n-gram 是描述文本中相邻词汇或字符共现关系的特征。具体来说,n-gram 将给定的文本序列按照连续 n 个词(或字)组合生成子序列,形成特征空间。常见的 n-gram 特征包括:
- bi-gram(n=2):相邻两个词(或字)的组合。
- tri-gram(n=3):相邻三个词(或字)的组合。
n-gram 特征的作用在于补充了单一词汇的上下文信息,从而帮助模型更好地理解文本语义。
2.1.2 示例解析
假设我们有一段分词后的文本:
["喜欢", "学习", "NLP"]
若提取 bi-gram 特征,则生成的结果为:
- '喜欢 学习'
- '学习 NLP'
若进一步映射为数值特征,可以假设:
- "喜欢 学习"的特征值为 100
- "学习 NLP"的特征值为 101
那么,最终特征序列为:
["喜欢", "学习", "NLP", 100, 101]
通过添加 n-gram 特征,模型能够更好地捕捉到'词对'的关联,而不仅仅依赖单个词。
2.2 提取 n-gram 特征的实现
2.2.1 n-gram 特征提取函数
以下是一个通用的 n-gram 特征提取函数,支持指定 n 的大小。
def create_ngram_set(input_list, n):
"""
从数值列表中提取所有的 n-gram 特征
:param input_list: 输入的数值列表
:param n: n-gram 的长度
:return: n-gram 特征组成的集合
"""
((*[input_list[i:] i (n)]))
input_list = [, , , , ]
n =
result = create_ngram_set(input_list, n)
(result)

