无监督学习与生成式人工智能(MEAP)(三)(1)

简介: 无监督学习与生成式人工智能(MEAP)(三)

第七章: 无监督学习用于文本数据

“每个人用相同的语言微笑 - 乔治·卡林”

我们的世界有这么多语言。这些语言是我们表达思想和情感的最常见媒介。用文字表达我们的想法的能力是人类独有的。这些词语对我们来说是信息的来源。这些词语可以被写成文本。在本章中,我们将探讨我们可以对文本数据进行的分析。文本数据属于非结构化数据,并携带着大量有用信息,因此是业务洞察的有用来源。我们使用自然语言处理或 NLP 来分析文本数据。

与此同时,为了分析文本数据,我们必须准备好数据分析。简单来说,由于我们的算法和处理器只能理解数字,我们必须用数字或向量表示文本数据。我们在本章中探讨了所有这些步骤。文本数据包含了一些重要用例的关键,如情感分析、文档分类、语言翻译等等。我们将通过案例研究来涵盖这些用例,并在此基础上开发 Python 解决方案。

本章从定义文本数据、文本数据的来源和文本数据的各种用例开始。然后,我们将转向清理和处理文本数据的步骤和过程。我们将涵盖 NLP 的概念、数学基础和将文本数据表示为向量的方法。我们将为用例创建 Python 代码。最后,我们分享了关于文本数据的案例研究。在这本书中,我们提供了适当深度的数学支持,而不会深入探讨过多 - 这是实际世界和数学概念的最佳结合。

在本书的第七章中,我们将涵盖以下主题:

  1. 文本数据和文本数据分析的各种用例
  2. 我们在处理文本数据时面临的挑战
  3. 文本数据的预处理和数据清理
  4. 将文本数据表示为向量的方法
  5. 使用 Python 进行情感分析 - 一个案例研究
  6. 使用 Python 进行文本聚类

欢迎来到第七章,祝你一切顺利!

7.1 技术工具包

我们将继续使用到目前为止所用的相同版本的 Python 和 Jupyter 笔记本。本章中使用的代码和数据集已经上传到了这个位置。

在本章中,您需要安装一些 Python 库,它们是 - XXXX。除此之外,我们还需要 numpy 和 pandas。使用库,我们可以非常快速地实现算法。否则,编写这些算法是非常耗时且繁琐的任务。

在这里,我们正在处理文本数据,也许你会发现它非常有趣和有用。

让我们开始书的第七章吧!

7.2 文本数据无处不在

请回忆一下书的第一章,我们探讨了结构化和非结构化数据集。非结构化数据可以是文本、音频、图像或视频。下面给出了非结构化数据及其来源的示例(请参见图 7-1),我们解释了非结构化数据的主要类型:文本、图像、音频和视频以及它们的示例。本章重点是文本数据。

图 7-1 非结构化数据可以是文本、图像、音频、视频。本章我们处理文本数据


语言确实是赐予人类的礼物。我们沉迷于说话、发短信、写作、倾听来传达我们的想法。而这是通过生成的文本数据来完成的,这些数据是由博客、社交媒体帖子、推文、评论、故事、评价、对话等产生的。文本数据通常更加直接,情感更具表达力。必须解锁文本数据的潜力,并从中得出见解。我们可以更好地了解我们的客户,探索业务流程,并衡量提供的服务质量。我们生成的文本数据以新闻、Facebook 评论、推文、Instagram 帖子、客户评价、反馈、博客、文章、文学、故事等形式存在。这些数据代表了各种情绪和表达。

你是否在亚马逊上评论过产品或服务?你给产品评星级,同时也可以输入自由文本。去亚马逊看一些评论吧。你可能会发现一些评论有很多文字作为反馈。这些文本对产品/服务提供商来说是很有用的,可以帮助他们改进他们的产品/服务。此外,你可能参与了一些调查,要求你分享反馈。另外,随着 Alexa、Siri、Cortana 等技术的出现,语音指令正在充当人类和机器之间的接口 - 这又是一个丰富的数据来源。甚至我们打给客服中心的电话也可以成为文本数据的来源。这些通话可以被记录,并通过语音转文字转换,我们可以生成大量的文本数据。海量数据集,对吧!

