如何针对许多字符串测试 NLP 模型



我已经训练了一个分类器模型,该模型使用逻辑回归对一组字符串进行分类,该字符串将字符串分类为 0 或 1。我目前有一个一次只能测试一个字符串的地方。如何让我的模型一次运行多个句子,也许是从.csv文件中运行,这样我就不必单独输入每个句子?

def train_model(classifier, feature_vector_train, label, feature_vector_valid,valid_y, is_neural_net=False(: classifier.fit(feature_vector_train, label(

# predict the labels on validation dataset
predictions = classifier.predict(feature_vector_valid)
if is_neural_net:
predictions = predictions.argmax(axis=-1)
return classifier , metrics.accuracy_score(predictions, valid_y)

然后

model, accuracy = train_model(linear_model.LogisticRegression(), xtrain_count, train_y, xtest_count,test_y)

目前我如何测试我的模型

sent = ['here I copy a string'] 

将文本转换为计数词袋向量

count_vect = CountVectorizer(analyzer='word', token_pattern=r'w{1,}',ngram_range=(1, 2))
x_feature_vector =  count_vect.transform(sent)
pred = model.predict(x_feature_vector)

我得到了这句话及其预测

我希望模型一次对所有新句子进行分类,并为每个句子进行分类。

model.predict(X( 获取样本列表,与 count_vec.transform(X( 相同,因此您可以从文件中读取句子并像这样一起预测它们:

with open('file.txt', 'r') as f:
samples = f.readlines()
vecs = count_vec.transform(samples)
preds = model.predict(vecs)
for s, p in zip(samples, preds):
#printing each sentence with the predicted label
print(s + "     Label: " + p)

更简单的方法将是

vecs=count_vec.transform(test['column_name_on_which_you_want_to_predict'])
pred=model.predict(vecs)
data=pd.DataFrame({'Text':column_name,'SECTION':pred})

然后,您可以根据需要将其导出。

最新更新