【问题标题】:how to get vocabulary of CountVectorizer using pipeline如何使用管道获取 CountVectorizer 的词汇
【发布时间】:2019-10-14 23:22:29
【问题描述】:

通常当我只使用CountVectorizer 时,我可以拥有我可以将其用作CountVectorizer 的新对象的参数以在预测之前处理新数据

cv = CountVectorizer()
X = cv.fit_transform(corpus).toarray()
cv_dict = cv.vocabulary_
test_cv = CountVectorizer(vocabulary = cv_dict)
test_X= test_cv.fit_transform(test_corpus).toarray()

我想知道如何使用管道做同样的事情? 我写这段代码开始

text_features = dataset['corpus']
text_transformer = Pipeline(
    steps=[
        ('count', CountVectorizer()),
    ]
)

preprocessor = ColumnTransformer(
    transformers=[
        ('text', text_transformer, text_features[0])
    ]
)

【问题讨论】:

    标签: python scikit-learn pipeline countvectorizer


    【解决方案1】:

    创建test_cv 矢量化器的第一个代码 sn-p 过于复杂且不必要。它也可能会给出您期望的不同向量。让我们首先简化它,管道部分将变得更容易。您创建了cv 对象并使用了它的fit_transform 函数。此函数使矢量化器适合数据。在这种情况下,这意味着它学习数据的词汇表并将其内部存储在vocabulary 实例变量中。然后,它会根据在拟合时学到的词汇来转换输入数据。

    如果您现在对同一个对象简单地调用transform 函数,它也会使用存储的词汇表来转换新数据。您无需创建新对象 test_cv 并将旧词汇表传递给它。

    cv = CountVectorizer()
    X = cv.fit_transform(corpus).toarray()
    test_X= cv.transform(test_corpus).toarray()
    

    现在简化了,管道部分变得更容易理解。您的管道代码已经在其当前状态下工作(只要输入正确)。如果您希望矢量化器学习词汇表,您现在可以致电processor.fit(corpus)。然后,您可以调用 processor.transform(test_corpus) 将矢量化器应用到 test_corpus。

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 2016-09-25
      • 2020-01-15
      • 2016-07-02
      • 2015-05-07
      • 2015-12-16
      • 2018-12-12
      • 1970-01-01
      • 2020-02-09
      相关资源
      最近更新 更多