每个人都应该知道的5个NLP代码库

news2024/12/24 3:04:40

在本文中,将详细介绍目前常用的Python NLP库。

内容译自网络。

这些软件包可处理多种NLP任务,例如词性(POS)标注,依存分析,文档分类,主题建模等等。

NLP库的基本目标是简化文本预处理。

目前有许多工具和库用于解决NLP问题……但是只要掌握了其中的一些基本知识,就可以掌握相关基本知识。这就是为什么只介绍其中最常用的五个Python NLP库的原因。

但是在此之前,应该掌握有关NLP的各个组成领域和主题的一些基础知识。

扎实基础

对于学习自然语言处理的理论基础,网络上有丰富的资源可以学习:

· 斯坦福课程 — 深度学习中的自然语言处理(http://web.stanford.edu/class/cs224n/)

· Deeplearning.ai专业化 - 自然语言处理专业(https://www.coursera.org/specializations/natural-language-processing)

· 适用于基础知识的最佳书籍(又名NLP圣经) — 自然语言处理,语音识别和计算语言学导论(https://web.stanford.edu/~jurafsky/slp3/)

· 另一本不错的参考书 - 统计自然语言处理的基础(https://nlp.stanford.edu/fsnlp/)

1. Spacy

spaCy 是Python中比较出名,专门用于自然语言处理的库。它有助于实现最先进的效率和敏捷性,并拥有活跃的开源组织积极贡献代码。

加分项:

· 与所有主要的深度学习框架很好地结合,并预装了一些出色且有用的语言模型

· 由于Cython支持,速度相对较快

使用spaCy最适合做的事情

1. 词性(POS)标注:这是给单词标记制定语法属性(例如名词,动词,形容词,副词等)过程。

2. 实体识别:将文本中发现的命名实体标记到预定义实体类型。

3. 依存分析:分配语法依存标签,描述各个标记(例如主题或客体)之间的关系。

4. 文本分类:为整个文档或文档的一部分分配类别或标签。

5. 句子边界检测(SBD):查找和分割单个句子。

相关资源

免费官方课程的链接:基于spaCy的高级NLP(https://course.spacy.io/en/)

官方课程

更多资源

· 一篇不错的博客文章,包括安装过程和其他Spacy用法(入门博客):使用Python中的spaCy进行自然语言处理(https://realpython.com/natural-language-processing-spacy-python/)

· Python Spacy简介(视频)— 视频讲座和教程(https://realpython.com/natural-language-processing-spacy-python/)

2. NLTK

NLTK是目前可用的最优秀的NLP模型训练库之一。该库是NLP入门python库。它是NLP的初学者常用的库。它具有许多预先训练的模型和语料库,可帮助我们非常快速地分析事物。

加分项:内置支持数十种语料库和训练完备的模型

使用NLTK可以实现一下需求:

1. 推荐:可以基于相似性来推荐内容。

2. 情感分析:通过自然语言处理来衡量人们的观点倾向

3. Wordnet [1]支持:我们可以使用Synset 在WordNet中查找单词。因此可以访问许多单词的同音异义词,上位词,同义词,定义,词族等

4. 机器翻译:用于将源语言翻译成目标语言

其他资源

· 学习NLTK的最佳资源是官方的教材:《使用自然语言工具包分析文本》(https://www.nltk.org/book/)

· 相关文章整理:Python的NLTK(自然语言工具包)教程(https://www.guru99.com/nltk-tutorial.html)

· Wordnet文档— WordNet 3.0参考手册(https://wordnet.princeton.edu/documentation)

与spaCy专注于提供用于生产用途的软件不同,NLTK被广泛用于教学和研究— Wikipedia

3.Transformers

来自Transformers GitHub Repo

该Transformers库是开源,基于社区的信息库,使用和共享模型基于Transformer结构[2]如Bert[3],Roberta[4],GPT2 [5],XLNet [6],等等

该库提供自然语言理解(NLU)和自然语言生成(NLG)任务预训练模型下载。

加分项:超过32种采用100种以上语言的训练的预训练模型,以及TensorFlow 2.0和PyTorch之间的深度互操作性。最适合深度学习。

Transformers可以做到一下事情

1. 摘要生成:摘要是将文本/文章摘要为较短文本的任务。

2. 翻译:将文本从一种语言翻译成另一种语言的任务。

3. 文本生成:基于上下文,生成连贯的下文。

4. 抽取式问答:从给定问题的文本中提取答案的任务。

相关资源:

· 官方文档-HuggingfaceTransformers(https://huggingface.co/transformers/)

· 使用BERT,HuggingFace和AWS Lambda构建问题解答API – 使用HuggingFace和AWS Lambda的无服务器BERT(https://towardsdatascience.com/serverless-bert-with-huggingface-and-aws-lambda-625193c6cc04)

· 了解如何微调BERT以进行情感分析— 使用BERT和Transformers进行情感分析(https://www.curiousily.com/posts/sentiment-analysis-with-bert-and-hugging-face-using-pytorch-and-python/)

4. Gensim

Gensim是一个Python库,专门用于通过向量空间建模和主题建模工具包来识别两个文档之间的语义相似性

顺便说一下,它是“ Generate Similar”(Gensim)的缩写:)

优点:高水平的处理速度和可以处理大量文本。

Gensim适合处理的需求:

1. 分布式计算:它可以在计算机集群上运行隐语义分析和隐Dirichlet分配。(可以处理大量数据的原因)

2. 文档索引:将信息与文件或特定标签相关联的过程,以便以后可以轻松检索

3. 主题建模:自动聚类单词group和定义一组文档的相似表达式。

4. 相似性检索:处理文档存储库中相似信息的组织,存储,检索和评估(此处为文本信息)

资源

· 官方API文档-API参考(https://radimrehurek.com/gensim/apiref.html)

· 官方教程- 核心教程(https://radimrehurek.com/gensim/auto_examples/)

· 使用Gensim LDA进行分层文档聚类— 使用Python进行文档聚类(http://brandonrose.org/clustering#Latent-Dirichlet-Allocation)

· 安装,处理等入门教程— 适用于NLP的Python:使用Gensim库(https://stackabuse.com/python-for-nlp-working-with-the-gensim-library-part-1/)

5. Stanza

Stanza将许多准确而有效自然语言处理工具收集在一起,组成工具包。从原始文本到句法分析和实体识别,Stanza将最新的NLP模型引入语言处理中。

该工具包建立在PyTorch库的之上,并支持使用GPU和预训练的神经模型。

此外,Stanza包括一个CoreNLP Java包的Python接口,并从那里继承了附加功能。

优点:快速,准确,并且能够支持几种主要语言。适用于生产部署环境。

资源:CoreNLP的Python包装器列表(http://stanfordnlp.github.io/CoreNLP/other-languages.html#python)

Stanza适合处理的需求:

1. 形态特征标记:对于句子中的每个单词,Stanza都会评估其普遍的形态特征(例如,单身/复数,第一/第二/第三人称等)。

2. 多词令牌扩展:将句子扩展成句法词,作为下游处理的基础。

这五个库的固有特性使其成为依赖于机器对人类表达的理解的所有项目的首选。

参考文献

1. WordNet简介:在线词汇数据库 — George A. Miller等。1993年(https://wordnetcode.princeton.edu/5papers.pdf)

2. Attention Is All You Need — Vaswani等人,2017。(https://arxiv.org/abs/1706.03762)

3. BERT:用于语言理解的深度双向Transformers的预训练 — Devlin等人,2018年。(https://arxiv.org/abs/1810.04805)

4. RoBERTa:一种经过严格优化的BERT预训练方法 — Liu等,2019年。(https://arxiv.org/abs/1907.11692)

5. 语言模型是无监督的多任务学习者(GPT2) — Radford等人,2019年。(https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf)

6. XLNet:用于语言理解的广义自回归预训练 — Yang等人,2019年。(https://arxiv.org/abs/1906.08237)

7. Stanza:适用于多种人类语言的Python自然语言处理工具包 — Peng等人,2020年。(https://arxiv.org/abs/2003.07082)

往期精品内容推荐

观点问题如何练就“火眼金睛”?百度人工智能开源大赛开启报名

20年校招DL/NLP/推荐系统/ML/算法基础面试必看300问及答案

2020年新书-《神经网络新手入门必备数学基础》免费pdf分享

免费好书-《机器学习入门-第二版》最新pdf分享

GPT-3语言模型原理详细解读

机器学习基础-《统计学习-SLT》教材分享

DeepMind 2020年新课-《强化学习进阶课程》视频分享

中文自然语言处理医疗、法律等公开数据集整理分享

自然语言领域中图神经网络模型(GNN)应用现状(论文)

深度学习基础:正向模型、可微损失函数与优化

新书分享-嵌入式深度学习:持续性神经网路算法、结构和电路设计

深度神经网络压缩和加速相关最全资源分享

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

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

相关文章

【6】linux命令每日分享——rm删除目录和文件

大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的类UNIX操作系统,Linux的基本思想有两点:一切都是文件;每个文件都有确定的用途;linux涉及到IT行业的方方面面,在我们日常的学习中&…

loki 日志管理的安装部署使用

loki介绍 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。 不对日志进行…

python学习之手把手教你将图片变成黑白或彩色字符画(骚操作)

文章目录前言一、字符画的实现原理二、黑白字符画实现代码三、彩色字符画生成代码实现:总结前言 字符画这个话题,似乎早在贴吧时代就已经被玩烂了。在百度图片随便一搜索,就能够看到非常多。然后在这个时代,会编程的人越来越多&a…

Transformer输出张量的值全部相同?!

【bug】Transformer输出张量的值全部相同?!现象原因解决现象 输入经过TransformerEncoderLayer之后,基本所有输出都相同了。 核心代码如下, from torch.nn import TransformerEncoderLayer self.trans TransformerEncoderLayer…

日记本-课后程序(JAVA基础案例教程-黑马程序员编著-第七章-课后作业)

【实验7-3】 日记本 【任务介绍】 1.任务描述 编写一个日记本功能的程序,使用字节流经日记的具体信息记录在本地的txt文件中。当用户输入日记的特定内容后,会将输入的内容保存至本地的txt文件中。需要输入的内容包括“姓名”,“天气”、“…

OpenFeign详解

OpenFeign是什么? OpenFeign: OpenFeign是Spring Cloud 在Feign的基础上支持了SpringMVC的注解,如RequesMapping等等。OpenFeign的FeignClient可以解析SpringMVC的RequestMapping注解下的接口,并通过动态代理的方式产生实现类&am…

基于YOLOv5的细胞检测实战

数据及代码链接见文末 1.任务与数据集介绍 如下图所示,我们有一个医学细胞数据集,需要从数据集中检测出三种不同的细胞。标签中已经标注了细胞的类别和位置。 我们也可以看到,三种细胞有着不同的形态和颜色,同时数据集的标签也存在没有标注到的细胞 2.数据与标签配置方…

【打卡-Coggle竞赛学习2023年2月】图节点嵌入

文章目录## Part4 图节点嵌入### 背景介绍### 环境配置### 学习打卡- 任务1:图属性与图构造- 任务2:图查询与遍历- 任务3:节点中心性与应用- 任务4:图节点嵌入算法:- 任务5:图节点嵌入算法:- 任…

PowerAutomation获取邮件附件并删除这个邮件方法

这个文章是怎么来的呢?现在不是低代码开发平台启蒙阶段嘛?笔者也有幸在工作中进行了尝试,目前也已经在实际工作中结合Python进行了使用,当然,是可以提高IT的工作效率的。需求是这样的,想从公司的EBS平台报表…

3.5 实战:Spring Boot 实现系统多环境配置

第3章 Spring Boot 的系统配置 3.1 Spring Boot 系统配置文件 3.2 Spring Boot 自定义配置项 3.3 Spring Boot 其他配置 3.4 Spring Boot 日志配置 3.5 实战:Spring Boot 实现系统多环境配置 3.5 实战:Spring Boot 实现系统多环境配置 在实际项目开发的…

python的所有知识点(含讲解),不看就亏死了

目录 简介 特点 搭建开发环境 版本 hello world 注释 文件类型 变量 常量 数据类型 运算符和表达式 控制语句 数组相关 函数相关 字符串相关 文件处理 对象和类,注:不是那个对象!!!!&…

2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书

2023年安徽省职业院校技能大赛“网络空间安全” 比赛任务书 一、竞赛时间 总计:360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 Nginx安全策略 A-3 日志监控 A-4 中间件服务加固 A-5 本地安全策略 A-6 防火墙策…

基本程序设计技术

一.统计(计数)问题:方法:计数变量c的初值为0,每输入一个数据,进行必要判断后,若输入的数据满足统计条件,则计数变量c自加1,这样当对所有输入进行判断后,计数变…

多线程案例(一)【单例模式+阻塞队列】

一、单例模式 单例模式属于最容易被问到的一种设计模式。 啥是设计模式? 类似于棋谱,按摩模式写代码,可以更加规范。 单例模式的含义: 单例:单个实例对象 某个类有且只有一个对象。 这一点在很多场景上都需要. 比如…

如何轻松录制 CS 游戏玩法?4 种免费录制 CS 游戏视频的方法

CS:GO,又名反恐精英:全球攻势,是一款多人第一人称射击游戏,由 Valve 和 Hidden Path Entertainment 于 2012 年设计推出。作为反恐精英系列的第四代,它广受欢迎与全球游戏玩家。随着近年来电子竞技的兴起,用…

冒泡排序(朴素+优化)

思想 先来看一张动图 上面这张图就是冒泡排序的代码可视化 很显然我们可以发现,冒泡排序的基本思想就是从前往后比对,一直将找到的最大值交换到序列的末尾感觉冒泡排序这个名字还是很形象的 朴素做法 不难看出,将最大值交换到末尾的操作一…

数据结构与算法之打家劫舍(二)动态规划思想

前言:上一个题目所求的数组是线性的,首尾并不影响结果。这道题目的数组的首尾相连接,构成一个环。再来求这一道题目,难度进一步上身。我们直接进入题目:一.题目二.在上一道题目的基础上进行剖析对于一个数组&#xff0…

​科伦博泰冲刺港交所上市:持续大额亏损,科伦药业为其控股股东​

近日,四川科伦博泰生物医药股份有限公司(下称“科伦博泰”)在港交所递交招股书,准备在港交所主板上市,高盛和中信证券为其联合保荐机构。据贝多财经了解,科伦博泰为A股上市公司科伦药业(SZ:0024…

6.Kafka发布和显示系统通知

1.阻塞队列生产者线程线程需要实现 Runnable 接口重写接口的run方法声明变量private BlockingQueue<Integer> queue接受传入的阻塞队列创建有参构造器实现示例逻辑&#xff0c;生产100个数据&#xff0c;put进阻塞队列&#xff0c;每生产一个数据停顿20毫秒&#xff0c;输…

Ubuntu22.04 安装 mysql8,redis7,MongoDB6

服务器的准备 我的服务器是在腾讯云租的&#xff0c;所以服务器的apt源都是默认配好的&#xff0c;没配好的自行网上查找apt源配置。本文同样适用于Ubuntu 22&#xff0c;20。Ubuntu18亦可参考。云服务器一般防火墙未开放端口访问&#xff0c;请自行配置&#xff0c;否则后续远…