文字模型训练分析评论(算法实战)

文字模型训练,尤其是在自然语言处理(NLP)领域,是构建能够理解、解释、生成人类语言系统的核心步骤。这类模型广泛应用于文本分类、情感分析、机器翻译、聊天机器人、摘要生成等多个方面。针对文字模型训练后的分析评论,可以从以下几个方面进行:

1. 性能评估

  • 准确率/错误率:评估模型在测试集上的准确率或错误率是最直接的方式,这能反映模型的基本性能。
  • 混淆矩阵:对于分类任务,混淆矩阵可以详细展示模型在各个类别上的表现,包括真正例(TP)、假正例(FP)、真反例(TN)、假反例(FN)的数量。
  • F1分数:结合了精确率和召回率的指标,对于不平衡数据集尤其有用,能够更全面地评估模型性能。
  • ROC曲线与AUC值:用于二分类问题,ROC曲线下的面积(AUC)值越高,表示模型性能越好。

2. 模型泛化能力

  • 交叉验证:通过多次划分训练集和验证集来评估模型在不同数据子集上的表现,有助于了解模型的稳定性和泛化能力。
  • 过拟合与欠拟合:分析模型在训练集和验证集上的性能差异,判断是否存在过拟合(训练集表现优异但验证集表现差)或欠拟合(两者都差)问题。

3. 文本理解与生成质量

  • 语义连贯性:对于生成类任务(如文本摘要、机器翻译),评估生成文本的语义是否连贯,是否符合逻辑。
  • 多样性:检查生成文本是否具有丰富的多样性,避免单调重复。
  • 语境适应性:评估模型在不同语境下的表现,确保能够准确理解并适应不同的语言环境和文化背景。

4. 效率与资源消耗

  • 训练时间:记录并比较不同模型或配置下的训练时间,评估训练效率。
  • 资源消耗:包括计算资源(CPU、GPU等)和内存消耗,对于实际应用中的部署成本有重要影响。

5. 实际应用反馈

  • 用户满意度:收集真实用户的使用反馈,了解模型在实际应用中的表现,包括易用性、准确性等方面的评价。
  • 持续改进:基于用户反馈和实际应用中的问题,不断优化模型,提升性能。

*废话不说了,直接实战:

python 复制代码
import pandas as pd
#利用爬虫提取数据
cp_content = pd.read_table("./差评.txt", encoding='utf8')
yzpj_content = pd.read_table("./优质好评.txt", encoding='utf8')

import jieba#导入库

cp_segments = []
contents = cp_content.content.values.tolist()
for content in contents:
    results = jieba.lcut(content)
    if len(results) > 1:  # 当分词之后,这条评论如果只有1个内容,
        cp_segments.append(results)  # 将分词后的内容添加到列表segments中

cp_fc_results = pd.DataFrame({'content': cp_segments})
cp_fc_results.to_excel('cp_fc_results.xlsx', index=False)

# B:对优质评价分词
yzpj_segments = []
contents = yzpj_content.content.values.tolist()  # 将content列数据取出并转化为list格式。目的是分别 jieba.lcut分词
for content in contents:
    results = jieba.lcut(content)
    if len(results) > 1:
        yzpj_segments.append(results)  ##将分词后的内容添加到列表segments中

# 分词结果储存在新的数据框中
yzpj_fc_results = pd.DataFrame({'content': yzpj_segments})
yzpj_fc_results.to_excel('yzpj_fc_results.xlsx', index=False)

# 导入停用词库
stopwords = pd.read_csv(r"./红楼梦/StopwordsCN.txt", encoding='utf8', engine='python', index_col=False)


# 定义去除停用词函数

def drop_stopwords(contents, stopwords):
    segments_clean = []
    for content in contents:
        line_clean = []
        for word in content:
            if word in stopwords:
                continue
            line_clean.append(word)
        segments_clean.append(line_clean)
    return segments_clean


# 调用去除停用词函数
contents = cp_fc_results.content.values.tolist()  # DataFrame格式转为list格式
stopwords = stopwords.stopword.values.tolist()  # 停用词转为list格式
cp_fc_contents_clean_s = drop_stopwords(contents, stopwords)

contents = yzpj_fc_results.content.values.tolist()  # DataFrame格式转为list格式
yzpj_fc_contents_clean_s = drop_stopwords(contents, stopwords)

cp_train = pd.DataFrame({'segments_clean':cp_fc_contents_clean_s, 'label':1})
yzpj_train = pd.DataFrame({'segments_clean':yzpj_fc_contents_clean_s, 'label':0})
pj_train = pd.concat([cp_train,yzpj_train])
pj_train.to_excel('pj_train.xlsx',index=False)





from sklearn.model_selection import train_test_split
# 数据切分 :训练集特征、测试集特征、训练集标签、测试集标签
x_train,x_test,y_train,y_test = \
    train_test_split(pj_train['segments_clean'].values,
        pj_train['label'].values, random_state=0)

words = [] #将所有的词转换为词向量
for line_index in range(len(x_train)):
    words.append(''.join(x_train[line_index]))
print(words)

from sklearn.feature_extraction.text import CountVectorizer

vec = CountVectorizer(max_features=4000, lowercase=False, ngram_range=(1,1))
#lowercase参数的功能:把所有的词是是否需要转换为小写。False。
#max_features:表示只提取前4000个词作为词库。
vec.fit(words)

from sklearn.naive_bayes import MultinomialNB,ComplementNB
#导入朴素贝叶斯分类器
classifier = MultinomialNB(alpha =0.1)
classifier.fit(vec.transform(words),y_train)

train_pr = classifier.predict(vec.transform(words))

from sklearn import metrics

print(metrics.classification_report(y_train, train_pr))#测试集数据进行分析

test_words = []
for line_index in range(len(x_test)):
    test_words.append("".join(x_test[line_index]))

test_pr = classifier.predict(vec.transform(test_words))
print(metrics.classification_report(y_test, test_pr))


s = '这玩意真好,我很喜欢'#检验结果自动判断这句话到底是好评还是差评???
#2、构建成词向量转换的标准格式
str = ''
seg_list = jieba.lcut(s)
stopwards = pd.read_csv('./红楼梦/StopwordsCN.txt', encoding='utf8',engine='python', index_col=False)
for seg in seg_list:
    if seg not in stopwards.stopword:
        str += seg + ' '

# 3、进行词向量转换
str_text = ' '.join(str)
predicted_label = classifier.predict(vec.transform([str_text]))[0]
if predicted_label == 0:
    print("预测为优质评价")
else:
    print("预测为差评")
相关推荐
JJJennie7771 小时前
当AI开始学会欺骗
网络·人工智能
糖果店的幽灵1 小时前
大模型测评DeepEval快速入门-安全与通用指标详解
人工智能·安全·langgraph·大模型测评·deepeval
YFJ_mily2 小时前
【会议征稿】第八届人本计算与数据智能国际会议(HCC 2026)| 广州12月召开,EI/Scopus稳定检索,多届收录无忧
机器学习·人机交互·ei会议·数据智能·rdlink研发家·人本计算·广州会议
江畔柳前堤7 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术7 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客7 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术8 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO8 小时前
GEO技术服务选型指南
大数据·人工智能·python
普通攻击往后拉8 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
阿里云大数据AI技术9 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark