65.9K
CodeProject 正在变化。 阅读更多。
Home

介绍使用 Python 进行自然语言处理的 NLTK

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2020 年 5 月 29 日

CPOL

4分钟阅读

viewsIcon

10319

downloadIcon

99

本文是情感分析系列的第一篇,该系列使用 Python 和开源的自然语言工具包。本文将介绍一些关键的 NLP 概念以及如何开始使用自然语言工具包 (NLTK) Python 库。

社区经理、开发者布道师以及类似职位的人员,通过关注社交媒体或讨论论坛上的客户言论,来努力掌握社区的脉搏。随着社区的增长,大量的人员和对话使得理解整体群体的情感变得极具挑战性,但也许更重要的是了解应将精力集中在哪里,并辨别有用的客户反馈。

那么,人们对您的业务有什么看法?在这个多部分教程中,我将演示如何使用 Python 和自然语言处理 (NLP)——机器学习的一个分支——开始构建自己的工具,以分析一个群体基于他们在Reddit 等公共论坛上的评论所表达的情感。

我们将从介绍一些关键的 NLP 概念以及如何开始使用自然语言工具包 (NLTK) Python 库开始。

有关获取 NLP 分析数据、使用预训练 NLP 模型以及创建自己的 NLP 文本分类和自定义模型的其他模块的链接,请参阅本文末尾。

什么是自然语言处理?

自然语言处理是人工智能和机器学习的交叉学科研究,涉及如何对人类语言文本进行有用的处理。NLP 可用于广泛的应用,例如语言翻译、信息摘要、对话机器人和搜索。

语言分析和对话处理需要理解形态学、句法和语法结构、语义以及从上下文中推导出的意义等复杂主题。

基于该领域的研究,Edward Loper、Steven Bird 和 Ewan Klein 创建了自然语言工具包 (NLTK),这是一个用于在 Python 中构建 NLP 应用程序的平台。像 NLTK 这样的库的意义在于,您不必成为形态学、句法和语义方面的专家——也不必是机器学习方面的专家——就能构建采用 NLP 的应用程序。

无论是了解特定人群的政治倾向、特定营销活动的受欢迎程度、投资者信心,还是基于社交媒体的客户情感,您都可以专注于您最了解的领域,让 NLTK 等工具来完成繁重的工作。

在本教程中,我将不涵盖 Python 编程基础、安装、虚拟环境等内容。如果您在这方面需要帮助,请先查阅《Python 开发者指南》。这里的示例使用 Python 3.7.5。

开始使用 NLTK

NLTK 被描述为一个平台,而不仅仅是另一个 Python 库,因为它除了包含一系列模块外,还包含许多贡献的数据集。这些数据集被称为语料库,之所以这样命名,是因为它是关于如何处理语言的集合或知识体。

NLTK 默认随用于数据科学和机器学习的 Python 分发版 Anaconda 一起安装。

如果尚未安装,您可以通过运行以下命令,使用 Python 的 pip 包管理器来安装 NLTK:

pip install -U nltk

使用 NLTK 的项目的第一个步骤是导入该库。无论您是在代码文件中编写 Python 代码、在Python 交互式 shell 中,还是在使用 Jupyter NotebooksIPython 等工具,您都可以运行以下类似的代码:

import nltk

请注意,在这些教程模块中,我们将 Python 代码的呈现方式与在代码编辑器中编写时一致,但相同的代码在上述任何环境中都可以运行。

接下来,使用 download() 方法来扩展可供您使用的语料库。当不提供任何参数时,这将打开一个用户界面,您可以在其中选择单个扩展或下载整个集合。

在此示例中,我们将下载Punkt,这是一个预训练的英语分词器,它将文本划分为句子和单词的列表。它构建于一个无监督算法之上,用于建模缩略语、词组搭配和句子开头的单词。

nltk.download('punkt')

下载完成后,您就可以使用它了。以下是使用 Punkt 分词器提取句子组成部分的示例。

import nltk
sentence = "A long time ago in a galaxy far, far away…"
tokens = nltk.word_tokenize(sentence)
print(tokens)

此代码的输出如下所示:

['A', 'long', 'time', 'ago', 'in', 'a', 'galaxy', 'far', ',', 'far', 'away', '...']

您也许可以使用基本的 Python split() 方法做到类似的事情,但要考虑到所有变量,您最终编写的代码将比仅通过一个 nltk.word_tokenize(sentence) 调用所完成的要多得多。

后续步骤

在本文中,我们向您介绍了自然语言处理的一些基本概念以及 NLTK,这是 NLP 领域流行的 Python 库之一。

要构建比仅仅读取和写入字符串更实质性的应用程序,下一步是探索如何分析文本。

要继续学习 NLP 和 NLTK,我们推荐 查找用于自然语言处理的数据

如果您需要回顾 Python,请参阅关于使用 Python 和 Pandas 进行数据清理的系列文章。

© . All rights reserved.