文本特征提取函数: 词袋法与TF-IDF(代码理解)

文本特征提取函数一:CountVectorizer()

  CountVectorizer()函数只考虑每个单词出现的频率;然后构成一个特征矩阵,每一行表示一个训练文本的词频统计结果。其思想是,先根据所有训练文本,不考虑其出现顺序,只将训练文本中每个出现过的词汇单独视为一列特征,构成一个词汇表(vocabulary list),该方法又称为词袋法(Bag of Words)。

  举例解释说明:

from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer

texts=["orange banana apple grape","banana apple apple","grape", ‘orange apple‘]
cv = CountVectorizer()
cv_fit=cv.fit_transform(texts)
print(cv.vocabulary_)
print(cv_fit)
print(cv_fit.toarray())

  输出如下:

{‘orange‘: 3, ‘banana‘: 1, ‘apple‘: 0, ‘grape‘: 2} #这里是根据首字母顺序,将texts变量中所有单词进行排序,apple首字母为a所以排第一,banana首字母为b所以排第二
  (0, 2)    1   # (0, 2)  1 中0表示第一个字符串"orange banana apple grape";2对应上面的‘grape‘: 2;1表示出现次数1。整体理解为第一字符串的顺序为二的词语在出现次数为1
  (0, 0)    1
  (0, 1)    1
  (0, 3)    1
  (1, 0)    2
  (1, 1)    1
  (2, 2)    1
  (3, 0)    1
  (3, 3)    1
[[1 1 1 1]     # 第一个字符串,排名0,1,2,3词汇(apple,banana,grape,orange)出现的频率都为1
 [2 1 0 0]    #第二个字符串,排名0,1,2,3词汇(apple,banana,grape,orange)出现的频率为2,1,00
 [0 0 1 0]
 [1 0 0 1]]

文本特征提取函数二:TfidfVectorizer()

  TfidfVectorizer()基于tf-idf算法。此算法包括两部分tf和idf,两者相乘得到tf-idf算法。

  TF算法统计某训练文本中,某个词的出现次数,计算公式如下:

 或 

  IDF算法,用于调整词频的权重系数,如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。

  TF-IDF算法=TF算法 * IDF算法。

  我们依旧采用上面的例子:

from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer

texts=["orange banana apple grape","banana apple apple","grape", ‘orange apple‘]
cv = TfidfVectorizer()
cv_fit=cv.fit_transform(texts)
print(cv.vocabulary_)
print(cv_fit)
print(cv_fit.toarray())

  输出如下:

{‘orange‘: 3, ‘banana‘: 1, ‘apple‘: 0, ‘grape‘: 2}
  (0, 3)    0.5230350301866413 #(0,3)表示第一个字符串的orange词语,其TF=1/4,IDF中总样本和包含有改词的文档数,目前也不知道是如何得出,望有知道的人能评论告之。最后得出结果0.5230350301866413
  (0, 1)    0.5230350301866413
  (0, 0)    0.423441934145613
  (0, 2)    0.5230350301866413
  (1, 1)    0.5254635733493682
  (1, 0)    0.8508160982744233
  (2, 2)    1.0
  (3, 3)    0.7772211620785797
  (3, 0)    0.6292275146695526
[[0.42344193 0.52303503 0.52303503 0.52303503]
 [0.8508161  0.52546357 0.         0.        ]
 [0.         0.         1.         0.        ]
 [0.62922751 0.         0.         0.77722116]]

原文链接:https://blog.csdn.net/lyn5284767/article/details/85316931

原文地址:https://www.cnblogs.com/dani0107/p/12568378.html

时间: 2024-08-24 11:00:53

文本特征提取函数: 词袋法与TF-IDF(代码理解)的相关文章

机器学习---文本特征提取之词袋模型(Machine Learning Text Feature Extraction Bag of Words)

假设有一段文本:"I have a cat, his name is Huzihu. Huzihu is really cute and friendly. We are good friends." 那么怎么提取这段文本的特征呢? 一个简单的方法就是使用词袋模型(bag of words model).选定文本内一定的词放入词袋,统计词袋内所有词出现的频率(忽略语法和单词出现的顺序),把词频(term frequency)用向量的形式表示出来. 词频统计可以用scikit-learn

机器学习之路:python 文本特征提取 CountVectorizer, TfidfVectorizer

