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

如何使用已保存的Keras模型实现基于概率的情感分类?

如何用训练好的情感分类模型预测单句文本的正负概率?

嘿,我来帮你搞定这个问题!你已经把模型训练完成并保存了,接下来只需要把输入的单句文本转换成模型能识别的格式,就能轻松得到情感正负概率了。我一步步给你拆解操作:

1. 加载已保存的模型和Word2Vec模型

首先得把你之前训练好的Keras模型和Word2Vec模型加载回来,假设你之前用model.save('sentiment_model.h5')和word_model.save('word2vec_model.model')保存了它们,代码如下:

from tensorflow.keras.models import load_model
import gensim

# 加载Keras情感模型
model = load_model('sentiment_model.h5')
# 加载Word2Vec模型(如果后续需要处理未知词可以保留,也可根据情况跳过)
word_model = gensim.models.Word2Vec.load('word2vec_model.model')

2. 预处理输入文本

模型只能接受固定长度的索引序列作为输入,所以你需要把单句文本转换成和训练数据格式一致的序列:

  • 分词方式要和训练时完全一致:比如你训练时用的是空格分词、jieba分词还是其他工具,这里必须保持相同
  • 转换为词汇索引:用你训练时构建的word_to_idx字典(把每个词映射到对应索引的字典),把分词后的每个词转换成索引;遇到不在字典里的词,可以用预设的未知词索引(比如0)代替
  • 统一序列长度:用pad_sequences把序列填充或截断到训练时的最大长度

给你一个预处理函数的示例:

from tensorflow.keras.preprocessing.sequence import pad_sequences

def preprocess_single_sentence(sentence, word_to_idx, max_seq_len):
    # 替换成你训练时用的分词逻辑,比如jieba分词就改成jieba.lcut(sentence)
    words = sentence.split()
    # 转换为索引,未知词用0表示(根据你自己的未知词设置调整)
    seq = [word_to_idx.get(word, 0) for word in words]
    # 填充/截断到训练时的固定长度,padding和truncating方式要和训练时一致
    padded_seq = pad_sequences([seq], maxlen=max_seq_len, padding='post', truncating='post')
    return padded_seq

3. 预测情感概率

预处理好文本后,直接用模型的predict方法就能得到结果。因为你的模型最后一层是sigmoid激活,输出的是正类的概率,负类概率就是1 - 正类概率:

# 替换成你实际的输入句子、词汇字典和训练时的最大序列长度
input_sentence = "今天的工作真让人头疼,心情糟透了"
max_seq_len = 100  # 假设你训练时设置的最大序列长度是100
processed_input = preprocess_single_sentence(input_sentence, word_to_idx, max_seq_len)

# 获取预测概率
positive_prob = model.predict(processed_input)[0][0]
negative_prob = 1 - positive_prob

print(f"该文本的正情感概率: {positive_prob:.4f}")
print(f"该文本的负情感概率: {negative_prob:.4f}")

关键注意事项

  • 一定要保证预处理逻辑和训练时完全一致:分词方式、词汇字典、序列长度、填充/截断方式,任何一点不一致都会导致预测结果不准
  • 如果训练时你对文本做了其他预处理(比如小写转换、去除标点),预测时也要对输入句子做同样的处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:49:28