【发布时间】:2019-06-16 07:02:32
【问题描述】:
假设我用于单个文档
text="bla agao haa"
singleTFIDF = TfidfVectorizer(analyzer='char_wb', ngram_range=
(4,6),preprocessor=my_tokenizer, max_features=100).fit([text])
single=singleTFIDF.transform([text])
query = singleTFIDF.transform(["new coming document"])
如果我理解正确,transform 只使用从 fit 中学习到的权重。因此,对于新文档,查询包含文档中每个特征的权重。看起来像 [[0,,0,0.13,0.4,0]]
当我使用 n-gram 时,我也想为这个新文档获取这些功能。所以我知道新文档中每个特性的权重。
编辑:
在我的情况下,我得到一个并查询以下数组:
single
[[0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125 0.10721125 0.10721125 0.10721125
0.10721125 0.10721125 0.10721125]]
query
[[0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0.57735027 0.57735027 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0.
0. 0. 0. 0.57735027 0. 0.
0. 0. 0. ]]
但这很奇怪,因为从学习的语料库(单个)中,所有特征的权重都是 0.10721125。那么新文档的一个特征怎么会有0.57735027的权重呢?
【问题讨论】:
-
您要分析什么 - 字符或单词 n-gram?
-
我用的是char_wb,但你的意思是什么?
-
‘char_wb’ 仅从单词边界内的文本创建字符 n-gram - 这真的是您想要的吗?
-
问题不在于这个!
-
没错,但读它会让人怀疑你是否理解你的代码在做什么。给你举一个单词 n-gram 的例子会更容易,而不是字符 n-gram。
标签: python scikit-learn tfidfvectorizer