我们将简要概述自然语言处理 (NLP),介绍用于 Python 的 NLTK,并解释如何使用它来解决复杂的 NLP 问题。
担任社区经理、开发者倡导者和类似职位的人试图通过关注客户在社交媒体或论坛上的评论来掌握社区的脉搏。随着社区的发展,大量的人员和对话使得理解该群体的整体情绪具有挑战性,但了解将参与工作集中在哪里和辨别有用的客户反馈可能更为重要。
那么,人们对您的业务有何评价?在这个由多部分组成的教程中,我将演示如何开始使用 Python 和自然语言处理 (NLP)(机器学习的一个分支)构建自己的工具,以根据他们在像Reddit这样的公共论坛。
我们将从一些关键 NLP 概念的入门入门开始,并开始使用自然语言工具包 (NLTK) Python 库。
有关获取 NLP 分析数据、使用预训练 NLP 模型以及创建您自己的 NLP 文本分类和自定义模型的其他模块的链接,请参见本文末尾。
什么是自然语言处理?
自然语言处理是人工智能和机器学习的跨学科研究,因为它涉及用人类语言的文本做有用的事情。NLP 可用于广泛的应用,例如语言之间的翻译、信息汇总、对话机器人和搜索。
语言分析和对话处理需要理解复杂的主题,例如形态、句法和语法结构、语义以及从上下文中得出的含义。
基于该领域的研究,Edward Loper、Steven Bird 和 Ewan Klein 创建了自然语言工具包 (NLTK),这是一个用于在 Python 中构建 NLP 应用程序的平台。像 NLTK 这样的库的意义在于,您无需成为形态学、句法和语义方面的专家——也不必成为机器学习方面的专家——来构建使用 NLP 的应用程序。
无论是了解人口统计的政治倾向、特定营销活动的受欢迎程度、投资者信心还是基于社交媒体的客户情绪,您都可以专注于您最了解的领域,让 NLTK 等工具完成繁重的工作。
在本教程中,我不会介绍 Python 编程基础、安装、虚拟环境等。如果您需要任何帮助,请先查看The Hitchhiker’s Guide to Python。此处的示例使用 Python 3.7.5。
NLTK 入门
NLTK 被描述为一个平台,而不仅仅是另一个 Python 库,因为除了一组模块之外,它还包括许多贡献的数据集。这些数据集被称为语料库,之所以这样命名,是因为它是关于如何使用语言的知识的集合或主体。
NLTK 默认安装在Anaconda发行版中,用于使用 Python 进行数据科学和机器学习。
如果尚未安装,您可以使用 Python 的 pip 包管理器安装 NLTK,方法是运行:Python复制代码
pip install -U nltk
使用 NLTK 的项目的第一步是导入库。无论您是在代码文件、Python 交互式 shell中编写 Python ,还是使用Jupyter Notebooks或IPython之类的工具,您都可以运行以下内容:Python复制代码
import nltk
请注意,在这些教程模块中,我们将呈现您在代码编辑器中编写的 Python 代码,但相同的代码可以在上述任何环境中工作。
接下来,使用该download()
方法扩展可供您使用的语料库。当不提供任何参数时,这将打开一个用户界面,您可以在其中选择单个扩展或下载整个集合。
在此示例中,我们正在下载Punkt,这是一个预先训练的英语分词器,可将文本划分为句子和单词的列表。它是由一种无监督算法构建的,用于对缩写、搭配和句子开头的单词进行建模。Python复制代码
nltk.download('punkt')
下载后,您就可以使用它了。这是一个使用 Punkt 分词器提取句子成分的示例。Python复制代码
import nltk sentence = "A long time ago in a galaxy far, far away…" tokens = nltk.word_tokenize(sentence) print(tokens)
此代码的输出如下所示:Python复制代码
['A', 'long', 'time', 'ago', 'in', 'a', 'galaxy', 'far', ',', 'far', 'away', '...']
您可能只使用基本的 Python 方法就可以做类似的事情split()
,但要考虑到所有的变化,您最终会编写比这个单一nltk.word_tokenize(sentence)
调用完成的代码更多的代码。
下一步
在本文中,我们向您介绍了自然语言处理中的一些基本概念以及用于 NLP 的流行 Python 库之一 NLTK。
对于构建不仅仅是读写字符串更重要的应用程序,下一步是探索如何分析文本。
对于学习 NLP 和 NLTK 的下一步,我们建议为自然语言处理寻找数据。
如果您需要复习 Python,请参阅使用 Python 和 Pandas 进行数据清理系列。