在社区管理、开发者倡导等角色中,人们需要通过关注社交媒体或讨论论坛上的客户言论来把握社区的脉搏。随着社区的增长,大量的人群和对话使得理解整体情感变得具有挑战性,但更重要的是理解如何集中参与努力,并识别有用的客户反馈。
那么,人们是如何评价业务的呢?在这个多部分教程中,将展示如何使用Python和自然语言处理(NLP)——机器学习的一个分支——来分析基于公众在像Reddit这样的公共论坛上的评论的情感。
将从一些关键的NLP概念的入门知识开始,并介绍Python的自然语言工具包(NLTK)。
在本文的末尾,将找到关于获取NLP分析数据、使用预训练的NLP模型以及创建自己的NLP文本分类和自定义模型的额外模块链接。
自然语言处理是人工智能和机器学习在与人类语言文本处理相关的有用事物上的跨学科研究。NLP可以用于翻译不同语言、信息摘要、对话机器人和搜索等多种应用。
语言分析和对话处理需要理解诸如形态学、句法和语法结构、语义以及从上下文中派生出的意义等复杂主题。
基于该领域的研究,Edward Loper、Steven Bird和Ewan Klein创建了自然语言工具包(NLTK),这是一个用于构建Python中NLP应用程序的平台。像NLTK这样的库的目的是,不需要成为形态学、句法和语义的专家——也不需要成为机器学习的专家——就能构建使用NLP的应用程序。
无论是理解某个人群的政治倾向、特定营销活动受欢迎程度、投资者信心,还是基于社交媒体的客户情感,都可以专注于最了解的领域,让像NLTK这样的工具来做繁重的工作。
在本教程中,不会涵盖Python编程基础、安装、虚拟环境等。如果需要这方面的帮助,请先查看《Python指南》。这里的例子使用的是Python 3.7.5。
NLTK被描述为一个平台,而不仅仅是另一个Python库,因为它除了包含一系列模块外,还包括许多贡献的数据集。这些数据集被称为语料库,之所以这样命名,是因为它是一个关于如何使用语言的知识集合或知识体系。
NLTK默认安装在AnacondaPython数据科学和机器学习发行版中。如果尚未安装,可以使用Python的pip包管理器通过运行以下命令来安装NLTK:
pip install -U nltk
使用NLTK的项目第一步是导入库。无论是在代码文件中编写Python、使用Python交互式shell,还是使用像Jupyter Notebooks或IPython这样的工具,都可以运行类似以下代码:
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',
'...'
]
可能已经能够使用基本的Pythonsplit()方法做类似的事情,但要考虑到所有的变体,最终会编写比刚刚完成的nltk.word_tokenize(sentence)调用更多的代码。