CountVectorizer读写词汇

时间:2016-05-27 13:08:36

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

我目前正致力于一个相当琐碎的情绪分类计划。一切都在训练阶段很好。但是,我无法使用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

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

1 个答案:

答案 0 :(得分:0)

您需要使用某些序列化程序保存矢量图的副本,例如泡菜并在测试阶段加载它。您还可以使用词汇表属性获取词汇,请参阅here了解更多详情

另外看一下你的代码,在训练中你应该调用vect.fit_transform而不仅仅是转换