在文本分类中,如何找到对分类重要的句子部分?

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 库突出显示输入文本中对分类模型影响最大的词。