快捷搜索:

我对有抱负的数据科学家的简单教程:了解NLP技

了解基本文本分析和ML的快速方法

我对有抱负的数据科学家的简单教程:了解NLP技

> Intro to NLP Source Unsplash

"您将知道它所拥有的公司的一句话" —约翰·费思

什么是自然语言处理?

自然语言处理(NLP)可帮助计算机理解文本并模拟人类如何理解文本。

由于近年来的数据增长,NLP迅速增长。 随着Twitter,Facebook和Google的兴起,尤其是在搜索引擎或个人AI助手中处理非结构化数据的情况下。 NLP的应用越来越广泛。

NLP的应用与问题Google搜寻图片我对有抱负的数据科学家的简单教程:了解NLP技

> My search for the word "cat"

考虑使用Google搜索猫图片。 你是什么猫?

有这么多猫。 您在"猫"戏剧演出中有突变猫。 你有卡通猫。 你在说哪一个?

· 当我说"可爱的猫"时。 显然我要小猫。

· 当我说"猫秀"时。 显然我要那只突变的猫。

相邻的单词,例如" Cute"和" Show",进一步说明了我想要的内容。 这是评估NLP性能的背景。

Google助手

考虑一下Google Home Mini,您只需花费50美元即可购买。 它了解查询上下文吗?

想象一下,您的小女儿在她的任务项目" Ok Google,定义一闪一闪的小星星"中询问Google Home Mini。

Google Home是否不应该足够聪明地知道它是一首歌的标题?

情绪分析

想象一下,您想预测唐纳德·特朗普在上届总统选举中战胜希拉里·克林顿的胜利。

您能从Twitter上的普遍情绪中预测吗? 每个总统候选人的满意点是什么?

主题分析

想象一下您的硕士/本科班级论坛:很难从所有这些信息中提取出重要的内容。

您能否建立一个模型,以潜在地提取所有关键主题并根据该主题过滤帖子?

问题陈述

NLP变得越来越普遍,对学习也很重要。 潜力是巨大的,现在已在世界各地使用。

NLP为什么很难-歧义和上下文?

NLP的最大敌人是模棱两可,NLP的最大朋友是上下文– Vincent Tatan

考虑一下我们在日常生活中如何使用文字。

"你为什么这么沮丧? 玩得开心啦!

"这是怎么回事?

对于我们来说,这些单词的含义似乎非常清楚。 " r u"表示"您是","怎么了"是美国常见的非正式问候。

但是,这些句子中存在歧义。 "怎么了"字面上的答案应该是"太阳升起了",而不是"我很好,谢谢"。 隐藏的上下文使我们很难向计算机解释这些句子的确切含义。

大多数时候,我们假设听众会根据对世界的了解和共享上下文来填补很多空白。

我们在哪?

我们在做什么?

我们彼此之间已经了解了什么?

有趣的是,我们不知道大脑中的单词是如何产生含义的。 但这对我们来说非常容易。

这就是为什么我们需要计算机的机器学习和NLP技术才能从文本语料库中识别这些规则和上下文。

合作实验室

在本课程中,我们将使用此Colab来完成本教程。 随意打开它并直接运行。 该合作实验展示了NLP的简单应用。

您如何理解"我爱冰淇淋"?我对有抱负的数据科学家的简单教程:了解NLP技

> Source Unsplash

想象一下,你问你的女儿他们喜欢吃什么。 其中一个孩子回答"我爱冰淇淋!" 你能猜出他们是兴奋地微笑还是皱着眉头?

如果我刚刚向您显示"我在这里插入单词"冰淇淋这个词,您可以这样做吗? 您怎么知道这个孩子是否皱着眉头?

为了回答这个情感分析问题,让我们将NLP分解为以下基本原则:

· 标记化:分解并编码句子中的每个单词。

· 序列:以特定顺序映射标记以形成句子/序列。

· 嵌入:在多维图中表示令牌以提供矢量聚合以提供业务洞察力(情感分析)。

Tokenize

标记化将文本分解为计算机可以理解的标记和索引。

我们将讨论如何通过标记单词来理解单词。 考虑单词FRIED。 我们可以用ASCII数字表示这些字母。 但是由于顺序不同,FIRED的字母也相同,但单词却不同。

好吧,让我们改用这些词。 在文本"我爱我的狗"中,我们可以按每个单词→1 [I],2 [love],3 [my],4 [dog]对其进行编码。 我们将看一下实现标记化的代码

Tokenizer API已经删除了所有的感叹号和标点符号,这些符号和标点符号对于快速获取单词令牌很方便。

