文本表示(词嵌入表示&词袋表示BOW)

词嵌入表示

概念:词嵌入表示是一个连续,低维,稠密向量表示,简称词向量,而且向量值可以根据目标任务的优化进行调整。也可以充分利用语句中的上下文信息作为自监督信号进行训练,提高词语的效果。

这里常用的是wordvec2,lstm等构建词向量的方法。(后续会继续补充一部分词嵌入的知识)

词袋表示

概念:词袋表示(Bag of Words BOW),将文本中的词语所对应的向量(one-hot/ 分布式表示向量/ 词嵌入)表示,进行相加或者加权求和。这样得出的词向量只在上下文出现的频次有关,这种做法虽然简单,但是忽略了词语的顺序以及词语的语义信息

如果引入二元词表(Bigram)将两个词语作为一个词,同时再加上学习二元次的词向量表示,但是可能会造成数据稀疏问题。

代码

输入为一个str类型的列表,而且encodig = ‘utf-8’,输出为一个词频矩阵,而且用to_array()方法可以转化。

from sklearn.feature_extraction.text import CountVectorizer, HashingVectorizer
content_list = ['我 喜欢 深度 学习',
        '我 爱 机器 学习'] 
# vectorizer=CountVectorizer()
vectorizer = HashingVectorizer(n_features=6, norm=None) # 一般用hash降低纬度比较多
model_output = vectorizer.fit_transform(content_list) # 输入为list类型的str,输出为词频矩阵
# print(vectorizer.get_feature_names()) # 在CountVectorizer类方法中调用get_feature_names()
print("词频统计:")
#输出4个文本的词频统计:左边的括号中的两个数字分别为(文本序号,词序号),右边数字为频次
print(vectorizer.fit_transform(content_list))
print("\n词袋模型:")
print(vectorizer.fit_transform(content_list).toarray()) # 将产生的矩阵转化为array类型的数据

输出

词频统计:
  (0, 0)    1.0
  (0, 2)    -1.0
  (0, 5)    -1.0
  (1, 0)    -1.0
  (1, 2)    -1.0

词袋模型:
[[ 1.  0. -1.  0.  0. -1.]
 [-1.  0. -1.  0.  0.  0.]]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值