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

Python 自然语言处理(NLP)和文本挖掘的常规操作过程

Python 自然语言处理(NLP)和文本挖掘

自然语言处理(NLP)和文本挖掘是数据科学中的重要领域,涉及对文本数据的分析和处理。Python 提供了丰富的库和工具,用于执行各种 NLP 和文本挖掘任务。以下是一些常见的任务和实现方法,结合代码示例和理论解释。

1. 常见的 NLP 和文本挖掘任务

1.1 文本预处理

文本预处理是 NLP 的第一步,包括去除噪声、分词、去除停用词等。

Python复制

import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
import string# 下载 NLTK 数据
nltk.download('punkt')
nltk.download('stopwords')# 示例文本
text = "This is a sample text for natural language processing. It includes punctuation and stopwords."# 分词
tokens = word_tokenize(text)# 去除标点符号和停用词
stop_words = set(stopwords.words('english'))
filtered_tokens = [word for word in tokens if word.lower() not in stop_words and word not in string.punctuation]print(filtered_tokens)
1.2 词性标注

词性标注是将文本中的单词标注为名词、动词、形容词等。

Python复制

from nltk import pos_tag# 词性标注
tagged = pos_tag(filtered_tokens)
print(tagged)
1.3 命名实体识别(NER)

命名实体识别是识别文本中的实体,如人名、地名、组织名等。

Python复制

from nltk import ne_chunk# 命名实体识别
entities = ne_chunk(tagged)
print(entities)
1.4 情感分析

情感分析是判断文本的情感倾向,如正面、负面或中性。

Python复制

from textblob import TextBlob# 示例文本
text = "I love this product! It is amazing."
blob = TextBlob(text)# 情感分析
sentiment = blob.sentiment
print(sentiment)
1.5 主题建模

主题建模是发现文本数据中的主题。

Python复制

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation# 示例文本
documents = ["This is a sample document.", "Another document for NLP.", "Text mining is fun."]# 向量化
vectorizer = CountVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)# 主题建模
lda = LatentDirichletAllocation(n_components=2, random_state=42)
lda.fit(X)# 输出主题
for topic_idx, topic in enumerate(lda.components_):print(f"Topic {topic_idx}:")print(" ".join([vectorizer.get_feature_names_out()[i] for i in topic.argsort()[:-11:-1]]))
1.6 文本分类

文本分类是将文本分配到预定义的类别中。

Python复制

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline# 示例数据
texts = ["I love this product!", "This is a bad product.", "I am happy with the service."]
labels = [1, 0, 1]  # 1 表示正面,0 表示负面# 创建分类器
model = make_pipeline(TfidfVectorizer(), MultinomialNB())# 训练模型
model.fit(texts, labels)# 预测
predicted_labels = model.predict(["I am very satisfied with the product."])
print(predicted_labels)

2. 文本挖掘任务

2.1 文本聚类

文本聚类是将文本分组到不同的类别中。

Python复制

from sklearn.cluster import KMeans# 向量化
vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)# 聚类
kmeans = KMeans(n_clusters=2, random_state=42)
kmeans.fit(X)# 输出聚类结果
print(kmeans.labels_)
2.2 关键词提取

关键词提取是从文本中提取重要的词汇。

Python复制

from rake_nltk import Rake# 示例文本
text = "Natural language processing is a field of study that focuses on the interactions between computers and human language."# 关键词提取
rake = Rake()
rake.extract_keywords_from_text(text)
keywords = rake.get_ranked_phrases()
print(keywords)
2.3 文本摘要

文本摘要是从长文本中提取关键信息。

Python复制

from gensim.summarization import summarize# 示例文本
text = "Natural language processing is a field of study that focuses on the interactions between computers and human language. It involves various tasks such as text classification, sentiment analysis, and machine translation."# 文本摘要
summary = summarize(text)
print(summary)

3. 总结

Python 提供了丰富的库和工具,用于执行各种自然语言处理和文本挖掘任务。通过使用 NLTK、TextBlob、Scikit-learn、Gensim 等库,你可以轻松地进行文本预处理、词性标注、情感分析、主题建模、文本分类、文本聚类、关键词提取和文本摘要等任务。希望这些代码示例和解释能帮助你更好地理解和应用自然语言处理和文本挖掘技术。

相关文章:

Python 自然语言处理(NLP)和文本挖掘的常规操作过程

Python 自然语言处理(NLP)和文本挖掘 自然语言处理(NLP)和文本挖掘是数据科学中的重要领域,涉及对文本数据的分析和处理。Python 提供了丰富的库和工具,用于执行各种 NLP 和文本挖掘任务。以下是一些常见的…...

掌握SQLite_轻量级数据库的全面指南

