我有一些关于TfidfVectorizer
的问题。
我不清楚这些词是怎么选的。我们可以提供最小的支持,但在这之后,什么将决定哪些功能将被选择(例如,更高的支持更多的机会)?如果我们说max_features = 10000
,我们总是得到相同的结果吗?如果我们说max_features = 12000
,我们会得到相同的10000
特性,但是额外的2000
?
另外,是否有方法扩展max_features=20000
功能?我把它放在一些文本中,但是我知道一些应该包含的单词,还有一些表情符号“:-”等。如何将它们添加到TfidfVectorizer
对象中,以便可以使用该对象,使用它来fit
和predict
to_include = [":-)", ":-P"]
method = TfidfVectorizer(max_features=20000, ngram_range=(1, 3),
# I know stopwords, but how about include words?
stop_words=test.stoplist[:100],
# include words ??
analyzer='word',
min_df=5)
method.fit(traindata)
X = method.transform(traindata)
X
<Nx20002 sparse matrix of type '<class 'numpy.int64'>'
with 1135520 stored elements in Compressed Sparse Row format>],
where N is sample size
你在问几个不同的问题。让我分别回答:
“我不清楚单词是如何选择的。”
从documentation:
所有的特征(在你的例子中是unigrams,bigrams和trigrams)在整个语料库中按频率排序,然后选择顶部
10000
。不寻常的话被扔掉了。“如果我们说max_features=10000,我们总是得到相同的结果吗?如果我们说max_features=12000,我们会得到同样的10000个特性,但是额外增加2000个吗?”
是的。这个过程是确定的:对于给定的语料库和给定的
max_features
,您将始终获得相同的特性。我把它放在一些文本中,但是我知道一些应该包含的单词,[…]如何将它们添加到TfidfVectorizer对象中?
您可以使用
vocabulary
参数来指定应该使用哪些功能。例如,如果只想提取表情符号,可以执行以下操作:这将返回一个
<Nx3 sparse matrix of type '<class 'numpy.int64'>' with M stored elements in Compressed Sparse Row format>]
。注意,只有3列,每个功能一列。如果希望词汇表包含表情符号和最常见的功能,可以先计算最常见的功能,然后将它们与表情符号合并并重新矢量化,如下所示:
相关问题 更多 >
编程相关推荐