自然语言处理入门到进阶
开篇:什么是自然语言处理?能用来做什么?

自然语言处理(NLP,Natural Language Processing)是人工智能的一个分支,它的目标是让计算机能够“听懂”人类的语言。这里的语言可以是中文、英文、日文……任何一种我们日常生活中用来说话或写作的语言。
你有没有想过:
- 为什么手机里的语音助手能听懂你说的话?
- 搜索引擎是怎么理解你的搜索关键词的?
- AI是怎么写出文章或者对话的?
这些都离不开自然语言处理技术。
NLP应用非常广泛,比如:
- 聊天机器人(像小冰、天猫精灵)
- 翻译工具(如谷歌翻译)
- 情感分析(判断一段评论是正面还是负面)
- 文本摘要(把长篇文章浓缩成几句话)
这篇文章的目标就是带你从零开始,一步步走进自然语言处理的世界,并最终完成一个简单的项目——自动提取文章关键词。准备好了吗?那我们开始吧!
第一步:环境准备 —— 安装你需要的开发工具


在开始写代码之前,我们需要准备好自己的开发环境。这一步可能看起来有点复杂,但别担心,跟着我一步一步来,你一定可以做到。
推荐安装清单:
| 工具 | 用途 |
|---|---|
| Python 3.x | 编程语言基础 |
| Jupyter Notebook 或 VS Code | 编写和运行代码的平台 |
| NLTK / spaCy / Transformers 库 | 常用NLP库 |
步骤1:安装Python
如果你还没安装Python,请前往 https://www.python.org/downloads/ 下载并安装最新版的 Python 3.x。
安装完成后,在命令行输入以下命令确认是否安装成功:
python --version
如果输出类似 Python 3.9.13,说明安装成功了。
步骤2:安装Jupyter Notebook(推荐初学者使用)
Jupyter 是一个非常适合新手写代码的工具,你可以把它想象成一个“在线笔记本”,可以在里面运行代码块。
安装方法:
pip install notebook
安装完成后启动:
jupyter notebook
浏览器会自动打开一个页面,点击右上角 New → Python 3,就可以开始编程啦!
步骤3:安装常用NLP库
接下来我们要安装几个常用的NLP库:
pip install nltk spacy transformers
有些库还需要下载模型包,我们后面遇到的时候再讲如何安装。
核心概念讲解:用最简单的方式理解专业术语