本特征提取: 将文本数据转化成特征向量的过程 比较常用的文本特征表示法为词袋法词袋法: 不考虑词语出现的顺序,每个出现过的词汇单独作为一列特征 这些不重复的特征词汇集合为词表 每一个文本都可以在很长的词表上统计出一个很多列的特征向量 如果每个文本都出现的词汇,一般被标记为 停用词 不计入特征向量 主要有两个api来实现 CountVectorizer 和 TfidfVectorizerCountVectorizer: 只考虑词汇在文本中出现的频率TfidfVectorizer: 除了考量某词汇在

文本分类学习(三) 特征权重(TF/IDF)和特征提取

上一篇中,主要说的就是词袋模型.回顾一下,在进行文本分类之前,我们需要把待分类文本先用词袋模型进行文本表示.首先是将训练集中的所有单词经过去停用词之后组合成一个词袋,或者叫做字典,实际上一个维度很大的向量.这样每个文本在分词之后,就可以根据我们之前得到的词袋,构造成一个向量,词袋中有多少个词,那这个向量就是多少维度的了.然后就把这些向量交给计算机去计算,而不再需要文本啦.而向量中的数字表示的是每个词所代表的权重.代表这个词对文本类型的影响程度. 在这个过程中我们需要解决两个问题:1.如何计算出适

网络挖掘技术——微博文本特征提取

文本特征向量 经典的向量空间模型(VSM: Vector Space Model)由Salton等人于60年代提出,并成功地应用于著名的SMART文本检索系统.VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂.当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性.文本处理中最常用的相似性度量方式是余弦距离.文本挖掘系统采用向量空间模型,用特征词条(T1 ,T2 ,-Tn) 及其权值Wi 代表目标信息,在进行

Feature extraction - sklearn文本特征提取

http://blog.csdn.net/pipisorry/article/details/41957763 文本特征提取 词袋(Bag of Words)表征 文本分析是机器学习算法的主要应用领域.但是,文本分析的原始数据无法直接丢给算法,这些原始数据是一组符号,因为大多数算法期望的输入是固定长度的数值特征向量而不是不同长度的文本文件.为了解决这个问题,scikit-learn提供了一些实用工具可以用最常见的方式从文本内容中抽取数值特征,比如说: 标记(tokenizing)文本以及为每一个

python —— 文本特征提取 CountVectorize

CountVectorize 来自:python学习 文本特征提取(二) CountVectorizer TfidfVectorizer 中文处理 - CSDN博客 https://blog.csdn.net/shuihupo/article/details/80930801 常用数据输入形式为:列表,列表元素为代表文章的字符串,一个字符串代表一篇文章,字符串是已经分割好的 CountVectorizer同样适用于中文 参数表 作用 stop_words 停用词表:自定义停用词表 token_p

机器学习入门-文本特征-word2vec词向量模型 1.word2vec(进行word2vec映射编码)2.model.wv['sky']输出这个词的向量映射 3.model.wv.index2vec(输出经过映射的词名称)

函数说明: 1. from gensim.model import word2vec  构建模型 word2vec(corpus_token, size=feature_size, min_count=min_count, window=window, sample=sample) 参数说明:corpus_token已经进行切分的列表数据,数据格式是list of list , size表示的是特征向量的维度,即映射的维度, min_count表示最小的计数词,如果小于这个数的词,将不进行统计,

02_特征工程和文本特征提取

02 特征工程和文本特征提取 数据集的构成 数据存放形式 CSV 文件 mysql: 性能瓶颈,读取速度: 格式不符合机器学习的格式 pandas:读取工具 numpy为什么读取速度快: 动态语言 全局解释性锁 GIL : 释放了 (GIL数据安全),真正的多线程 可用的数据集 Kaggle : 大数据竞赛平台.真实数据.数据量大 UCI: 数据集覆盖科学.生活.经济等领域 Scikit-learn: 数据量小,方便学习 数据集的结构组成 结构: 特征值 + 目标值 特征工程的定义 特征工程是什

使用sklearn进行中文文本的tf idf计算

Created by yinhongyu at 2018-4-28 email: [email protected] 使用jieba和sklearn实现了tf idf的计算 import jieba import jieba.posseg as pseg from sklearn import feature_extraction from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_e