第二周作业文本分析,文本分类算法( 二 )


')和空格之类的字符 。spaCy的令牌生成器以Unicode文本形式接受输入,并输出一系列令牌对象 。让我们看一个简单的例子 。假设我们有以下文本,并且我们希望对其进行标记化:我们可以采用几种不同的方法来解决这个问题 。第一种称为单词标记化,即将文本分解成单个单词 。对于许多语言处理应用程序而言,这是至关重要的一步,因为它们通常需要以单个单词而不是更长的字符串形式输入 。
在下面的代码中,我们将导入spaCy及其英语模型,并告诉我们将使用该模型进行自然语言处理 。然后,我们将文本字符串分配给text 。使用nlp(text),我们将处理该文本spaCy并将结果分配给名为的变量my_doc 。至此,我们的文本已经被标记化了,但是spaCy将标记化的文本存储为文档,我们希望以列表形式查看它,因此我们将创建一个for循环遍历文档的循环,并为其添加每个单词标记在文本字符串中找到一个名为的列表,token_list以便我们可以更好地了解单词的标记方式 。
如我们所见,spaCy生成一个包含每个标记作为单独项目的列表 。请注意,它已经认识到诸如之类的收缩实际上不应代表两个不同的词,因此已将它们分解为两个不同的标记 。首先,我们需要加载语言词典,在上面的示例中,我们使用English()类加载英语词典并创建nlp nlp对象 。“ nlp”对象用于创建具有语言注释和各种nlp属性的文档 。
创建文档后,我们将创建令牌列表 。如果需要,我们还可以将文本分为句子而不是单词 。这称为句子标记化 。在执行句子标记化时,标记化程序会查找介于句子之间的特定字符,例如句点,惊叹号和换行符 。对于句子标记化,我们将使用预处理管道,因为使用的句子预处理spaCy包括标记器,标记器,解析器和实体识别器,我们需要访问它们才能正确识别什么是句子,什么不是 。
在下面的代码中,spaCy标记文本并创建一个Doc对象 。这个Doc对象使用我们预处理管道的组件标记器,解析器和实体识别器将文本分解为组件 。从该管道中,我们可以提取任何组件,但是在这里,我们将使用该sentencizer组件访问句子标记 。同样,spaCy已将文本正确解析为所需的格式,这一次输出了在源文本中找到的句子列表 。
清理文本数据:删除停用词我们使用的大多数文本数据将包含许多实际上对我们没有用的单词 。这些称为停用词的词在人类语音中很有用,但对数据分析没有多大帮助 。删除停用词可以帮助我们消除文本数据中的杂音和干扰,还可以加快分析时间(因为要处理的词更少) 。让我们看看spaCy默认情况下包含的停用词 。我们将spaCy其英语模型中的停用词导入并分配给名为的变量,spacy_stopwords以便我们进行查看 。
如我们所见,spaCy的默认停用词列表包括312个条目,每个条目都是一个单词 。我们还可以看到为什么其中许多单词对数据分析没有用处 。例如,尽管如此,过渡词对于理解句子的基本含义并不是必需的 。而诸如“ 某人”之类的词太含糊,以至于无法用于NLP任务 。如果需要,我们还可以创建自己的自定义停用词列表 。
但是出于我们在大数据分析Python中spaCy文本分类使用教程中的目的,spaCy提供的默认列表会很好 。从我们的数据中删除停用词现在我们有了停用词列表,让我们使用它从上一部分中正在研究的文本字符串中删除停用词 。我们的文本已经存储在变量中text,因此我们不需要再次定义它 。相反,我们将创建一个名为的空列表filtered_sent,然后遍历doc变量以查看源文本中每个标记化的单词 。
spaCy包括一堆有用的标记属性,我们将使用其中的一个is_stop来识别不在停用词列表中的单词,然后将它们附加到filtered_sent列表中 。不难理解为什么停用词会有所帮助 。删除它们将我们的原始文本简化为仅几个单词,这使我们对句子正在讨论的内容有了一个很好的了解:学习数据科学,并在此过程中避免挑战和挫折 。

推荐阅读