![58531ad1f92083152875dfd3196bbbd5.png](https://i-blog.csdnimg.cn/blog_migrate/e45d99bd5761acf45f292c8d85f7fd3d.jpeg)
NLP训练数据都是中文,不能直接喂传统机器学习模型,此时我们需要将中文文本数字化。
如何将文本数字化是NLP领域的基础工作,也是多数任务的第一步。文本数字化的技术大致分为向量空间模型和文本的分布式表示。下面我将详细介绍这两种技术。
1 向量空间模型
向量空间模型要做的事情就是将一行文本转换为一个向量。其中典型的技术有词袋模型、TF-IDF(词频逆文档频率)模型。
1.1 词袋模型(bag of words,BOW)
(1)简介
该模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。它不考虑句子中单词的顺序,只考虑词表(vocabulary)中单词在这个句子中的出现次数。向量中每个位置的值为该编码对应的词在这段话中出现的次数。
与词袋模型非常类似的一个模型是词集模型(Set of Words,简称SoW),和词袋模型唯一的不同是它仅仅考虑词是否在文本中出现,而不考虑词频。也就是一个词在文本在文本中出现1次和多次特征处理是一样的。在大多数时候,我们使用词袋模型。
大部分的文本都只会使用词汇表中的很少一部分的词,因此我们的词向量中会有大量的0。也就是说词向量是稀疏的。在实际应用中一般使用稀疏矩阵来存储。
向量的维度根据词典中不重复词的个数确定
向量中每个元素顺序与原来文本中单词出现的顺序没有关系,与词典中的顺序一一对应
向量中每个数字是词典中每个单词在文本中出现的频率---即词频表示
https:// blog.csdn.net/u01232815 9/article/details/84719494 人类身份验证 - SegmentFaultsegmentfault.com(2)代码
(i)实现方式1 : 只要在词典中出现的词,无论出现多少次,在BOW向量中都只算成1次,未出现的词算0次,然后根据词典构造只有0/1的向量。
代码使用scikit-learn官方文档中的API实现:
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(binary=True)