我们将在下一节讨论一些文本数据的重要用例。

7.3 文本数据的用例

文本数据确实非常有用。对于业务而言,这真是一个见解丰富的来源。下面列出了一些令人感兴趣的用例。列表并不是详尽无遗的。同时,并非所有给出的用例都实施无监督学习。有些用例也需要监督学习。尽管如此,为了让你了解,我们分享了基于监督学习和无监督学习的两种用例 - 基于监督学习和无监督学习的用例。

  1. **情感分析:**你可能参与过调查或针对产品/调查提供了反馈。这些调查为我们生成了大量文本数据。可以分析这些文本数据,我们可以确定评论中的情感是积极的还是消极的。简单来说,情感分析就是评估文本数据中的积极性或消极性。因此,客户对产品或服务的情感是什么。我们可以使用监督式和非监督式学习进行情感分析。
  2. **新闻分类或文档分类:**看看 Google 新闻网页,你会发现每个新闻都被分类为体育、政治、科学、商业或任何其他类别。传入的新闻将根据实际文本的内容进行分类。同样,想象一下,我们手头有一些文档,我们可能想根据它们的类别或研究领域进行区分。例如,医学、经济学、历史、艺术、物理等。这样的用例确实会节省大量时间和人力。
  3. **语言翻译:**从一种语言到另一种语言的文本翻译是一个非常有趣的用例。使用自然语言处理可以在各种语言之间进行翻译。语言翻译非常棘手,因为不同的语言有不同的语法规则。通常,基于深度学习的解决方案最适合语言翻译。
  4. **垃圾邮件过滤:**可以使用自然语言处理和监督式机器学习来构建电子邮件垃圾邮件过滤器。监督式学习算法可以分析传入邮件的参数,并可以预测该邮件是否属于垃圾邮件文件夹。预测可以基于诸如发件人电子邮件 ID、主题行、邮件正文、附件、邮件时间等各种参数。通常,在这里使用监督式学习算法。
  5. 词性标注或 POS 标注是其中一个受欢迎的用例。这意味着我们能够区分句子中的名词、形容词、动词、副词等。命名实体识别或 NER 也是自然语言处理的著名应用之一。它涉及在句子中识别人物、地点、组织、时间、数字。例如,John 住在 London 并为 Google 工作。NER 能够生成类似[John][Person]住在[London][Location]并为[Google][organization]工作的理解。
  6. 生成句子,为图像加标题,语音转文本或文本转语音任务,手写识别是其他一些重要和受欢迎的用例。

上述列出的用例并不是穷尽的。还有大量其他用例可以使用自然语言处理实现。NLP 也是一个非常受欢迎的研究领域。我们在本章末尾分享了一些重要的论文供您参考。

虽然文本数据非常重要,但同时也是一种难以分析的数据集。需要注意的是,我们的计算机和处理器只能理解数字。因此,文本仍然需要表示为数字,以便我们可以对其进行数学和统计计算。但在深入研究文本数据准备之前,我们将介绍在处理文本数据集时面临的一些挑战。

7.4 文本数据的挑战

文本可能是最难处理的数据。有很多种方式可以表达同样的想法。例如,如果我问:“嘿,伙计,你几岁了?”和“嘿,伙计,我可以知道你多大了吗?”意思相同,对吧!对于人类来说,回答这两个问题是相同的,并且很容易解释。但对于机器来说可能是同样艰巨的任务。

我们面临的最常见的挑战有:

  1. 处理文本数据可能很复杂。文本中可能有很多垃圾字符,比如$^%*&之类的。
  2. 随着现代通信的发展,我们开始使用缩写词,比如“u”可以代表“you”,“brb”可以代表“be right back”等。
  3. 语言在变化,解除了限制,不断发展。它每天都在变化,新词汇不断被加入到语言中。

