如何使用 Python 进行文本挖掘?

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学.

针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。

汇总合集:

  • 《大模型面试宝典》(2024版) 发布!
  • 圈粉无数!《PyTorch 实战宝典》火了!!!

我们知道,各种形式的书面交流,如社交媒体和电子邮件,都会产生大量非结构化的文本数据。这些数据包含有价值的见解和信息。

然而,手动从大量原始文本中提取相关见解是非常费力且耗时的。文本挖掘解决了这一难题。

理解自然语言处理

自然语言处理是一种人工智能。它帮助计算机理解和使用人类语言与人交流。自然语言处理使计算机能够以一种合理的方式解释和回应我们所说的话。

自然语言处理的关键概念

  • 词干提取和词形还原:将词语还原到其基本形式。
  • 停用词:去除诸如“the”,“is”和“at”之类没有太多意义的常见词。
  • 词性标注:为每个词分配词性,如名词、动词和形容词。
  • 命名实体识别(NER):识别文本中的专有名词,如人名、组织和地点。

用 Python 开始文本挖掘

让我们看看如何用Python开始文本挖掘的步骤。

步骤1:设置环境

要在Python中开始文本挖掘,你需要一个合适的环境。Python提供了各种简化文本挖掘任务的库。

确保你已经安装了Python。你可以从python.org下载。

通过输入以下代码来设置虚拟环境。创建虚拟环境是一个好的做法。这可以使你的项目依赖关系保持隔离。

python -m venv textmining_env
source textmining_env/bin/activate  # 在Windows上使用 `textmining_env\Scripts\activate`

步骤2:安装必要的库

Python有几个用于文本挖掘的库。以下是一些必备的库:

NLTK(自然语言工具包):一个功能强大的自然语言处理库。

pip install nltk

Pandas:用于数据处理和分析。

pip install pandas

NumPy:用于数值计算。

pip install numpy

有了这些库,你就可以开始在Python中进行文本挖掘了。

自然语言处理的基本术语

让我们探索自然语言处理中的基本术语。

分词

分词是自然语言处理的第一步。它涉及将文本分解为称为标记的小单元,通常是单词或短语。这个过程对于文本分析至关重要,因为它帮助计算机理解和处理文本。

示例代码和输出:

import nltk
from nltk.tokenize import word_tokenize
# 下载punkt标记器模型
nltk.download('punkt')
# 示例文本
text = "In Brazil, they drive on the right-hand side of the road."
# 对文本进行分词
tokens = word_tokenize(text)
print(tokens)

输出:

['In', 'Brazil', ',', 'they', 'drive', 'on', 'the', 'right-hand', 'side', 'of', 'the', 'road', '.']

词干提取

词干提取将单词还原到其根形式。它通过去除后缀来生成单词的词干。有两种常见的词干提取器:Porter 和Lancaster。

  • Porter 词干提取器:较不激进,广泛使用。
  • Lancaster 词干提取器:较激进,有时会去除更多内容。

示例代码和输出:

from nltk.stem import PorterStemmer, LancasterStemmer
# 示例单词
words = ["waited", "waiting", "waits"]
# Porter词干提取器
porter = PorterStemmer()
for word in words:print(f"{word}: {porter.stem(word)}")
# Lancaster词干提取器
lancaster = LancasterStemmer()
for word in words:print(f"{word}: {lancaster.stem(word)}")

输出:

waited: wait
waiting: wait
waits: wait
waited: wait
waiting: wait
waits: wait

词形还原

词形还原与词干提取相似,但会考虑上下文。它将单词转换为其基本或词典形式。与词干提取不同,词形还原确保基本形式是一个有意义的单词。

示例代码和输出:

import nltk
from nltk.stem import WordNetLemmatizer
# 下载wordnet语料库
nltk.download('wordnet')
# 示例单词
words = ["rocks", "corpora"]
# 词形还原器
lemmatizer = WordNetLemmatizer()
for word in words:print(f"{word}: {lemmatizer.lemmatize(word)}")

