sklearn.feature_extraction.text.CountVectorizer 学习
CountVectorizer:
CountVectorizer可以将文本文档集合转换为token计数矩阵。(token可以理解成词)
此实现通过使用scipy.sparse.csr_matrix产生了计数的稀疏表示。
如果不提供一个先验字典,并且不使用进行某种特征选择的分析器,那么特征的数量将与通过分析数据得到的词汇表的大小一致。
参数:
input:
默认content 可选 filename、file、content
如果是filename,传给fit的参数必须是文件名列表
如果是file,传给fit的参数必须是文件对象,有read方法
如果是content,这是字符串序列或者是字节序列
encoding:
默认是utf-8。如果需要分析的文本是bytes 字节码 或者是 文件(文件列表),就使用这个encoding参数来对文件或者bytes进行解码。
decode_error:
默认是strict。当用来分析的字节序列中包含encoding指定的编码集中没有的字符时的指令。strict的意思是直接报错UnicodeDecodeError。ignore是忽视。replace是替换。
strip_accents:
默认是None。在文本预处理的过程去除掉重音(音调). ascii方法较快,仅作用于ASCII码。unicode码稍慢,适合任意字符。None就是不做这个操作。
analyzer:
默认是word。一般使用默认,可设置为string类型,如'word', 'char', 'char_wb',还可设置为callable类型,比如函数是一个callable类型
preprocessor: 默认是None,可传入callable
重写预处理(字符串转换)阶段,同时保留标记化和N-gram生成步骤
tokenizer:
在保留预处理和N-gram生成步骤的同时重写字符串标记化步骤。仅适用于anlayzer = "word".
ngram_range:tuple (min_n, max_n) 默认 (1, 1)
N值的范围的下界和上界用于提取不同的N-gram。n的所有值都将使用Min n=n<=Max n。
stop_words : string {‘english’}, list, or None (default)
english表示使用内置的英语单词停用表
如果是list列表,该列表中的词会作为停止词。仅适用于analyzer=word。
如果是None,就不会使用停止词。max_df参数可以被设置在(0.7, 1.0)的范围内,用来基于语料库内文档中术语的频率来自动检测和过滤停止词。
lowercase: 默认是True,将文本转换为小写。
token_pattern: 默认r"(?u)\b\w\w+\b"
使用正则表达式表示什么样的形式才是一个token,只有当analyzer=word是才有用。默认的正则表达式是至少2个或者更多的字母。标点符号被完全忽略或者只是作为分隔符。
max_df: 默认是1 [0, 1]之间的小数或者是整数。
当构建词汇表时,忽略那些文档频率严格高于给定阈值的术语(特定于语料库的停止词)。如果是浮点数,参数表示一个文件的比例。如果是整数,表示术语的绝对计数。如果vocabulary不是None,则忽略此参数。
min_df: 与max_df类似。 默认是1.
max_features: 默认是None, None或者是整数。
如果不是None,表示建立一个只考虑最前面的max_features个术语来表示语料库。如果vocabulary参数不是None的话,忽略这个参数。
vocabulary: 默认是None。Mapping或者Iterable
无论是Mapping还是字典,items是key, 索引是value,都是特征矩阵中的索引,或者是可迭代的terms。如果没有给出,则从输入文档中确定词汇表。映射中的索引不应该重复,并且不应该在0和最大索引之间有任何间隙。
binary:
如果为真,则所有非零计数设置为1。这对于模拟二进制事件而不是整数计数的离散概率模型是有用的。
dtype :
fit_transform或者transform返回的matrix的类型。
属性:
vocabulary_: 词和词在向量化后的计数矩阵中列索引的映射关系。
stop_words_: 停止词集合。
方法:
build_analyzer:
返回一个进行预处理和分词的分析器函数对象。
build_preprocessor:
返回一个在分词之前进行预处理的可调用方法。
build_tokenizer:
返回一个将字符串分为词语序列的方法
decode:
将输入转换为unicode字符表示
解码的策略参照vectorizer的参数。
fit(raw_documents, y=None):
学习出一个词汇字典。这个词汇字典的格式是{word, word在向量矩阵中的列的索引}
raw_documents是string,unicode,file对象构成的可迭代对象。
fit_transform:
学习词汇字典并转换为矩阵。等同于先调用fit,再调用transform,不过更有效率。
返回向量矩阵。[n_samples, n_features]。行表示文档,列表示特征。
get_feature_names:
特征名称列表
get_params:
获得向量器的参数。
get_stop_words:
获取stopword列表
inverse_transform(X):
返回每个文档中数量不是0的词语
返回结果是array组成的列表
set_params:
设置估计器参数
transform(raw_documents):
将文档转换成词汇计数矩阵。使用fit拟合的词汇表或者提供给构造函数的词汇表来提取传入文档的词语计数。
CountVectorizer处理文本的步骤应该是先使用 preprocessor参数提供预处理器,对文本进行预处理。在使用tokenizer对文本进行拆分。再使用fit拟合得到词汇表,再使用transform转换为计数矩阵。
def count_vectorizer_example():
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
corpus = [
'This is the first document.',
'This is the second second document.',
'And the third one.',
'Is this the first document?',
]
X = vectorizer.fit_transform(corpus)
feature_names = vectorizer.get_feature_names()
# 会产生一个矩阵,行表示文章,列表是词汇,列的数字表示词汇的数量
array = X.toarray()
# 得到document词所在的列的索引
document_count = vectorizer.vocabulary_.get("document")
# 在训练语料库中未出现的词,会被完全忽略
test = vectorizer.transform(["Something completely new."]).toarray()
# 除了提取1-grams词 而且提取2-grams词。这样是为了防止词组顺序颠倒。
bigram_vectorizer = CountVectorizer(ngram_range=(1, 2),
stop_words=['AAAAAA'],
token_pattern=r"\b\w+\b", min_df=1)
analyze = bigram_vectorizer.build_analyzer()
print(analyze("Bi-grams are cool!"))
# 构建的向量矩阵会变得更大
X_2 = bigram_vectorizer.fit_transform(corpus).toarray()
# is this这样的疑问形式也会出现在向量中
feature_index = bigram_vectorizer.vocabulary_.get("is this")
print(X_2[:, feature_index]) # ################测试各个函数的功能
# build_analyzer: 返回一个进行预处理和分词的调用对象
analyzer = bigram_vectorizer.build_analyzer()
print(analyzer("This is a test.")) # build_preprocessor: 返回一个进行预处理的调用对象。
preprocessor = bigram_vectorizer.build_preprocessor()
# 这个预处理对象好像只进行了小写转换
print(preprocessor("This is a test.")) # build_tokenizer: 返回一个只对字符串进行分词的可调用方法
tokenizer = bigram_vectorizer.build_tokenizer()
print(tokenizer("This is a test.")) # decode(doc): 将输入转换为unicode字符表示。解码策略使用vectorizer的参数
print(bigram_vectorizer.decode("This is a test.这是一个测试。")) # fit(raw_documents, y=None): 从传入的raw_documents的所有词汇中学习出一个词汇字典
# 这个词汇字典是 {word: word在向量矩阵中的列索引,...}
# raw_documents: 字符串、unicode或者file对象构成的可迭代对象
# y好像并没有在函数中使用
raw_documents = ["This is a test", "Is this a test?"]
print(bigram_vectorizer.fit(raw_documents).vocabulary_) # fit_transform(raw_documents, y=None)
# 学习出一个词汇字典,并且返回一个行为文本,列为词汇的矩阵。
# 这个函数等价于先调用fit函数,再调用transform函数。但是是更高效的实现。
print(bigram_vectorizer.fit_transform(corpus).toarray()) # get_feature_names:返回一个特征名列表,特征的顺序是特征在矩阵中的顺序。
print(bigram_vectorizer.get_feature_names()) # get_params: 返回估计器的参数
print(bigram_vectorizer.get_params()) # get_stop_words: 返回停止词表
print(bigram_vectorizer.get_stop_words()) # inverse_transform(X): 返回每个文档中数量不是0的词语
# 返回的是array组成的list。len = n_samples
print(bigram_vectorizer.inverse_transform(bigram_vectorizer.fit_transform(corpus).toarray())) # set_params 设置估计器的参数
print(bigram_vectorizer.set_params(stop_words=["2"]).get_stop_words()) # transform(raw_documents): 将文档转换成术语矩阵。
# 使用fit拟合的词汇表或提供给构造函数的词汇表提取原始文本文档中的词语计数。
print(bigram_vectorizer.transform(corpus).toarray()) if __name__ == "__main__":
count_vectorizer_example()
sklearn.feature_extraction.text.CountVectorizer 学习的更多相关文章
- sklearn.feature_extraction.text 的TfidfVectorizer函数
TfidfVectorizer函数主要用于,将文档(句子)等通过 tf-idf值来进行表示,也就是用一个tf-idf值的矩阵来表示文档(句子也可). from sklearn.feature_extr ...
- 理解sklearn.feature.text中的CountVectorizer和TfidfVectorizer
""" 理解sklearn中的CountVectorizer和TfidfVectorizer """ from collections im ...
- sklearn 词袋 CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer texts=["dog cat fish","do ...
- 特征抽取: sklearn.feature_extraction.FeatureHasher
sklearn.feature_extraction.FeatureHasher(n_features=1048576, input_type="dict", dtype=< ...
- Sublime text 入门学习资源篇及其基本使用方法
Sublime text 学习资源篇 史上最性感的编辑器-sublimetext,插件, 学习资源 官网 http://www.sublimetext.com/ 插件 https://packagec ...
- Sublime Text:学习资源篇
官网 http://www.sublimetext.com/ 插件 https://packagecontrol.io 教程 Sublime Text 全程指南 Sublime Text 2 入门及技 ...
- 特征抽取: sklearn.feature_extraction.DictVectorizer
sklearn.featture_extraction.DictVectorizer: 将特征与值的映射字典组成的列表转换成向量. DictVectorizer通过使用scikit-learn的est ...
- sklearn.feature_extraction.DictVectorizer
sklearn.feature_extraction.DictVectorizer:将字典组成的列表转换成向量.(将特征与值的映射字典组成的列表转换成向量) 1. 特征矩阵行代表数据,列代表特征,0表 ...
- sklearn中调用集成学习算法
1.集成学习是指对于同一个基础数据集使用不同的机器学习算法进行训练,最后结合不同的算法给出的意见进行决策,这个方法兼顾了许多算法的"意见",比较全面,因此在机器学习领域也使用地非常 ...
随机推荐
- Hadoop YARN 调度器(scheduler) —— 资源调度策略
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/hadoop_yarn_resource_scheduler 搜了 ...
- ELK系列(7) - 测试环境下Logstash异常退出:block in multi_receive_encoded
问题与分析 在本地测试无误后将ELK部署到了测试环境,结果第二天发现Logstash挂掉了,一开始以为是自动部署之类导致的问题.之后几天时间里Logstash总是会down掉,查看了下日志文件,发现报 ...
- tomcat设置gzip
使用tomcat发布3dtiles或terrain数据遇到的gzip问题 问题一 对大于1KB的json请求进行gzip压缩,json为原文件 1.创建原始文件 2.设置 在apache-tomcat ...
- zabbix(9)iterms(监控项)
一.iterms key 监控项按参数来分有两种:带参数和不带参 按定义来分:zabbix自带和用户自定义 1)Key可以带参数,该参数为一个数组列表,可以同时传递多个参数,Key的格式如下: 既Ke ...
- zabbix (二)安装
一.centos7源码安装zabbix3.x 1.安装前环境搭建 下载最新的yum源 #wget -P /etc/yum.repos.d http://mirrors.aliyun.com/repo/ ...
- 免sudo使用docker
前沿:通过root安装完docker,在普通用户下执行docker相关命令的时候,报权限不足: 查看sock文件的权限: [hadoop@slave1 monitor]$ ll /var/run/do ...
- [WEB安全]Dirsearch工具命令
下载项目,并打开 ┌─[root@kali]─[/kali] └──╼ #git clone https://github.com/maurosoria/dirsearch ┌─[root@kali] ...
- 认识wsgi
WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义 ...
- Echarts 常用API之action行为
一.Echarts中的action echarts中支持的图表行为,通过dispatchAction触发. 1.highlight 高亮指定的数据图形 dispatchAction({ type: ' ...
- Linux中 mkdir 创建文件夹命令
语法 mkdir (选项)(参数) 选项 -Z:设置安全上下文,当使用SELinux时有效: -m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限: -p或- ...