如果你做一个简单的谷歌搜索,你会发现每年都有相当多的词汇被添加到词典中。

  1. 世界上有近 6500 种语言,每一种语言都具有其独特性。每一种语言都构成了我们的世界。例如,阿拉伯语、中文、英语、法语、德语、印地语、意大利语、日语、西班牙语等。每种语言都有自己独特的用法和语法规则。甚至写作方式也可能不同 - 有些从左到右书写;有些可能从右到左书写,或者垂直书写!相同的情感,在不同语言中可能需要更少或更多的词汇来表达。
  2. 一个词的意义取决于上下文。一个词在不同的上下文中可以是形容词,也可以是名词。看看下面这些例子:
  3. “这本书是必读的”和“请为我预订一个房间”。
  4. “汤米”可以是一个名字,但当用作“汤米·希尔菲格”时,它的用法完全改变了。
  5. “苹果”是一种水果,而“Apple”是一家生产 Macintosh、iPhone 等产品的公司。
  6. “四月”是一个月份,也可以是一个名字。
  7. 再看一个例子 - “马克从英国去了法国,正在那里和约翰一起工作。他想念他的朋友”。人类很容易理解第二句中的“他”是指马克而不是约翰,这对于机器来说可能不那么简单。
  8. 同一个词可能有很多同义词,比如“好”在不同情境中可以用“积极的”、“精彩的”、“出色的”、“异常的”来替换。或者,像“studying”、“studying”、“studies”、“studies”这样的词都与同一个词根“study”相关。
  9. 文本数据的大小也可能令人生畏。管理文本数据集、存储它、清理它并更新它本身就是一项艰巨的任务。

像任何其他的机器学习项目一样,文本分析遵循机器学习的原则,尽管确切的过程略有不同。回想一下第一章,我们在图 7-2 中展示了机器学习项目的流程。建议您从第一章刷新一下流程。

图 7-2 数据科学项目的整体步骤对文本数据也是一样的。文本数据的预处理与结构化数据集非常不同。


定义业务问题、数据收集和监控等工作保持不变。主要的差异在于文本的处理,包括数据清理、特征创建、文本数据的表示等。我们现在来介绍它。


弹出测验 – 回答这些问题来检查你的理解。答案在书的末尾。

(1) 文本数据的三个最有影响力的用例是什么?

(2) 为什么处理文本数据如此繁琐?

7.5 文本数据的预处理

文本数据,像任何其他数据源一样,可能会杂乱无章。我们在数据发现阶段清理了一部分数据,而在预处理阶段清理了大部分数据。同时,我们需要从数据集中提取特征。这个清理过程有时是相似的,并且可以应用于大多数文本数据集。一些文本数据集可能需要定制的处理方法。我们将从清理原始文本数据开始。

7.5.1 数据清理

数据质量的重要性不容置疑。文本数据越干净,分析结果就会越好。与此同时,预处理并不是一项简单的任务。这是一个复杂且耗时的任务。

文本数据需要进行清理,因为它包含了大量的垃圾字符、无关的词语、噪音和标点符号、URL 等。清理文本数据的主要方法有:

  1. 停用词去除: 在任何语言中,有一些词是最常见的。停用词是词汇中最常见的单词,比关键词的重要性低。例如,“是”,“一个”,“这”,“有”,“已经”,“它”等。一旦我们从文本中去除了停用词,数据的维度就被减少了,因此解决方案的复杂性也减少了。
    与此同时,在去除停用词时,我们必须非常了解上下文。例如,如果我们问一个问题“下雨了吗?”。那么答案“下雨了”就是一个完整的答案。
    要去除停用词,可以定义一个定制的停用词列表并去除它们。否则,也可以使用标准库去除停用词。

当我们在处理需要上下文信息很重要的解决方案时,我们不会去除停用词。

  1. 基于频率的词汇移除: 有时,您可能希望移除文本中最常见或非常独特的词。这个过程是获取文本中词语的频率,然后设置一个频率阈值。我们可以移除最常见的词。或者也许您希望移除整个数据集中只出现一次/两次的词。根据需求,您将决定。
  2. 基于库的清洗是在我们希望使用预定义和自定义库来清理数据时进行的。我们可以创建一个词库,其中包含我们不希望在文本中出现的词,然后可以迭代地从文本数据中移除它们。这种方法允许我们以自己的选择实施清理。
  3. 垃圾或不需要的字符: 文本数据,特别是推文、评论等,可能包含许多 URL、标签、数字、标点符号、社交媒体提及、特殊字符等。我们可能需要从文本中清除它们。与此同时,我们必须小心,因为对于一个领域不重要的一些词对于另一个领域可能是非常重要的。如果数据被从网站或 HTML/XML 来源中爬取,我们需要摆脱所有 HTML 实体、标点符号、非字母等。