虽然我们现在还没有正式写代码,但先来了解几个NLP领域中最重要的基础概念,这样你在后面看代码时就会更清楚每个步骤的意义。
1. 分词(Tokenization)
分词就是把一句话切成一个个词(也可以是一个个字)。比如:
原句:今天天气不错
分词后:["今天", "天气", "不错"]
这是很多NLP任务的第一步,只有先把句子拆开,才能做后续的分析。
2. 词性标注(Part-of-Speech Tagging)
给每个词标注它是什么类型的词。例如:
"跑"可能是动词,也可能是名词,词性标注可以帮助程序识别其含义。
3. 命名实体识别(NER,Named Entity Recognition)
从一段文字中找出有哪些人物、地点、组织等信息。
例如:
句子:“马云是阿里巴巴集团的创始人。”
识别结果:
- 马云:人名
- 阿里巴巴集团:公司名
4. 词向量(Word Embedding)
把词语变成数字,这样计算机才能理解和计算它们的关系。
比如:
- “男人” → [0.5, -0.8, 0.1]
- “女人” → [0.5, -0.7, 0.2]
通过这些数字,我们可以判断两个词之间的相似度。
5. 文本分类(Text Classification)
给一段文本打标签。比如判断一篇新闻是体育类、财经类还是娱乐类。
6. 机器翻译 & 对话系统
这个大家应该都很熟悉了,比如把英文翻译成中文,或者用AI聊天机器人跟我们对话。
🔍 小贴士:这些术语刚开始可能会有点抽象,没关系,我们会在实战中慢慢接触它们。
实战项目:从零开始完成一个关键词提取器!
我们的第一个项目是:从一段文章中提取出最重要的几个关键词。
比如一篇文章讲的是“新能源汽车的发展趋势”,我们希望AI能提取出“新能源汽车”、“发展趋势”这样的关键词。
第1步:准备数据
新建一个文件夹 nlp_project,并在其中创建一个名为 sample.txt 的文本文件,内容如下:
新能源汽车的发展正在加速,各大车企纷纷布局电动化战略。随着电池技术的提升,电动汽车的续航能力不断提升,这也推动了整个行业的快速发展。
第2步:读取文本内容
在 Jupyter Notebook 中新建一个 .ipynb 文件,然后运行以下代码:
with open('sample.txt', 'r', encoding='utf-8') as f:
text = f.read()
print(text)
这段代码的作用是从我们刚刚保存的文本文件中读取内容,并显示出来。
第3步:进行分词
我们使用 jieba 这个库来做中文分词:
pip install jieba
然后写代码:
import jieba
words = jieba.lcut(text) # lcut 返回列表形式的结果
print(words)
你会看到输出是一个由词语组成的列表,例如:
['新能源', '汽车', '的', '发展', '正在', '加速', ...]
这就是我们第一步处理后的结果:将一整段文本拆分成一个个词。
第4步:去除停用词
“的”、“是”、“了”这些常见词汇对关键词提取帮助不大,我们称之为“停用词”。可以通过加载停用词表来过滤掉。
首先,创建一个 stopwords.txt 文件,内容如下(你可以自己添加更多):
的
是
了
在
有
和
与
也
然后编写代码:
def load_stopwords(path):
with open(path, 'r', encoding='utf-8') as f:
return set([line.strip() for line in f])
stopwords = load_stopwords('stopwords.txt')
filtered_words = [word for word in words if word not in stopwords and len(word) > 1]
print(filtered_words)
现在我们得到的是去除了停用词、长度大于1的词。
第5步:统计词频
现在我们来统计哪些词出现次数最多:
from collections import Counter
word_counts = Counter(filtered_words)
top_keywords = word_counts.most_common(5) # 提取前5个高频词
print(top_keywords)
输出结果可能是:
[('新能源汽车', 1), ('发展', 2), ('企业', 1), ('布局', 1), ('电动化', 1)]
注意:这里只是简单的词频统计,不能完全准确地提取语义上的关键词。不过作为入门已经足够啦!
第6步:优化:使用TF-IDF算法(选学)
想让你的关键词提取更聪明?我们可以使用 TF-IDF(Term Frequency - Inverse Document Frequency)算法。
这里简单说一下原理:这个词不仅频率高,而且在整个语料库中不常出现,那就是关键词!
我们可以借助 sklearn 来实现:
pip install scikit-learn
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform([text])
feature_names = vectorizer.get_feature_names_out()
dense = tfidf_matrix.todense()
denselist = dense.tolist()[0]
phrase_scores = [ (word, denselist[i]) for i, word in enumerate(feature_names) ]
sorted_phrases = sorted(phrase_scores, key=lambda x: x[1], reverse=True)
for phrase, score in sorted_phrases[:10]:
print(f"{phrase}: {score}")
这样就能获得基于TF-IDF评分较高的关键词。
新手常见问题解答(FAQ)
Q1:Python 和 NLP 是不是很难?
答:对刚入门的同学来说,确实有一些新知识需要学习,但只要你愿意花时间练习,就一定能掌握!建议每天坚持写一点代码,边学边练,进步会很快。
Q2:我写的分词总是不准怎么办?
答:中文分词本来就比较难,建议你试试不同的库,比如 jieba、THULAC、HanLP 等,或者尝试使用深度学习的方法如 BERT 来做更精确的处理。
Q3:NLP是不是只能处理中文?
答:不是的!NLP既可以处理中文,也能处理英文、法语、日语等等。不同语言处理方式略有不同,但基本原理是一样的。
Q4:我没有太多编程经验,能不能学会NLP?
答:当然可以!这篇文章就是专门为你设计的。只要你会一些基本的Python操作,比如定义变量、写函数,就足够入门了。
学习建议:下一步该往哪走?
恭喜你完成了第一个 NLP 项目!这只是一个起点,下面我给你推荐一条进一步学习的路线:
初级阶段巩固方向:
- 继续练习各种文本处理技巧(如情感分析、命名实体识别)
- 学习使用 spaCy、NLTK、transformers 等主流库
- 熟悉 PyTorch / TensorFlow 入门神经网络基础知识
中级阶段重点学习:
- 使用 BERT、GPT 等大模型进行微调(Fine-tuning)
- 构建聊天机器人、问答系统等实际项目
- 学习 Transformer 架构和注意力机制
高级阶段拓展方向:
- 参加Kaggle竞赛
- 研究论文和最新模型(如ChatGLM、LLaMA等)
- 参与开源项目贡献代码
结语:你已经是半个NLP工程师了!
通过这篇教程,你学会了:
- 怎么搭建NLP开发环境
- 什么是分词、词频统计、TF-IDF
- 如何从一篇文章中提取关键词
- 遇到问题该怎么解决
你现在拥有了一项非常实用的技能!继续努力下去,相信不久的将来你就能做出自己的聊天机器人、翻译系统甚至大模型了!
如果你喜欢这种风格的教学,请留言告诉我,我会继续推出更多适合新手的人工智能课程 👋

评论 0