Google 最新 NLP 模型开源

2020 年,注定是 NLP 技术爆发的一年。

近日,Google 又推出了 Transformer 的『升级版』 —— ReformerTransformer 可谓是近年自然语言处理领域关注度颇高的模型之一。

  • 2017 年,Google 发表题为『Attention Is All You Need』的论文,提出了完全基于注意力机制(Attention Mechanism)的网络框架 Transformer
  • 2018 年,Google 开源了基于 Transformer 的 BERT 模型,在 NLP 领域大火。
  • 2019 年,机器学习领域最大的趋势之一,便是基于 Transformer 的自然语言模型的持续增长和扩散。
  • 2020 年,根据自然语言处理领域数据集 GLUE(General Language Understanding Evaluation)的排行榜,一些表现最佳的模型 —— 包括:Nvidia 的 Megatron、Google 的 XLNet、微软的 MT-DNN 和 Facebook 的 Roberta,都基于 Transformer。

对人工智能和机器学习模型来说,不管是语言、音乐、语音还是视频,序列数据都不好理解 —— 尤其是在广泛的环境中。例如,如果一个人或一个物体从视频中消失很久后才重新出现,许多算法就会忘记它的样子。

因此,Google 开发了机器翻译模型 Transformer,希望解决这一问题。Transformer 是一个扩展到数千个单词的架构,极大地提升了在完成作曲、图像合成、逐句文本翻译和文档摘要等任务时的性能。

与所有深度神经网络一样,Transformer 包含连接层中的神经元(数学函数),可传输来自输入数据的信号,并缓慢调整每个连接的突触强度(权重),这是所有人工智能模型提取特征和学习预测的方式,但是 Transformer 能独特地注意到每个输出元素都与每个输入元素相关联,它们之间的权重实际上是动态计算的。

不过,Transformer 并不是完美的——将其扩展到更大的环境中就能明显看出局限性。大窗口应用程序的内存从千兆字节到兆兆字节不等,也就是说模型只能吸收几段文本或生成一小段音乐。

基于此,Google 推出 Reformer 作为 Transformer 的演进,Reformer 能够处理多达 100 万字的环境,仅用 16GB 的存储器就能在单个 AI 加速器芯片上运行。

hugging face 发布词语切分工具:Tokenizers

专注 NLP 的初创团队抱抱脸(hugging face)发布帮助自然语言处理过程中,更快的词语切分(tokenization)工具:Tokenizers —— 只要 20 秒就能编码 1GB 文本。

  • 功能多样:适用于 BPE / byte-level-BPE / WordPiece / SentencePiece 各种 NLP 处理模型
  • 可以完成所有的预处理:截断(Truncate)、填补(Pad)、添加模型需要的特殊标记。
  • 速度超级快:只需要 20 秒就可以在 CPU 上标记 1GB 的文本。
  • 目前适用三种编程语言:Rust / Python / Node.js

GitHub地址项目 GitHub 地址

北大全新开源中文分词工具包

2020 年,自然语言处理NLP)科研方向被赋予了极大的期待。

最近,北大开源了一个中文分词工具包,它在多个分词数据集上都有非常高的分词准确率。其中广泛使用的结巴分词误差率高达 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 与 4.32%。pkuseg 是由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。它简单易用,支持多领域分词,在不同领域的数据上都大幅提高了分词的准确率。pkuseg 具有如下几个特点:

  • 多领域分词。不同于以往的通用中文分词工具,此工具包同时致力于为不同领域的数据提供个性化的预训练模型。根据待分词文本的领域特点,用户可以自由地选择不同的模型。 我们目前支持了新闻领域,网络领域,医药领域,旅游领域,以及混合领域的分词预训练模型。在使用中,如果用户明确待分词的领域,可加载对应的模型进行分词。如果用户无法确定具体领域,推荐使用在混合领域上训练的通用模型。各领域分词样例可参考 example.txt
  • 更高的分词准确率。相比于其他的分词工具包,当使用相同的训练数据和测试数据,pkuseg可以取得更高的分词准确率。
  • 支持用户自训练模型。支持用户使用全新的标注数据进行训练。
  • 支持词性标注。

