文档信息向量化
- 思考:什么是文档信息向量化呢?
~就是将文本的信息数值化,便于建模分析
一、词袋模型(One-hot表示方式)
-
思考:什么是词袋?装词的袋子?怎么装词?
文本相当于一个袋子,词装在文本这个袋子里
将文本分为一系列的词,文本相当于一个集合,其中每个词都是独立的。 -
有几种方式:
对每个词进行编号,形成字典(1,2,3····);
用0/1代表该词是否在文本中出现,将文本记录为一个特征向量(出现1次记为1,出现两次记为2,没有出现记为0);
不考虑词频,减少模型复杂度(词集模型:常见于短文本分析。出现记为1,不出现记为0)。 -
优缺点
优点:解决了分类器不好处理离散数据的问题;在一定程度上也起到了扩充特征的作用
缺点:不考虑词与词之间的顺序;假设词与词之间相互独立(但是大多情况下,词之间是相互关联的);特征离散稀疏
二、词袋模型的gensim实现
1.gensim的安装
用pip install gensim或者conda install gensim
如果用上述两个命令会出错,可以用
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple gensim
安装过程会出现各种各样的问题,不要着急,耐心解决,都是最棒的小可爱们~~
-
问题1
AttributeError: module ‘numpy.random’ has no attribute ‘default_rng’
解决办法:更新numpypip install --upgrade numpy
-
问题2
cannot import name 'open' from 'smart_open'
解决办法:pip install smart_open
-
问题3
输入from gensim imoprt word2vec
显示错误ImportError: cannot import name 'word2vec' from 'gensim' (F:\anocanda\Anaconda\lib\site-packages\gensim\__init__.py)
解决办法:from gensim.models import word2vec
-
问题4 numpy被我搞得出问题了,import numpy时显示错误,
Something is wrong with the numpy installation. While importing we detected
解决办法:删除numpy包(可以找到site-packages下的numpy文件直接删,也可以用pip uninstall numpy
,然后再重新下载pip install numpy
2.建立字典
Dictionary类用于建立word<->id映射关系,把所有单词取一个set(),并对set中每个单词分配一个Id号的map
class gensim.corpora.dictionary.Dictionary(
documents=None : 若干个被拆成单词集合的文档的集合,一般以list in list形式出现
prune_at=2000000 : 字典中的最大词条容量
)
from gensim.corpora import Dictionary
texts = [['human', 'interface', 'computer']]
dct = Dictionary(texts) # fit dictionary
dct.token2id #查看字典对象时如何编码的
# token2id :字典(str, int) id2token: 字典(int,str) 互逆
# dfs : 字典(int,int) 编号,频率 um_docs文档数量 num_pos词量 num_nnz非零
- Dictionary类的属性
token2id #词条和相应流水号间的映射关系
dict of (str, int) – token -> tokenId.
id2token
dict of (int, str) – Reverse mapping for token2id, initialized in