在文本分类中,如何找到对分类重要的句子部分?
In text classification, how to find the part of sentence that is important for the classification?
我训练了一个运行良好的文本分类模型。我想更深入地了解句子中的 words/phrases 对分类结果的影响最大。我想了解哪些词对每个分类结果最重要
我正在使用 Keras 进行分类,下面是我用来训练模型的代码。这是我正在使用的简单嵌入加最大池化文本分类模型。
from tensorflow.keras.models import Sequential
from tensorflow.keras import layers
import tensorflow as tf
from tensorflow.keras.callbacks import EarlyStopping
# early stopping
callbacks = tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', min_delta=0,
patience=5, verbose=2, mode='auto', restore_best_weights=True)
# select optimizer
opt = tf.keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999,
epsilon=1e-07, amsgrad=False, name="Adam")
embedding_dim = 50
# declare model
model = Sequential()
model.add(layers.Embedding(input_dim=vocab_size,
output_dim=embedding_dim,
input_length=maxlen))
model.add(layers.GlobalMaxPool1D())
model.add(layers.Dense(10, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer=opt,
loss='binary_crossentropy',
metrics=['accuracy'])
model.summary()
# fit model
history = model.fit(X_tr, y_tr,
epochs=20,
verbose=True,
validation_data=(X_te, y_te),
batch_size=10, callbacks=[callbacks])
loss, accuracy = model.evaluate(X_tr, y_tr, verbose=False)
如何提取对分类结果影响最大的phrases/words?
您需要的关键字似乎是“神经网络可解释性”和“特征归因”。该领域最著名的方法之一称为 Integrated Gradients;它显示了模型预测如何依赖于每个输入特征(在你的例子中是每个词嵌入)。
This tutorial shows how to implement IG in pure tensorflow for images, and this one 使用 alibi
库突出显示输入文本中对分类模型影响最大的词。
我训练了一个运行良好的文本分类模型。我想更深入地了解句子中的 words/phrases 对分类结果的影响最大。我想了解哪些词对每个分类结果最重要
我正在使用 Keras 进行分类,下面是我用来训练模型的代码。这是我正在使用的简单嵌入加最大池化文本分类模型。
from tensorflow.keras.models import Sequential
from tensorflow.keras import layers
import tensorflow as tf
from tensorflow.keras.callbacks import EarlyStopping
# early stopping
callbacks = tf.keras.callbacks.EarlyStopping(monitor='val_accuracy', min_delta=0,
patience=5, verbose=2, mode='auto', restore_best_weights=True)
# select optimizer
opt = tf.keras.optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999,
epsilon=1e-07, amsgrad=False, name="Adam")
embedding_dim = 50
# declare model
model = Sequential()
model.add(layers.Embedding(input_dim=vocab_size,
output_dim=embedding_dim,
input_length=maxlen))
model.add(layers.GlobalMaxPool1D())
model.add(layers.Dense(10, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer=opt,
loss='binary_crossentropy',
metrics=['accuracy'])
model.summary()
# fit model
history = model.fit(X_tr, y_tr,
epochs=20,
verbose=True,
validation_data=(X_te, y_te),
batch_size=10, callbacks=[callbacks])
loss, accuracy = model.evaluate(X_tr, y_tr, verbose=False)
如何提取对分类结果影响最大的phrases/words?
您需要的关键字似乎是“神经网络可解释性”和“特征归因”。该领域最著名的方法之一称为 Integrated Gradients;它显示了模型预测如何依赖于每个输入特征(在你的例子中是每个词嵌入)。
This tutorial shows how to implement IG in pure tensorflow for images, and this one 使用 alibi
库突出显示输入文本中对分类模型影响最大的词。