用词袋方法预测文本
Posted
技术标签:
【中文标题】用词袋方法预测文本【英文标题】:Predict a text with bag of word approach 【发布时间】:2019-01-14 04:28:00 【问题描述】:我正在尝试使用词袋模型进行文本分类。一切正常,直到我使用测试集来测试和评估准确性,但我们如何检查单个语句的类。
我有一个带有 2 个类标签和正文的数据框。
cout_vect = CountVectorizer()
final_count = cout_vect.fit_transform(df['body'].values.astype('U'))
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils
X_train, X_test, y_train, y_test = train_test_split(final_count, df['label'], test_size = .3, random_state=25)
model = Sequential()
model.add(Dense(264, input_dim=X_train.shape[1], activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
y_train = np_utils.to_categorical(y_train, num_classes=3)
y_test = np_utils.to_categorical(y_test, num_classes=3)
model.fit(X_train, y_train, epochs=50, batch_size=32)
model.evaluate(x=X_test, y=y_test, batch_size=None, verbose=1, sample_weight=None)
现在我想使用我的模型来预测这个陈述。这个怎么做 我尝试使用计数向量器将我的语句转换为向量,但根据词袋方法,它只是一个 8 维向量。
x = "Your account balance has been deducted for 4300"
model.predict(x, batch_size=None, verbose=0, steps=None)
【问题讨论】:
【参考方案1】:你需要这样做:
# First transform the sentence to bag-of-words according to the already learnt vocabulary
x = cout_vect.transform([x])
# Then send the feature vector to the predict
print(model.predict(x, batch_size=None, verbose=0, steps=None))
您还没有展示“我尝试使用计数矢量化器将我的语句转换为矢量,但根据词袋方法,它只是一个 8 维矢量。”,但我我猜你是这样做的:
cout_vect.fit_transform([x])
如果你调用fit()
(或fit_transform()
),向量化器会忘记所有之前的训练,只记住当前的词汇,因此你只得到一个大小为8的特征向量,而你之前的向量更大.
【讨论】:
以上是关于用词袋方法预测文本的主要内容,如果未能解决你的问题,请参考以下文章
sklearn - 从文本文档中预测多标签分类中的前 3-4 个标签
R语言构建文本分类模型:文本数据预处理构建词袋模型(bag of words)构建xgboost文本分类模型xgboost模型预测推理并使用混淆矩阵评估模型可视化模型预测的概率分布