1. 引言 1.1 SQLite简介 SQLite 是一个嵌入式关系型数据库管理系统,它不需要单独的服务器进程或系统配置。它的设计目标是简单、高效、可靠,适用于各种应用场景,尤其是移动设备和嵌入式系统。 1.2 为什么选择SQLite 轻量级:文件大小通常在几百KB到几MB之间。无服务器架构…...

PH热榜 | 2025-02-16

1. Cal.com Routing 标语:根据客户线索,系统会智能地自动安排约会。 介绍:告别繁琐的排期!Cal.com 推出了新的路由功能,能更智能地分配预约,让你的日程安排更顺畅。这项功能运用智能逻辑和深入的数据分析…...

数据库基本概念及基本使用

数据库基本概念 什么是数据库: 数据库特点: 常见的数据库软件: 不同的公司进行不同的实践,生成了不同的产品。 比如买汽车,汽车只是一个概念,你要买哪个牌子哪个型号的汽车,才是真正的汽车的一…...

gozero实现数据库MySQL单例模式连接

在 GoZero 框架中实现数据库的单例连接可以通过以下步骤来完成。GoZero 使用 gorm 作为默认的数据库操作框架,接下来我会展示一个简单的单例模式实现。 ### 1. 定义数据库连接的单例结构 首先,你需要定义一个数据库连接的结构体,并在初始化…...

CSS flex布局 列表单个元素点击 本行下插入详情独占一行

技术栈:Vue2 javaScript 简介 在实际开发过程中有遇到一个场景:一个list,每行个数固定,点击单个元素后,在当前行与下一行之间插入一行元素详情,便于更直观的查看到对应的数据详情。 这种情形&#xff0c…...

无人机航迹规划: 梦境优化算法(Dream Optimization Algorithm,DOA)求解无人机路径规划MATLAB

一、梦境优化算法 梦境优化算法(Dream Optimization Algorithm,DOA)是一种新型的元启发式算法,其灵感来源于人类的梦境行为。该算法结合了基础记忆策略、遗忘和补充策略以及梦境共享策略,通过模拟人类梦境中的部分记忆…...

权限五张表

重点:权限五张表的设计 核心概念: 在权限管理系统中,经典的设计通常涉及五张表,分别是用户表、角色表、权限表、用户角色表和角色权限表。这五张表的设计可以有效地管理用户的权限,确保系统的安全性和灵活性。 用户&…...

Docker-数据卷

1.数据卷 容器是隔离环境,容器内程序的文件、配置、运行时产生的容器都在容器内部,我们要读写容器内的文件非常不方便。大家思考几个问题: 如果要升级MySQL版本,需要销毁旧容器,那么数据岂不是跟着被销毁了&#xff1…...

在Linux系统下修改Docker的默认存储路径

在Linux系统下修改Docker的默认存储路径可以通过多种方法实现,下边是通过修改daemon.json文件方式实现 查看当前Docker存储路径 使用命令 docker info | grep "Docker Root Dir" 查看当前Docker的存储路径,默认为 /var/lib/docker 停止Docker…...

IT : 是工作還是嗜好? Delphi 30周年快乐!

又到2月14日了, 自从30多年前收到台湾宝蓝(Borland)公司一大包的3.5 磁盘片, 上面用黑色油性笔写着Delphi Beta开始, Delphi便和我的工作生涯有了密不可分的关系. 一年后Delphi大获成功, 自此对于使用Delphi的使用者来说2月14日也成了一个特殊的日子! 我清楚记得Delphi Beta使用…...

DeepPose

目录 摘要 Abstract DeepPose 算法框架 损失函数 创新点 局限性 训练过程 代码 总结 摘要 DeepPose是首个将CNN应用于姿态估计任务的模型。该模型在传统姿态估计方法的基础上,通过端到端的方式直接从图像中回归出人体关键点的二维坐标,避免了…...

[HarmonyOS]鸿蒙(添加服务卡片)推荐商品 修改卡片UI(内容)

什么是服务卡片 ? 鸿蒙系统中的服务卡片(Service Card)就是一种轻量级的应用展示形式,它可以让用户在不打开完整应用的情况下,快速访问应用内的特定功能或信息。以下是服务卡片的几个关键点: 轻量级&#…...

DeepSeek R1 本地部署和知识库搭建

一、本地部署 DeepSeek-R1,是幻方量化旗下AI公司深度求索(DeepSeek)研发的推理模型 。DeepSeek-R1采用强化学习进行后训练,旨在提升推理能力,尤其擅长数学、代码和自然语言推理等复杂任务 。 使用DeepSeek R1, 可以大大…...

领域驱动设计叕创新,平安保险申请DDD专利

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 见下图: 这个名字拼得妙:领域驱动设计模式。 是领域驱动设计?还是设计模式?还是领域驱动设计设计模式?和下面这个知乎文章的…...

团体程序设计天梯赛-练习集——L1-041 寻找250

