from sklearn.feature_extraction.text import CountVectorizer

 sklearn.feature_extraction类做文本特征提取,有CountVectorizer、TfidfVectorizer、TfidfTransformer、HashingVectorizer 四种类。前两种常见。 主要说CountVectorizer。

        CountVectorizer函数,属于常见的特征数值计算类,是一个文本特征提取方法。对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率,将文本中的词语转换为词频矩阵。CountVectorizer同样适用于中文。

参数说明:ngram_range=(2, 2) 表示选用2个词进行前后的组合,构成新的标签值,主要是用来构造新的词向量的组合。

好比一句话'I like you'

如果ngram_range = (2, 2)表示只选取前后的两个词构造词组合 :词向量组合为:’I like‘ 和 ’like you‘ 

如果ngram_range = (1, 3) 表示选取1到3个词做为组合方式: 词向量组合为: 'I', 'like', 'you', 'I like', 'like you', 'I like you' 构成词频标签。

很多博客都说参数是以词袋模型为基础的,但是其实主要运用的就是词袋的“不考虑其词法和语序的问题,即每个词语都是独立”特性,参数主要用来组合构造新向量。

from sklearn.feature_extraction.text import CountVectorizer
# from sklearn.feature_extraction.text import TfidfTransformer
import pandas as pd
path  = 'C:\\Users\\happy\\Desktop\\test.xls'
df_train = pd.read_excel(path)
df_train.drop(columns = ['article','id'],inplace = True)

vecl = CountVectorizer(ngram_range=(1, 1),  ### 词袋
                       lowercase=True, ### 转小写
                       binary=False,  ### 如果是True,tf的值只有0和1
                       min_df = 0.1, ###按比例或绝对数量,删除df超过max_df或者df小于min_df的word tokens;前提vocabulary=None
                       max_df = 0.9,
                       stop_words = None, ### list like ['the','an'....]
                       vocabulary=None,#### 自定义特征
                       max_features = 100000,  ###选择最大的max_features个特征
                       #token_pattern='\w{1,}',### regular expression,默认筛选长度大于等于2的字母和数字混合字符,参数analyzer设置为word时才有效
                       analyzer='word') ## 特征基于wordn-grams(词)还是character n-grams(字)) 
vecl.fit(df_train['word_seg']) ##training
print(vecl.get_feature_names()) ### 输出统计的特征
print(vecl.vocabulary_)      # 特征在列表中的索引位置
x_train  =  vecl.transform(df_train['word_seg'])
print(x_train.shape)
df = pd.DataFrame(x_train.toarray(), columns=vecl.get_feature_names()) # to DataFram
print(df)

结果:

###统计的特征
['1132', '131414', '4124', '41421', '43', '4421', '445', '4888', '497']
#####建立的词汇表
{'131414': 1, '4124': 2, '41421': 3, '497': 8, '1132': 0, '4888': 7, '445': 6, '4421': 5, '43': 4}
#####转化后的大小
(3, 9)
######构建的词频表
   1132  131414  4124  41421  43  4421  445  4888  497
0     0       1     1      1   0     0    0     0    1
1     1       0     1      1   0     0    0     1    0
2     1       0     0      0   1     1    1     0    0

 

主要参考:

[1]https://blog.csdn.net/weixin_38278334/article/details/82320307

[2]https://blog.csdn.net/Clannad_niu/article/details/95216996

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值