赞
踩
系列目录
- python学习 文本特征提取(一) DictVectorizer shuihupo
python学习 文本特征提取(二) CountVectorizer TfidfVectorizer 中文处理
python学习文本特征提取(三) CountVectorizer TfidfVectorizer 朴素贝叶斯分类性能测试
上一篇博客对字典储存的的数据处理,今天我们使用CountVectorizer对特征进行抽取和向量化。
在文本数据处理中,我们遇到的经常是一个个字符串,且对于中文来说,经常要处理没有分割符的大段最原始的字符串(这种数据需要先分词,转化为一个分割好的字符串)。
对于这些数据我们会想到它们的哪些特点呢?词,统计他们包含词语的特点。python Scikit-learn 中有两个非常好的工具,CountVectorizer TfidfVectorizer。
Tfidf考虑到一些非常大众化的词,如“我们”等词,几乎所有或者绝大多数文章都会出现,这些词它们对文本特点刻画的贡献就比较小了(甚至影响),所以考虑要考虑在文本含义中有更高贡献的词啦,这就是逆文档频率的思想。这种方法,文档数目越多,优势更明显。
ps:百度百科TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。
参数表 | 作用 |
---|---|
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) | 拟合模型,并返回文本矩阵 |
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所需要的数据形式统一。
#从文件导入停用词表
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。