0

我目前正在研究一个相当平凡的情感分类程序。在培训阶段一切都很顺利。但是,我无法使用CountVectorizer来测试包含未见词的新文本字符串。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 

如果任何人有如何正确地创建和使用的词汇我会非常感激的任何建议。

回答

0

您需要使用一些序列化程序保存矢量化程序的副本,例如,泡菜并在测试阶段加载。您也可以使用得到词汇,vocabulary_属性看here更多细节

也期待你的代码,在训练中你应该叫vect.fit_transform不只是变换