当前位置: 首页 > news >正文

Python 实现 NLP 的完整流程

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长。

🔍 博客内容包括:

  • Java核心技术与微服务:涵盖Java基础、JVM、并发编程、Redis、Kafka、Spring等,帮助您全面掌握企业级开发技术。
  • 大数据技术:涵盖Hadoop(HDFS)、Hive、Spark、Flink、Kafka、Redis、ECharts、Zookeeper等相关技术。
  • 开发工具:分享常用开发工具(IDEA、Git、Mac、Alfred、Typora等)的使用技巧,提升开发效率。
  • 数据库与优化:总结MySQL及其他常用数据库技术,解决实际工作中的数据库问题。
  • Python与大数据:专注于Python编程语言的深度学习,数据分析工具(如Pandas、NumPy)和大数据处理技术,帮助您掌握数据分析、数据挖掘、机器学习等技术。
  • 数据结构与算法:总结数据结构与算法的核心知识,提升编程思维,帮助您应对大厂面试挑战。

🌟 我的目标:持续学习与总结,分享技术心得与解决方案,和您一起探索技术的无限可能!在这里,我希望能与您共同进步,互相激励,成为更好的自己。

📣 欢迎订阅本专栏,与我一起在这个知识的海洋中不断学习、分享和成长!💻🚀


📍版权声明:本博客所有内容均为原创,遵循CC 4.0 BY-SA协议,转载请注明出处。

目录

1. 安装和导入必要的库

2. 文本数据准备

3. 文本预处理

3.1 小写化

3.2 分词(Tokenization)

3.3 去除停用词

3.4 词干提取(Stemming)

4. 特征提取

5. 训练测试数据集划分

6. 训练模型

7. 评估模型

8. 模型预测

9. 总结



1. 安装和导入必要的库

首先,确保已安装必要的 NLP 库:

pip install numpy pandas matplotlib scikit-learn nltk spacy

然后导入必要的 Python 库:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
import spacy

2. 文本数据准备

在实际应用中,你可能需要从文件、数据库或网页中获取文本数据。这里我们以一个简单的文本数据集为例:

# 示例文本数据
data = {'text': ["I love programming in Python.","Python is a great language for machine learning.","Natural language processing is fun!","I enjoy solving problems using code.","Deep learning and NLP are interesting fields.","Machine learning and AI are revolutionizing industries."],'label': [1, 1, 1, 0, 1, 0]  # 1表示正面情感,0表示负面情感
}df = pd.DataFrame(data)
print(df)

3. 文本预处理

文本预处理是 NLP 的关键步骤,通常包括:分词、去除停用词、词干提取和小写化。

3.1 小写化

将文本中的所有字母转换为小写,确保词汇的一致性。

# 小写化
df['text'] = df['text'].apply(lambda x: x.lower())
3.2 分词(Tokenization)

分词是将一段文本分割成一个个单独的词。

nltk.download('punkt')  # 下载 punkt 分词器# 分词
df['tokens'] = df['text'].apply(word_tokenize)
print(df['tokens'])
3.3 去除停用词

停用词是一些常见但不携带实际信息的词,如 "the", "is", "and" 等。我们需要去除这些词。

nltk.download('stopwords')  # 下载停用词库stop_words = set(stopwords.words('english'))# 去除停用词
df['tokens'] = df['tokens'].apply(lambda x: [word for word in x if word not in stop_words])
print(df['tokens'])
3.4 词干提取(Stemming)

词干提取是将词语还原为其基本形式(词干)。例如,将“running”还原为“run”。

from nltk.stem import PorterStemmerstemmer = PorterStemmer()# 词干提取
df['tokens'] = df['tokens'].apply(lambda x: [stemmer.stem(word) for word in x])
print(df['tokens'])

4. 特征提取

文本数据无法直接用于机器学习模型,因此需要将其转换为数字特征。常见的特征提取方法是 TF-IDF(Term Frequency-Inverse Document Frequency)。

# 使用 TF-IDF 向量化文本
vectorizer = TfidfVectorizer()# 将文本数据转换为 TF-IDF 特征矩阵
X = vectorizer.fit_transform(df['text'])# 查看转换后的 TF-IDF 特征矩阵
print(X.toarray())

5. 训练测试数据集划分

