gpt4 book ai didi

python - 如何检查经过训练的词汇和 TfidfVectorizer 是否正确应用于另一个语料库?

转载 作者:行者123 更新时间:2023-12-01 07:23:31 27 4
gpt4 key购买 nike

我正在尝试在一组上训练 NLP 模型,保存词汇和模型,然后将其应用于单独的验证集。代码正在运行,但我如何确定它按我的预期工作?

换句话说,我从训练集中保存了词汇和 nmodel,然后使用保存的词汇创建了 TFidfVectorizer,最后在新的验证注释上使用“fit_transform”。

这是否仅应用经过训练的词汇和模型?难道它没有从验证集中“学习”任何新东西吗?

训练,然后加载词汇和模型并应用于验证集:

train_vector = tfidf_vectorizer.fit_transform(training_notes)
pickle.dump(tfidf_vectorizer.vocabulary_, open('./vocab/' + '_vocab.pkl', 'wb'))
X_train = train_vector.toarray()
y_train = np.array(train_data['ref_std'])
model.fit(X_train, y_train)
dump(model, './model/' + '.joblib')
train_prediction = model.predict(X_train)


vocab = pickle.load(open('./vocab/' + '_vocab.pkl', 'rb'))
tfidf_vectorizer = TfidfVectorizer(vocabulary = vocab)
valid_vector = tfidf_vectorizer.fit_transform(validation_notes)
X_valid = valid_vector.toarray()
y_valid = np.array(validation_data['ref_std'])
model = load('./model/' + '.joblib')
valid_prediction = model.predict(X_valid)```

最佳答案

回答您的问题:

Is this applying only the trained vocab and model?

正如@G所述。安德森作为对您答案的评论,当您调用“fit”时,您正在将 Tf-idf 字典重新调整为新数据 - 这意味着为单词赋予新的权重(我假设您知道什么是 TF-IDF )。因此,为了能够使用经过训练的词汇,仅使用:

vocab = pickle.load(open('./vocab/' + '_vocab.pkl', 'rb'))
tfidf_vectorizer = TfidfVectorizer(vocabulary = vocab)
valid_vector = tfidf_vectorizer.transform(validation_notes)

假设您应用上述更正,则可以回答第二个问题:

Is it not "learning" anything new from the validation set?

不,您只是验证它。您使用相同的 tf-idf 向量化,因为您希望根据原始数据拟合新条目 - 为此,您有一组自定义权重来描述模型最看重的单词。如果你不断改变你的 tf-idf 字典,你将会有不同的权重(如果你考虑大量数据,它们可以平均,但​​我认为这不是事实)。

因此,一旦有了模型和 tf-idf 计算,一切就都固定了,除了记录数据以进一步增强模型之外,什么也学不到。

关于python - 如何检查经过训练的词汇和 TfidfVectorizer 是否正确应用于另一个语料库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com