此外,作者们还选择 THULAC结巴分词等国内代表分词工具包与 pkuseg 做性能比较。他们选择 Linux 作为测试环境,在新闻数据(MSRA)和混合型文本(CTB8)数据上对不同工具包进行了准确率测试。最广泛使用的结巴分词准确率最低,清华构建的 THULAC 分词准确率也没有它高。当然,pkuseg 是在这些数据集上训练的,因此它在这些任务上的准确率也会更高一些。

GitHub地址项目 GitHub 地址

《机器学习实用指南》第二版发布

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow》(《机器学习实用指南》),这本书最大的特色从理论上讲就是言简意赅,全书基本上没有太多复杂的数学公式推导。这一点正是国内很多高校教材所欠缺的。这本超赞的机器学习实用指南终于正式出版了第二版:《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Edition》,并且在美国亚马逊上开售(包括 Kindle 版本)。

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Edition
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow Concepts, Tools, and Techniques to Build Intelligent Systems 2nd Edition

本教材作者是 Aurélien Géron,法国人,毕业于AgroParisTech,曾任 Google Youtube 视频分类项目组负责人,创建过多家公司并担任 CTO,也曾在 AgroParisTech 担任讲师。现在是一名机器学习的顾问。第二版相比第一版增加了许多新的内容,最直白的就是第一版使用了 Scikit-LearnTensorFlow,而第二版增加了 Keras 深度学习框架。从内容上来说,第二版增加了更多的机器学习前沿知识,包括:无监督学习,训练深度网络,计算机视觉自然语言处理等等。作者将本书所有章节的详细代码都开源了并发布在 GitHub 上,目前已经收获了 5.5k star。

GitHub地址项目 GitHub 地址

超越 ReLU 的激活函数:GeLU

NLP 领域里,GeLU 已经成为了众多业内最佳模型的选择。

作为决定神经网络是否传递信息的「开关」,激活函数对于神经网络而言至关重要。不过今天被人们普遍采用的 ReLU 真的是最高效的方法吗?最近在社交网络上,人们找到了一个看来更强大的激活函数:GeLU,这种方法早在 2016 年即被人提出,然而其论文迄今为止在 Google Scholar 上的被引用次数却只有 34 次。其实,GeLU 已经被很多目前最为领先的模型所采用。据不完全统计,BERT、RoBERTa、ALBERT 等目前业内顶尖的 NLP 模型都使用了这种激活函数。另外,在 OpenAI  声名远播的无监督预训练模型 GPT-2 中,研究人员在所有编码器模块中都使用了 GeLU 激活函数。

在神经网络的建模过程中,模型很重要的性质就是非线性,同时为了模型泛化能力,需要加入随机正则,例如 dropout(随机置一些输出为 0,其实也是一种变相的随机非线性激活),而随机正则与非线性激活是分开的两个事情, 而其实模型的输入是由非线性激活与随机正则两者共同决定的。

GeLU 正是在激活中引入了随机正则的思想,是一种对神经元输入的概率描述,直观上更符合自然的认识,同时实验效果要比 ReLU 与 ELU 都要好。

MNIST Classification Results
MNIST Classification Results

Google 再发布改进自然语言理解模型的新数据集

此前,《Google 发布两个全新的自然语言对话数据集》,然而,词序和语法结构对句意有很大影响,换而言之细微的词序调整也可能会完全改变句意。请思考以下例句:

  • Flights from New York to Florida. – 从纽约飞往佛罗里达的航班。
  • Flights to Florida from New York. – 从纽约飞往佛罗里达的航班。
  • Flights from Florida to New York. – 从佛罗里达飞往纽约的航班。