首先,我们需要标记来自Keras的API。 然后我们可以创建句子。 Num_words参数在这里表示要保留的单词数。 在这种情况下,我们将保留100个出现在语料库中的最常用单词。

如果分词器发现word_index中不存在的单词怎么办? 然后,我们需要指定词库外(OOV)标记并将其标识为索引1。

我对有抱负的数据科学家的简单教程:了解NLP技

> Tokenizations and indexings of words

恭喜! 您刚刚将这些标记编入索引以进行培训!

排序

排序表示单词序列及其相应索引中的句子。 我们使用tokenizer.texts_to_sequence将语料库按顺序转换为标记。

排序很重要,因为单词的顺序很重要。 "我爱鱼"和"我爱鱼"具有不同的语义和语法错误。 句子的顺序确定哪个标记成为含义的对象或主语。

这对标记进行排序,并填充剩余的标记空间以匹配最长序列的维数。 这些对于在嵌入/情感分析过程中运行数学运算非常重要。

我对有抱负的数据科学家的简单教程:了解NLP技

> Results of the sequencing

请注意,我们可以从此处提取几个索引:

· 0→填充较短的句子以匹配较长的句子

· 1→OOV(词汇不足)。 这些是在word_index标记中找不到的词汇表

· 1→在标记化word_index中找到的单词索引

填充使我们能够标准化每个主体的长度。 这使得使用numpy运行多个操作并为进行神经网络(NN)培训做准备变得更加容易。

嵌入

嵌入将输入投影到多维表示空间中。 例如,我们可以将以下单词投影到极性子空间中。

我对有抱负的数据科学家的简单教程:了解NLP技

> Embedding: plotting words in dimensional spaces

让我们在多维空间中绘制每个单词。 然后,当我们想拥有合并的含义时。 我们可以将这些向量组合在一起并生成统一的向量。

例如,好被认为是积极情绪,而坏则被认为是消极情绪。 但是,如果您在同一句话中使用"好"和"坏"(例如:我认为您的论文是好的,但是您的笔迹很差),那么您的情绪就会中立。

通过对Tensorflow和Keras进行实验,我们可以训练以嵌入为输入的神经网络。 使用此colab笔记本,您可以尝试做Kaggle问题并运行代码。

奖励:自然语言处理的进一步挑战

这样在NLP中有更多的应用。 我希望这个简单的教程能激发您的胃口,探索如何处理单词和语言。

语法和词汇很复杂。 我们需要更多的技术来派生我们的功能并更好地进行标记化。

· 引理:应该表示的独特词。 例如,在英语中,我们有不同的时态。 运行,运行和运行均指相同的单词。 中文具有单词组合,在其中可以具有不同的含义。 像wei(危险)ji(机会)→危机

· POS(词性)标记:单词标记是独立的含义单位。 可以是动词,词缀,前缀,名词等。例如run是动词,但是running可以是形容词(例如running race)

· 块:从"语音标记"中识别对实体的提及。 它将单词/标记分组

· 共指:链接中提到相同实体的部分中的单词。 例如:奥巴马和罗姆尼谈到自己的童年。 他在这里指的是什么?

最后的想法

总之,我相信这些基本的NLP在您的第一次探索中很容易实现。 我们了解到:

· 标记化:分解并编码句子中的每个单词。

· 序列:以特定顺序映射标记以形成句子/序列。

· 嵌入:在多维图中表示令牌以提供矢量聚合以提供业务洞察力(情感分析)。

随意了解如何在Tensorflow和Keras等DNN框架中实现它。

与往常一样,如果您有任何疑问,请通过Linkedin与我联系。 如果时间允许,我很乐意回答您的问题。

索利·迪奥·格洛里亚

参考

· 斯坦福大学的自然语言理解(NLU)

· NLP零英雄,劳伦斯·莫洛尼(Laurence Moroney)

关于作者

Vincent通过ML @ Google打击互联网滥用。 Vincent使用高级数据分析,机器学习和软件工程技术来保护Chrome和Gmail用户。

除了在Google任职外,Vincent还是Towards Data Science Medium的特约作家,该指南为全球有50万以上观众的ML和数据从业者提供指导。

在业余时间,文森特(Vincent)就读佐治亚理工大学的ML硕士学位,并训练铁人三项/骑车旅行。

最后,请通过LinkedIn,Medium或Youtube频道联系Vincent

(本文翻译自Vincent Tatan的文章《Understanding NLP Techniques》,参考:https://towardsdatascience.com/understanding-nlp-techniques-and-machine-learning-2fdbe78922f2)

您可能还会对下面的文章感兴趣: