
近年来,自然语言处理(NLP)的质量和可用性迅速增长,这有助于推动商业采用人工智能(AI)解决方案。在过去的几年中,研究人员一直将较新的深度学习方法应用于NLP。数据科学家开始从传统方法转变为最先进的(SOTA)深神经网络(DNN)算法,这些算法使用在大型文本语料库中预计的语言模型。
该存储库包含用于构建NLP系统的示例和最佳实践,该系统提供为Jupyter笔记本电脑和实用程序功能。存储库的重点是最先进的方法和常见场景,这些方法在研究涉及文本和语言的问题的研究人员和从业者中很受欢迎。
该存储库的目的是建立一组全面的工具和示例,以利用NLP算法,神经体系结构和分布式机器学习系统的最新进展。该内容基于我们过去和与客户的潜在未来交往以及与合作伙伴,研究人员和开源社区的合作。
我们希望这些工具可以通过简化从定义业务问题到按数量级开发解决方案的经验来大大减少“上市时间”。此外,示例笔记本将作为指南,展示最佳实践和用多种语言的工具使用。
在转移学习,变形金刚和深层体系结构的时代,我们认为验证的模型为许多现实世界中的问题提供了统一的解决方案,并允许轻松处理不同的任务和语言。因此,我们将优先考虑此类模型,因为它们在胶水和小队排行榜等多个NLP基准上实现了最先进的结果。这些模型可用于许多应用程序,从简单的文本分类到复杂的智能聊天机器人。
请注意,对于某些NLP问题,您可能不需要构建自己的模型。相反,存在预先构建或易于自定义的解决方案,不需要任何自定义的编码或机器学习专业知识。我们强烈建议您评估这些是否可以充分解决您的问题。如果这些解决方案不适用,或者这些解决方案的准确性不够,则可能需要采用更复杂且耗时的自定义方法。以下认知服务提供了简单的解决方案来解决常见的NLP任务:
文本分析是一组预先训练的REST API,可以称为情感分析,关键短语提取,语言检测和命名实体检测等等。这些API开箱即用,需要最少的机器学习专业知识,但自定义功能有限。
QNA Maker是一种基于云的API服务,可让您在现有数据上创建对话性问答层。使用它来构建知识库,通过从半结构化内容(包括常见问题解答,手册和文档)中提取问题和答案来构建知识库。
语言理解是SaaS的服务,可以在给定用户提供的培训集的情况下培训和部署模型作为REST API。您可以通过执行简单的步骤来提供示例话语并标记它们来进行意图分类以及命名实体提取。它支持积极学习,因此您的模型始终保持学习和进步。
对于此存储库,我们的目标受众包括数据科学家和机器学习工程师,NLP知识水平不同,因为我们的内容仅是源头,并且针对自定义机器学习建模。所提供的实用程序和示例旨在作为现实世界中NLP问题的解决方案加速器。
存储库旨在沿着三个单独的维度扩展NLP功能
我们的目标是为常见任务和方案(例如文本分类,命名实体识别等)提供端到端示例。
我们旨在为每个受支持的方案提供多个模型。当前,在大多数情况下都支持基于变压器的模型。我们一直在努力整合Transformers软件包,从拥抱脸部,该软件包使用户可以轻松地加载预告片的型号并将其调整为不同的任务。
我们强烈赞同“ Emily Bender”制定的多语言原则
该存储库旨在支持所有场景中的非英语语言。在存储库中使用的预训练模型,例如Bert,FastText开箱即用的100多种语言。我们的目标是用尽可能多的语言提供端到端的示例。我们鼓励在这一领域的社区贡献。
以下是存储库中涵盖的常用NLP方案的摘要。每个方案都在一个或多个jupyter笔记本示例中演示,这些示例使用了模型和存储库实用程序的核心代码库。
| 设想 | 型号 | 描述 | 语言 |
|---|---|---|---|
| 文本分类 | Bert,Distillbert,Xlnet,Roberta,Albert,XLM | 文本分类是一种有监督的学习方法,用于学习和预测文档的文本内容类别或类别的类别。 | 英语,中文,印地语,阿拉伯语,德语,法语,日语,西班牙语,荷兰语 |
| 命名实体识别 | 伯特 | 命名实体识别(NER)是将文本的单词或关键短语分类为预定义实体的任务。 | 英语 |
| 文本摘要 | Bertsumext Bertsumabs UNILM(S2S-FT) 微型 | 文本摘要是将输入文本汇总到文本较短段落中的语言生成任务。 | 英语 |
| 需要 | 伯特,Xlnet,罗伯塔 | 文本需要是对两个自然语言文本(文本和假设)之间二进制关系进行分类的任务,以确定文本是否与假设一致。 | 英语 |
| 问题回答 | Bidaf,Bert,Xlnet | 问答(QA)是用自然语言检索或生成给定查询的有效答案的任务,并提供了与查询有关的段落。 | 英语 |
| 句子相似性 | 伯特,登森 | 句子相似性是给定两对文本文档计算相似性分数的过程。 | 英语 |
| 嵌入 | Word2Vec fastText 手套 | 嵌入是将单词或文本转换为实际数字的连续矢量空间(通常是低维度)的过程。 | 英语 |
| 情感分析 | 依赖性解析器 手套 | 提供了使用Azure ML和Intel NLP Architect的火车和使用基于方面的情感分析的示例。 | 英语 |
在解决NLP问题的同时,从预先建立的认知服务开始总是很好。当需求超出了预先构建的认知服务的范围,并且当您想搜索自定义机器学习方法时,您会发现该存储库非常有用。首先,请导航到“设置指南”,该指南列出了有关如何设置环境和依赖项的说明。
Azure机器学习服务是一种用于训练,部署,自动化和管理机器学习模型的云服务,所有这些服务都是云提供的大规模的。 Azureml在不同情况下的笔记本中介绍,以提高按大规模开发自然语言系统的效率,并针对各种AI模型开发相关的任务,例如:
要成功运行这些笔记本,您将需要Azure订阅或免费尝试Azure 。笔记本中可能还有其他Azure服务或产品。这些介绍和/或参考将在笔记本本身中提供。
我们希望开源社区能够为内容做出贡献,并带来最新的SOTA算法。该项目欢迎贡献和建议。在贡献之前,请参阅我们的贡献指南。
用NLP-Recipes的最新版本引导您的文本摘要解决方案
Doccano变得轻松的文字注释
使用NLP存储库来分析印地语文本数据
通过Azure机器学习加快自然语言处理解决方案的开发
以下是我们喜欢和认为对NLP任务有用的相关存储库的列表。
| 存储库 | 描述 |
|---|---|
| 变压器 | 一个很棒的Pytorch图书馆,可以通过基于流行的变压器模型的实现来拥抱面孔。我们在此存储库中广泛使用了他们的包裹,并非常感谢他们的努力。 |
| Azure机器学习笔记本 | ML和深度学习示例,具有Azure机器学习。 |
| Azureml-Bert | 使用Azure机器学习服务进行预训练和微调BERT的端到端食谱。 |
| 大量的 | 质量:掩盖序列,以预先训练用于语言的训练。 |
| MT-DNN | 多任务深度神经网络,用于自然语言理解。 |
| Unilm | 统一语言模型预训练。 |
| 对话 | 对话:大规模生成的预培训,用于会话响应生成 |
| 建造 | 分支 | 地位 |
|---|---|---|
| Linux CPU | 掌握 | |
| Linux CPU | 舞台 | |
| Linux GPU | 掌握 | |
| Linux GPU | 舞台 |