【问题标题】:Sklearn Countvectorizer on custom vocabulary自定义词汇表上的 Sklearn Countvectorizer
【发布时间】: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?

【问题讨论】:

    标签: machine-learning scikit-learn nlp


    【解决方案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()) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 2017-09-14
      • 1970-01-01
      • 2015-05-07
      • 2015-12-16
      • 2017-10-11
      • 2021-12-24
      • 2016-09-25
      相关资源
      最近更新 更多