将数据集分成训练集和测试集,通常是 80% 训练集和 20% 测试集。

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, df['label'], test_size=0.2, random_state=42)print(f"训练集大小: {X_train.shape}")
print(f"测试集大小: {X_test.shape}")

6. 训练模型

我们使用 朴素贝叶斯(Naive Bayes) 模型来训练数据。朴素贝叶斯是一种常用的分类算法,适用于文本分类任务。

# 创建并训练模型
model = MultinomialNB()
model.fit(X_train, y_train)

7. 评估模型

训练好模型后,我们需要用测试集来评估模型的性能。主要评估指标包括准确率和混淆矩阵。

# 使用测试集进行预测
y_pred = model.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.4f}")# 显示混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print("混淆矩阵:")
print(conf_matrix)# 可视化混淆矩阵
plt.matshow(conf_matrix, cmap='Blues')
plt.title("Confusion Matrix")
plt.xlabel('Predicted')
plt.ylabel('True')
plt.colorbar()
plt.show()

8. 模型预测

使用训练好的模型对新的文本数据进行预测。

# 新文本数据
new_text = ["I love learning about AI and machine learning."]# 文本预处理
new_text = [text.lower() for text in new_text]
new_tokens = [word_tokenize(text) for text in new_text]
new_tokens = [[stemmer.stem(word) for word in tokens if word not in stop_words] for tokens in new_tokens]
new_text_clean = [' '.join(tokens) for tokens in new_tokens]# 特征提取
new_features = vectorizer.transform(new_text_clean)# 预测
prediction = model.predict(new_features)
print(f"预测标签: {prediction[0]}")

9. 总结

在这篇文章中,我们展示了一个完整的 NLP 流程,包括:

  1. 文本预处理:小写化、分词、去除停用词、词干提取。
  2. 特征提取:使用 TF-IDF 将文本转换为特征矩阵。
  3. 模型训练:使用朴素贝叶斯分类器进行文本分类。
  4. 模型评估:使用准确率和混淆矩阵来评估模型表现。
  5. 模型预测:对新文本进行预测。

这是一个典型的 NLP 流程,可以根据实际需求进行扩展,加入更多的特征、算法和调优步骤。

相关文章:

Python 实现 NLP 的完整流程

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…...

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>N 皇后

题目&#xff1a; 解析&#xff1a; 1.决策树&#xff1a; 代码设计&#xff1a; 根据决策树剪枝设计&#xff1a; 代码&#xff1a; class Solution {private List<List<String>> ret;private char[][] path;private boolean[] checkdig1,checkdig2,checkco…...

JEL分类号

JEL分类系统&#xff0c;是美国经济学会“经济文献杂志”(《经济文献杂志》)所创立的对经济学文献的主题分类系统&#xff0c;并被现代西方经济学界广泛采用。 该分类方法主要采用开头的一个英文字母与随后的两位阿拉伯数字一起对经济学各部类进行“辞书式”编码分类。 https:…...

设计和优化用于 AR、HUD 和高级显示系统的表面浮雕光栅

表面浮雕光栅是许多光学系统中的关键组件&#xff0c;在控制增强现实 &#xff08;AR&#xff09; 显示器、平视显示器 &#xff08;HUD&#xff09; 和其他先进光子器件中的光传播方面发挥着关键作用。作为在这个领域工作的工程师和设计师&#xff0c;您了解针对特定应用优化这…...

【今日分享】人工智能加速发现能源新材料的结构与性能

人工智能与材料国际学术会议(ICAIM)workshop9是由来自宁夏大学材料与新能源学院副院长王海龙教授及马薇副教授、杜鑫老师组成&#xff0c;他们将以“人工智能加速发现新能源新材料的结构与性能”为主题开展研讨工作&#xff0c;欢迎对该主题感兴趣的专家学者携稿加入。 loadin…...

Boost Asio TCP异步服务端和客户端

服务端 消息分两次发送&#xff0c;第一次发送head&#xff0c;第二次发送body。接收也是先接收head&#xff0c;然后通过head结构中的body长度字段再接收body。 TcpServer.h #pragma once #include <atomic> #include <vector> #include <unordered_set> #…...

1.7 ChatGPT:引领AI对话革命的致胜之道

