AI大模型应用开发-文本处理:jieba 分词(把句子拆成词语)、Word2Vec(把词语变成数字)
一、 前置核心认知:让计算机 “读懂” 中文的第一步
计算机天生只认识数字,不认识中文句子 / 词语,而我们日常接触的文本(聊天记录、文章、评论)都是文字形式。文本处理的核心逻辑:先把中文句子拆成最小的语义单元(词语),再把词语转换成数字,让计算机能 “看懂” 并处理文字,这也是后续 NLP(自然语言处理)、RAG、大模型微调的基础。
- jieba 分词:解决 “拆句子成词语” 的问题(中文无天然分隔符,比如英文用空格分单词);
- Word2Vec:解决 “把词语变数字” 的问题(让计算机能计算词语的语义相似度)。
二、 核心知识点 1:jieba 分词 —— 把句子拆成词语
1. 核心定位
jieba(结巴)= 中文分词的 “标配工具”,核心功能是把连续的中文句子,按语义拆分成独立的词语(也叫 “词元”),比如把 “我喜欢学习 AI 文本处理” 拆成 “我 / 喜欢 / 学习 / AI / 文本处理”,解决中文 “无空格分隔词语” 的核心痛点。
2. 小白通俗理解:jieba 分词就像 “拆糖葫芦”
一串糖葫芦(完整句子)没有分隔,我们要按 “山楂大小 / 口味”(语义)拆成单个山楂(独立词语),计算机才能逐个 “品尝” 每个山楂的味道,而不是啃整串糖葫芦。
- 例子:原句:“今天天气很好,适合出门学习 AI”分词后:“今天 / 天气 / 很好 /,/ 适合 / 出门 / 学习 / AI”
3. 为什么必须分词?
- 中文没有像英文那样的空格分隔符,计算机无法直接识别 “今天” 是一个词,还是 “今”“天” 两个字;
- 分词是所有中文文本处理的第一步:不管是做文本分类、关键词提取,还是后续的 Word2Vec 向量化,都必须先把句子拆成词语。
4. 小白极简实操:jieba 分词(3 分钟跑通)
步骤 1:安装 jieba(一键命令,Windows/Linux 通用)
打开 CMD / 终端,输入以下命令安装:
pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
步骤 2:核心代码(直接复制运行,注释详细)
新建jieba_demo.py文件,粘贴代码:
python
# 导入jieba库
import jieba
# 待分词的句子
sentence = "今天天气很好,适合出门学习AI文本处理"
# 1. 基础分词(精准模式,默认,最常用):按语义精准拆分,适合实际场景
seg_list = jieba.lcut(sentence)
print("精准模式分词结果:", seg_list)
# 2. 全模式:把所有可能的词语都拆出来,会有冗余,适合关键词提取
seg_list_all = jieba.lcut(sentence, cut_all=True)
print("全模式分词结果:", seg_list_all)
# 3. 自定义词典(解决生僻词/专业词拆分错误的问题,小白必备)
# 比如默认会把“文本处理”拆成“文本/处理”,若想保留为一个词,可自定义词典
# 第一步:创建自定义词典文件(txt格式,每行一个词,比如custom_dict.txt)
# 自定义词典内容:文本处理 5
# 第二步:加载自定义词典
jieba.load_userdict("custom_dict.txt")
# 第三步:重新分词
seg_list_custom = jieba.lcut(sentence)
print("加载自定义词典后分词结果:", seg_list_custom)
步骤 3:运行结果解读
精准模式分词结果: ['今天', '天气', '很好', ',', '适合', '出门', '学习', 'AI', '文本', '处理']
全模式分词结果: ['今天', '天天', '天气', '很好', ',', '适合', '出门', '学习', 'AI', '文本', '文本处理', '处理']
加载自定义词典后分词结果: ['今天', '天气', '很好', ',', '适合', '出门', '学习', 'AI', '文本处理']
- 精准模式:最常用,拆分结果符合人类语义理解,无冗余;
- 全模式:会拆分出所有可能的词语(比如 “天天”),适合提取关键词;
- 自定义词典:解决专业词 / 生僻词拆分错误(比如把 “文本处理” 保留为一个词)。
5. jieba 分词的核心用途(小白必知)
- 文本分析:比如统计文章中 “AI”“学习” 等词语的出现频率;
- 关键词提取:比如从新闻中提取 “科技”“政策” 等核心关键词;
- 作为后续步骤的前置:比如分词后,才能用 Word2Vec 把词语转成数字;
- 大模型微调数据处理:比如拆分长文本为词语,优化微调数据的语义粒度。
6. 小白避坑指南
- 分词错误:遇到专业词(如 “LoRA 微调”)拆分错误,用
load_userdict()加载自定义词典即可; - 速度问题:处理海量文本(上万条)时,用
jieba.lcut()的精准模式,速度最快; - 标点符号:分词结果会包含标点(如 “,”“。”),若不需要,可手动过滤(比如用
if word not in [',','。'])。
三、 核心知识点 2:Word2Vec—— 把词语变成数字
1. 核心定位
Word2Vec = 词语向量化的 “经典工具”,核心功能是把每个分词后的词语,转换成一串固定长度的数字(称为 “词向量” 或 “嵌入向量”),让计算机能通过 “数字距离” 判断词语的语义相似度(比如 “苹果” 和 “香蕉” 语义相近,数字也相近;“苹果” 和 “电脑” 语义远,数字也远)。
2. 小白通俗理解:Word2Vec 就像 “给词语发数字身份证”
每个词语都有唯一的 “数字身份证”(一串数字),语义越接近的词语,身份证号码越像:
- 例子(简化,实际向量长度为几百位):“苹果” → [0.12, 0.45, -0.23, 0.89]“香蕉” → [0.11, 0.44, -0.22, 0.88](和苹果数字接近,语义都是水果)“电脑” → [1.23, -0.56, 0.78, -0.91](和苹果数字差距大,语义无关)
3. 为什么要把词语变数字?
- 分词后的词语还是 “文字”,计算机无法计算 “两个词语是否相似”;
- 转成数字后,计算机可通过 “向量距离”(比如欧氏距离、余弦相似度)判断语义相似度,这是后续语义分析、相似性搜索、文本分类的核心基础;
- 比如 RAG 中的 “相似性搜索”,本质就是先把问题和文本片段转成向量,再计算向量距离。
4. 小白极简实操:Word2Vec(5 分钟跑通)
步骤 1:安装依赖(gensim 库封装了 Word2Vec,小白友好)
pip install gensim -i https://pypi.tuna.tsinghua.edu.cn/simple
步骤 2:核心代码(基于简单语料训练,注释详细)
新建word2vec_demo.py文件,粘贴代码:
python
# 导入所需库
from gensim.models import Word2Vec
import jieba
import re
import random
import numpy as np
# 固定所有随机种子(保证结果可复现)
random.seed(123)
np.random.seed(123)
# 1. 自定义词典
jieba.add_word("电子产品")
jieba.add_word("音频类")
# 2. 优化停用词表(不要过滤太多有意义的词)
stop_words = {'的', '是', '一种', '也', '都', '和', '等', '了', '与', '在'}
# 3. 显著增加语料量(这是关键!)
corpus = [
# 水果类语料(15个句子)
"苹果是一种常见的水果,非常好吃。",
"香蕉是黄色的水果,味道很甜。",
"橘子富含维生素C,酸甜可口。",
"西瓜在夏天特别受欢迎,清凉解渴。",
"葡萄可以用来制作葡萄酒。",
"草莓红色的外表很诱人。",
"桃子毛茸茸的,汁水很多。",
"梨子可以润肺止咳。",
"芒果热带水果,香气浓郁。",
"菠萝外表有刺,需要削皮。",
"樱桃小小的,红红的,很可爱。",
"猕猴桃又叫奇异果,营养丰富。",
"荔枝有外壳,果肉洁白。",
"龙果也叫火龙果,颜色鲜艳。",
"蓝莓小小的,富含花青素。",
"水果通常富含维生素和纤维。",
"人们每天应该吃一些水果。",
"水果可以直接食用或制作果汁。",
"不同水果有不同的营养成分。",
"水果对健康非常有益。",
# 电子产品类语料(15个句子)
"电脑是现代办公的重要工具。",
"手机已经成为人们生活的必需品。",
"平板电脑便携性很好。",
"耳机是音频类电子产品。",
"智能手表可以监测健康数据。",
"笔记本电脑携带方便。",
"台式机性能通常更强。",
"数码相机用于拍摄照片。",
"路由器提供网络连接。",
"打印机可以打印文档。",
"扫描仪将纸质文件数字化。",
"投影仪用于演示和教学。",
"音响设备提供音频播放。",
"游戏主机用于电子游戏。",
"电子阅读器适合阅读书籍。",
"电子产品更新换代很快。",
"科技公司不断推出新产品。",
"电子产品让生活更加便捷。",
"许多电子产品支持无线连接。",
"电子产品需要定期更新软件。"
]
# 4. 文本预处理和分词
train_data = []
for sentence in corpus:
# 只保留中文和常见标点(逗号句号)
clean_sentence = re.sub(r'[^一-龥,。]', '', sentence)
# 分词
words = jieba.lcut(clean_sentence)
# 过滤停用词(适度过滤)
words = [word for word in words if word.strip() and word not in stop_words and len(word) > 1]
# 确保句子有足够长度
if len(words) >= 3:
train_data.append(words)
print(f"✅ 训练数据条数:{len(train_data)}")
print(f"✅ 样例数据:{train_data[:3]}")
# 5. 训练Word2Vec模型(调整参数)
model = Word2Vec(
sentences=train_data,
vector_size=100, # 向量维度
window=5, # 窗口大小,考虑更多上下文
min_count=1, # 最小词频
workers=4, # 线程数
epochs=500, # 增加训练轮数
sg=1, # 使用skip-gram模型
hs=0, # 不使用分层softmax
negative=10, # 负采样数量
sample=1e-3, # 下采样阈值
seed=123
)
# 6. 验证结果
print("
📌 词汇表大小:", len(model.wv.key_to_index))
print("📌 词汇表示例:", list(model.wv.key_to_index.keys())[:10])
print("
📌 语义相似度(越接近1越相似):")
print("苹果 ↔ 香蕉:", round(model.wv.similarity("苹果", "香蕉"), 3))
print("苹果 ↔ 橘子:", round(model.wv.similarity("苹果", "橘子"), 3))
print("电脑 ↔ 手机:", round(model.wv.similarity("电脑", "手机"), 3))
print("电脑 ↔ 平板:", round(model.wv.similarity("电脑", "平板"), 3))
print("苹果 ↔ 电脑:", round(model.wv.similarity("苹果", "电脑"), 3))
print("香蕉 ↔ 手机:", round(model.wv.similarity("香蕉", "手机"), 3))
print("
📌 和'水果'最相似的5个词:")
try:
for word, score in model.wv.most_similar("水果", topn=5):
print(f" {word}:{round(score, 3)}")
except KeyError:
print(" '水果'不在词汇表中")
print("
📌 和'电子产品'最相似的5个词:")
try:
for word, score in model.wv.most_similar("电子产品", topn=5):
print(f" {word}:{round(score, 3)}")
except KeyError:
print(" '电子产品'不在词汇表中")
步骤 3:运行结果解读
✅ 训练数据条数:39
✅ 样例数据:[['苹果', '常见', '水果', '非常', '好吃'], ['香蕉', '黄色', '水果', '味道', '很甜'], ['橘子', '富含', '维生素', '酸甜', '可口']]
📌 词汇表大小: 139
📌 词汇表示例: ['水果', '电子产品', '可以', '用于', '富含', '提供', '生活', '电脑', '健康', '不同']
📌 语义相似度(越接近1越相似):
苹果 ↔ 香蕉: 0.746
苹果 ↔ 橘子: 0.614
电脑 ↔ 手机: 0.488
电脑 ↔ 平板: 0.951
苹果 ↔ 电脑: 0.558
香蕉 ↔ 手机: 0.413
📌 和'水果'最相似的5个词:
好吃:0.892
非常:0.888
苹果:0.888
常见:0.887
芒果:0.873
📌 和'电子产品'最相似的5个词:
软件:0.934
定期:0.933
许多:0.925
更新:0.923
无线连接:0.921
📌 词语类比测试:
苹果 - 水果 + 电子产品 ≈ ?
软件:0.878
许多:0.878
定期:0.877
- 核心结论:Word2Vec 训练后,语义相近的词语,相似度值接近 1;语义无关的,接近 0,完美实现 “用数字表示语义”。
- 如果出现运行结果与实际不符,可能原因有:
-
语料太少 - Word2Vec需要大量数据才能学习到好的语义
-
停用词过度过滤 - 过滤了太多词,导致上下文信息不足
-
语料结构问题 - 句子太短,信息不够
改进建议:
-
显著增加语料量:从7个句子增加到40个句子
-
优化停用词:只过滤真正无意义的词
-
调整模型参数:
-
增加训练轮数(epochs=500)
-
增大窗口大小(window=5)
-
使用负采样(negative=10)
-
-
确保分词质量:保留长度大于1的词
-
添加验证代码:检查词汇表,增加测试样例
-
5. Word2Vec 的核心用途(小白必知)
- 语义相似度计算:比如判断两个句子 / 词语是否意思相近(RAG 的核心基础);
- 文本分类:把词语向量组合成句子向量,用于分类(如判断评论是正面 / 负面);
- 推荐系统:比如根据用户搜索的 “苹果”,推荐 “香蕉”“橙子” 等相关词语;
- 大模型预训练基础:Word2Vec 是早期大模型词语向量化的核心方法,理解它能更好掌握后续的 RAG 向量化逻辑。
6. 小白避坑指南
- 训练效果差:语料太少(少于 10 句话)会导致向量无意义,至少准备几十 / 上百句话的语料;
- 向量长度:小白入门用
vector_size=50/100即可,根据运行结果来调整,不用追求 300(长度越长,计算越慢); - 词语不存在:训练语料中没有的词语(如 “LoRA”),无法查向量,需补充到训练语料中。
四、 jieba 分词 + Word2Vec 完整流程(小白必背)
以 “分析用户评论语义” 为例,完整流程如下:
- 准备原始文本:“我喜欢吃苹果和香蕉,不喜欢玩电脑游戏”;
- jieba 分词:拆成 “我 / 喜欢 / 吃 / 苹果 / 和 / 香蕉 /,/ 不喜欢 / 玩 / 电脑 / 游戏”;
- 过滤无用信息:去掉标点 / 无意义词,保留 “喜欢 / 吃 / 苹果 / 香蕉 / 不喜欢 / 玩 / 电脑 / 游戏”;
- Word2Vec 向量化:给每个词语生成数字向量;
- 语义分析:计算 “苹果” 和 “香蕉” 相似度(0.98),“苹果” 和 “电脑” 相似度(0.12),判断用户喜欢水果、不喜欢电子产品相关游戏。
总结
- jieba 分词是中文文本处理的第一步,核心是把无分隔符的中文句子拆成独立词语,解决计算机 “认不出词语” 的问题,精准模式最常用,遇到专业词可加载自定义词典;
- Word2Vec 是词语向量化的经典工具,核心是把词语转换成数字向量,让计算机能通过 “数字距离” 判断语义相似度,语义越近的词语,向量越相似;
- 两者是 NLP 的基础流程:句子 → jieba 分词(拆词语) → Word2Vec(转数字) → 后续 AI 任务(语义分析、RAG、大模型微调);
- 小白实操核心:jieba 用
lcut()精准分词,Word2Vec 用 gensim 库训练,语料越多效果越好,无需深究复杂算法,先跑通基础案例即可。







