CountVectorizer读写词汇
CountVectorizer reading and writing vocabulary
我目前正在研究一个相当简单的情感分类程序。在训练阶段一切正常。但是,我在使用 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
如果有人对如何正确创建和使用词汇表有任何建议,我将不胜感激。
您需要使用一些序列化器保存矢量化器的副本,例如泡菜并在测试阶段加载它。您还可以使用 vocabulary_ 属性获取词汇表 here 了解更多详情
同时查看您的代码,在训练中您应该调用 vect.fit_transform 而不仅仅是 transform
我目前正在研究一个相当简单的情感分类程序。在训练阶段一切正常。但是,我在使用 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
如果有人对如何正确创建和使用词汇表有任何建议,我将不胜感激。
您需要使用一些序列化器保存矢量化器的副本,例如泡菜并在测试阶段加载它。您还可以使用 vocabulary_ 属性获取词汇表 here 了解更多详情
同时查看您的代码,在训练中您应该调用 vect.fit_transform 而不仅仅是 transform