和第 3 句的意思截然不同,称为 非释义对 (Non-Paraphrase Pairs)。识别对应语句对是否为释义对的任务称为释义识别 (Paraphrase Identification),对自然语言理解 (Natural Language Understanding, NLU) 的实际应用(如问答系统)至关重要。

可能有些出乎意料,但如果仅在现有的数据集上训练,即使是 BERT 等最高水准 (SOTA) 模型也无法正确识别许多非释义对之间的差异(如上文中的第 1 句和第 3 句)。这是由于现有的数据集缺乏针对这种情况的训练数据。因此,即使能够理解复杂的上下文句式的机器学习模型,也很难理解此类任务。

为解决这一问题,Google 发布两个新数据集以帮助社区进行相关研究:

  • PAWS (Paraphrase Adversaries from Word Scrambling) 英文数据集;
  • PAWS-X 数据集,基于 PAWS 数据集并扩展为六种不同语言:法语、西班牙语、德语、中文、日语和朝鲜语。

两个数据集均包含结构完整、单词重叠度较高的句对,其中约有一半是释义对,而另一半是非释义对。通过在 SOTA 模型的训练数据中加入新数据,我们将算法的精确度从低于 50% 提升至 85-90%。

德语 (DE) 和中文 (ZH) 的人工翻译句对示例
德语 (DE) 和中文 (ZH) 的人工翻译句对示例

与之前相比,即便使用新的训练示例,无法获得非本地上下文信息的模型同样会训练失败。因此,新数据集也成为了测量模型对词序和单词结构敏感度的实用工具。

PAWS 数据集包含 108,463 个由人工标记的英文句对,这些数据来源于 Quora Question Pairs (QQP) 和维基百科。PAWS-X 包含 23,659 个由人工翻译的 PAWS 评估句对 (Evaluation Pairs) 和 296,406 个机器翻译的训练句对。下表列出了两个数据集的详细统计数据。

PAWS-X 的训练集是 PAWS Wiki 英文数据集中某个子集的机器翻译
PAWS-X 的训练集是 PAWS Wiki 英文数据集中某个子集的机器翻译

GitHub地址项目 GitHub 地址

TensorFlow 2.0 实现高水准的自然语言处理

Hugging Face 是一家专注于 NLP 的创业公司,拥有大型开源社区,在 Transformer 库方面表现尤为出色,包括 Bing、Apple 和 Monzo 在内的千余家企业均在使用该公司的库。Transformer 是基于 Python 的库,对外提供诸多热门转换器架构(例如 BERT、RoBERTa、GPT-2 或 DistilBERT)的 API。使用该API 可获得文本分类、信息提取、问题回答与文本生成等多种 NLP 任务的最高水准(SOTA)结果。我们已用多套权重对上述架构进行预训练。仅需安装 PIP 软件包管理工具,即可开始使用 Transformer。此库在 PyTorch 中发展迅猛,最近我们已将其移植到 TensorFlow 2.0 中,该库现可提供能与 Keras’ fit API、TensorFlow Extended 和 TPU 搭配使用的 API ?。本文将专门介绍采用 TensorFlow 的 Transformer 库的用途:使用 Keras API 及 TensorFlow TPUStrategy 对先进的 Transformer 模型进行微调。本教程所用的所有示例均可在 Colab 中查看。您可通过每个部分的链接进入相应的详情页面。

同时,跨象乘云™ 也开发了《BERT 语句情感分类》项目案例,基于业内最先进的自然语言处理模型:BERT。基于 IMDB 电影评论的点评文本,实现语句分类与情感分析,覆盖自然语言处理操作的必要步骤与高级特性,包括 —— BERT 模型架构,NLP 迁移学习,句型情感分类,NLP 模型训练,Word2vec,distilBERT 模型,scikit-learn 机器学习库等,并提供图文生动的技术讲解与代码演示。每个技术点均提供独立的执行脚本,源代码,测试用数据以及分解实验指导,让学生充分了解 NLP 技术相关的关键概念与先进的 BERT 模型的技术实现,以及复杂的自然语言处理流程。

