词袋表示
文本分析是机器学习算法的主要应用领域。 然而,原始数据,一串符号序列不能直接送到算法本身,因为大多数算法期望具有固定大小的数字特征向量而不是具有可变长度的原始文本文档。
为了解决这个问题,scikit-learn提供了从文本内容中提取数字特征的最常用方法的实用程序,即:
- 标记字符串,为每个可能的标记给定整数id,例如通过使用空格和标点符号作为标记分隔符。
- 计算每个文档中标记的出现次数。
- 对在大多数样本/文件中出现的标记标准化并通过减少重要性的加权处理。
在该方案中,特征和样本定义如下:
• 每个标记发生频率(标准化或不标准化)被视为特征。
• 给定文档的所有标记频率的向量被认为是多变量样本
因此,文档语料库可以由矩阵表示,出现在语料库中的每个文档作为一行,每个标记作为一列(例如,单词)。
我们将矢量化称为将文本文档集合转换为数字特征向量的一般过程。 这种特定的策略(标记化,计数和标准化)被称为词袋或“Bag of n-gram”表示。 文档由单词出现描述,同时完全忽略文档中单词的相对位置信息。
稀疏性
由于大多数文档通常使用语料库中所使用字的非常小的子集,因此得到的矩阵将具有许多零(通常超过99%)特征值。 例如,10,000个短文本文档(例如电子邮件)的集合将使用总数为100,000个唯一单词的词汇表,而每个文档将单独使用100到1000个唯一单词。
为了能够将这样的矩阵存储在存储器中以及加速代数运算矩阵/向量,通常实现将使用稀疏的表示,例如