拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Python实现微博评论情感分析:朴素贝叶斯实战全流程

简介自然语言处理是人工智能领域的重要方向其中文本分类技术将非结构化的文本数据转化为可量化标签是舆情分析、评论挖掘等应用的基础。贝叶斯分类器作为一种生成式概率模型通过计算词频与类别先验概率实现情感判别具有训练速度快、可解释性强、小样本下表现稳定的特点。在社交媒体短文本场景中情感分析帮助研究者和企业快速掌握公众情绪动态。本文项目以疫情微博评论为语料利用Python构建完整的数据清洗、中文分词、TF-IDF特征工程与朴素贝叶斯模型训练流程最终实现情感分布的可视化与洞察。这一方案尤其适合初学者理解从数据到模型的完整工程链路也为后续扩展到其他平台提供了参考。 从“疫情微博评论”这个场景切入把一条条带着真实情绪的短文本变成一个可以量化、可视化的情感分布结果这件事本身就是典型的数据分析落地场景。这个项目标题里最核心的三个关键词——Python、贝叶斯算法、情感分析基本已经构成了一个完整的技术闭环Python负责全流程实现贝叶斯算法负责分类决策情感分析则是最终要交付的业务价值。很多初学者看到这类标题容易犯怵觉得又是爬虫又是机器学习门槛很高。但实际上用朴素贝叶斯做中文短文本情感分类是自然语言处理里最适合入门、又最能跑通全流程的项目之一它对硬件没要求对数学基础要求也不高关键是把数据处理和特征工程这两块地基打牢。我最初做这个项目的时候最大的感受是情感分析的难点从来不在模型本身而在于“把中文评论变成模型能理解的东西”这个过程。这篇文章会完整拆解我当时的实现方案从环境准备、数据采集清洗到贝叶斯原理、特征工程、模型训练评估再到踩坑记录尽量做到每一步都能直接照着操作。1. 项目整体设计与思路拆解1.1 为什么选贝叶斯而不是深度学习先回答一个很多人都会问的问题现在深度学习做文本分类这么成熟BERT、TextCNN随便一个效果都比朴素贝叶斯好为什么还要用贝叶斯算法做情感分析我的回答是这个项目的价值不在刷精度而在“跑通全流程”和“理解分类本质”。朴素贝叶斯有四个非常实际的优势让它在微博短文本情感分析这个场景里依然有不可替代的位置。第一训练速度快。微博评论动辄几万条但每条都很短平均也就几十个字。朴素贝叶斯是典型的生成式模型训练过程只需要统计词频和类别频率计算量非常小。我当时用三万条评论训练普通笔记本上几秒钟就完成了而如果用BERT单是微调一个预训练模型就要几十分钟起步还没算上显存开销。第二小样本表现稳定。疫情相关的微博评论人工标注成本很高能用的优质标注数据往往只有几千条。深度学习模型在这种量级下非常容易过拟合而朴素贝叶斯因为模型结构简单、参数少反而不容易学过头泛化能力在低数据场景下反而更可靠。第三可解释性强。贝叶斯分类器本质上是在计算“看到这些词属于正面还是负面的概率”每个词对最终判断的贡献是可以直接看出来的。比如“加油”“致敬”“辛苦”这些词把预测推向正面“缺”“乱”“感染”把预测推向负面这种可解释性在业务汇报时特别有说服力也方便后续做词级分析。第四对短文本和噪声的容错度高。微博评论里充满了口语化表达、表情符号、错别字、网络新词。特征工程阶段只要处理得当朴素贝叶斯对这类噪声的容忍度是很高的不像深度学习模型那样对输入分布的细微变化极其敏感。当然贝叶斯也有它的短板比如特征独立性假设在真实语言里很难满足“我爱的东西”跟“东西我爱”这种词序变化它就看不出来。但对疫情微博评论这种以情绪表达为主的短文本来说词序本身传递的信息量远不如情感词的出现频率重要所以这个短板在实际场景里影响有限。1.2 整体流程框架从零开始做这个项目我建议把流程拆成六个阶段每个阶段都有明确的输入和输出这样不会在中间陷入混乱。数据采集爬取微博评论数据或者使用开源数据集输出原始评论文本。数据清洗去重、去URL、去用户、处理表情符号、处理缺失值输出干净的评论列表。中文分词与文本预处理使用jieba分词加载自定义词典过滤停用词输出词序列。特征工程将分词结果转换为TF-IDF向量或者词频向量划分训练集和测试集。模型训练与评估训练朴素贝叶斯分类器输出分类报告、混淆矩阵、ROC曲线等评估结果。结果可视化与解读统计情感分布、绘制词云、分析高频情感词形成结论。这六个阶段里如果按照时间投入来算数据清洗和特征工程至少要占七成。很多人上来就调模型结果数据一团糟再好的算法也白搭。后面我会逐个阶段展开。2. 贝叶斯算法原理与选型内幕2.1 用一条真实评论讲懂贝叶斯公式朴素贝叶斯的核心公式长这样P(类别|文本) P(类别) × P(文本|类别) / P(文本看着有点吓人但用疫情微博评论举个例子就很好懂了。假设现在有一条评论是“医护人员辛苦了向你们致敬”。我们要判断它是正面还是负面。用贝叶斯的视角来看P(正面|这句话) 表示“在已知这句话内容的前提下它属于正面评论的概率”。这是我们最终要算的东西。P(正面) 表示“在所有评论中正面评论所占的比例”这个可以直接从训练集里统计出来。假如有三万条评论其中一万八是正面那P(正面)0.6这个叫先验概率。P(这句话|正面) 表示“如果已知一条评论是正面的那么它恰好长成这样的概率”。这个不太好直接算因为“说这句话的方式”太多了。但朴素贝叶斯做了一个很“朴素”的假设把一句话拆成独立的词然后认为这些词是互相独立出现的。这样一来P(这句话|正面) 约等于 P(“医护人员”|正面) × P(“辛苦”|正面) × P(“致敬”|正面) 的乘积。每个词在正面评论里出现的频率是可以通过词频统计算出来的。分母P(这句话) 是一个固定值因为对于同一条评论分母都一样比较大小的时候可以直接忽略。所以最终我们做决策的逻辑是分别计算P(正面|这句话)和P(负面|这句话)哪个大就判为哪个类别。这就是贝叶斯分类器的全部原理没有高深数学本质就是一个频率统计加上连乘运算。2.2 拉普拉斯平滑防止概率出现零上面的流程有一个很明显的坑如果某个词在训练集的负面评论里从来没有出现过比如“致敬”这个词在负面语料里一次都没出现那么P(“致敬”|负面)就会等于0。连乘的时候一个0会把整个概率变成0直接导致P(负面|这句话)0。这在数学上叫“零概率问题”。解决办法也很简单就是给每个词的计数都加上一个很小的数一般是1。这个操作叫拉普拉斯平滑在sklearn的MultinomialNB里对应alpha参数。平滑后的概率公式变成P(词|类别) (该词在该类别评论中出现的次数 alpha) / (该类别评论总词数 alpha × 总词数)alpha1就是最经典的加一平滑。alpha越大先验对概率的影响越小模型越保守alpha越小模型越依赖训练数据中的具体词频越容易过拟合。在实际项目中我通常会在[0.1, 0.5, 1.0, 2.0]几个值之间用交叉验证选一下一般0.5到1.0之间效果都不错。2.3 多项式朴素贝叶斯与伯努利朴素贝叶斯的选择sklearn里有两个适合文本分类的朴素贝叶斯变体MultinomialNB多项式和BernoulliNB伯努利。它们的区别在于特征向量的取值方式。MultinomialNB特征取值是词频或TF-IDF权重可以理解成“这个词在这条评论里出现了几次、权重是多少”适合短文本的完整表达。BernoulliNB特征取值是0或1只关心“这个词出现没出现”不关心出现几次。对于微博评论这种超短文本MultinomialNB通常效果更好因为“出现多次”往往意味着更强的情绪信号比如“太难了太难了太难了”和“太难了”传递的负面强度是不一样的。我实测下来MultinomialNB比BernoulliNB在F1值上高大概3到5个百分点所以默认选MultinomialNB。3. 数据处理与特征工程实操3.1 数据采集与合规注意做情感分析首先要解决数据从哪来的问题。项目标题写的是“疫情微博评论”这个可以有两条路。第一条路自己采集。技术方案一般是Python requests模拟登录微博、解析JSON接口或者用Selenium做浏览器自动化。微博的反爬机制比较严格需要处理登录Cookie、请求频率限制、验证码等问题。我建议的采集中间频率控制在每秒钟不超过1次请求每次最多拉取两到三页采一会儿歇一会儿避免给服务器造成太大压力。第二种方式是使用开源数据集。GitHub上有很多整理好的微博情感分析数据集比如“微博情感语料库”这类资源包含数百万条已经标注好的评论数据。如果是做学习项目直接用现成数据会更省时间把精力集中在算法和流程上。这里必须强调一下合规问题微博的用户协议规定未经授权批量抓取用户公开发布的内容并用于商业用途是违反平台规则的。个人学习使用要注意三点第一仅用于学术研究和技术学习第二不要公开传播采集到的原始数据尤其是不要包含用户ID、头像、链接等个人身份信息第三如果做出来的系统要对外开放一定要通过官方API获取授权数据。我在实际项目中是先把真实评论导出来做原型验证后来换成官方数据接口做正式版。3.2 数据清洗微博评论的特殊坑微博评论和新闻、电商评论比起来噪声类型特别多我列一下必须处理的几类。第一类是URL链接。评论里经常带跳转链接这些对情感判断没有任何帮助要用正则表达式去掉。模式一般形如https?://\S。第二类是用户和话题标签。用户是微博特有的话题标签用#号包围。这些内容偶尔携带情感信息比如#武汉加油#但总体上是噪声为主。我是先把话题标签单独提取出来保留再清洗原文里的和话题标签。这样既不影响情感判断又保留了额外的特征线索。第三类是表情符号。微博的表情有两种一种是中括号形式的文字表情如[good]、[泪]另一种是Unicode emoji。文字表情需要准备一个映射词典把它们转化成对应的中文情感词比如[good]转成“好”[泪]转成“哭”emoji一般直接删除或者用emoji库统一转成文字。实测下来文字表情对情感判断的帮助很大尤其是微博特有的中括号表情一个[good]几乎等于一个正面词。第四类是重复和相似文本。微博评论里“复制粘贴队形”“刷屏”现象严重如果不做去重一条热门评论可能重复出现几百次会严重影响训练数据的分布。我当时做的是两步去重先按字符串完全相同的规则去重再用SimHash做近似去重把相似度阈值设为0.85。这一步很重要能有效避免模型偏向于那些“刷屏”的少数评论。第五类是缺失值和异常文本。空评论、只有标点的评论、纯表情评论都要删除。长度小于2个字符的评论一般也没有分析价值。3.3 中文分词与自定义词典中文分词是中文情感分析绕不开的一步。Python生态里最成熟的中文分词工具就是jieba支持精确模式、全模式和搜索引擎模式通常用默认的精确模式就够了。但jieba也有一个显著问题它对网络新词和专有名词的识别能力有限。疫情时期涌现了大量新词汇比如“热干面加油”“无症状感染者”“方舱医院”等默认词库里不一定有。解决办法是构建自定义词典在分词前先加载进去。词典格式很简单每行三个字段词语、词频、词性用空格隔开。示例热干面加油 10 nz 无症状感染者 20 n 方舱医院 20 n 逆行者 10 n加载方式是 jieba.load_userdict(dict.txt)。加载后“热干面加油”就不会被拆成“热干面/加油”两个词而是作为一个整体参与后续特征计算这对情感判断是有实际帮助的因为“热干面加油”本身是一个整体性的加油口号。停用词过滤也是必须做的。中文停用词表网上有很多不建议直接用网上的完整版因为有些停用词表会把“不”“没有”这类否定词也当成停用词这在情感分析里是致命的。“不好”和“好”只差一个“不”字情感完全相反如果把“不”过滤掉了模型就分不清了。我用的停用词表是从哈工大停用词表的基础上手动排除了否定词和高频情绪副词再做定制。去掉的常用词包括“的、了、就、都、而、及”这类纯粹语法功能词。3.4 特征向量的选择CountVectorizer还是TfidfVectorizer清洗完数据、分完词下一步就是把文本变成数字向量。sklearn里提供两个最常用的工具CountVectorizer和TfidfVectorizer。CountVectorizer统计的是词频某个词在这条评论里出现几次向量里对应位置的值就是几。TfidfVectorizer统计的是TF-IDF值公式是TF-IDF 词频(TF) × 逆文档频率(IDF)。逆文档频率的计算方式是log(总文档数 / (包含该词的文档数 1)) 1。它的核心思想是一个词如果在很多文档里都出现说明它区分能力不强应该降低权重如果只在少数文档里出现说明它有区分度权重应该提高。对于情感分析我推荐TfidfVectorizer。原因在于微博评论里有一些高频但无情感的通用词比如“今天”“真的”“感觉”虽然停用词过滤能去掉一部分但剩下的还是会在词频模式下干扰模型。而TF-IDF能自动把这些在大量文档中都出现的低信息词压下去提升特征质量。用TfidfVectorizer时有几个参数值得关注我的经验值如下max_features8000限定特征总数。微博语料经分词后可能产生十几万个不同的词但多数是低频噪声。把特征限制在8000左右既能保留核心情感词又能防止维度灾难和过拟合。ngram_range(1, 2)同时考虑单个词和相邻两个词的组合。对微博这种短文本来说双词组合能保留一些重要的短语情感信息比如“不要出来”和“出来”含义差别很大。用bigram可以捕获“不要出来”这种否定结构的部分信息。min_df2一个词至少要在两条不同的评论里出现才保留把只出现一次的“一次性词汇”过滤掉。max_df0.8一个词如果在超过80%的评论里都出现那基本不携带区分信息过滤掉。这几组参数在多数中文短文本情感分析任务中表现都很稳定可以直接作为初始配置再根据验证集结果微调。4. 模型训练、评估与可视化实现4.1 完整代码实现从文本到情感标签到这里核心代码就可以直接写了。下面这段代码是我当时项目的主干每一段后面的注释是我的实际意图。import re import jieba import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, cross_val_score from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import classification_report, confusion_matrix, accuracy_score # 1. 加载数据 # 数据格式csv文件两列comment(评论文本)、label(1表示正面0表示负面) df pd.read_csv(weibo_comments.csv) print(样本总数:, len(df)) print(正面样本数:, (df[label] 1).sum()) print(负面样本数:, (df[label] 0).sum()) # 2. 清洗函数 def clean_text(text): if not isinstance(text, str): return # 去掉URL text re.sub(rhttps?://\S, , text) # 去掉用户 text re.sub(r\S, , text) # 去掉话题标签但保留话题文字 text re.sub(r#(.*?)#, r\1, text) # 去掉HTML标签 text re.sub(r.*?, , text) # 去掉多余空白 text re.sub(r\s, , text).strip() return text # 3. 分词函数 def seg_text(text): words jieba.lcut(text) # 过滤停用词和长度小于1的词 stopwords set() with open(stopwords.txt, r, encodingutf-8) as f: for line in f: stopwords.add(line.strip()) filtered [w for w in words if w not in stopwords and len(w) 1] return .join(filtered) # 4. 数据预处理 df[clean_comment] df[comment].apply(clean_text) df[seg_comment] df[clean_comment].apply(seg_text) # 5. 划分训练集和测试集 # stratifyy 保证训练集和测试集中正负样本比例一致 X_train, X_test, y_train, y_test train_test_split( df[seg_comment], df[label], test_size0.2, random_state42, stratifydf[label] ) # 6. TF-IDF特征向量化 # 必须在训练集上fit再transform测试集防止数据泄露 vectorizer TfidfVectorizer(max_features8000, ngram_range(1, 2), min_df2, max_df0.8) X_train_vec vectorizer.fit_transform(X_train) X_test_vec vectorizer.transform(X_test) print(训练集特征矩阵形状:, X_train_vec.shape) # 7. 训练朴素贝叶斯模型 # alpha0.5进行拉普拉斯平滑防止零概率 model MultinomialNB(alpha0.5) model.fit(X_train_vec, y_train) # 8. 预测与评估 y_pred model.predict(X_test_vec) print(准确率:, accuracy_score(y_test, y_pred)) print(classification_report(y_test, y_pred, target_names[负面, 正面])) print(混淆矩阵:\n, confusion_matrix(y_test, y_pred)) # 9. 交叉验证检查模型稳定性 cv_scores cross_val_score(model, vectorizer.transform(df[seg_comment]), df[label], cv5) print(5折交叉验证平均得分:, cv_scores.mean())这段代码跑下来准确率一般在85%左右F1值能到0.84到0.87之间对疫情微博评论这种噪声很大的语料来说这个表现已经相当可用。4.2 参数选择的计算过程与原因上面代码里很多参数不是随便拍脑袋定的它们的确定过程大致是这样的。首先是test_size0.2。数据集总共有三万条评论20%就是6000条测试集这个规模足够让评估结果稳定。如果每次运行测试集指标波动超过0.01就需要考虑增加测试集比例。然后是stratify参数。微博评论里正面负面比例不一定均衡我用的数据大约60%是正面40%是负面。如果不做分层采样随机划分时可能出现训练集和测试集中正负比例差异很大的情况影响评估结果的代表性。加上stratifyy之后两组数据的类别分布保持一致评估更真实。再就是alpha0.5的确定过程。我用GridSearchCV在[0.1, 0.5, 1, 2, 5]这组值上做了网格搜索结果显示alpha0.5时F1值最高alpha1默认值反而稍有下降。原因可能在于我们的语料里有一些低频但情感强烈的新词alpha太大会把这些词的概率压得过于均匀反而丢失了区分信号。另外max_features8000的确定也是经过对比的。我分别试了3000、5000、8000、12000、20000结果8000之后继续增加特征数训练时间上升但F1值几乎不变说明新增的词大多是没有区分能力的低频词。8000这个值在这个场景下是性价比最高的平衡点。4.3 可视化从模型结果到业务洞察模型训练完成只是第一步情感分析最终要回答的问题是疫情期间的微博网友情绪到底是什么样的为了回答这个问题我做了三张图。第一张是情感分布饼图。统计测试集所有评论的预测情感正面占比多少、负面占比多少。这张图能一眼看出整体舆情基调。我当时的结果是正面评论占比达到62%左右这背后的直观感受是虽然疫情期间大家有很多吐槽和焦虑但“致敬”“加油”“团结”这类声音依然占了主流。第二张是高频情感词条形图。把模型预测为正面和负面的评论分别取出来分词后做词频统计各自取Top15情感词画对比图。正面的高频词通常是“加油”“致敬”“辛苦”“安全”“温暖”负面的高频词通常是“感染”“隔离”“缺”“抢”“乱”。这张图的价值在于它能给出一个“情绪画像”比单一的情感比例更具体。第三张是词云图。用wordcloud库对全部评论生成一张词云字越大代表词频越高。“加油”“疫情”“武汉”“一线”“健康”这些高频词会非常直观地呈现出来。这三张图做完整个项目的交付物就完整了模型训练代码、评估报告、可视化图表、结论解读。5. 常见问题与排查技巧实录5.1 准确率虚高的陷阱我在做这个项目的过程中踩过最大的坑就是准确率虚高。第一次跑完模型准确率高达97%当时还挺高兴。后来发现不对仔细检查才发现数据清洗阶段没有做去重有一批“复制粘贴”的评论在测试集里出现了很多次。模型相当于在训练时见过这些文本测试时又遇到了成绩当然好。这在实际应用中没有任何意义因为真实场景下的新评论不会让模型“考前偷看答案”。解决方法是先去重再划分数据集。如果数据量够大更严谨的做法是按用户ID分组保证同一个用户的评论不会同时出现在训练集和测试集里因为这个用户的表达习惯可能会被模型“记住”造成性能虚高。5.2 jieba误分词对情感判断的影响“没核酸结果不让上飞机”这种句子如果分词分成“没/核酸/结果/不让/上/飞机”情感偏负面但如果“核酸结果”被错误切分整体语义就会混乱。更典型的是“给力”这个词jieba有时候会切成“给/力”这本来就是个正面词切成两个单独的字后就会被过滤掉白白丢了情感特征。我的解法是持续维护自定义词典把验证集里预测错误的样本拿出来人工查看如果是分词问题导致误判就把这个词加进词典。反复迭代几轮之后模型的F1值能提升2到3个百分点。还有一个技巧是开启jieba的HMM新词发现功能。默认是开启的它能识别一些不在词库中的新词但对噪声比较敏感。在正式项目里如果数据噪声大可以考虑jieba.enable_hmm_new_word会引入一些奇怪的切分建议关闭后再对比效果。5.3 数据不平衡问题疫情微博评论中正面评论往往多于负面评论。我当时的数据是60%正面、40%负面这还算好的。如果训练语料中负面评论占比只有20%模型大概率会偏保守把多数评论都判为正面因为整体准确率可能仍然很高但负面的召回率会非常低。处理不平衡有三条路。第一条是调整类别权重MultinomialNB没有直接的class_weight参数但可以通过计算不同alpha值或者对样本重采样来处理。第二条是欠采样在训练集里随机删掉一部分多数类的样本让正负比例趋近均衡操作简单但会损失数据。第三条是过采样用SMOTE等算法合成少数类的样本。在文本场景下我实测过SMOTE在Tfidf特征上的效果提升并不明显反而容易引入噪声。最实用的还是欠采样和调整评价指标结合使用即不只看accuracy而是重点关注少数类的precision和recall。另外训练集和测试集的分层采样必须做好保证测试集的正负比例和真实场景一致否则模型的泛化能力评估就没有参考价值。5.4 中文否定词和程度副词的进阶处理朴素贝叶斯的词袋模型有一个天然短板它不看词序。这就导致“这部电影不错”和“这部电影不怎么样”这类句子模型很难处理好。前面提到的ngram_range(1, 2)能部分缓解这个问题因为bigram可以捕获“不怎么样”这种组合。但如果想做得更细致可以做一个简单的情感短语替换扫描分词结果如果某个否定词后面跟着情感词就用“否定_情感词”的形式替代比如“不/好”变成“不好_”这样模型就能学到“不好_”是一个负面特征。更进阶一点的做法是处理程度副词。“非常开心”和“有点开心”的正面程度显然不同。可以把“非常”“特别”“极其”这类程度副词与后面的词组合成新特征比如“非常_开心”。这个操作需要构建一个否定词表和程度副词表也不复杂但对情感强度的区分度提升很大。唯一要注意的是训练集和测试集必须使用同一套转换逻辑否则特征空间就乱了。5.5 标签一致性问题最后一个容易被忽略的问题是训练数据的标签质量。我刚开始是找三个同学一起标注三千条评论结果发现他们之间的标注一致性只有75%左右。这意味着模型学习的目标本身就有噪声再好的算法也无法突破这个上限。解决这个问题的方法是引入标注一致性校验比如用Kappa系数计算标注者之间的吻合程度。如果Kappa值低于0.6说明标注标准不统一需要重新讨论标注规则如果高于0.8说明标注标准一致数据质量可信。在实际项目中拿标注不一致的样本做对比分析往往能发现规则盲区比如“这个操作很硬核”到底是褒是贬不同人的理解就不同。把这些争议样本单独拿出来讨论统一标准对提升模型上限非常有帮助。6. 经验总结与后续扩展建议如果之前没有做过完整的NLP项目这个项目跑通之后建议可以继续在几个方向上扩展。第一个方向是跨平台。微博评论的情感分析方法论几乎可以原样迁移到B站弹幕、知乎回答、小区论坛帖子等场景。只需要改动少量正则规则和停用词表模型本身不用换。我在后续项目中就是这么做的一周之内就能适配一个新的数据源。第二个方向是时间轴分析。给评论加上发布时间按月统计情感倾向的变化趋势就能看出来舆情是逐步升温还是慢慢回落。这个维度对舆情监测特别有价值。实现上也不算复杂把预测结果按日期groupby再画折线图即可。第三个方向是引入更丰富的算法对比。以朴素贝叶斯作为基线分别跑一下逻辑回归、SVM、FastText甚至微调一个BERT模型对比不同算法在同样数据上的性能差异。这个对比实验做下来对算法的理解深度会有一个质的飞跃。我个人的建议是先别急着上BERT把传统机器学习方法吃透知道它们各自的优缺点再去接触深度学习理解起来会顺畅很多。最后再分享一个操作层面的小技巧在项目目录下专门建一个“bad_cases”文件夹每次跑完模型把预测错误但置信度高的样本导出到Excel里定期人工查看。这些错误样本是优化模型最宝贵的素材它们比任何网上的教程都更能让你理解自己的数据和模型到底哪里不对。我在这个项目上持续迭代了三轮每一轮都能从错误样本里发现新的问题——有的是分词问题有的是停用词误伤有的是标注标准不统一。把这些一个个解决掉的成就感比模型最终的精度数字更让人满足。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门