零基础 Python 自然语言处理(NLP)入门教程
2025年11月07日 19:25
一、什么是自然语言处理(NLP)?
自然语言处理(Natural Language Processing,简称 NLP)是一门研究如何让计算机理解、分析、生成和处理人类语言的技术。例如:
• 把语音转成文字(如微信语音转文字)
• 把中文翻译成英文(如 Google Translate)
• 判断评论是 “好评” 还是 “差评”
• 自动写摘要、写文章
• 聊天机器人(如 Siri、智能客服)
NLP 的核心目标:让计算机能像人一样理解语言、使用语言。
二、NLP 的发展简史
时间时期 | 关键特点 | 代表方法 |
1950s-1980s(规则时代) | 认为语言能被人工写成语法规则 | 规则库 / 语法树 |
1990s(统计时代) | 认为语言有概率特征,可以用数学统计 | N-gram、隐马尔可夫模型 |
2010s(深度学习) | 神经网络能从大量数据中自动提取语言规律 | RNN、CNN、Seq2Seq |
2018+(预训练大模型) | 模型在海量文本上学习语言知识,再用于各种任务 | BERT、GPT、ChatGPT |
✅ 当前最主流的方向:预训练语言模型 + 微调应用
三、NLP 的主要应用方向
应用方向 | 典型例子 | 所需要的技术 |
文本分类 | 垃圾短信识别、情感分析、新闻分类 | 机器学习 / 深度学习分类模型 |
文本生成 | 摘要生成、作文生成、写代码 | 语言模型(如 GPT) |
信息抽取 | 从文本中找人名、地名、关系 | 序列标注模型 |
机器翻译 | 中英互译 | Transformer、序列生成 |
问答系统 | 智能客服、语音助手 | 检索 + 生成模型 |
四、开始学习 NLP 需要什么?
不用担心,入门只需要基础配置,循序渐进即可:
项目 | 要求 |
Python | 会基本语法,照着代码写就行 |
数据处理 | 会 pandas 读文件 |
NLP 库 | jieba(中文分词) /nltk(英文处理) |
机器学习库 | scikit-learn |
典型 NLP 处理流程:
文本 → 分词 → 转成数字 → 训练模型 → 预测
五、文本分词(中文 NLP 最核心的第一步)
中文没有空格分隔,需要先把句子切割成词语,这是中文 NLP 的基础步骤。
工具:jieba 分词(Python 主流中文分词库)
import jieba text = "我正在学习自然语言处理。" words = jieba.lcut(text) # lcut() 返回列表格式的分词结果 print(words) |
输出结果:
['我', '正在', '学习', '自然语言处理', '。'] |
六、让电脑理解词语:文本向量化
计算机无法直接理解文字,必须将文字转换成数字(向量),这个过程叫 “文本向量化”。
方法一:词袋模型(CountVectorizer)
核心逻辑:统计每个词语在文本中出现的次数,生成数字向量。
from sklearn.feature_extraction.text import CountVectorizer # 准备待处理的句子(已分词,用空格分隔) sentences = ["我 爱 自然语言处理", "自然语言处理 很 有趣"] # 初始化词袋模型 vectorizer = CountVectorizer() X = vectorizer.fit_transform(sentences) # 拟合+转换,生成向量 # 输出结果 print("向量矩阵(每行对应一个句子,列对应词语):") print(X.toarray()) print("向量对应的词语列表:") print(vectorizer.get_feature_names_out()) |
七、完整实战:垃圾短信分类
手把手实现一个可运行的 NLP 项目,掌握端到端流程。
1. 准备数据(创建 data.csv 文件)
label | text |
垃圾 | 你已中奖点击领取 |
正常 | 晚上一起吃饭吗 |
垃圾 | 恭喜获得 500 万 |
正常 | 我明天去上课 |
2. 完整代码(直接复制可运行)
# 导入所需库 import pandas as pd import jieba from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB # 1. 读取数据 df = pd.read_csv("data.csv") # 确保 data.csv 和代码在同一目录 # 2. 对文本进行分词 df["cut_text"] = df["text"].apply(lambda x: " ".join(jieba.lcut(x))) # 3. 文本向量化(词袋模型) vectorizer = CountVectorizer() X = vectorizer.fit_transform(df["cut_text"]) # 特征矩阵 y = df["label"] # 标签(垃圾/正常) # 4. 训练模型(朴素贝叶斯分类器) model = MultinomialNB() model.fit(X, y) # 5. 测试模型 test_text = "点击领取你的现金奖励" # 待预测的短信 test_cut = " ".join(jieba.lcut(test_text)) # 分词 test_vec = vectorizer.transform([test_cut]) # 向量化(注意用 transform,不是 fit_transform) # 输出预测结果 print("测试文本:", test_text) print("预测结果:", model.predict(test_vec)[0]) |
预期输出:
测试文本: 点击领取你的现金奖励 预测结果: 垃圾 |
八、学习路线建议(0 基础 → 进阶 → 高级)
阶段 | 核心学习内容 | 技术关键词 | 预计用时 |
入门 | 分词 + 词向量(词袋) + 简单分类 | jieba / CountVectorizer / Naive Bayes | 1-2 周 |
进阶 | TF-IDF、Word2Vec 词向量、LSTM 模型 | word2vec / keras / TF-IDF | 2-4 周 |
高级 | 预训练模型原理 + 微调应用 | BERT / GPT / Transformer | 1-3 个月 |
✅ 总结
通过本教程,你已经掌握:
1. NLP 的核心定义:让计算机理解人类语言的技术
2. NLP 发展脉络:规则 → 统计 → 深度学习 → 大模型
3. 中文 NLP 核心步骤:分词(jieba)→ 向量化(词袋)→ 建模
4. 完整项目流程:垃圾短信分类(端到端可运行)