用于自然语言处理的 Python:理解文本数据
一、说明
Python是一种功能强大的编程语言,在自然语言处理(NLP)领域获得了极大的普及。凭借其丰富的库集,Python 为处理和分析文本数据提供了一个全面的生态系统。在本文中,我们将介绍 Python for NLP 的一些基础知识,重点是理解文本数据和实现代码来执行各种 NLP 任务。
二、用于自然语言处理的 Python:理解文本数据
文本数据在 NLP 应用程序中起着重要作用,从情感分析到机器翻译。了解文本数据的结构和属性对于有效地处理和从中提取有意义的信息非常重要。
2.1 什么是文本数据?
通常,文本数据是指任何形式的人类可读文本。它可以来自各种媒介,包括书籍、网站、社交媒体帖子或客户评论。文本数据通常表示为字符、单词或标记的序列。
2.2 标记化:将文本分解为单元
标记化是将文本数据分解为更小、有意义的单元(称为标记)的过程。标记可以是单词、短语,甚至是单个字符。有几个库,如NLTK(自然语言工具包)和spaCy,提供高效的标记化功能。
import nltk nltk.download('punkt')text = "Python is my favourite programming language." tokens = nltk.word_tokenize(text) print(tokens)
2.3 词形还原和词干提取
词形还原和词干提取是用于规范化文本数据中的单词的技术。词形还原将单词简化为其基本形式或字典形式,称为引理。另一方面,词干分析通过删除前缀和后缀将单词修剪为根形式。这些技术有助于减少单词变化并提高后续NLP任务的效率。
from nltk.stem import WordNetLemmatizer, PorterStemmer nltk.download('wordnet')lemmatizer = WordNetLemmatizer() stemmer = PorterStemmer()word = "running" print("Lemmatized Word:",lemmatizer.lemmatize(word)) print("Stemmed Word:",stemmer.stem(word))
2.4 停用词:滤除噪音
停用词是语言中通常出现的词,不具有重要意义。停用词的示例包括“the”、“is”和“and”。在NLP中,从文本数据中删除停用词通常是有益的,因为它们会引入噪声并阻碍分析的准确性。像NLTK这样的Python库为不同的语言提供了预定义的停用词列表。
from nltk.corpus import stopwords nltk.download('stopwords')stop_words = set(stopwords.words('english')) filtered_tokens = [token for token in tokens if token not in stop_words] print(filtered_tokens)
2.5 词性 (POS) 标记
词性标记是为句子中的单词分配语法标签的过程,指示它们的句法角色。这些标签可以是名词、动词、形容词或其他词性。POS 标记对于理解文本数据中单词的上下文和含义至关重要。像NLTK和spaCy这样的库提供了高效的POS标记功能。
nltk.download('averaged_perceptron_tagger')pos_tags = nltk.pos_tag(tokens) print(pos_tags)
三、不同应用和目的
3.1 命名实体识别 (NER)
命名实体识别是 NLP 的一个子任务,涉及识别和分类文本数据中的命名实体。命名实体可以是人员、组织、位置或任何其他专有名词的名称。像spaCy这样的Python库为NER提供了预先训练的模型,使得从文本中提取有价值的信息变得更加容易。
import spacynlp = spacy.load('en_core_web_sm') doc = nlp("Apple is looking at buying U.K. startup for $1 billion")for ent in doc.ents:print(ent.text, ent.label_)
3.2 情绪分析
情感分析是确定文本数据的情绪或情感基调的过程。它涉及将文本分类为正面、负面或中性。Python 提供了各种库,例如 NLTK 和 TextBlob,它们为情感分析提供了预先训练的模型。这些模型可用于分析客户反馈、社交媒体帖子或任何其他文本数据,以深入了解公众舆论。
from textblob import TextBlobtext = "Python is a great programming language." blob = TextBlob(text) print(blob.sentiment)
3.3 主题建模
主题建模是一种用于从文档集合中提取基础主题或主题的技术。它有助于理解文本数据中存在的主要思想或概念。Python的流行库Gensim为主题建模提供了有效的算法,例如潜在狄利克雷分配(LDA)。这些算法可以应用于大型文本语料库,以发现隐藏的模式并生成有意义的摘要。
from gensim import corpora, modelsdocuments = ["Human machine interface for lab abc computer applications","A survey of user opinion of computer system response time","The EPS user interface management system","System and human system engineering testing of EPS"]texts = [doc.split() for doc in documents] dictionary = corpora.Dictionary(texts) corpus = [dictionary.doc2bow(text) for text in texts]lda_model = models.LdaModel(corpus, num_topics=2, id2word=dictionary) print(lda_model.print_topics())
3.4 文本分类
文本分类是将文本数据分类为预定义类或类别的过程。它在垃圾邮件过滤、情绪分析、新闻分类和许多其他领域找到了应用。文本分类模型可以使用Python库(如scikit-learn和TensorFlow)进行构建和训练。
from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNBX = ["Python is a versatile programming language.", "I love Python.", "Python is great for data analysis."] y = ["positive", "positive", "positive"] vectorizer = CountVectorizer() X_transformed = vectorizer.fit_transform(X)clf = MultinomialNB().fit(X_transformed, y) print(clf.predict(vectorizer.transform(["Python is awesome!"])))
3.5 词嵌入
词嵌入是单词的密集向量表示,用于捕获它们之间的语义关系。它们广泛用于 NLP 任务,例如单词相似性、文档聚类和语言翻译。Python的库spaCy提供了预先训练的词嵌入模型,如Word2Vec和GloVe。
nlp = spacy.load('en_core_web_md')tokens = nlp("dog cat banana")for token in tokens:print(token.text, token.has_vector, token.vector_norm, token.is_oov)
3.6 语言翻译
语言翻译涉及将文本从一种语言转换为另一种语言。Python的流行库PyTorch提供了一个强大的机器翻译工具包,称为Fairseq。它利用深度学习模型(如变形金刚)来实现准确流畅的翻译。
您可以安装以下库
pip install torch fairseq
import torch from fairseq.models.transformer import TransformerModel# Load the pre-trained translation model model_name = 'transformer.wmt19.en-de' model = TransformerModel.from_pretrained(model_name)# Set the model to evaluation mode model.eval()# Define the source sentence to be translated source_sentence = "Hello, how are you?"# Translate the source sentence to the target language translated_sentence = model.translate(source_sentence)# Print the translated sentence print("Translated Sentence:", translated_sentence)
3.7 文本生成
文本生成是一项具有挑战性的 NLP 任务,涉及根据给定提示生成连贯且上下文相关的文本。Python的库OpenAI GPT为ChatGPT提供支持,是一个最先进的模型,擅长文本生成。它可以在特定域上进行微调,也可以开箱即用地用于各种创意写作应用程序。
import openai# Set up your OpenAI GPT model model_name = "text-davinci-003" openai.api_key = "YOUR_API_KEY_HERE"# Define the prompt for text generation prompt = "Once upon a time"# Set the maximum number of tokens to generate max_tokens = 100# Generate text based on the prompt response = openai.Completion.create(engine=model_name,prompt=prompt,max_tokens=max_tokens )# Extract the generated text from the API response generated_text = response.choices[0].text.strip()# Print the generated text print("Generated Text:") print(generated_text)
四、用于 NLP 的 Python 库
Python 为 NLP 提供了广泛的库和框架,使其成为文本数据处理的首选语言。一些流行的库包括:
- 自然语言工具包 (NLTK)
- 空间
- 根西姆
- TextBlob
- scikit-learn
- 张量流
- PyTorch
- 费尔塞克
- OpenAI GPT
这些库为各种 NLP 任务提供了广泛的功能和预先训练的模型,使开发人员能够专注于手头的特定问题。
五、结论
Python已经成为自然语言处理(NLP)的流行语言,因为它可以做许多不同的事情,并且有很多库。本文探讨了将 Python 用于 NLP 的基础知识,强调了理解文本数据和利用代码执行各种 NLP 任务的重要性。从词汇分词和词形还原到停止词删除、词性标记、命名实体识别、情感分析、主题建模、文本分类、单词嵌入、语言翻译和文本生成,Python 库(如 NLTK、spaCy、Gensim、TextBlob、scikit-learn、TensorFlow、PyTorch、Fairseq 和 OpenAI GPT)为高效的文本数据处理和分析提供了强大的解决方案和预训练模型。
纳文·潘迪
相关文章:
用于自然语言处理的 Python:理解文本数据
一、说明 Python是一种功能强大的编程语言,在自然语言处理(NLP)领域获得了极大的普及。凭借其丰富的库集,Python 为处理和分析文本数据提供了一个全面的生态系统。在本文中,我们将介绍 Python for NLP 的一些基础知识&…...
历史服务器
二、配置历史服务器 在spark-3.1.1-bin-hadoop2.7/conf/spark-defaults.conf添加以下配置,其中d:/log/spark为日志保存位置 spark.eventLog.enabled true spark.eventLog.dir file:///d:/log/spark spark.eventLog.compress true spark.history.fs.logDirectory fil…...
竞赛无人机搭积木式编程(四)---2023年TI电赛G题空地协同智能消防系统(无人机部分)
竞赛无人机搭积木式编程(四) ---2023年TI电赛G题空地协同智能消防系统(无人机部分) 无名小哥 2023年9月15日 赛题分析与解题思路综述 飞控用户在学习了TI电赛往届真题开源方案以及用户自定义航点自动飞行功能方案讲解后&#x…...
深入理解JavaScript中的事件冒泡与事件捕获
在JavaScript中,事件是交互式网页开发中的关键概念之一。了解事件冒泡和事件捕获是成为一名优秀的前端开发者所必需的技能之一。本文将深入探讨这两个概念,解释它们是如何工作的,以及如何在实际应用中使用它们来处理事件。 一.什么是事件冒泡…...
纯css html 真实水滴效果
惯例,不多说直接上图 秉承着开源精神,我们将这段代码无私地分享给大家,因为我们深信,信息的共享和互相学习是推动科技进步的关键。我们鼓励大家在使用这段代码的同时,也能够将其中的原理、思想和经验分享给更多的人。 这份代码是我们团队用心…...
HBASE集群主节点迁移割接手动操作步骤
HBASE集群主节点迁移割接手动操作步骤 HBASE集群主节点指的是包含zk、nn、HM和rm服务的节点,一般这类服务都是一起复用在同一批节点上,我把这一类节点统称为HBASE集群主节点。 本文中使用了rsync、pssh等工具,这类是开源的,自己…...
TRB爆仓分析,套利分析,行情判断!
毫无疑问昨日TRB又成为涨幅榜的明星,总结下来,多军赚麻,空头爆仓,套利爽歪歪! 先说风险最小的套利情况,这里两种套利都能实现收益。 现货与永续合约的资金费率套利年化资金费率达到惊人的3285%——DeFi的…...
LVGL - RV1109 LVGL UI刷新效率优化-02
说明 前面好早写过一个文章,说明如何把LVGL移到RV1109上的操作,使用DRM方式!但出现刷新效率不高的问题! 因为一直没有真正的应用在产品中,所以也就放下了! 最近开发上需要考虑低成本,低内存的…...
5、布局管理器
5、布局管理器 一、流式布局 package com.dryant.lesson1;import java.awt.*;public class TestFlowLayout {public static void main(String[] args) {Frame frame new Frame();Button button1 new Button("bt1");Button button2 new Button("bt2");…...
What is a UDP Flood Attack?
用户数据报协议 (UDP) 是计算机网络中使用的无连接、不可靠的协议。它在互联网协议 (IP) 的传输层上运行,并提供跨网络的快速、高效的数据传输。与TCP(其更可靠的对应物)不同,UDP不提…...
多核 ARM Server 性能调优
概述 thinkforce ARM Server是多核心ARM服务器,硬件环境资源如下: CPU信息如下: yuxunyuxun:/$ lscpu Architecture: aarch64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian …...
oracle执行计划中,同一条语句块,在不同情况下执行计划不一样问题。子查询,union 导致索引失效。
场景: 需要获取部分数据集(视图)的业务时间最大值,希望只通过一条语句获取多个的最大值。 则使用select (视图1业务时间最大值),(视图2业务时间最大值),(视图3业务时间最大值) from dual 程序执行过程中,发现语句执行较慢,则进行s…...
【新的小主机】向日葵远程控制ubuntu
向日葵远程控制ubuntu 一、简介二、问题及解决方法2.1 向日葵远程连接Ubuntu22主机黑屏?2.2 Ubuntu如何向日葵开机自启?2.3 无显示器情况下,windows远程桌面连接Ubuntu? 三、待续。。。 一、简介 系统:ubuntu22.04.3 目的&#…...
在Android studio高版本上使用低版本的Github项目库报错未能解析:Landroid/support/v4/app/FrageActivity;
我在我的项目中有一个导包: // 基础依赖包,必须要依赖 沉浸式狀態欄 implementation com.gyf.immersionbar:immersionbar:3.0.0 但是我的as版本比较高,我使用这个导包里面的方法会直接报错: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/suppor…...
自动混剪多段视频、合并音频、添加文案的技巧分享
在如今的社交媒体时代,视频的重要性越来越被人们所重视。许多人喜欢记录生活中的美好瞬间,并将其制作成视频分享给朋友和家人。然而,对于那些拍摄了大量视频的人来说,一个一个地进行剪辑和合并可能是一项令人头痛的任务。但是&…...
学习笔记——BSGS
众所周知,北上广深是中国非常一线的城市,北京是首都,地处…… 正片开始! 一、BSGS基础算法 实现目标: A x ≡ B ( m o d P ) , ( gcd ( P , A ) 1 ) A^x\equiv B(\mod P),(\gcd(P,A)1) Ax≡B(modP),(gcd(P,A)1)…...
【AI视野·今日NLP 自然语言处理论文速览 第四十期】Mon, 25 Sep 2023
AI视野今日CS.NLP 自然语言处理论文速览 Mon, 25 Sep 2023 Totally 46 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers ReConcile: Round-Table Conference Improves Reasoning via Consensus among Diverse LLMs Authors Justin C…...
Linux C/C++下收集指定域名的子域名信息(类似dnsmap实现)
我们知道dnsmap是一个工具,主要用于收集指定域名的子域名信息。它对于渗透测试人员在基础结构安全评估的信息收集和枚举阶段非常有用,可以帮助他们发现目标公司的IP网络地址段、域名等信息。 dnsmap的操作原理 dnsmap(DNS Mappingÿ…...
linux-定时任务
目录 一、crond命令 1、什么是计划任务 2、crond服务的概念 3、crontab 二、at命令 1、at任务的概念 三、邮件服务 1、概念 2、启动postfix 四、mailx命令 1、三个概念: 2、交互式发邮件 3、非交互式发邮件 四、cron定时任务实践 1、系统定时任务配置…...
在Spring Boot项目中使用Redisson
在Spring Boot项目中使用Redisson Redisson简介 Redisson官网仓库 Redisson中文文档 Redission是一个基于Java的分布式缓存和分布式任务调度框架,用于处理分布式系统中的缓存和任务队列。它是一个开源项目,旨在简化分布式系统的开发和管理。 以下是…...
JavaScript 函数柯里化
🎶什么是柯里化 柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。 🎡简单的函数柯里化的实现 // ------------- 原函数…...
springboot实现ACL+RBAC权限体系
本文基于web系统的权限控制非常重要的前提下,从ALC和RBAC权限控制两个方面,介绍如何在springboot项目中实现一个完整的权限体系。 源码下载 :https://gitee.com/skyblue0678/springboot-demo 序章 一个后台管理系统,基本都有一套…...
C++20协程示例
C20协程示例 认识协程 在C中,协程就是一个可以暂停和恢复的函数。 包含co_wait、co_yield、co_return关键字的都可以叫协程。 看一个例子: MyCoroGenerator<int> testFunc(int n) {std::cout << "Begin testFunc" << s…...
【Verilog 教程】6.2Verilog任务
关键词:任务 任务与函数的区别 和函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算,而任务更像一个过程&a…...
Spring修炼之路(1)基础入门
一、简介 1.1Spring概述 Spring框架是一个轻量级的Java开发框架,它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发Java EE应用程序的必备。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&…...
GANs学习记录
GAN 基于GAN的研究识别相关不同背景目标图像 可以用Augmentation2021.3.15 基于GAN的研究 是通过GAN 进行图像重建,恢复细节,去模糊,提高图像质量,图像还原,去噪等等。 识别相关 一种基于生成对抗网络的训练样本扩充…...
Flink-CDC——MySQL、SqlSqlServer、Oracle、达梦等数据库开启日志方法
目录 1. 前言 2. 数据源安装与配置 2.1 MySQL 2.1.1 安装 2.1.2 CDC 配置 2.2 Postgresql 2.2.1 安装 2.2.2 CDC 配置 2.3 Oracle 2.3.1 安装 2.3.2 CDC 配置 2.4 SQLServer 2.4.1 安装 2.4.2 CDC 配置 2.5达梦 2.4.1安装 2.4.2CDC配置 3. 验证 3.1 Flink版…...
linux设置tomcat redis开机自启动
设置Tomcat自启动 1.修改 /etc/rc.d/rc.local 文件 [rootiowZ]# vim /etc/rc.d/rc.local在/etc/rc.d/rc.local文件最后加上: export JAVA_HOME/usr/local/jdk /usr/local/apache-tomcat-8.5.73/bin/startup.sh start退出vim并保存修改的文件。 说明:/u…...
跨域问题讨论
问题 跨域定义 当一个请求url的协议、域名、端口三者之间任意一个与当前页面地址不同即为跨域。 跨域的安全隐患(CSRF攻击) 也就是说,一旦允许跨域,意味着允许恶意网站随意攻击可信网站,带来安全风险。 这里面有一…...
ESP32设备通信-两个ESP32设备之间HTTP通信
两个ESP32设备之间HTTP通信 文章目录 两个ESP32设备之间HTTP通信1、应用介绍2、软件准备3、硬件准备4、代码实现4.1 ESP32服务器节点代码4.2 ESP32客户端节点代码在本文中,我们将介绍如何在没有任何物理路由器或互联网连接的情况下使用 Wi-Fi 在两个 ESP32 开发板之间执行无线…...
兖州城乡建设局网站/免费网站提交入口
内省是 Java 语言对 Bean 类属性、事件的一种处理方法(也就是说给定一个javabean对象,我们就可以得到/调用它的所有的get/set方法)。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规…...
集美网站开发/交换链接或称互惠链接
Table在IOS应用开发中非常重要,现在我们就来学习一下 1. 首先我们来了解一下Table的视图结构 表头视图(table header view):表视图最上边的视图,用于展示表视图的信息,例如表视图刷新信息表脚视图(table footer view):表视图最下边的视图,用于…...
购物网站建设优缺点/百度搜索风云榜小说排行榜
CRM是最常用的后台管理系统之一,以下为CRM的原型设计思路及框架 基本页面axure: 链接: https://pan.baidu.com/s/1tcuVdUw0f9jO4h4D-TPRJQ 密码: tj4h 基本组件axure: 链接: https://pan.baidu.com/s/1zVN-626LW6g24ioqgzmPcw 密码: suqf...
如何设计网站导航/我想做网络推广找谁
我这里从操作目的出发说明linux命令,而不是将linux命令逐个说明用法、注意事项,毕竟我只是一个测试人员,而不是一个专职的linux运维人员,无须掌握所有的命令,掌握每个命令的所有用法;1、查看当前目录下有哪…...
wordpress个性化友情链接页面/网站建设开发公司
上一篇博客:数据类型转换、ASCII编码 目录 算术运算符赋值运算符比较运算符逻辑运算符三元运算符 开始 算术运算符 算数运算符包括: 加法运算,字符串连接运算 - 减法运算 * 乘法运算 / 除法运算 % 取模运算,两…...
优质的设计网站有哪些/微信软文推广怎么做
上节说了说求导,这节就顺带着说一说求积分,凑个完整。不定积分:定积分的代码和极限求导都差不多:syms x f;f(3-x^2)^3;ans1int(f,x)pretty(ans1)不详细解释了,我们主要是看看这个int(f,x)函数:在不定积分中…...