本文简要介绍python语言中 sklearn.feature_extraction.text.CountVectorizer
的用法。
用法:
class sklearn.feature_extraction.text.CountVectorizer(*, input='content', encoding='utf-8', 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=<class 'numpy.int64'>)
将文本文档集合转换为令牌计数矩阵。
此实现使用 scipy.sparse.csr_matrix 生成计数的稀疏表示。
如果您不提供a-priori 字典并且不使用进行某种特征选择的分析器,则特征的数量将等于通过分析数据找到的词汇量大小。
在用户指南中阅读更多信息。
- input:{‘filename’, ‘file’, ‘content’},默认='内容'
- 如果
'filename'
,作为参数传递给 fit 的序列应该是需要读取以获取要分析的原始内容的文件名列表。 - 如果
'file'
,则序列项必须有一个 ‘read’ 方法(file-like 对象),该方法被调用以获取内存中的字节。 - 如果
'content'
,则输入应为字符串或字节类型的项目序列。
- 如果
- encoding:str,默认='utf-8'
如果要分析字节或文件,则使用此编码进行解码。
- decode_error:{‘strict’, ‘ignore’, ‘replace’},默认='严格'
如果要分析的字节序列包含不属于给定
encoding
的字符,请说明如何处理。默认情况下,它是‘strict’,这意味着将引发UnicodeDecodeError。其他值为‘ignore’ 和‘replace’。- strip_accents:{‘ascii’, ‘unicode’},默认=无
在预处理步骤中删除重音并执行其他字符规范化。 ‘ascii’ 是一种快速方法,仅适用于具有直接 ASCII 映射的字符。 ‘unicode’ 是一种稍慢的方法,适用于任何字符。无(默认)什么都不做。
‘ascii’ 和 ‘unicode’ 都使用
unicodedata.normalize
的 NFKD 标准化。- lowercase:布尔,默认=真
在标记化之前将所有字符转换为小写。
- preprocessor:可调用,默认=无
覆盖预处理(strip_accents 和小写)阶段,同时保留标记化和n-grams 生成步骤。仅当
analyzer
不可调用时才适用。- tokenizer:可调用,默认=无
覆盖字符串标记化步骤,同时保留预处理和n-grams 生成步骤。仅适用于
analyzer == 'word'
。- stop_words:{‘english’},列表,默认=无
如果‘english’,则使用内置的英语停用词列表。 ‘english’ 有几个已知问题,您应该考虑替代方案(请参阅使用停用词)。
如果是列表,则假定该列表包含停用词,所有这些都将从生成的标记中删除。仅适用于
analyzer == 'word'
。如果没有,将不使用停用词。 max_df 可以设置为 [0.7, 1.0) 范围内的值,以根据术语的语料库文档内频率自动检测和过滤停用词。
- token_pattern:str, 默认=r”(?u)\b\w\w+\b”
表示构成 “token” 的正则表达式,仅在
analyzer == 'word'
时使用。默认的正则表达式选择 2 个或更多字母数字字符的标记(标点符号被完全忽略并始终被视为标记分隔符)。如果 token_pattern 中有捕获组,则捕获的组内容,而不是整个匹配项,将成为令牌。最多允许一个捕获组。
- ngram_range:元组 (min_n, max_n), 默认=(1, 1)
n-values范围的上下边界,用于提取不同的单词n-grams或char n-grams。将使用所有满足 min_n <= n <= max_n 的 n 值。例如,
(1, 1)
的ngram_range
仅表示一元组,(1, 2)
表示一元组和二元组,而(2, 2)
表示仅二元组。仅在analyzer
不可调用时适用。- analyzer:{‘word’, ‘char’, ‘char_wb’} 或可调用,默认='word'
特征应该由单词n-gram还是字符n-grams构成。选项 ‘char_wb’ 仅从单词边界内的文本创建字符 n-grams; n-grams 在单词的边用空格填充。
如果传递了一个可调用对象,则它用于从未处理的原始输入中提取特征序列。
从 v0.21 开始,如果
input
是filename
或file
,则首先从文件中读取数据,然后将其传递给给定的可调用分析器。- max_df:在 [0.0, 1.0] 或 int 范围内浮点数,默认 = 1.0
在构建词汇表时,忽略文档频率严格高于给定阈值的术语(corpus-specific 停用词)。如果是float,参数代表文档的比例,整数绝对计数。如果词汇表不是无,则忽略此参数。
- min_df:在 [0.0, 1.0] 或 int 范围内浮点数,默认 = 1
在构建词汇表时,忽略文档频率严格低于给定阈值的术语。该值在文献中也称为cut-off。如果是float,参数代表文档的比例,整数绝对计数。如果词汇表不是无,则忽略此参数。
- max_features:整数,默认=无
如果不是 None,则构建一个仅考虑按语料库中的词频排序的顶部 max_features 的词汇表。
如果词汇表不是无,则忽略此参数。
- vocabulary:映射或可迭代,默认=None
一个映射(例如,一个字典),其中键是术语,值是特征矩阵中的索引,或者是可迭代的术语。如果未给出,则从输入文档中确定词汇表。映射中的索引不应重复,并且不应在 0 和最大索引之间有任何间隙。
- binary:布尔,默认=假
如果为 True,则所有非零计数都设置为 1。这对于模拟二进制事件而不是整数计数的离散概率模型很有用。
- dtype:类型,默认=np.int64
fit_transform() 或 transform() 返回的矩阵类型。
- vocabulary_:dict
术语到特征索引的映射。
- fixed_vocabulary_:bool
如果用户提供了术语到索引映射的固定词汇表,则为真。
- stop_words_:set
被忽略的术语,因为它们:
发生在太多文档中(
max_df
)发生在太少的文档中(
min_df
)被特征选择(
max_features
)切断。
这仅在没有给出词汇表的情况下可用。
参数:
属性:
注意:
stop_words_
属性在酸洗时会变大并增加模型大小。此属性仅用于自省,可以使用 delattr 安全删除或在酸洗前设置为 None。例子:
>>> from sklearn.feature_extraction.text import CountVectorizer >>> corpus = [ ... 'This is the first document.', ... 'This document is the second document.', ... 'And this is the third one.', ... 'Is this the first document?', ... ] >>> vectorizer = CountVectorizer() >>> X = vectorizer.fit_transform(corpus) >>> vectorizer.get_feature_names_out() array(['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this'], ...) >>> print(X.toarray()) [[0 1 1 1 0 0 1 0 1] [0 2 0 1 0 1 1 0 1] [1 0 0 1 1 0 1 1 1] [0 1 1 1 0 0 1 0 1]] >>> vectorizer2 = CountVectorizer(analyzer='word', ngram_range=(2, 2)) >>> X2 = vectorizer2.fit_transform(corpus) >>> vectorizer2.get_feature_names_out() array(['and this', 'document is', 'first document', 'is the', 'is this', 'second document', 'the first', 'the second', 'the third', 'third one', 'this document', 'this is', 'this the'], ...) >>> print(X2.toarray()) [[0 0 1 1 0 0 1 0 0 0 0 1 0] [0 1 0 1 0 1 0 1 0 0 1 0 0] [1 0 0 1 0 0 0 0 1 1 0 1 0] [0 0 1 0 1 0 1 0 0 0 0 0 1]]
相关用法
- Python sklearn ConfusionMatrixDisplay.from_predictions用法及代码示例
- Python sklearn ComplementNB用法及代码示例
- Python sklearn ConfusionMatrixDisplay用法及代码示例
- Python sklearn CompoundKernel用法及代码示例
- Python sklearn ConstantKernel用法及代码示例
- Python sklearn ConfusionMatrixDisplay.from_estimator用法及代码示例
- Python sklearn ColumnTransformer用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn ClassifierChain用法及代码示例
- Python sklearn CategoricalNB用法及代码示例
- Python sklearn CalibrationDisplay.from_estimator用法及代码示例
- Python sklearn CalibrationDisplay用法及代码示例
- Python sklearn CalibratedClassifierCV用法及代码示例
- Python sklearn CCA用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
- Python sklearn MLPClassifier用法及代码示例
- Python sklearn train_test_split用法及代码示例
- Python sklearn RandomTreesEmbedding用法及代码示例
- Python sklearn GradientBoostingRegressor用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.feature_extraction.text.CountVectorizer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。