GitHub地址项目 GitHub 地址

语音数据处理指南

随着企业开始进行人工智能技术的探索,三个特定的领域引起了很多关注:计算机视觉、自然语言应用和语音技术。世界知识产权局(WIPO)最近的一份报告发现,这三个领域的专利占了人工智能相关专利的大部分:计算机视觉占49%,自然语言处理(NLP)占14%,语音技术占13%。

企业里有很多非结构化和半结构化的文本数据,而很多公司已经拥有了 NLP 和文本分析的经验。虽然比较少的公司拥有收集和存储图像或视频的基础设施,但计算机视觉是许多公司开始探索的领域。深度学习和其他技术的兴起促使初创公司商业化了一些计算机视觉的应用,包括安防和合规、媒体和广告以及内容生成。

一些企业也在探索话音和语音的应用。自然语言和语音模型的最新进步提升了准确性,从而开辟出了一些新的应用。在企业语音应用方面,呼叫中心、销售和客户支持以及个人助理等应用处于领先地位。在消费者应用方面,语音搜索、智能音箱和数字助理正越来越普及。虽然远非完美,但目前这一代话音和语音应用已经足够得好,从而推动了语音应用的爆炸性增长。语音技术的潜力的一个早期线索是语音驱动的搜索的增长。Comscore 估计,到 2020 年,大约一半的在线搜索将使用语音。Gartner 建议企业重新设计其网站,以支持视觉和语音搜索。此外,从 2018年到 2019 年,智能音箱预计将增长 82% 以上。到今年年底,此类设备的安装数将超过 2 亿台。

音频内容数据也正在呈现爆炸式的增长。这就需要使用语音技术进行搜索和挖掘,从而能解锁这些新内容。例如,根据《纽约时报》最近的一篇文章,在美国“每个月中大概有三分之一的人会至少收听一次播客”。播客节目的增长并不仅限于美国,包括中国在内的世界各地的播客量都在增加。

语音和对话应用挑战性

在文本和 NLP 或计算机视觉领域里,程序员可以简单地开发出一个应用。但语音应用(不是简单的语音命令)对许多企业来说仍然具有挑战性。口语比书面文字有更多的“噪音”。例如,在阅读了许多播客脚本后,我们可以证明语音对话的脚本仍然需要大量的编辑工作。即使你可以获得最好的转录(语音到文本)技术,你也通常也会看到一个包含暂停、填充、重启、插话(在对话的场景里)和不合语法结构的句子的脚本数据。脚本还可能包含需要改进的段落,因为有人可能“在开脑洞”或难以准确地表达特定的观点。此外,由转录产生的脚本可能无有在正确的位置打标点或进行大写处理。因此,在许多应用中,脚本的后处理就需要人类编辑参与。

在计算机视觉(现在是 NLP )中,我们已经处于数据至少与算法同等重要的阶段。具体而言,预先训练的模型已经在计算机视觉和 NLP 的若干任务中提供了最好的性能。那么语音领域怎么样?“一个模型能满足所有的”语音模型没能出现的原因有下述几个:

  • 存在各种声学环境和背景噪音:室内或室外、在汽车里、在仓库里或在家庭等。
  • 可能需要支持多种语言(英语、西班牙语、中文普通话等),特别是在说话人在对话过程中使用(或混用)多种语言的情况下。
  • 应用类型(如搜索、个人助理等)会影响对话流程和词汇表。
  • 根据应用的复杂程度,需要针对特定领域和主题来调整语言模型和词汇。这一点对于文本和自然语言应用也成立。

构建语音应用

尽管存在挑战,但正如前面我们所指出的那样,语音技术和语音应用已经出现了相当多的让人激动的内容。虽然我们尚未达到可以使用通用解决方案为各种语音应用“供电”的阶段,同时也没有能够跨多个领域的语音智能助理。

