python学习 文本特征提取(二) CountVectorizer TfidfVectorizer 中文处理

本文介绍Python中用于文本特征提取的CountVectorizer和TfidfVectorizer,详细讲解了它们在处理中文数据时的分词、创建停用词列表以及如何将文本转化为词频和逆文档频率的特征向量。同时,讨论了CountVectorizer的token_pattern参数和TfidfVectorizer的逆文档频率思想。
摘要由CSDN通过智能技术生成

上一篇博客shuihupo 博客地址https://blog.csdn.net/shuihupo/article/details/80923414 shuihupo对字典储存的的数据,我们使用CountVectorizer对特征进行抽取和向量化。
在文本数据处理中,我们遇到的经常是一个个字符串,且对于中文来说,经常要处理没有分割符的大段最原始的字符串(这种数据需要先分词,转化为一个分割好的字符串)。
对于这些数据我们会想到它们的哪些特点呢?词,统计他们包含词语的特点。python Scikit-learn 中有两个非常好的工具,CountVectorizer TfidfVectorizer。

目录

CountVectorize 主要是词频特点

  1. 对中文数据进行分词处理
  2. 创建停用词列表,文本转化为代表词频的特征向量(矩阵)
  3. 训练集和测试集分割代码
  4. 关于token_pattern参数:

TfidfVectorizer 逆文档频率

思想

Tfidf考虑到一些非常大众化的词,如“我们”等词,几乎所有或者绝大多数文章都会出现,这些词它们对文本特点刻画的贡献就比较小了(甚至影响),所以考虑要考虑在文本含义中有更高贡献的词啦,这就是逆文档频率的思想。这种方法,文档数目越多,优势更明显。

  1. 对中文数据进行分词处理
  2. 创建停用词列表,文本转化为代表逆文档频率的特征向量(矩阵)
ps:百度百科TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。

CountVectorize

常用数据输入形式为:列表,列表元素为代表文章的字符串,一个字符串代表一篇文章,字符串是已经分割好的
CountVectorizer同样适用于中文
参数表 作用
stop_words 停用词表;自定义停用词表
token_pattern 过滤规则;
>
属性表 作用
vocabulary_ 词汇表;字典型
get_feature_names() 所有文本的词汇;列表型
stop_words_ 返回停用词表

CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在第i个文本下的词频。即各个词语出现的次数,通过get_feature_names()可看到所有文本的关键字,通过toarray()可看到词频矩阵的结果。

方法表 作用
fit_transform(X) 拟合模型,并返回文本矩阵

1.对中文数据进行分词处理

a ="自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学"
b = "因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。"
c ="因而它是计算机科学的一部分。自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。"
import jieba
all_list= ['  '.join(jieba.cut(s,cut_all = False)) for s in [a,b,c]]
print(all_list)

分词后的结果为:

['自然语言  处理  是  计算机科学  领域  与  人工智能  领域  中  的  一个  重要  方向  。  它  研究  能  实现  人  与  计算机  之间  用  自然语言  进行  有效  通信  的  各种  理论  和  方法  。  自然语言  处理  是  一门  融  语言学  、  计算机科学  、  数学  于  一体  的  科学', '因此  ,  这一  领域  的  研究  将  涉及  自然语言  ,  即  人们  日常  使用  的  语言  ,  所以  它  与  语言学  的  研究  有着  密切  的  联系  ,  但  又  有  重要  的  区别  。  自然语言  处理  并  不是  一般  地  研究  自然语言  ,  而  在于  研制  能  有效  地  实现  自然语言  通信  的  计算机系统  ,  特别  是  其中  的  软件系统  。', '因而  它  是  计算机科学  的  一部分  。  自然语言  处理  (  NLP  )  是  计算机科学  ,  人工智能  ,  语言学  关注  计算机  和  人类  (  自然  )  语言  之间  的  相互作用  的  领域  。']

对于停用词,可以在这个阶段去除,代码参考https://blog.csdn.net/u012052268/article/details/77825981,不过CountVectorize是有停用词去除的机制的,在这里我在在下一步去除。

关于上面的代码:

要关注分词输出的形式和CountVectorize所需要的数据形式统一。

2.创建停用词列表,文本转化为代表词频的特征向量(矩阵)

#从文件导入停用词表
stpwrdpath ="C:\\Users\\Administrator\Desktop\lect09_codes\lect09_proj\stop_words\\中文停用词库.txt"
with open(stpwrdpath, 'rb') as fp:
    stopword = fp.read().decode('utf-8')  # 提用词提取
#将停用词表转换为list  
stpwrdlst = stopword.splitlines()
# 从sklearn.feature_extraction.tex
Python文本特征提取是指利用Python编程语言从文本数据中提取特征的过程。在自然语言处理(NLP)和文本挖掘等领域中,对文本进行特征提取可以将文本数据转化为可用于机器学习和统计分析的数字或向量表示。 Python提供了丰富的库和工具,可以用于文本特征提取。常见的特征提取方法包括词袋模型(Bag of Words)、TF-IDF、词频(Term Frequency)、逆文档频率(Inverse Document Frequency)等。 词袋模型是最常用的文本特征提取方法之一。它将文本数据表示为一个词汇表,并统计每个词汇的出现频率作为特征。Python的scikit-learn库提供了CountVectorizer类来实现词袋模型的特征提取。 TF-IDF是一种常用的用于衡量词语在文本文档和语料库中重要性的方法。通过计算词在文档中的频率和在整个语料库中的逆文档频率,得到每个词的TF-IDF值作为特征。scikit-learn库提供了TfidfVectorizer类用于实现TF-IDF特征提取。 词频和逆文档频率是构成TF-IDF方法的两个组成部分。词频衡量了词语在文档中的频率,逆文档频率衡量了词语在整个语料库中的重要性。使用Python的scikit-learn库可以计算并提取词频和逆文档频率作为文本特征。 除了以上常见的文本特征提取方法外,Python还可以使用正则表达式、n-gram模型、Word2Vec等方法进行文本特征提取。 总而言之,Python提供了丰富的库和工具,可以方便地进行文本特征提取。通过选择合适的特征提取方法,可以将文本数据转化为数字或向量表示,为后续的机器学习和统计分析任务奠定基础。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值