输出:

rocks: rock
corpora: corpus

停用词
停用词是对文本分析贡献较小的常见词语。像“the”,“is”和“at”这样的词被视为停用词。去除它们有助于集中关注文本中的重要词语。

示例代码和输出:

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
# 示例文本
text = "Cristiano Ronaldo was born on February 5, 1985, in Funchal, Madeira, Portugal."
# 对文本进行分词
tokens = word_tokenize(text.lower())
# 移除停用词
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
# 下载stopwords语料库
nltk.download('stopwords')
# 移除停用词
stop_words = set(stopwords.words('english'))
filtered_tokens = [word for word in tokens if word not in stop_words]
print(filtered_tokens)

输出:

['cristiano', 'ronaldo', 'born', 'february', '5', ',', '1985', ',', 'funchal', ',', 'madeira', ',', 'portugal', '.']

高级自然语言处理技术

词性标注(POS)

词性标注是指将文本中的每个单词标记为名词、动词、形容词或副词。这对于理解句子的构成至关重要。这有助于分解句子并查看单词之间的连接,对于诸如识别名字、理解情感和语言翻译等任务非常重要。

示例代码和输出:

import nltk
from nltk.tokenize import word_tokenize
from nltk import ne_chunk
# 示例文本
text = "Google's CEO Sundar Pichai introduced the new Pixel at Minnesota Roi Centre Event."
# 对文本进行分词
tokens = word_tokenize(text)
# 词性标注
pos_tags = nltk.pos_tag(tokens)
# 命名实体识别
ner_tags = ne_chunk(pos_tags)
print(ner_tags)

输出:

(S(GPE Google/NNP)'s/POS(ORGANIZATION CEO/NNP Sundar/NNP Pichai/NNP)introduced/VBDthe/DTnew/JJPixel/NNPat/IN(ORGANIZATION Minnesota/NNP Roi/NNP Centre/NNP)Event/NNP./.)

块解析(Chunking)

块解析将小单位(如单词)分组为更大、更有意义的单位(如短语)。在自然语言处理中,块解析用于在句子中找到短语,如名词短语或动词短语。这比仅查看单词更有助于理解句子结构,对于句法分析和信息提取等任务非常重要。

示例代码和输出:

import nltk
from nltk.tokenize import word_tokenize
# 示例文本
text = "We saw the yellow dog."
# 对文本进行分词
tokens = word_tokenize(text)
# 词性标注
pos_tags = nltk.pos_tag(tokens)
# 块解析
grammar = "NP: {<DT>?<JJ>*<NN>}"
chunk_parser = nltk.RegexpParser(grammar)
tree = chunk_parser.parse(pos_tags)
print(tree)

输出:

(S (NP We/PRP) saw/VBD (NP the/DT yellow/JJ dog/NN) ./.)

块解析有助于从文本中提取有意义的短语,这可以用于各种自然语言处理任务,如句法分析、信息检索和问答系统。

文本挖掘的实际例子

情感分析

情感分析识别文本中的情感,如正面、负面或中性。它有助于理解人们的感受。企业使用它来了解客户的意见,监控其声誉,并改进产品。情感分析常用于追踪社交媒体,分析客户反馈和进行市场研究。

文本分类

文本分类是将文本分类到预设的类别中。它广泛用于垃圾邮件检测、情感分析和主题分组。通过自动标记文本,企业可以更好地组织和处理大量信息。

命名实体提取

命名实体提取在文本中查找并分类特定事物,如人名、地名、组织和日期。它用于信息提取,提取重要事实和改进搜索引擎。命名实体提取将杂乱的文本转换为有组织的数据,识别关键元素。

结论

Python中的文本挖掘可以清理杂乱的文本并发现有用的见解。它使用诸如将文本分解为单词(分词)、简化单词(词干提取和词形还原)和标注词性(词性标注)等技术。

高级步骤如识别名字(命名实体识别)和分组单词(块解析)提高了数据提取的效果。实际应用包括情感分析和文本分类。电子商务、医疗保健、金融和法律领域的案例研究显示了文本挖掘如何带来更明智的决策和新的想法。

随着文本挖掘的发展,它在当今数字世界中变得越来越重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之计数排序算法【图文详解】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

力扣每日一题 6/8

3040.相同分数的最大操作数目 II[中等] 题目&#xff1a; 给你一个整数数组 nums &#xff0c;如果 nums 至少 包含 2 个元素&#xff0c;你可以执行以下操作中的 任意 一个&#xff1a; 选择 nums 中最前面两个元素并且删除它们。选择 nums 中最后两个元素并且删除它们。选…

通过网址下载静态网页的仿站工具

下载地址&#xff1a;通过网址下载静态网页的仿站工具 超级实用的一款工具

学习笔记——路由网络基础——直连路由(direct)

二、直连路由(direct) 直连路由(direct)&#xff1a;直接相连&#xff0c;接口配置好ip地址并up后自动生成的路由。默认优先级为0 Destination&#xff1a;表示路由的目的地址。用来标识IP包的目的地址或目的网络。 Mask&#xff1a;表示目的地址的子网掩码长度。 与目的地址…

MyBatisPlus总结二

MybatisPlus总结一在这&#xff1a; MybatisPlus总结1/2-CSDN博客 六、分页查询&#xff1a; 6.1.介绍&#xff1a; MybatisPlus内置了分页插件&#xff0c;所以我们只需要配置一个分页拦截器就可以了&#xff0c;由于不同的数据库的分页的方式不一样&#xff0c;例如mysql和…

轻松连接远程服务器SecureCRT for Mac/Windows

SecureCRT是一款功能强大的终端仿真器和文件传输工具&#xff0c;专为网络管理员、开发人员和系统工程师设计。它支持SSH、Telnet、RDP和串口等多种协议&#xff0c;提供安全、高效的远程访问和管理体验。SecureCRT具有多窗口/多标签管理、自定义终端仿真、颜色方案优化等高级功…

Linux内核下网卡硬件 MAC 和PHY分析笔记

1 简介 通常CPU自带的以太网接口是MAC控制器&#xff0c;为了实现完整的功能&#xff0c;外围硬件还需要增加一个PHY芯片。 PHY芯片在建立网络连接时负责协商确定网速、全双工 或者 半双工等。在正常通讯时负责在MAC控制器的MII信号 与 网线中的信号之间做转换。 本文的内核代…

最快的开源UDP传输工具:Kcptun

Kcptun&#xff1a;极速网络隧道&#xff0c;让数据传输飞起来&#xff01;- 精选真开源&#xff0c;释放新价值。 概览 kcptun 是一个轻量级、高性能的TCP/UDP网络加速工具&#xff0c;由xtaci开发并托管在GitHub上。它通过使用kcp协议&#xff0c;为网络数据传输提供了一个快…

[linux] makefilegdb理解

目录 Linux项目自动化构建工具-make/Makefile 背景 理解 依赖关系 依赖方法 原理 Linux调试器-gdb使用 背景 开始使用 Linux项目自动化构建工具-make/Makefile 背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力 一个工…

STFT (短时傅立叶变换)

短时傅立叶变换 (STFT) 详细介绍 1. 基本概念 傅立叶变换&#xff08;Fourier Transform&#xff09;用于将一个信号从时间域转换到频率域&#xff0c;然而它假设信号是平稳的&#xff0c;这意味着信号的频率成分在整个时间上是不变的。对于非平稳信号&#xff0c;傅立叶变换…

抖音bd-ticket-guard-ree-public-key

上次的文章里说到bd-ticket-guard-ree-public-key是根据rsa生成私钥1跟公钥1里的私钥1通过函数加密得到的。 最近我发现那个加密函数的加密原理是通过私钥1再用不同的rsa算法生成一对小的hex后的私钥2跟公钥2&#xff0c;私钥2比公钥2短&#xff0c;然后bd-ticket-guard-ree-p…

推荐一款AI音乐生成工具和一款浏览器

大家好&#xff0c;今天给大家带来2款软件&#xff0c;一款是移动浏览器&#xff0c;一款是AI音乐生成软件。 Alook Alook是一款移动端浏览器&#xff0c;它以其独特的无广告、无推送、无新闻的"三无"特性&#xff0c;为用户提供了一个清爽的上网环境。Alook不仅界…

构建LangChain应用程序的示例代码:25、LangChain中的FakeListLLM类使用指南

LangChain中的FakeListLLM类使用指南 LangChain提供了一个fake LLM类&#xff0c;可以用于测试。这允许您模拟LLM的调用&#xff0c;并模拟如果LLM以某种方式响应会发生什么。 在这个笔记本中&#xff0c;我们将介绍如何使用它。 我们首先在代理中使用FakeLLM。 from langc…

rust的类型转换和一些智能指针用法(四)

基础类型 使用 as 关键字&#xff1a;用于基本数值类型之间的转换&#xff0c;例如将 i32 转换为 u32。 例子&#xff1a;let x: i32 10; let y: u64 x as u64; 使用标准库中的转换方法&#xff1a;如 from() 和 into() 方法&#xff0c;这些方法通常用于无风险的转换&#…

11本AI人工智能相关电子书推荐(带下载地址)

1. 《生命3.0》 电子书链接&#xff1a;百度网盘 请输入提取码 提取码: vxnw 2. 《千脑智能》 电子书链接&#xff1a; 百度网盘 请输入提取码 提取码: we8u 3. 《AI 3.0》 电子书链接&#xff1a; 百度网盘 请输入提取码 提取码: nwu4 4. 《元宇宙与数字经济》 电子书链接…

【算法小记】深度学习——时间序列数据分析 Time series Data Analysis

在本篇博客中将简单介绍常见的几种循环神经网络和一维卷积神经网络&#xff0c;并使用一些简答的数据进行拟合分析。本文相对适合刚入门的同学&#xff0c;同时也作为自己过去一段时间学习的总结和记录&#xff0c;现在神经网络框架已经非常完善的支持了很多常见和有效的深度学…

【优选算法】BFS解决FloodFill算法

一、经验总结 什么是FloodFill算法&#xff1f; FloodFill算法是一种用于填充连通区域的算法&#xff0c;通常用于图像处理和计算机图形学中。它从给定的起始点开始&#xff0c;向周围相邻的像素进行扩散填充&#xff0c;直到遇到边界或者其他指定条件停止。 FloodFill算法还…

TCP/IP 接收发送缓存大小的自动调优 Auto Tuning

内部机制已实现自动调整缓存大小。参考Tuning the network。 1. net.ipv4.tcp_moderate_rcvbuf 是 Linux 内核的一个参数,用于控制 TCP 接收缓冲区大小的自动调整。 当这个参数被激活时,Linux 内核会根据当前网络条件自动调整 TCP 接收缓冲区的大小,以优化网络性能。它会根…

新买的移动硬盘无法识别

文章目录 背景解决方案 背景 同事新买的移动硬盘&#xff0c;插在电脑上识别不出来盘符&#xff0c;检查了一下&#xff0c;硬盘没问题应该&#xff0c;是ssk的硬盘盒M.2的SSD&#xff0c;硬盘驱动也是正常的&#xff0c;插拔了几次&#xff0c;都不识别&#xff0c;换了太电脑…

【Java】解决Java报错:OutOfMemoryError

文章目录 引言1. 错误详解2. 常见的出错场景2.1 内存泄漏2.2 大数据结构2.3 JVM内存参数配置不当 3. 解决方案3.1 内存泄漏检测与修复3.2 优化数据结构3.3 调整JVM内存参数3.4 使用弱引用 4. 预防措施4.1 定期进行内存分析4.2 合理设计数据结构4.3 使用合适的JVM内存参数4.4 优…