然而,已经有一些很好的基础模块可以被用来组装有趣的语音应用。为了帮助正在探索使用语音技术的公司,我们整理了以下指南:

  • 集中你的注意力。正如我们所指出的那样,当前一代语音技术无法实现“一个模型能满足所有的”场景。因此最好将重点放在特定任务、某种语言和某个领域。
  • 理解应用想要实现的目标,然后再去看所需要的技术类型。如果你能知道应用的 KPI,那么就可以使用这些 KPI 来找到为特定应用领域实现这些度量标准所需要的语言模型。
  • 在“真实数据和真实场景”里进行实验。如果你计划开始使用现成的模型和服务,请注意“真实数据和真实场景”的重要性。在许多情况下,初始测试数据并不能代表用户与想部署的系统进行交互的方式。
  • 获取每个特定任务的标记样本。例如,识别英语中的“cat”和中文普通话中的“猫”将需要不同的模型和不同的标记数据。
  • 制定数据采集策略以保证收集到合适的数据。确保构建的系统可以随着收集到更多的数据而持续学习,以及制定一个支持持续改进的迭代流程。
  • 语音应用的用户关心的是结果。语音模型只有在推导出洞察力并使用这些洞察力而采取行动时才有意义。例如,如果用户要求智能音箱播放特定的歌曲,那么对该用户唯一重要的就是音箱能播放那首歌曲。
  • 自动化工作流程。理想情况下,所需的字典和语音模型可以在没有太多干预(来自机器学习或语音技术专家)的情况下进行更新。
  • 语音应用是复杂的端到端系统,因此要尽可能地进行优化。单单一个语音识别系统就是由我们在前一篇文章中描述的多个模块所组成。训练和再训练模型的代价可能很高。根据应用和场景,延迟和持续连接也是重要的考虑因素。

从 NLU 到 SLU

我们仍处于企业级语音应用的早期阶段。在过去的12个月中,我们看到预训练的自然语言模型取得了快速进展,这些模型在多个 NLP 基准测试中创造了新记录。开发人员开始采用这些语言模型,并针对特定领域和应用对它们进行微调。

对 AI 应用来说,语音数据又增加了另一层的复杂性,它超越了自然语言理解(NLU)。口语理解(SLU)需要能够从口语中提取含义。虽然 SLU 还没有被用于语言或语音应用,但好消息是,已经可以使用现有的 SLU 模型构建简单、特定用途的语音应用。为了找到正确的应用场合,企业需要了解当前技术和算法的局限性。

与此同时,我们将会一步一步地进行。正如 Alan Nichol 在一篇关注基于文本的应用的博文中指出的那样,“聊天机器人只是实现真正的 AI 助手和自动组织的第一步。”同样地,今天的语音应用揭开了即将发生的事情的一角。

Google 发布两个全新的自然语言对话数据集

如今的智能助理功能十分强大,被寄希望于完成多类任务并对不同主题的请求返回个性化结果,例如获取上映电影列表、预订餐厅和做计划旅行等。

然而,尽管智能助理近年来已取得巨大进步,但依旧未能达到人类的理解力水平。

这在一定程度上是由于我们缺乏优质训练数据,无法将人们的需求和偏好准确的反映给智能助理。系统的局限性导致在理解人类话语时会有偏差,我们为了让智能助理能够理解,不得不调整自己的措辞。换言之,现今智能助理的对话仍旧十分简单,远未达到人类理解所需的对话复杂度。

为解决该问题,Google 发布 Coached Conversational Preference Elicitation (CCPE)Taskmaster-1 英文对话数据集。

偏好导向 (Preference Elicitation) 数据集

