零基础 Python 自然语言处理(NLP)入门教程

2025年11月07日 19:25

一、什么是自然语言处理(NLP)?

自然语言处理(Natural Language Processing,简称 NLP)是一门研究如何让计算机理解、分析、生成和处理人类语言的技术。例如:

• 把语音转成文字(如微信语音转文字)

• 把中文翻译成英文(如 Google Translate

• 判断评论是 好评还是 差评

• 自动写摘要、写文章

• 聊天机器人(如 Siri、智能客服)

NLP 的核心目标:让计算机能像人一样理解语言、使用语言。

二、NLP 的发展简史

 

时间时期

关键特点

代表方法

1950s-1980s(规则时代)

认为语言能被人工写成语法规则

规则库 / 语法树

1990s(统计时代)

认为语言有概率特征,可以用数学统计

N-gram、隐马尔可夫模型

2010s(深度学习)

神经网络能从大量数据中自动提取语言规律

RNNCNNSeq2Seq

2018+(预训练大模型)

模型在海量文本上学习语言知识,再用于各种任务

BERTGPTChatGPT

当前最主流的方向:预训练语言模型 + 微调应用

三、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-IDFWord2Vec 词向量、LSTM 模型

word2vec / keras / TF-IDF

2-4

高级

预训练模型原理 + 微调应用

BERT / GPT / Transformer

1-3 个月

总结

通过本教程,你已经掌握:

1. NLP 的核心定义:让计算机理解人类语言的技术

2. NLP 发展脉络:规则 统计 深度学习 大模型

3. 中文 NLP 核心步骤:分词(jieba向量化(词袋)建模

4. 完整项目流程:垃圾短信分类(端到端可运行)