ChatGPT:引领AI对话革命的致胜之道 随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,OpenAI 的 ChatGPT 已经成为了举世瞩目的技术突破。从普通的自动化客服到深入的创作与协作,ChatGPT 通过其卓越的语言理解和生成能力,改变了人们与计算机交互的方式…...

WPS数据分析000001

目录 一、表格的新建、保存、协作和分享 新建 保存 协作 二、认识WPS表格界面 三、认识WPS表格选项卡 开始选项卡 插入选项卡 页面布局选项卡 公式选项卡 数据选项卡 审阅选项卡 视图选项卡 会员专享选项卡 一、表格的新建、保存、协作和分享 新建 ctrlN------…...

电脑风扇声音大怎么办? 原因及解决方法

电脑风扇是电脑的重要组件之一&#xff0c;它的作用是为电脑的各个部件提供冷却&#xff0c;防止电脑过热。然而&#xff0c;有时候我们会发现电脑风扇的声音特别大&#xff0c;不仅影响我们的使用体验&#xff0c;也可能是电脑出现了一些问题。那么&#xff0c;电脑风扇声音大…...

高效实现 Markdown 转 PDF 的跨平台指南20250117

高效实现 Markdown 转 PDF 的跨平台指南 引言 Markdown 文件以其轻量化和灵活性受到开发者和技术写作者的青睐&#xff0c;但如何将其转换为易于分享和打印的 PDF 格式&#xff0c;是一个常见需求。本文整合了 macOS、Windows 和 Linux 三大平台的转换方法&#xff0c;并探讨…...

Spark Streaming的核心功能及其示例PySpark代码

Spark Streaming是Apache Spark中用于实时流数据处理的模块。以下是一些常见功能的实用PySpark代码示例&#xff1a; 基础流处理&#xff1a;从TCP套接字读取数据并统计单词数量 from pyspark import SparkContext from pyspark.streaming import StreamingContext# 创建Spar…...

自动驾驶占用网格预测

文章目录 需要阅读的文献&#xff1a;github论文仓库论文idea提取BEVFormer 需要阅读的文献&#xff1a; ⭐[ECCV 2024] SparseOcc 纯稀疏3D占用网络和 RayIoU 评估指标 ECCV 2024&#xff5c;OSP&#xff1a;自动驾驶全新建模方法&#xff0c;端到端输出任意位置的占用结果 S…...

力扣动态规划-2【算法学习day.96】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…...

软考高级5个资格、中级常考4个资格简介及难易程度排序

一、软考高级5个资格 01、网络规划设计师 资格简介&#xff1a;网络规划设计师要求考生具备全面的网络规划、设计、部署和管理能力&#xff1b;该资格考试适合那些在网络规划和设计方面具有较好理论基础和较丰富从业经验的人员参加。 02、系统分析师 资格简介&#xff1a;系统分…...

2.5 如何评估表示学习

如何评估表示学习 评估表示学习的质量和有效性是确保模型能够成功应用于实际任务的关键步骤。表示学习的目标是从数据中学习到一种有效的、低维的表示,使得下游任务(如分类、回归、聚类等)能够更好地执行。因此,评估表示学习的效果涉及多个维度,包括表示的质量、其对下游…...

Linux-day08

第17章 大数据定制篇-shell编程 shell编程快速入门 shell变量 设置环境变量 把行号打开 set nu 位置参数变量 预定义变量 在一个脚本中执行了另外一个脚本所以卡住了 CTRLC退出 运算符 operator运算符 条件判断 流程控制 单分支多分支 case语句 for循环 反复的把取出来的i值…...

stack_queue的底层,模拟实现,deque和priority_queue详解

文章目录 适配器Stack的模拟实现Queue的模拟实现vector和list的对比dequedeque的框架deque的底层 priority_queuepriority_queue的使用priority_queue的底层仿函数的使用仿函数的作用priority_queue模拟实现 适配器 适配器是一种模式&#xff0c;这种模式将类的接口转化为用户希…...

LabVIEW 实现线路板 PCB 可靠性测试

在电子设备制造领域&#xff0c;线路板 PCB&#xff08;Printed Circuit Board&#xff09;的可靠性直接影响产品的整体性能和使用寿命。企业在生产新型智能手机主板时&#xff0c;需要对 PCB 进行严格的可靠性测试&#xff0c;以确保产品在复杂环境下能稳定运行。传统的测试方…...