在电影导向型 CCPE 数据集中,扮演“用户”的人员对着麦克风讲话,之后我们会向扮演“智能助理”的人员直接播放所录的音频。“智能助理”则以文字形式输出其响应,然后通过文字转语音向“用户”播放。这些双人对话中难免会出现双方之间自然发生的卡顿问题和错误,而这很难通过合成对话复制出来。由此,我们便能针对人们的电影偏好,创建一系列自然的结构化对话集合。

通过深入分析此数据集,我们发现人们会采用极其丰富的方式来描述自己的偏好。该数据集首次大规模展现了这种 丰富性。

我们还发现,人们的偏好与智能助理(或本例中的推荐网站)描绘选项的方式并不总是相符。换言之,您在搜索自己喜欢的电影或服务时所使用的的关键词,与您在向他人推荐您喜欢的电影时,使用的描述词汇可能会并不相同。

任务导向型对话数据集

askmaster-1 数据集结合使用上述方法和单人书面会话这两种方式来增加语料库规模和发言者的 多样性,最终得出约 7700 条书面的“自我对话”以及约 5500 个双人口语对话。

在书面对话中,我们会为每个任务概述相关场景,让人们据此自行创建完整对话,从而同时扮演“用户”和“助理”的角色。虽然口语对话更能真实反映双方语言上的交互,但书面对话在丰富度和复杂度方面都表现良好,并且收集这些数据的难度和成本也更低。我们基于以下 六项任务 之一来创建数据集:订披萨、进行汽车维修预约、租车、订购电影票、订咖啡和预订餐厅。

该数据集还使用简单的注释架构,为数据提供丰富的背景信息,同时让工作人员为对话添加标签时,能更好的保持一致性。传统意义上的详细策略很难使工作人员再添加标签时保持稳定的一致性,与之相比,我们只关注每类会话的 API 参数,即执行事务所需的变量。

如:在一个有关拼车安排的对话中,我们会为“目的地”和“出发地”位置以及车型(经济车、豪华车、拼车等)分别附加标签。在预定电影票时,我们为电影名称、影院、时间和票数附加标签,有时还会为放映类型(如 3D 或标准版)附加标签。语料库发布中随附有完整的标签列表。

我们希望这些数据集将能在对话系统和会话推荐的研究课题中,助力学术圈顺利开展实验和分析。

数据科学家常用自然语言处理Python库

此前,跨象乘云™ 发布过系列文章 ——

互联网上大约有 70% 以上的数据不是结构化格式的。非结构化数据包括传感器数据、图像、视频文件、音频文件、网站和 API 的数据、社交媒体数据、电子邮件以及更多与文本相关的信息。由于其特殊的特性,我们无法以一种简单的方式处理数据,为了解决这一问题,在大数据和数据科学环境下,出现了许多技术和工具来解决这一问题。

自然语言处理,是人工智能领域的前沿技术之一。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。NLP 的最终目标是以一种有价值的方式阅读、破译、理解和理解人类语言。大多数 NLP 技术依靠机器学习从人类语言中获得意义。基于 NLP 最著名的应用是:

  • Google Speech Recognition.
  • Apple’s Siri.
  • Microsoft’s Cortona.
  • Amazon’s Alexa.
  • Ok Google in Android Mobiles.
  • Interactive voice responses used in call centers.
  • Grammarly

1. spaCy

非常优化的 NLP 库,可以与 TensorFlowPyTorch 等深度学习框架一起使用。它是一个高级的 NLP 库,可在 Python 和 Cython 中的使用,它帮助我们可以进行快速的开发,spaCy 提供了预先训练的统计模型和单词向量,目前支持 50 多种语言的标记化。它具有最先进的速度,卷积神经网络模型的标签,解析和命名实体识别和易于深入学习集成。

# Importing the Library
import spacy

NLPLagnguageType = spacy.load('en')
text = NLPLanguageType('Earth Revolves around the sun.')
# Iterating over the text
for token in text:
print(token.text,token_pos_)

