NLP 基础理论和工具使用

第一部分:NLP 基础理论

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

定义:自然语言处理是一门让计算机能够理解、生成和操作人类语言的技术。

应用场景:

文本分类:垃圾邮件检测、情感分析。

信息提取:命名实体识别(NER)、关系抽取。

机器翻译:如 Google 翻译。

文本生成:如 ChatGPT、自动摘要。

1.2 NLP 工作的基本流程

文本获取:从文件、数据库、API 获取文本。

文本预处理:将原始文本清洗为机器可处理的格式。

分词、去停用词、标注词性等。

文本表示:将文本转化为数字表示(如 Bag of Words、TF-IDF、词向量)。

模型训练:训练分类器、序列标注模型等。

结果输出:生成模型的输出(如分类标签、摘要等)。

1.3 文本预处理基础

在 NLP 中,预处理是非常重要的环节。常见步骤包括:

分词 (Tokenization):

将句子切分为单词或子词单位。

示例:"I love NLP" → 'I', 'love', 'NLP'

去停用词 (Stop Words Removal):

去除像"a"、"the"、"is"这样对语义影响较小的词。

示例:'I', 'love', 'NLP''love', 'NLP'

词形还原 (Lemmatization):

将单词还原到它的基本形式。

示例:"running" → "run"

词性标注 (POS Tagging):

给每个单词标注它的语法类别,如名词、动词等。

示例:"I love NLP" → ('I', 'PRP'), ('love', 'VBP'), ('NLP', 'NN')

第二部分:NLP 工具使用

我们通过实践了解 NLTK 和 spaCy 的基础用法。

NLTK 基础用法

安装 NLTK:

pip install nltk

  1. 文本分词
    import nltk
    from nltk.tokenize import word_tokenize, sent_tokenize

下载 NLTK 数据

nltk.download('punkt')

示例文本

text = "Natural Language Processing (NLP) is exciting! It helps computers understand human language."

句子分割

sentences = sent_tokenize(text)

print("句子分割:", sentences)

单词分割

words = word_tokenize(text)

print("单词分割:", words)

  1. 去停用词

from nltk.corpus import stopwords

下载停用词数据

nltk.download('stopwords')

获取英语停用词表

stop_words = set(stopwords.words('english'))

去除停用词

filtered_words = word for word in words if word.lower() not in stop_words

print("去停用词:", filtered_words)

  1. 词性标注

from nltk import pos_tag

下载词性标注数据

nltk.download('averaged_perceptron_tagger')

词性标注

pos_tags = pos_tag(filtered_words)

print("词性标注:", pos_tags)

  1. 词形还原

from nltk.stem import WordNetLemmatizer

下载词形还原数据

nltk.download('wordnet')

lemmatizer = WordNetLemmatizer()

示例

lemmas = lemmatizer.lemmatize(word) for word in filtered_words

print("词形还原:", lemmas)

spaCy 基础用法

安装 spaCy:

pip install spacy

python -m spacy download en_core_web_sm

  1. 加载文本
    import spacy

加载预训练模型

nlp = spacy.load('en_core_web_sm')

示例文本

text = "Natural Language Processing (NLP) is exciting! It helps computers understand human language."

doc = nlp(text)

  1. 文本分词

单词分割

tokens = token.text for token in doc

print("单词分割:", tokens)

  1. 词性标注

词性标注

pos_tags = (token.text, token.pos_) for token in doc

print("词性标注:", pos_tags)

  1. 命名实体识别 (NER)

命名实体识别

entities = (ent.text, ent.label_) for ent in doc.ents

print("命名实体识别:", entities)

相关推荐
天天进步20154 分钟前
Pixelle-Video 源码解析 #15:AI 视频片段生成:从静态配图到动态短视频
人工智能·音视频
深瞳智检6 分钟前
深瞳智检(小程序)正式上线!【免费/快捷/方便】获取YOLO检测数据集
人工智能·yolo·目标检测·小程序·数据集·cv数据收集
AI行业说7 分钟前
誉财自动化YC‑18‑M8045线上模板机:四轴柔性缝制技术如何重塑服装产线
大数据·人工智能·自动化·缝纫机器人·模板机
美狐美颜SDK开放平台10 分钟前
直播APP开发核心功能详解:美颜SDK、音视频、礼物等功能成本怎么计算?
android·人工智能·计算机视觉·音视频·直播美颜sdk
javartisan12 分钟前
AI 大模型工程师完整学习目录
人工智能·学习
程序员阿明13 分钟前
spring boot4集成spring AI 2
人工智能·spring boot·spring
星栈独行19 分钟前
自定义 UI-UX-Pro-Max 的 CSV 知识库,把 AI 生成的后台拉回行业该有的样子
前端·人工智能·ui·ux
王志来1379447300819 分钟前
场景驱动选型:4U工控机箱如何匹配多元化工业需求
大数据·人工智能·python
vivo互联网技术21 分钟前
TinySR:面向真实世界图像超分辨率的轻量级扩散模型
人工智能·算法
wangchunyu11422 分钟前
OpenHands介绍和安装说明
人工智能