用Flutter做背单词APP-03为了给单词库塞满数据,我让AI给我打了上万份工

作者:雪隐_上班了 本文欢迎分享、聚合讨论,但不接受整篇搬运。圈子不大,写文不易,急用可联系授权。


上集回顾

上回说到,我画了设计稿,又和AI聊了几个来回,整出了7张表的数据库设计。

表建好了,问题来了------

表里是空的。

就像你买了套房,装修方案都定好了,结果发现房子里连块砖都没有。

words表,作为整个App的核心数据源,里面一条单词都没有。没有数据,后面的学习进度、复习计划、每日打卡全是空中楼阁。

所以这一篇,咱们专门聊聊------

怎么给单词库塞满数据。


先解释一下这个表的设计

再看一眼这个words表:

sql 复制代码
CREATE TABLE words (
  id          BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  word        VARCHAR(200)  NOT NULL COMMENT '单词/词组/句型',
  phonetic    VARCHAR(200)  NULL COMMENT '音标',
  pos         VARCHAR(20)   NULL COMMENT '词性/phrase/pattern',
  definition  TEXT          NOT NULL COMMENT '释义',
  example     TEXT          NULL COMMENT '例句',
  audio_url   VARCHAR(500)  NULL COMMENT '音频 URL',
  type        VARCHAR(20)   NOT NULL DEFAULT 'word' COMMENT '类型: word/phrase/pattern',
  is_custom   TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '是否用户自定义',
  created_at  DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at  DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  UNIQUE KEY uk_word_pos (word, pos),
  INDEX idx_word (word)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '单词库';

注意到那个UNIQUE KEY uk_word_pos (word, pos)没?

这意味着:一个单词可以有多条记录,每个词性一条。

举个例子:

  • apple + n. → 一条记录,释义是"苹果"
  • apple + v. → 另一条记录,释义是"(古语)说......",虽然基本用不到

为啥这么设计?

因为我在背单词的时候,经常遇到"这个词我认识,但换了个词性就不认识了"的情况。

你看"book",名词是"书",动词是"预定"。

如果你只背了名词,看到"book a ticket"就懵了。

然后你骂骂咧咧地说:"这单词我背过啊!怎么意思不一样!"

所以,一个词性一条记录,分开了才能精准打击。

这也意味着------如果我有5000个单词,平均每个词2到3个词性,那最终表里的数据就是1万到1.5万条,不是5000条。

5000个单词 × 3个词性 = 15000条记录。

这还没算词组和句型呢。

加上的话,直接奔着2万去了。


数据从哪儿来?我踩过的三个坑

表设计好了,数据怎么来?

方案一:免费API,白嫖失败

我首先想到的是api.dictionaryapi.dev,免费、无需注册、看起来非常美好。

结果呢?

前50个请求:丝滑。

第51个请求:慢了一点。

第100个请求:开始报错。

第200个请求:"Rate limit exceeded"

这感觉就像你进了自助餐厅,

前两盘菜随便拿,第三盘开始服务员盯着你看,

第四盘的时候直接把你的盘子收走了。

免费API,白嫖失败。

方案二:付费API,告辞

又看了看其他API------

一个月几十美元?

几百美元?

我掏出计算器算了一下:

这个月失业金......哦不对,我没领失业金。

这个月积蓄......算了不说了,说多了都是泪。

付费API,告辞。

方案三:OCR扫描词典?太折腾了

有人说:你可以用OCR扫描电子词典啊,然后提取数据。

我试了。

效果确实不错,但问题在于------

你得有一本高质量的电子词典。

扫描完了还得清洗数据,还得校对,还得......

这就像你想吃顿好的,

方案是:先养头猪,宰了,切了,腌了,再自己下厨。

好吃是好吃,但等吃到嘴的时候,已经饿过头了。

太折腾了。我选择放弃。


终极方案:让本地大模型给我打上万份工

最后我走了第一条路,但换了个姿势------

用本地大模型批量生成数据。

第一步:让DeepSeek给我列单词清单

我打开DeepSeek的网页,输入:

"给我生成一个5000个常用英语单词的JSON数组,格式是["word1", "word2", ...],从最简单的开始。"

AI噼里啪啦给我吐了一长串。

我复制出来,存成了一个words.json文件。

5000个单词,AI生成的时间:大概30秒。

我一个一个想的话:大概需要......一辈子。

第二步:本地LM Studio,让模型干活

然后我打开本地的LM Studio,加载了一个模型------

Tencent-Hunyuan/Hy-MT2-7B

为什么选这个?

因为我的5060Ti 16G跑得动,

而且这个模型的中英文理解都不错。

至于那些70B的大模型,

我只能说:不是我不想用,是显卡不允许。

5060Ti:我尽力了,你别太过分。

第三步:写个程序,批量调用

我写了个简单的Node.js脚本,大概逻辑是:

  1. 读取words.json,拿到5000个单词
  2. 每10个单词一组,发给本地LM Studio
  3. 提示词大概长这样:
css 复制代码
请为以下每个单词生成释义,返回JSON格式。
每个单词的格式:{"单词": [{"pos": "词性", "definition": "释义", "example": "例句"}]}
注意:一个单词可能有多个词性,每个词性一条。
单词列表:["apple", "appear", ...]
  1. 收到返回的JSON,解析成对象
  2. 插入数据库

5000个单词,平均每个词2-3个词性,

LM Studio吭哧吭哧跑了大概......

反正我泡了杯茶,刷了会儿短视频,回来就好了。

最终表里插入了1万多条记录。

第四步:音频链接?白嫖一个模版

audio_url这个字段怎么填?

我直接用了一个免费的公开接口:

ruby 复制代码
https://api.dictionaryapi.dev/media/pronunciations/en/{单词}-us.mp3

{单词}替换成当前单词就行。

比如apple就是:

ruby 复制代码
https://api.dictionaryapi.dev/media/pronunciations/en/apple-us.mp3

注意:这个接口是dictionaryapi.dev的,

虽然他们API有请求限制,但音频文件本身是可以直接访问的。

这算不算白嫖?

算。

但我跑都跑了,你还能顺着网线来打我不成?


最终成果

一顿操作下来,我的words表里躺了1万多条数据

有单词,有词组,有句型。

有音标,有释义,有例句。

有音频链接,有词性区分。

一个App的"弹药库",就这么建好了。

接下来的学习进度、复习计划、每日打卡,都建立在它上面。

你可能会问:1万多条够吗?

当然不够。

但这事儿就跟吃饭一样,

你得先吃上第一口,再考虑吃饱。

后续再加词库、加用户自定义单词、加导入导出......

那都是后话了。


写在最后

这一篇其实没什么高深的技术,

核心就一句话:

用本地大模型,解决"没有数据"的问题。

思路比技术重要。

免费API不行,就换付费的,付费的嫌贵,就自己造。

自己造一个上万条数据的"单词工厂",也是一条路。

这世界上的问题,

95%都能用"找替代方案"解决,

剩下5%用"找更多替代方案"解决。

所以,别在一棵树上吊死。

API不行就换模型,模型不行就换思路,思路不行就......

就先歇会儿,喝杯茶再说。


喜欢就点个

觉得有用就评论 两句,

觉得我是在吹牛......那就看到最后,看我到底能不能做成。

相关推荐
泉城老铁1 分钟前
openclaw开发skill详细教程
人工智能
GHL2842710904 分钟前
安装chrome浏览器
前端·chrome
交友如交6 分钟前
对于Prompt的思考:从“手写”到提示词采样、A/B Test 与自动化评测
人工智能·自动化·prompt
kisshyshy6 分钟前
从0到1彻底理解流式输出:先读懂Vue的“乐高积木”,再拧开LLM的“数据水龙头”
javascript·vue.js·人工智能
谙忆10249 分钟前
WebCodecs 实战:用 ImageDecoder 和 VideoFrame 在浏览器里做硬件加速的帧处理
前端
饼干哥哥10 分钟前
Vibe Coding 出海首月收割 100+用户爆赚美金,怎么做?
后端·架构·代码规范
JerrySir11 分钟前
密码没泄露,2FA 也没失效:Chrome 146 为什么还要让 Cookie“搬不走”?
前端
小蚂蚁i12 分钟前
React Hooks 原理深度解析:从会用到真正懂
前端·react.js
ting945200012 分钟前
纯技术硬核解析:Timbal AI 全栈底层架构、引擎原理与生产级 AI 应用落地实现
人工智能·架构
用户69190268133912 分钟前
Agent 开发 主流 skills推荐
人工智能