在上面的例子中,我们实现了一个简单的 NLP 例子,他将输出文本,并加上每个单词的词性:

> > > 地球名词

> > > 是动词

这样的例子不胜枚举。它将生成给定文本中每个单词的词性。

2. Gensim

Gensim 是一个用于从文档中自动提取语义主题的 Python 库,目标受众是自然语言处理 (NLP) 和信息检索 (IR) 社区。具有以下特性:

  • 内存独立:对于训练语料来说,没必要在任何时间将整个语料都驻留在RAM中
  • 有效实现了许多流行的向量空间算法,包括 tf-idf,分布式 LSA,分布式 LDA 以及 RP;并且很容易添加新算法
  • 对流行的数据格式进行了 IO 封装和转换
  • 在其语义表达中,可以相似查询

Gensim 的创建的目的是,由于缺乏简单的(java 很复杂)实现主题建模的可扩展软件框架。

import gensim
id2word = gensim.corpora.Dictionary.load_from_text('wiki_en_wordids.txt')
mm = gensim.corpora.MmCorpus('wiki_en_tfidf.mm')

lda = gensim.models.ldamodel.LdaModel(corpus=mm, id2word=id2word, num_topics=10, update_every=1, chunksize=10000, passes=1)

lda.print_topics(1)

上面示例可以看到一个通过 LDA 从 Wikipedia 转储中提取主题的非常简单的示例。

3. Pattern

Pattern 是采用 Python 开发的数据挖掘库,用于抓取和解析各种数据源,如谷歌、Twitter、Wikipedia 等等。

它提供了各种 NLP 工具 (PoS 标签、n- gram、WordNet)、机器学习功能 (向量空间模型、聚类、分类) 和用于进行网络分析的各种工具。它是由 CLiPS 维护的,因此不仅有很好的文档和许多例子,而且有许多学术出版物正在利用图书馆。

# Importing Libraries
from pattern.web import Google
from pattern.en import ngrams

engine = Google(license=API_LICENSE)

for result in engine.search('NLP', cached=False):
print(result.url, result.text)
print(ngrams(result.text, n=2))

在上面的示例中,是爬取谷歌以获取包含关键字『NLP』的结果,它将输出所有的结果 url 和文本。虽然这确实是一个毫无意义的示例,但它展示了如何通过 Pattern 执行爬行和 NLP 任务。

4. Natural Language Tool KIT [NLTK]

NLTK 是可用来训练 NLP 模型的最好的库之一。这个库很容易使用。它是一个初学者友好的 NLP 库。它有很多预先训练好的模型和语料库,可以帮助我们很容易地分析事物。

# Importing Libraries
import nltk
text = 'Earth Revovles around the Sun.'
# Token Generator--> Separates the sentence into tokens
tokens = nltk.word_tokenize(text)
for token in tokens:
print(token)

word_tokenize() 将帮助我们将一组文本创建为简单的单词。我们把它叫做 token,输出 ——

Earth
Revolves
around
the
Sun

5. TextBlob

TextBlob 基于 Pattern 和 NLTK,后者为所有常见的 NLP 操作提供了一个很棒的 API 调用。它不是最快或最完整的库,但它以一种极容易访问和管理的方式提供了人们日常所需功能。

# Importing Module
from textblob import TextBlob

text = 'Earth Revolves around the sun.'

text_blob = TextBlob(text)

for sentence in blob.sentences:
print(sentence.sentiment.polarity)

在上面的示例中,我们考虑 NLTK 库中获取的相同示例文本。在这个程序中,textblob 首先将句子分割成 Token,并在标记上执行情感分析,这只是句子极性分析。希望你对 Python 中自然语言的流行库有一个完整,由于 NLP 是一门难学课程,初学者可能无法正确理解它。但是那些想要开始 NLP 的人,那么你应该使用上面的任何一个库。如果你是一名自然语言处理的新手,我强烈建议您从 NLTK 开始,这将是一个很好的开始。