用Python实现中文情感分析:新手第一个AI小工具实战
经常有人问我完全没接触过机器学习代码能力也就刚会几个基础语法能不能动手写一个AI小工具我的回答一直是能而且不需要太复杂。今天这篇就带你走一遍完整流程用Python写一个中文情感分析器——你输入一句话它能判断这句话的情绪偏向积极还是消极顺手给出一个0到1之间的量化得分。整个项目跑下来快的话一个小时就能完成。这个选题我特意挑的。情感分析是自然语言处理里最经典、也最容易上手的入门任务不需要你训练大模型更不需要深抠数学公式用现成的工具库加几十行代码就能做出一个看得见效果的东西。对新手来说最重要的一点是看得见、摸得着的成就感而不是被一堆抽象概念劝退。所以这篇文章不会跟你聊什么神经网络、注意力机制我会用一个更温和的路径先用笨办法写一个规则版搞清楚AI到底在分析什么再换用真实可用的AI库写一个真正的小工具。无论你是刚学完Python基础、想找点项目练手还是非科班出身、单纯想体验一下AI开发到底难不难这篇文章都适合你。过程中我会把每一步怎么操作、每个参数为什么这么设、哪些地方容易踩坑都交代清楚你照着做就行。1. 项目概述这个AI小工具到底能做什么1.1 核心需求解析标题里的关键词拆开看新手Python第一个AI小工具。这三个词放在一起背后对应的真实需求其实是零基础的人能不能用最小的成本亲手做一次AI应用开发从而建立对AI这个词最直观的体感。很多人以为AI开发是高不可攀的要么得有大算力要么得读好几年的算法实际上完全不是。以今天要做的情感分析为例它的本质就是文本分类给出一段文本让程序判断它的情感极性。你不需要理解神经元是怎么工作的只需要了解一条输入数据如何被程序处理成结果。这个认知比代码本身更重要——它帮你拔掉AI恐惧症。我做这个小工具时给它的目标定位是这样的输入任意一句中文短文本输出三个信息——情感倾向积极/消极/中性、情感得分0到1的小数、置信程度的简单提示。这三样东西组合在一起就是一个标准的情感分析产品雏形。你后面如果想让这个工具分析微博、分析商品评论、分析留言板只需要把输入源换掉就行核心逻辑完全复用。1.2 为什么选择Python做AI入门Python在AI领域的地位不用我多说十几年了它一直是最主流的选择。但我不想像教科书一样罗列生态丰富社区庞大这种空话聊点实际的。Python的语法天然接近人类自然语言你写if score 0.5:如果得分大于0.5几乎是个英语句子不需要查语法手册。这个特性对新手极其友好因为新手最大的障碍不是写不出逻辑而是被语言本身的语法细节绊住。C里一个指针引用就能劝退一堆人Python里你可以暂时不用管底层那些事先把功能跑通。然后是生态。这里有个客观事实AI领域最成熟的工具库几乎都有Python版本。做文本处理有现成的分词库、情感分析库做数据处理有现成的表格库做可视化有现成的绘图库。你想要的功能大概率已经有人写好并开源了你要做的是学会调用。这就像做菜不需要自己种菜去超市买处理好的食材关键是把搭配和火候掌握好。还有调试的便利性。Python是解释型语言写一段跑一段改了立刻生效。新手最怕的是写几百行代码然后一次性运行报错都不知道从哪查起。Python的做法是你在命令行里一条一条敲命令回车立刻出结果整个排查过程的反馈非常快。1.3 明确项目边界必须说明白这个项目的AI含量没那么玄它用的是传统机器学习里的监督分类模型。也就是说模型在训练阶段看过大量标注好的文本哪些是积极、哪些是消极它学会了从词语特征推测情感预测时不需要联网、不需要调外部API本地跑就行。这个边界很重要。它不是ChatGPT那种大语言模型做不到理解复杂的反讽和隐喻它的定位是一个能用、够用、看得懂的最小可行产品。但反过来说正因为够简单你才能从第一行代码到最后一行都完全搞懂它的逻辑。很多学过复杂深度学习的人回过头来反而容易在这个简单模型上建立更扎实的直觉。给新手的建议是不要一上来就追大模型先理解一两个小模型的原理后面再进阶会顺很多。2. 环境准备把开发工具箱备齐2.1 Python安装与版本选择如果你电脑上还没装Python第一步是去官网下载安装包。版本上我的建议是Python 3.8到3.11之间的任意版本不要追求最新的大版本有些第三方库的更新速度未必跟得上遇到兼容问题会白白消耗你的热情。安装时有两点特别提醒。Windows用户务必勾选安装界面里的Add Python to PATH选项这个勾不选之后在命令行里输入python会提示不是内部或外部命令。Mac用户装完一般自带系统Python但我的建议是装一个官网的新版本和系统自带版本错开使用避免搞乱环境。装完之后验证一下。打开命令行Windows是cmd或PowerShellMac是终端输入python --version如果输出类似Python 3.10.x这样的版本号说明安装成功。这一步没通过的话后面所有步骤都没法进行所以卡住的话趁早解决别一路带病往下走。2.2 选择写代码的编辑器开发环境的选择上我先说结论新手别折腾太多从VS Code或者PyCharm里选一个就行。VS Code轻量、插件生态好、启动快适合喜欢简洁的人PyCharm功能更全、项目结构更清晰但偏重第一次启动会有点慢。两者的学习成本差不多你挑一个顺眼的就足够了。我个人其实更建议新手从简出发甚至直接在命令行里用Python自带的IDLE也能跑通今天这个项目。编辑器只是工具不是主角别在选编辑器这件事上花费超过十分钟。等以后写大项目了你会发现自己在编辑器选择上的偏好自然就形成了。另外提醒一点写代码的时候记得建一个专门的文件夹比如ai-tool-demo把代码文件都放进里面保持整洁。新手最常见的没注意到的点就是文件散落得到处都是过两天自己都找不到代码在哪。2.3 安装依赖库这个项目需要用到两个核心库snownlp情感分析和jieba中文分词。在命令行里执行pip install snownlp jiebapip是Python自带的包管理工具上面这条命令会自动下载并安装这两个库及其依赖。如果你的网络环境导致下载很慢可以搜索一下pip 国内镜像来配置镜像源速度会快很多——镜像站就是一个统一存放开源软件包的服务器选离你近的访问更快。换源的方法是加-i参数指定镜像地址不过这属于锦上添花下载慢时再处理就行。这里我想解释一个概念虚拟环境。简单说虚拟环境是给你的每个项目单独隔出来的一套Python运行环境项目A装的库不会污染项目B。今天这个小项目只有两个依赖直接用全局环境问题不大但如果你以后同时做多个项目强烈建议学一下虚拟环境的用法。命令也不复杂python -m venv venv会在当前目录生成一个venv文件夹然后激活它Windows是venv\Scripts\activateMac/Linux是source venv/bin/activate激活之后你再pip安装的库都会装进这个独立环境里。这是很多新手到中阶都会遇到的坑提前打个预防针。2.4 快速验证安装结果依赖装完先做一次快速验证别直接写完整代码然后抓瞎。在命令行里执行python -c from snownlp import SnowNLP; print(SnowNLP(测试).sentiments)如果输出一个0到1之间的小数比如0.5开头的数字说明库安装成功可以继续。如果报ModuleNotFoundError说明pip install没成功重新装一次注意看命令行里的报错信息通常它会提示是网络超时还是版本冲突。3. 第一个Demo用笨办法理解AI的原理3.1 情感分析到底在分析什么在直接上现成库之前我建议先动手写一个笨办法版本。为什么因为你得先知道AI在解决什么问题才能理解它给出的答案。很多人直接调库跑通了却完全不懂原理出问题了就不知道从哪排查。情感分析最朴素的理解就是给词语投票。人类判断一句话是积极还是消极很大程度靠的是敏感词真好是积极的很糟糕是消极的一般般是中性的。计算机最早的情感分析就是这么做的预先准备一个积极词表和一个消极词表然后扫描文本统计它命中了多少个积极词、多少个消极词谁多就判给谁。这个方法简单到你觉得它是AI吗但从历史坐标看它的确是最早的商业化情感分析方案之一而且在没有深度学习的年代它撑起了大量舆情产品。理解一遍它的思想和局限你再看后面那个机器学习版本会有完全不同的感知。3.2 基于词典的简易版代码下面就是投票法的Python实现。虽然简单但它是完完整整能运行的程序。# 规则版情感分析基于情感词典的投票法 # 1. 准备两本词典积极词和消极词 positive_words [好, 棒, 爱, 喜欢, 开心, 赞, 不错, 厉害] negative_words [差, 坏, 烦, 讨厌, 伤心, 失望, 坑, 垃圾] def simple_sentiment(text): pos_count 0 neg_count 0 # 2. 统计命中了多少个积极词 for word in positive_words: if word in text: pos_count 1 # 3. 统计命中了多少个消极词 for word in negative_words: if word in text: neg_count 1 # 4. 谁票多就倾向谁 if pos_count neg_count: return 积极 elif neg_count pos_count: return 消极 else: return 中性 # 测试 test_texts [ 这部电影真不错我很喜欢, 这个产品质量太差了非常失望。, 今天天气还行不算特别好。, 我不是不喜欢这个设计只是觉得颜色一般。, ] for t in test_texts: print(f输入{t}) print(f判断{simple_sentiment(t)}) print(- * 30)逻辑不复杂定义两个词表遍历整个文本去查有没有这些词有就加一票最后看谁的票多。运行一下你会发现前三条基本判断正确第四条就出问题了——模型会被不喜欢和喜欢同时命中造成票数抵消而且完全没意识到不是不喜欢是一种双重否定真正的意思是肯定。这正是规则法的致命伤它只做字面匹配不理解否定、程度、语境。3.3 顺手优化一下引入分词我们可以用jieba把句子先切成词再对词表做统计。为什么这样更好因为直接用好 in text判断时好可能会命中好吃好用等非情感场景而分词后句子变成[我, 不是, 不, 喜欢, 这个, 设计]你再判断喜欢是不是独立的情绪词会更接近人读句子的方式。import jieba def simple_sentiment_with_cut(text): words jieba.lcut(text) pos_count 0 neg_count 0 for word in words: if word in positive_words: pos_count 1 if word in negative_words: neg_count 1 if pos_count neg_count: return 积极 elif neg_count pos_count: return 消极 return 中性 print(simple_sentiment_with_cut(这家店的奶茶特别好喝服务也很热情。))加了分词之后至少不是不喜欢这类句子多了个处理的可能。但别高兴太早分词解决不了反讽真是太好了如果在刚弄丢手机的语境里人知道意思机器不知道。这个阶段你只需要记住词典法能快速搞定简单句子但语法多绕几个弯它就跟不上了。这就是为什么我们要走向机器学习。4. 进阶Demo用SnowNLP写出真正的小工具4.1 为什么选SnowNLP作为主力库现在正式用AI库来解决问题。市面上的情感分析库不少但我给新手首推SnowNLP理由有四个。它专为中文设计。很多英文NLP库做中文要额外接一个分词器链路很长SnowNLP开箱即用SnowNLP(text).sentiments一行代码就能拿到情感得分。它的底层是训练好的模型。SnowNLP内部用的是朴素贝叶斯分类器已经在大量标注语料上训练过。这意味着它不是你写规则而是它有经验。你不需要自己收集训练数据拿来就能感受机器学习版的效果。它的体积和依赖都很轻。不需要下载好几个G的模型文件不用配置GPU普通电脑跑起来毫无压力。对新手的机器非常友好。它的源码可读性高。如果你后面想深入看它内部怎么实现的源码不长有Python基础的能大致读懂。4.2 三行代码感受AI先做一个最小体验。在命令行或Python文件里输入from snownlp import SnowNLP s SnowNLP(这家奶茶真的太好喝了我以后天天来) print(s.sentiments)输出是类似0.893这样的小数。SnowNLP的情感得分定义在0到1之间越接近1表示越积极越接近0表示越消极0.5附近就是中性或情绪不明显。注意这里的值本质上是模型判给积极的概率不是严格意义上的置信度但新手可以把它理解为模型有多倾向于认为这句话是积极的。换个文本再试试s2 SnowNLP(拿到手机发现屏幕碎了客服态度还很差。) print(s2.sentiments)这次输出可能只有0.12左右符合我们的直观感受。短短几行代码不写规则、不查词典AI自己就从文本里读出了情绪这就是模型和规则法的最大区别。4.3 完整版AI小工具实现接下来我们把功能做完整写成一个可以反复使用的交互式小工具。它支持循环输入每次判断完继续等你的下一句话输入q退出。# ai_sentiment_tool.py # 基于 SnowNLP 的中文情感分析小工具 from snownlp import SnowNLP def analyze_sentiment(text): 输入一段文本返回情感倾向和情感得分 text text.strip() if not text: return 空文本, 0.0 score SnowNLP(text).sentiments # 划定判断阈值0.6以上积极0.4以下消极中间中性 if score 0.6: label 积极 elif score 0.4: label 消极 else: label 中性 return label, score def main(): print(欢迎使用中文情感分析小工具 v1.0) print(输入一句话我会告诉你它更偏向哪种情绪。) print(- * 40) while True: text input(请输入文本输入 q 退出) if text.lower() q: print(已退出感谢使用) break label, score analyze_sentiment(text) print(f情感倾向{label}) print(f情感得分{score:.2f}0~1越接近1越积极) print(- * 40) if __name__ __main__: main()关于阈值的设定我解释一下为什么是0.6和0.4而不是干脆用0.5一刀切。SnowNLP的预测值分布并不是均匀的很多中性语句的得分会在0.45到0.55之间来回浮动。用0.5做硬边界会把这些中性表达误判成积极或消极。留出缓冲区是实际生产中最常用的做法——0.4到0.6之间定义为灰色地带宁可判为中性和你说拿不准也别硬给一个错误答案。你可以根据自己的场景调整这两个数比如只想分积极和消极那就用0.5作为分界线。4.4 完整运行实录我把上面这个工具实际跑了一遍完整输出如下欢迎使用中文情感分析小工具 v1.0 输入一句话我会告诉你它更偏向哪种情绪。 ---------------------------------------- 请输入文本输入 q 退出这家餐厅环境不错菜也很好吃 情感倾向积极 情感得分0.880~1越接近1越积极 ---------------------------------------- 请输入文本输入 q 退出客服一直不回复等了一个小时都没人处理 情感倾向消极 情感得分0.160~1越接近1越积极 ---------------------------------------- 请输入文本输入 q 退出这部电影还行吧没有想象中好看 情感倾向中性 情感得分0.530~1越接近1越积极 ---------------------------------------- 请输入文本输入 q 退出q 已退出感谢使用三条测试一条积极、一条消极、一条中性整体判断符合人类直觉。你可能会好奇为什么第三条还行吧没有想象中好看被判成了中性——因为这句话里既没有特别强烈的正面词也没有特别强烈的负面词还行吧更接近于勉强可以接受的态度中性其实是一个合理的结果。到这一步你的第一个AI小工具已经跑通了。接下来我建议你往里面输入各种奇奇怪怪的句子比如哈哈哈这是什么神仙操作我裂开了绝绝子太心机了吧观察一下模型的边界。这个过程很有价值你会发现模型的判断跟你的直觉时不时会打架然后就可以带着这些疑问看下一节的原理拆解。5. 核心原理拆解句子里藏着的信号5.1 一条文本的AI处理流水线你可能已经注意到SnowNLP拿到一句中文文本不只是简单查一下词典。它内部其实有一条完整的处理流水线大致是四步文本清洗、分词、特征提取、模型预测。第一步文本清洗是去掉一些无意义的字符比如多余的标点、空格、特殊符号。这跟你收拾房间一个道理先把垃圾清出去再找有用的东西。第二步分词中文和英文差别很大。英文每个单词天然有空格分隔中文没有所以必须先切割。jieba在这里起的就是这个作用。切完的句子从这家餐厅环境不错变成[这家, 餐厅, 环境, 不错]。第三步特征提取机器没法直接理解不错两个字它需要把文本转成数字。最简单有效的做法是词袋模型统计每句话里出现了哪些词、每个词出现了几次形成一个数字向量。SnowNLP在这个基础上还可能做一些权重处理让更重要的词有更高的数字。第四步模型预测把这个向量送进训练好的分类模型得到两个概率这句话属于积极类的概率、属于消极类的概率。模型选择数值更大的那个结果作为最终预测。整个过程其实和你作为人类判断情感是类似的你先注意到句子里的关键词然后看它们的语气和组合最后下结论。只是机器用的是统计规律你用的人类直觉。5.2 朴素贝叶斯到底干了什么SnowNLP情感分析背后的分类器是朴素贝叶斯。新手听到贝叶斯就头皮发麻但其实它的生活化理解很简单把一句话拆成词然后分别统计在积极句子中这些词出现的可能性和在消极句子中这些词出现的可能性哪个更大就判为哪类。举个例子。假设训练语料里有一万条积极句子、一万条消极句子。模型事先统计出好吃出现在积极句子里的次数是90次出现在消极句子里的次数是10次难吃则反过来。现在新来了一句话这个蛋糕好吃模型就查表算出好吃在积极条件下的比例更高于是输出0.8的积极得分。朴素这个词的含义很直白它假设每个词对情感的影响是相互独立的不考虑词和词之间的复杂关系。这当然是简化但结果表明这个简化在情感分析任务上特别能打——训练快、预测快、小数据集上效果还不差。5.3 为什么AI有时候会判断不准理解了原理就能理解模型判断失准的常见原因。第一类是词汇外的表达。模型的核心是统计训练语料里出现过的词如果你的句子大量使用新词、网络流行语、行业黑话模型没见过得分就会跑偏。比如这个操作真的秀里的秀在老的训练语料里可能更多是秀恩爱这种语境模型就会困惑。第二类是语法结构复杂。否定句、双重否定、反讽是传统分类模型的经典软肋。因为模型主要基于词语出现频率做判断没有深入分析语法树。这部电影好得让我想打人这句话里好和打人同时出现积极词被统计到了但人的真实态度是反讽。第三类是领域偏移。SnowNLP的默认训练语料偏电商评论它可能更擅长判断质量物流客服相关的情感换到体育赛事、娱乐圈八卦领域时准确率会有波动。领域差异是模型应用中的常见问题——迁移到新领域时准确率会下降这时候需要做领域微调或自制词典补充。这些局限不是bug是所有统计模型的共性。理解它们有助于你合理评估AI输出而不是盲目信任。6. 实战扩展把工具变成真正能用的产品6.1 批量分析评论数据交互式小工具适合体验但实际工作中我们遇到更多的场景是批量处理你有一份Excel导出的话单里面有几千条用户评论想快速知道大家的情绪分布。这时候需要一个能读文件、写文件的版本。import csv from snownlp import SnowNLP def analyze_batch(input_file, output_file): results [] with open(input_file, r, encodingutf-8) as f: reader csv.reader(f) for row in reader: if not row: continue text row[0].strip() if not text: continue score SnowNLP(text).sentiments if score 0.6: label 积极 elif score 0.4: label 消极 else: label 中性 results.append([text, round(score, 4), label]) with open(output_file, w, encodingutf-8-sig, newline) as f: writer csv.writer(f) writer.writerow([文本, 情感得分, 情感倾向]) writer.writerows(results) print(f处理完成共分析 {len(results)} 条文本结果已保存到 {output_file}) if __name__ __main__: analyze_batch(input_comments.csv, output_results.csv)两个编码细节需要特别注意读取时用encodingutf-8因为大多数导出文件是这个编码写入时用encodingutf-8-sig因为Excel直接打开UTF-8编码的CSV会乱码加上BOM头也就是utf-8-sig能避免这个明明很常见却让人摸不着头脑的问题。6.2 写成命令行工具把脚本升级成命令行工具很实用。比如在终端里直接传入一句话就能得到结果方便接到其他脚本里。import sys from snownlp import SnowNLP if len(sys.argv) 2: print(用法python cli_tool.py 你想分析的文本) sys.exit(1) text sys.argv[1] score SnowNLP(text).sentiments label 积极 if score 0.6 else (消极 if score 0.4 else 中性) print(f文本{text}) print(f情感{label} | 得分{score:.2f})在命令行执行python cli_tool.py 今天手气爆棚抽中了大奖会直接输出判断结果。这个小工具可以和你别的脚本联动比如监控网页留言时定时调用、批量跑完自动发送报告玩法很多。6.3 加一个简单的图形界面如果你不想每次都在命令行里输入也可以加一个极简的窗口界面。用Python自带的tkinter就能实现不用额外安装任何包。import tkinter as tk from snownlp import SnowNLP def analyze(): text text_box.get(1.0, end).strip() if not text: result_label.config(text请输入内容, fg#888) return score SnowNLP(text).sentiments label 积极 if score 0.6 else (消极 if score 0.4 else 中性) result_label.config(textf情感倾向{label}\n情感得分{score:.2f}, fg#333) root tk.Tk() root.title(情感分析小工具) root.geometry(420x260) tk.Label(root, text请输入一段中文文本).pack(pady8) text_box tk.Text(root, height5, width45) text_box.pack(pady5) btn tk.Button(root, text开始分析, commandanalyze) btn.pack(pady8) result_label tk.Label(root, text, font(微软雅黑, 12)) result_label.pack(pady5) root.mainloop()界面功能很简单一个输入框、一个按钮、一个结果显示区。但对新手来说把一个算法工具封装成图形界面那种我做了一个软件的成就感真的不一样。它会让你意识到AI工具不是只能活在代码里。6.4 精度提升的进阶方向这个工具够用但如果你想让它更准有三个可以尝试的升级方向。第一个方向是优化判定规则。刚才的阈值设定是全局统一的但有些场景里人们对文本的措辞本来就更重可以按业务场景调整阈值。第二个方向是数据增强。你可以收集一批自己业务场景下的典型文本用SnowNLP预判一遍把判断错的那部分找出来——这些错判样本就是提升模型的最好素材。要么调阈值要么在结果基础上做二次规则修正。第三个方向是换更强大的工具。等你有了一定基础可以去了解BERT这类预训练模型在更大规模和更强算力的条件下语言理解能力会有一个数量级提升。但到那一步之前先把这个小工具玩透你的收获反而更多。7. 常见问题与避坑指南7.1 新手高频报错速查表我把带新手做过这类项目时收集到的高频报错整理成了表格你如果遇到问题可以直接对照。报错信息原因解法ModuleNotFoundError: No module named snownlp库没安装成功执行pip install snownlp重试前确认pip安装过程无红色报错python 不是内部或外部命令安装时没勾选 Add to PATH重新运行Python安装包勾选该选项UnicodeDecodeError: utf-8 codec cant decode...读取文件时编码不对打开文件时显式指定encodingutf-8或按原文件编码指定输出结果全是0.5左右输入文本太短没有有效情感词输入至少包含一两个带有明确情绪色彩的词也可能是文本本身中性中文乱码终端编码问题Windows终端可以执行chcp 65001切换到UTF-8编码7.2 新手最常踩的三个坑第一个坑是在错误的工作目录运行程序。你明明把代码文件存在了D:\AI-Demo\却在命令行的一个完全不相干的路径下执行python ai_sentiment_tool.py结果提示找不到文件。解决办法是在命令行中先用cd切换到你保存文件的目录再运行。这是所有命令行操作里最基础但也最容易被忽略的一步。第二个坑是依赖装错环境。如果你装了Anaconda又在命令行里用系统Python执行很可能出现pip安装成功了但还是报ModuleNotFoundError的情况。这就是因为pip和python指向的不是同一个环境。遇到这个问题先执行where pythonWindows或which pythonMac/Linux看看当前使用的是哪个环境再在那个环境里执行pip安装。第三个坑是忽略阈值调整。很多人刚跑出来看到0.5附近的结果就急着认为模型不行。其实0.5上下本来就是中性地带中性表达在0.4到0.6之间浮动是正常现象。动手调一下上面的分类阈值比如把积极线提到0.65、消极线降到0.35再看输出分布你会对阈值这个模型外的参数有更深的理解。7.3 数据伦理与使用边界最后聊点工具之外但很重要的事。情感分析工具处理的是文本倾向不是事实真相。模型说一条评论情感消极只是说它的用词模式在统计上更接近消极样本不意味着评论区反映的问题一定属实。如果你的工具输出要被用作业务决策依据务必在流程中加入人工复核环节。另外批量分析别人发布的文本前要考虑数据的来源和用途是否合规。技术本身没有立场但使用者要有边界意识。对于普通个人学习和研究分析自己的数据或公开的通用语料完全没有问题但如果涉及用户隐私内容就要严格遵循相关规范该脱敏脱敏该获得授权获得授权。如果你照着这篇文章跑通了第一个AI小工具一个很自然的下一步是试着调参数改改阈值、加一个自己的小词典、换一批你的真实文本去测。你可能会发现它在某个领域特别灵、在某个语境下特别笨这种边界感只有亲手测试才能获得也是你从会调库走向会评估模型的关键一步。真到了那一步你就可以开始琢磨更复杂的模型和数据了。