清理文本数据时,始终要牢记业务背景。

我们知道很多新类型的表达进入了语言。例如,lol,hahahaha,brb,rofl 等。这些表达必须被转换为它们的原始含义。甚至像:-),;-)等表情符号也必须被转换为它们的原始含义。

  1. 数据编码: 有许多数据编码可用,如 ISO/IEC,UTF-8 等。通常,UTF-8 是最流行的。但不是硬性规定一定要使用 UTF-8。
  2. 词典归一化: 根据上下文和使用情况,同一个词可能以不同的方式被表示。在词典归一化期间,我们清理这样的歧义。基本思想是将单词缩减到其根形式。因此,从彼此派生出来的词可以映射到中心词,只要它们有相同的核心含义。
    看一下图 7-2,在这里我们展示了相同的单词“eat”,已经被用在各种形式中。根词是“eat”,但这些不同的形式是 eat 的许多不同表达。
图 7-3 Ate,eaten,eats,eating 都有相同的根词——eat。词干提取和词形恢复可用于获取根词。


我们希望将所有这些词,如 eating,eaten 等,映射到它们的中心词“eat”,因为它们具有相同的核心含义。在这方面有两种主要方法可以处理:

  1. 词干提取: 词干提取是一种基本的基于规则的方法,将一个单词映射到它的核心词。它会去掉单词末尾的“es”,“ing”,“ly”,“ed”等。例如,studies 会变成 studi,studying 会变成 study。显然,作为一种基于规则的方法,输出的拼写可能并不总是准确的。
  2. 词形还原:是一种有组织的方法,将单词缩减为它们的词典形式。单词的Lemma是其词典或规范形式。例如,eats, eating, eaten 等所有单词都有相同的根词 eat。词形还原提供比词干提取更好的结果,但它需要比词干提取更多的时间。

这些只是清洗文本数据的一些方法。这些技术在很大程度上会有所帮助。但是,仍然需要商业眼光来进一步理解数据集。我们将通过开发 Python 解决方案来使用这些方法清洁文本数据。

一旦数据被清洗,我们就必须开始表示数据,以便机器学习算法可以处理它 - 这是我们的下一个主题。

无监督学习与生成式人工智能(MEAP)(三)(2)https://developer.aliyun.com/article/1522606

相关文章
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
生成式人工智能(AIGC,Generative AI)
生成式人工智能(AIGC,Generative AI)
22 3
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
生成式人工智能(Generative AI)
生成式人工智能(Generative AI)
19 0
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
生成式人工智能(AIGC,Generative AI)
生成式人工智能(AIGC,Generative AI)
11 0
|
24天前
|
机器学习/深度学习 算法 TensorFlow
无监督学习与生成式人工智能(MEAP)(三)(5)
无监督学习与生成式人工智能(MEAP)(三)
19 0
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
无监督学习与生成式人工智能(MEAP)(三)(4)
无监督学习与生成式人工智能(MEAP)(三)
10 0
|
24天前
|
机器学习/深度学习 人工智能 数据挖掘
无监督学习与生成式人工智能(MEAP)(三)(3)
无监督学习与生成式人工智能(MEAP)(三)
9 0
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
无监督学习与生成式人工智能(MEAP)(三)(2)
无监督学习与生成式人工智能(MEAP)(三)
18 0
|
2天前
|
人工智能 前端开发 搜索推荐
人工智能(AI)在前端设计中的创新应用
人工智能(AI)在前端设计中的创新应用
19 4
|
5天前
|
传感器 人工智能 搜索推荐
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能(AI)在金融领域的应用已经成为改变金融业态的重要力量
人工智能(AI)在金融领域的应用已经成为改变金融业态的重要力量

热门文章

最新文章