从测试到开发:我在杭州用NLP爬虫搞副业,顺便还清了房贷?
大家好,我是老张(真名就不说了,怕被前同事认出来),坐标杭州未来科技城,一个从小厂测试岗杀出来的“半路出家”Java开发。三年前刚转岗成功时,月薪15K,房租3500,每天在公司和出租屋两点一线之间苟延残喘。去年十月,我和老婆咬牙在临平买了个小两居,月供8200块——那一刻我才知道什么叫“成年人的崩溃只在深夜算完房贷后”。
但今天不是来哭穷的。我想聊聊这两年我怎么靠 自然语言处理(NLP) 这个看似高大上的东西,不仅在主业上站稳脚跟,还顺手搞了个小副业,甚至开始琢磨怎么把技术变现。
起点:测试岗的“代码人生”觉醒
时间倒回2021年夏天,我还在一家做电商SaaS的小公司当功能测试。每天的工作就是点点点、写写用例、怼开发:“你这个按钮点不动啊!”、“用户反馈说搜索结果不准!”
有一次,运营小姐姐跑来找我:“老张,能不能帮我把竞品APP里最近一周的商品评论全扒下来?我们要分析下用户情绪。”
我说:“行啊,给我URL列表。”
她眨眨眼:“……我们只有品牌名。”
我当时内心OS:这不就是让我写个爬虫+情感分析吗?可我连Python都只会print("Hello World")。
那天晚上回家,地铁上刷到一篇《NLP入门:从分词到情感分类》,我突然意识到:测试不只是找Bug,也可以用代码解决问题。那晚我失眠了,脑子里全是“TF-IDF”、“BERT”、“依存句法分析”这些词,像极了当年高考前背政治的样子。
第一步:用SpringBoot搭个“玩具”项目
既然主业是Java,那就先别碰Python了(其实是懒,不想装新环境)。我决定用 SpringBoot 搞个简单的文本分析服务。
目标很朴素:输入一段文字,返回是否包含“好评”或“差评”关键词。
@RestController
public class NlpController {
@PostMapping("/analyze")
public String analyze(@RequestBody String text) {
if (text.contains("好") || text.contains("棒")) {
return "positive";
} else if (text.contains("差") || text.contains("垃圾")) {
return "negative";
}
return "neutral";
}
}
是的,你没看错,这就是我的“初代NLP模型”——基于规则的字符串匹配。但它真的能用!我把这个接口丢给运营,她居然高兴地说:“哇,比人工快多了!”
虽然我知道这玩意儿在NLP圈里属于“幼儿园水平”,但能解决实际问题就是好代码。更重要的是,它让我尝到了“用技术赋能业务”的甜头。
中期:爬虫+简单NLP = 运营眼中的“神”
2022年初,公司开始做内容审核系统。需求是:自动过滤用户评论里的广告、辱骂、敏感词。
我主动请缨:“让我试试。”
这次不能再靠contains了。我研究了一周,用上了 HanLP(一个国产NLP工具包),配合自己写的关键词库,实现了基础的文本分类:
- 用 Jsoup 写了个轻量级爬虫,定时抓取公开论坛的评论数据;
- 用 HanLP 分词 + 词性标注,识别出名词、动词;
- 结合自建的“负面词典”(比如“骗子”、“滚蛋”、“死全家”),打分判断情感倾向;
- 最后用 SpringBoot 提供 REST API,供审核后台调用。
上线第一周,误判率高达40%。有次把“这手机真香”判成负面(因为“香”在我们的词典里被误标为“讽刺”),被产品总监当面diss:“老张,你这模型是不是对‘香’有意见?”
但我没放弃。每天下班后花两小时调参、加规则、清洗数据。三个月后,准确率提到85%,误报率降到10%以下。运营团队直接把我拉进核心群,喊我“AI张老师”(其实我连PyTorch都没装过)。
那一刻我明白了:NLP不需要一开始就上BERT、Transformer。从解决一个小问题开始,迭代优化,才是普通人的进阶之路。
转折点:副业尝试与房贷压力
去年九月,老婆查出怀孕了。我们一合计:得换房,现在这45平的老破小根本不够住。于是咬牙付了首付,在临平买了个89平的新房——月供8200,比工资一半还多。
那段时间我焦虑得睡不着。白天写业务代码,晚上刷LeetCode,周末还要陪老婆产检。直到某天,前同事老李发微信:“老张,还记得你之前做的那个评论分析吗?我现在创业做本地生活,需要监控小红书/大众点评的用户评价,有没有兴趣接个外包?”
报价:3万,两个月交付。
我差点哭出来——这比我一个月工资还高!
但冷静下来一想:光靠规则匹配肯定不行,小红书的评论太“阴阳怪气”了。比如“这家店服务态度好到让我想报警”,表面夸,实则骂。
于是我逼自己学 真正的NLP。
- 用 Python 写了分布式爬虫(Scrapy + Selenium),绕过反爬;
- 把评论存进 MySQL,用 SnowNLP 做中文情感分析(虽然效果一般,但比规则强);
- 后来又接入 百度AI开放平台的情感分析API,准确率飙升;
- 最终用 SpringBoot 封装成微服务,支持定时任务+Web管理后台。
交付那天,老李转账3万到账。我立刻转给老婆:“房贷先还一部分。”
她笑:“你这代码人生,还真能换钱啊。”
进阶:从调包到理解原理
副业的成功让我意识到:不能永远当“调包侠”。于是今年开始,我系统学习NLP理论:
- 看《Speech and Language Processing》电子版(英文看得头秃);
- 在B站跟着李沐学动手学深度学习;
- 用 HuggingFace 的 transformers 库微调了一个中文 BERT 模型,专门用于本地生活场景的情感分类;
- 甚至还写了篇技术博客《如何用BERT做小红书评论情感分析》,意外收获200+收藏。
当然,过程充满痛苦。有次为了调一个 learning rate,凌晨三点还在改 config 文件,老婆在隔壁房间喊:“再不睡觉我就拔你电脑电源!”
但当我看到模型在测试集上达到 92% 准确率时,那种成就感,比打游戏通关爽一百倍。
关键词串烧:代码人生、运营、SpringBoot、爬虫
回头看这段路,我发现几个关键词其实在悄悄串联我的转型:
- 代码人生:不是指天天写代码,而是用编程思维解决问题。哪怕是从最简单的字符串匹配开始。
- 运营:他们不是“提需求的甲方”,而是最懂业务痛点的人。帮运营解决问题,就是帮公司赚钱,也是帮自己证明价值。
- SpringBoot:作为Java开发者,它是我的“舒适区武器”。哪怕做NLP,我也优先考虑用它搭服务,而不是盲目追新。
- 爬虫:数据是NLP的燃料。没有真实数据,再牛的模型也是空中楼阁。而爬虫,就是获取燃料的第一步。
给想入门NLP的朋友几点建议
- 别一上来就啃BERT。先从规则、词典、TF-IDF开始,解决一个具体问题(比如自动打标签、过滤垃圾评论)。
- 找业务结合点。问问你们公司的运营、产品:“有什么重复性文本工作我可以自动化?”——这往往是你的第一个NLP项目。
- 善用现有API。百度、阿里、腾讯都有免费的情感分析接口,初期完全够用,别 reinvent the wheel。
- 数据比模型重要。花80%时间清洗和标注数据,20%时间调模型,效果远好于反过来。
- 保持输出。写博客、做分享,不仅能巩固知识,还能吸引机会(比如我的副业)。
写在最后:技术人的长期主义
上周五晚上,我又加班到十点。回家路上,看着未来科技城灯火通明的写字楼,突然感慨:三年前我还是个只会点点点的测试,现在却能用NLP帮公司省钱、给自己创收。
技术这条路,没有捷径。但只要你愿意从一个小问题开始,持续迭代,代码真的能改变人生。
房贷还在还,孩子明年出生,但我已经不怕了。因为我知道,只要手还能敲键盘,脑子还能思考,就有办法把日子过下去,甚至过得更好。
如果你也在杭州,也在挣扎,也在尝试从测试/运维/产品转开发,或者正被NLP劝退——别慌。咱们普通人,不需要成为大神,只需要比昨天的自己强一点就够了。
共勉。
—— 老张,一个在杭州还房贷的普通开发
2024年6月于临平家中(孩子还没出生,但尿布台已经买好了)

评论 0