【问题标题】:CountVectorizer reading and writing vocabularyCountVectorizer 读写词汇
【发布时间】:2016-09-25 20:18:10
【问题描述】:

我目前正在研究一个相当简单的情绪分类程序。在训练阶段一切正常。但是,我在使用 CountVectorizer 测试包含看不见的单词的新文本字符串时遇到了问题。

出于这个原因,我正在尝试在测试阶段编写一个用于矢量化的查找词汇表。但是,我不知道如何创建和检索要作为参数传递的词汇对象。

我的两种方法目前出现如下:

def trainingVectorTransformation (messages):
    #--> ReviewText to vectors    
    vect = CountVectorizer(analyzer=split_into_lemmas).fit(messages['reviewText'])

    messages_bow = vect.transform(messages['reviewText'])

    feature_list = vect.get_feature_names()
    #NOT SURE HOW TO CREATE VOCABULARY
    with open("vocab.txt", "w") as text_file:
        text_file.write(str(feature_list))   

    tfidf_transformer = TfidfTransformer().fit(messages_bow)


    messages_tfidf = tfidf_transformer.transform(messages_bow)
    return messages_tfidf

def testingVectorTransformation (messages):
    #--> ReviewText to vectors
    #NOT SURE HOW TO READ THE CREATED VOCABULARY AND USE IT APPROPRIATELY   
    txt = open("vocab.txt")
    vocabulary = txt.read()


    vect = CountVectorizer(analyzer=split_into_lemmas, vocabulary = vocabulary).fit(messages['reviewText'])

    messages_bow = vect.transform(messages['reviewText'])

    tfidf_transformer = TfidfTransformer().fit(messages_bow)

    messages_tfidf = tfidf_transformer.transform(messages_bow)
    return messages_tfidf

如果有人对如何正确创建和使用词汇有任何建议,我将不胜感激。

【问题讨论】:

    标签: python machine-learning scikit-learn vectorization sentiment-analysis


    【解决方案1】:

    您需要使用一些序列化程序保存矢量化程序的副本,例如pickle 并在测试阶段加载它。您还可以使用词汇表来获取词汇表,更多详细信息请参见here

    还要查看您的代码,在训练中您应该调用 vect.fit_transform 而不仅仅是变换

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 2015-05-07
      • 2015-12-16
      • 2018-12-12
      • 1970-01-01
      • 2018-08-31
      • 2019-08-29
      • 2016-07-02
      • 2017-09-21
      相关资源
      最近更新 更多