自定义词汇表上的 Sklearn Countvectorizer
Posted
技术标签:
【中文标题】自定义词汇表上的 Sklearn Countvectorizer【英文标题】:Sklearn Countvectorizer on custom vocabulary 【发布时间】:2019-08-29 14:15:31 【问题描述】:我有一组网页,我正在获取网页计数矩阵。我尝试使用来自 sklearn 的标准 Countvectorizer,但没有得到所需的结果。示例代码如下:
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['www.google.com www.google.com', 'www.google.com www.facebook.com', 'www.google.com', 'www.facebook.com']
vocab = 'www.google.com':0, 'www.facebook.com':1
vectorizer = CountVectorizer(vocabulary=vocab)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())
它给了
['www.google.com', 'www.facebook.com']
[[0 0]
[0 0]
[0 0]
[0 0]]
但需要的结果是
['www.google.com', 'www.facebook.com']
[[2 0]
[1 1]
[1 0]
[0 1]]
我们如何在这样一个自定义词汇表上应用 countvectorizer?
【问题讨论】:
【参考方案1】:根据related question 的输入,问题是由于分词器造成的。 编写了一个客户标记器,现在它可以工作了。
def mytokenizer(text):
return text.split()
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['www.google.com www.google.com', 'www.google.com www.facebook.com', 'www.google.com', 'www.facebook.com']
vocab = 'www.google.com':0, 'www.facebook.com':1
vectorizer = CountVectorizer(vocabulary=vocab, tokenizer = mytokenizer)
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())
【讨论】:
以上是关于自定义词汇表上的 Sklearn Countvectorizer的主要内容,如果未能解决你的问题,请参考以下文章
Scikits-learn:将自定义词汇表与 Pipeline 一起使用
当我传递自定义词汇表时,Python 中的 CountVectorizer() 返回全零