sqlfather笔记

这里简单记录写学习鱼皮sqlfather项目的笔记&#xff0c;以供以后学习。 运行 将前后端项目clone到本地后&#xff0c;修改对应配置文件运行项目。 后端 1.配置好mysql后运行这个sql文件建立对应的表。 2.修改数据库密码 3.修改完后运行启动类即可 4. 启动结果 5.查看A…...

RabbitMQ(四)

SpringBoot整合RabbitMQ SpringBoot整合1、生产者工程①创建module②配置POM③YAML④主启动类⑤测试程序 2、消费者工程①创建module②配置POM③YAML文件内配置&#xff1a; ④主启动类⑤监听器 3、RabbitListener注解属性对比①bindings属性②queues属性 SpringBoot整合 1、生…...

Scarab:让空洞骑士模组管理变得如此简单

Scarab&#xff1a;让空洞骑士模组管理变得如此简单 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经因为空洞骑士模组安装的复杂流程而头疼&#xff1f;是否在寻找依…...

Android Studio中文界面终极配置指南:告别英文障碍,提升开发效率

Android Studio中文界面终极配置指南&#xff1a;告别英文障碍&#xff0c;提升开发效率 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePac…...

突破百度网盘限速:面向资源获取者的高效直链解析方案

突破百度网盘限速&#xff1a;面向资源获取者的高效直链解析方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾经历过这样的场景&#xff1f;深夜下载一份重要的项目…...

中国DevOps市场格局重塑:本土合规与全球协作的平衡艺术

中国DevOps市场格局重塑&#xff1a;本土合规与全球协作的平衡艺术 中国企业的DevOps工具链选择正面临前所未有的复杂局面 随着数字经济的深入发展&#xff0c;DevOps工具链已经从单纯的技术选型问题演变为关乎企业数字化转型成败的战略决策。在当前的宏观环境下&#xff0c;…...

商业应用(12)电影院零售票务系统开发—东方仙盟练气期

未来之窗开源收银台生态未来之窗开源收银台生态&#xff1a;让中小微企业告别重复开发&#xff0c;普惠式接入多场景收银能力 在数字化转型的浪潮中&#xff0c;中小微企业的痛点往往藏在 “重复造轮子” 里 —— 便利店需要收银台、餐饮店需要收银台、游乐场需要带押金管理的收…...

HunyuanVideo-Foley创意音效作品展:突破传统声音设计的边界

HunyuanVideo-Foley创意音效作品展&#xff1a;突破传统声音设计的边界 1. 当AI遇见声音艺术 声音设计领域正在经历一场革命。传统Foley音效制作需要大量物理道具和录音设备&#xff0c;而AI技术的引入让声音创作突破了物理限制。HunyuanVideo-Foley作为新一代AI音效生成工具…...

OWL ADVENTURE 作业批改场景应用:自动识别手写算式与批阅

OWL ADVENTURE 作业批改场景应用&#xff1a;自动识别手写算式与批阅 1. 引言 想象一下&#xff0c;一位数学老师晚上十点还在台灯下&#xff0c;面前堆着厚厚一摞作业本&#xff0c;需要逐题检查、打勾、画叉&#xff0c;再写上评语。日复一日&#xff0c;这种重复性劳动不仅…...

wps操作表格时候卡顿

这里面使用英伟达显卡即可. 卡顿立马消失, intel显卡不靠谱....

深入解析 vSphere 7 vMotion 迁移实战:从单中心到跨中心的无缝迁移策略

1. vMotion迁移的核心价值与场景定位 当你凌晨三点接到机房断电预警电话时&#xff0c;vMotion可能是你最想拥抱的技术。作为vSphere的"灵魂功能"之一&#xff0c;vMotion允许我们将运行中的虚拟机在不同主机间无缝迁移&#xff0c;就像给飞行中的飞机更换引擎——用…...

React-Grid-Layout外部拖拽:从零构建可视化编辑体验

React-Grid-Layout外部拖拽&#xff1a;从零构建可视化编辑体验 【免费下载链接】react-grid-layout A draggable and resizable grid layout with responsive breakpoints, for React. 项目地址: https://gitcode.com/gh_mirrors/re/react-grid-layout 在构建现代Web应…...