【问题标题】:In text classification, how to find the part of sentence that is important for the classification?在文本分类中,如何找到句子中对分类很重要的部分?
【发布时间】:2022-01-04 08:19:19
【问题描述】:

我已经训练了一个运行良好的文本分类模型。我想更深入地了解句子中的哪些单词/短语对分类结果影响最大。我想了解哪些词对每个分类结果最重要

我使用 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)

如何提取对分类结果影响最大的短语/单词?

【问题讨论】:

    标签: python machine-learning nlp artificial-intelligence


    【解决方案1】:

    您需要的关键字似乎是“神经网络可解释性”和“特征归因”。该领域最著名的方法之一称为 Integrated Gradients;它显示了模型预测如何依赖于每个输入特征(在你的情况下是每个词嵌入)。

    This tutorial 展示了如何在纯张量流中为图像实现 IG,this one 使用 alibi 库突出显示输入文本中对分类模型影响最大的单词。

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 2017-05-10
      • 2013-03-25
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2016-03-20
      相关资源
      最近更新 更多