自然语言处理入门到进阶

赵建国·
2025-06-22 14:24
阅读 284

开篇:什么是自然语言处理?能用来做什么?

开篇:什么是自然语言处理?能用来做什么?

自然语言处理(NLP,Natural Language Processing)是人工智能的一个分支,它的目标是让计算机能够“听懂”人类的语言。这里的语言可以是中文、英文、日文……任何一种我们日常生活中用来说话或写作的语言。

你有没有想过:

  • 为什么手机里的语音助手能听懂你说的话?
  • 搜索引擎是怎么理解你的搜索关键词的?
  • AI是怎么写出文章或者对话的?

这些都离不开自然语言处理技术。

NLP应用非常广泛,比如:

  • 聊天机器人(像小冰、天猫精灵)
  • 翻译工具(如谷歌翻译)
  • 情感分析(判断一段评论是正面还是负面)
  • 文本摘要(把长篇文章浓缩成几句话)

这篇文章的目标就是带你从零开始,一步步走进自然语言处理的世界,并最终完成一个简单的项目——自动提取文章关键词。准备好了吗?那我们开始吧!


第一步:环境准备 —— 安装你需要的开发工具

计算机视觉应用-1

第一步:环境准备 —— 安装你需要的开发工具

在开始写代码之前,我们需要准备好自己的开发环境。这一步可能看起来有点复杂,但别担心,跟着我一步一步来,你一定可以做到。

推荐安装清单:

工具 用途
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:我写的分词总是不准怎么办?

答:中文分词本来就比较难,建议你试试不同的库,比如 jiebaTHULACHanLP 等,或者尝试使用深度学习的方法如 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

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