前言 10分的题,主要的想法就一个,按这个想法可以出几个写法 L1-041 寻找250 对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值…...

动量突破均值回归策略

动量突破均值回归策略:量化交易中的双剑合璧 引言 在量化交易的世界中,动量策略和均值回归策略是两种经典且广泛应用的策略。动量策略基于“强者恒强”的理念,认为过去表现良好的资产在未来一段时间内仍会继续表现良好;而均值回…...

vue3.x 的provide 与 inject详细解读

在 Vue 3.x 中,provide 和 inject 是一对用于实现依赖注入的 API。它们允许父组件向其所有子组件(无论嵌套多深)传递数据或方法,而不需要通过 props 逐层传递。这在开发复杂组件或高阶组件时非常有用。 1. provide 的基本用法 p…...

C#控制台大小Console.SetWindowSize函数失效解决

在使用C#修改控制台大小相关API会失效. 由于VS将控制台由命令提示符变成了终端,因此在设置大小时会出现问题 测试代码: Console.SetWindowSize(100, 50);...

spring boot 对接aws 的S3 服务,实现上传和查询

1.aws S3介绍 AWS S3(Amazon Simple Storage Service)是亚马逊提供的一种对象存储服务,旨在提供可扩展、高可用性和安全的数据存储解决方案。以下是AWS S3的一些主要特点和功能: 1.1. 对象存储 对象存储模型:S3使用…...

25/2/16 <算法笔记> DirectPose

DirectPose 是一种直接从图像中预测物体的 6DoF(位姿:6 Degrees of Freedom)姿态 的方法,包括平移和平面旋转。它在目标检测、机器人视觉、增强现实(AR)和自动驾驶等领域中具有广泛应用。相比于传统的位姿估…...

数据结构-8.Java. 七大排序算法(下篇)

本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 下篇主要实现最后一种排序算法: 归并排序。同时把中篇剩下的快排非递归实现补上. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是…...

缓存穿透、缓存击穿、缓存雪崩的区别与解决方案

1. 缓存穿透(Cache Penetration) 定义:大量请求查询 数据库中不存在的数据,导致请求绕过缓存直接访问数据库,造成数据库压力过大。 场景: 恶意攻击:例如用不存在的用户ID频繁请求。 业务误操作…...

DeepSeek私有化部署+JAVA通过API调用离线大模型问答

在当今快速发展的数字化时代,企业对于高效、灵活的技术解决方案需求日益增长。DeepSeek作为一款领先的智能搜索与分析平台,凭借其强大的数据处理能力和精准的搜索结果,已经成为众多企业提升运营效率的得力助手。为了更好地满足企业对数据安全…...

【go语言规范】Gopherfest 2015 | Go Proverbs with Rob Pike的 总结

根据 Gopherfest 2015 | Go Proverbs with Rob Pike 的演讲,总结内容如下: 虽然已是十年前的产物,但是proverbs的价值依旧存在 以下是整合补充内容后的完整总结,涵盖 Rob Pike 在 Gopherfest 2015 演讲 “Go Proverbs” 中的核心…...

【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版

针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版 链接:https://pan.xunlei.com/s/VOJ8PZd4avMubnDzHQAeZDxWA1?pwdnjwm# 直接复制到游戏安装目录,保持与游戏主程序同目录下。...

内容中台驱动企业数字化内容管理高效协同架构

内容概要 在数字化转型加速的背景下,企业对内容管理的需求从单一存储向全链路协同演进。内容中台作为核心支撑架构,通过统一的内容资源池与智能化管理工具,重塑了内容生产、存储、分发及迭代的流程。其核心价值在于打破部门壁垒,…...

【第14章:神经符号集成与可解释AI—14.4 神经符号集成与可解释AI的未来发展趋势与挑战】

想象一下,如果AI既能像人类一样直觉感知(比如一眼认出街角的咖啡店),又能像数学家一样逻辑推理(比如计算最优路线避开拥堵),这个世界会变成什么样?这种“双脑协同”正是神经符号集成技术的终极目标。 但现实是,当前99%的AI系统要么只会“死记硬背”数据(如深度学习模…...

[JVM篇]虚拟机性能监控、故障处理工具

虚拟机性能监控、故障处理工具 基础故障处理工具 jps(JVM Peocess Status Tool - 虚拟机进程状况工具) jstat(JVM Statistics Monitoring Too - 虚拟机统计信息监视工具) jinfo( Configuration info for Java - Java配置信息工具) jmap(Memory Map for…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_t 类型

ngx_cycle_t 定义在 src/core/ngx_core.h typedef struct ngx_cycle_s ngx_cycle_t; ngx_cycle_s 定义在 src/core/ngx_cycle.h struct ngx_cycle_s {void ****conf_ctx;ngx_pool_t *pool;ngx_log_t *log;ngx_log_t …...