本人小白一枚,现在正在做分词和文本挖掘的事情,翻译了下sklearn.feature_extraction.text.CountVectorizer,有错误之处还请大佬指出
将文本文档集合转换为计数矩阵此实现使用scipy.sparse.csr_matrix生成计数的稀疏表示。如果您不提供先验词典并且不使用执行某种特征选择的分析器,则功能的数量将等于通过分析数据找到的词汇量。
用法:
sklearn.feature_extraction.text(input=’content’,encoding=’utf8’, decode_error=’strict’,strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern=’(?u)\b\w\w+\b’, ngram_range=(1, 1), analyzer=’word’, max_df=1.0, min_df=1, max_features=None, vocabulary=None,binary=False, dtype=
参数:
Input:string {‘filename’, ‘file’, ‘content’}
如果是'filename',那么作为参数传递给fit的序列应该是一个需要读取以获取要分析的原始内容的文件名列表。
如果是'file',则序列项必须具有'read'方法(类文件对象),该方法被调用以获取内存中的字节。
否则,输入应该是序列字符串或预期直接分析的字节项。
Encoding: string, ‘utf-8’ by default.
如果给出要分析的字节或文件,则使用此编码进行解码。
decode_error: {‘strict’, ‘ignore’, ‘replace’}
如果给出分析的字节序列包含没给定编码的字符,该如何操作的说明。 默认情况下,它是'strict',这意味着将引发UnicodeDecodeError。 其他值为'ignore'和'replace'。
strip_accents=None: {‘ascii’, ‘unicode’, None}
在预处理步骤中删除重音。 'ascii'是一种快速方法,仅适用于具有直接ASCII映射的字符。 'unicode'是一种稍微慢一点的方法,适用于任何字符。 无(默认)不执行任何操作。
Lowercase:boolean, True by default
在标记化之前将所有字符转换为小写
Preprocessor:callable or None (default)
覆盖预处理(字符串转换)阶段,同时保留标记化和n-gram生成步骤。
Tokenizer:callable or None (default)
覆盖字符串标记化步骤,同时保留预处理和n-gram生成步骤。 仅适用于analyzer =='word'。
stop_words:string {‘english’}, list, or None (default)
如果是“英语”,则使用英语的内置停用词列表。
如果列表,该列表被假定包含停用词,则所有这些将从生成的结果中删除。 仅适用于analyzer =='word'。
如果为None,则不使用停用词。 max_df可以设置为[0.7,1.0]范围内的值,以根据术语的语料库文档频率自动检测和过滤停用词。
token_pattern:string
正则表达式表示什么构成“标记”,仅在analyzer =='word'时使用。 默认正则表达式选择2个或更多字母数字字符的标记(标点符号完全被忽略,并始终被视为标记分隔符)。
ngram_range:tuple (min_n, max_n)
要提取的不同n-gram的n值范围的下边界和上边界。 将使用n的所有值,使得min_n <= n <= max_n。
Analyzer:string, {‘word’, ‘char’, ‘char_wb’} or callable
该功能是否应由单词或字符n-gram组成。
选项'char_wb'仅从字边界内的文本创建字符n-gram; 单词边缘的n-gram用空格填充。
如果传递了一个callable,它将用于从原始未处理的输入中提取特征序列。
max_df: float in range [0.0, 1.0] or int, default=1.0
在构建词汇表时,忽略文档频率严格高于给定阈值的术语(语料库特定的停用词)。 如果是float,则参数表示文档的比例,整数绝对计数。 如果词汇表不是None,则忽略此参数。
min_df:float in range [0.0, 1.0] or int, default=1
构建词汇表时,请忽略文档频率严格低于给定阈值的术语。 该值在文献中也称为截止值。 如果是float,则参数表示文档的比例,整数绝对计数。 如果词汇表不是None,则忽略此参数。
max_features:int or None, default=None
如果不是None,则构建一个词汇表,该词汇表仅考虑语料库中按术语频率排序的最高max_features。
如果词汇表不是None,则忽略此参数。
Vocabulary:Mapping or iterable, optional
其中键是术语和值的映射(例如,字典)是特征矩阵中的索引,或者是可迭代的术语。 如果没有给出,则从输入文档确定词汇表。 映射中的索引不应重复,并且不应该在0和最大索引之间存在任何差距。
Binary:boolean, default=False
如果为True,则所有非零计数都设置为1.这对于模拟二进制事件而非整数计数的离散概率模型非常有用。
Dtype:type, optional
fit_transform()或transform()返回的矩阵的类型。
方法:
vocabulary_ : dict
术语与特征指标的映射
使用:
h=docx2txt.process(file_path)
jieba.analyse.set_stop_words('')
data=jieba.analyse.extract_tags(h)
print(data)
count=CountVectorizer(data)
print(count.fit_transform(data).toarray())
print(count.vocabulary_)
for key,value in count.vocabulary_.items():
print (key,value)