CountVectorizer的使用(词袋法)及Hash Trick降维

CountVectorizer 可以将文本文档集合转换为token计数矩阵。(token可以理解成词)
  此实现通过使用scipy.sparse.csr_matrix产生了计数的稀疏表示。
  如果不提供一个先验字典,且不使用某种特征选择的分析器,则特征数量与通过分析数据得到的词汇表的大小一致。

参数:
  input:

    默认content 可选 filename、file、content
    如果是filename,传给fit的参数必须是文件名列表
    如果是file,传给fit的参数必须是文件对象,有read方法
    如果是content,这是字符串序列或者是字节序列

build_tokenizer:
      返回一个将字符串分为词语序列的方法

binary:
    True代表非零计数为1。用于模拟二进制事件而不是整数计数的离散概率模型是有用的。

模型fit后输出的结果含义:

如 :

texts = ["How are you?", "I am fine fine.", "我 很好"]
v = CountVectorizer(token_pattern=r'(?u)\b\w+\b', stop_words='english')  # 使用内置停用词,保留长度为1的词
count = v.fit_transform(texts)
print(count)

  (1, 0)    2
  (2, 2)    1
  (2, 1)    1

词表中有三个词,fine、很好、我;

输出的count结果代表(词所在句子,在词表中的编号) 句中出现次数

设置词表中包含一个词的情况

使用CountVectorizer()将文本向量化时,文本中长度为一的字符会被自动过滤,如果需要保存长度为一的字符,可设置参数token_pattern = r'(?u)\b\w+\b'(default=r"(?u)\\b\\w\\w+\\b"),使用TfidfVectorizer() 时可使用相同设置。

Hash Trick

常用的文本降维方法是Hash Trick。定义一个特征Hash后对应的哈希表的大小,这个哈希表的维远小于词表的特征维度,可看成是降维。具体的方法是,对应任意一个特征名,用Hash函数找到对应哈希表的位置,将该特征名对应的词频统计值累加到该哈希表位置。此时有可能两个原始特征的哈希后位置在一起导致词频累加特征值突然变大,为了解决这个问题,出现了hash Trick的变种signed hash trick,这样哈希后的特征仍然是一个无偏的估计,不会导致某些哈希位置的值过大。

from sklearn.feature_extraction.text import HashingVectorizer 

corpus = ["I come to China to travel", 
          "This is a car polupar in China",    
          "I love tea and Apple ",   
          "The work is to write some papers in science"] 

vectorizer2 = HashingVectorizer(n_features=6, norm=None)
print(vectorizer2.fit_transform(corpus))

Hash Trick的解释性不强。

参考:

sklearn.feature_extraction.text.CountVectorizer 学习 - 桑胡 - 博客园 (cnblogs.com)

CountVectorizer详解_zttbee的博客-CSDN博客_countvectorizer

文本挖掘预处理之向量化与Hash Trick - 刘建平Pinard - 博客园 (cnblogs.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值