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不只是變換