You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

深度学习模型测试准确率过高排查:推特讽刺检测复现异常

推特讽刺检测复现中的数据泄露疑问及问题分析

任务背景

我正在基于推特数据开展讽刺检测二分类任务,目标是复现一篇2020年WNUT会议论文的实验结果。

数据处理流程

无标签数据处理(用于构建词嵌入)

  • 基于无标签推文训练Word2Vec模型,预处理阶段按论文要求移除稀有词:
model = Word2Vec(df_hing_eng['tweet_text'], vector_size=300, window=10, hs=0, negative = 1)
embedding_size = model.wv.vectors.shape[1]
  • 在同一无标签数据集上拟合Tokenizer:
tok = Tokenizer()
tok.fit_on_texts(df_hing_eng['tweet_text'])
vocab_size = len(tok.word_index) + 1
  • 构建嵌入矩阵:
word_vec_dict={}
for word in vocab:
    word_vec_dict[word]=model.wv.get_vector(word)

embed_matrix=np.zeros(shape=(vocab_size,embedding_size))
for word,i in tok.word_index.items():
    embed_vector=word_vec_dict.get(word)
    if embed_vector is not None:  
        embed_matrix[i]=embed_vector 

有标签数据处理(用于模型训练与测试)

  • 对有标签数据执行与无标签数据完全一致的预处理流程,移除相同的稀有词
  • 计算有标签数据中最长推文的长度:
maxi = -1
for row in df_labeled.loc[:,'tweet_text']:
    if len(row)>maxi:
        maxi = len(row)
  • 使用在无标签数据上拟合好的Tokenizer,将有标签数据转换为词索引:
encoded_tweets = tok.texts_to_sequences(df_labeled['tweet_text'])
  • 将有标签数据填充至最长推文的长度:
padded_tweets = pad_sequences(encoded_tweets, maxlen=maxi, padding='post')
  • 划分训练集与测试集:
x_train,x_test,y_train,y_test=train_test_split(padded_tweets, df_labeled['is_sarcastic'], test_size=0.10, random_state=42)

核心疑问

训练集到测试集是否存在数据泄露或其他问题?我所有深度学习模型的测试准确率均超过90%,但原论文报告的最高准确率仅为75%。我使用了作者提供的模型代码与完全相同的参数。

注:Tokenizer完全是在独立于有标签训练/测试数据的无标签数据上拟合的。

补充分析

进一步分析数据集后发现两个关键问题:

  • 无标签嵌入数据与有标签数据存在大量重叠
  • 有标签与无标签数据中均存在大量重复行

作者提供的LSTM模型代码

#define callbacks
early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.01, patience=4, verbose=1)
callbacks_list = [early_stopping]

# LSTM模型
lstm_out1 = 150

model = Sequential()
model.add(Embedding(vocab_size, embed_dim,
          weights=[embed_matrix], input_length=max_tweet_len, trainable=False))
model.add(LSTM(lstm_out1, dropout=0.2, recurrent_dropout=0.2))

model.add(Dense(64, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

model.compile(loss='binary_crossentropy',
                  optimizer=adam,
                  metrics=['accuracy'])

model.summary()

内容的提问来源于stack exchange,提问作者Debbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:52:49