📜  自然语言处理 |训练分词器并过滤句子中的停用词(1)

📅  最后修改于: 2023-12-03 14:57:08.530000             🧑  作者: Mango

自然语言处理 |训练分词器并过滤句子中的停用词

自然语言处理(Natural Language Processing,NLP)是计算机科学与人工智能研究领域中的一个子领域,涉及了计算机科学、语言学、数学等多个学科。它的目标是实现对自然语言的理解和生成,是机器与人类进行自然语言交互的基础。其中分词是NLP中的重要工作之一,它的目的是将句子切分成单词,是NLP的基础之一。

本文将介绍如何使用Python中的分词器,并过滤掉句子中的停用词。

训练分词器

在Python中有很多分词器可供选择,如jieba、NLTK等。这里以jieba为例进行介绍。

首先我们要安装jieba:

!pip install jieba

安装完成后,我们就可以使用jieba进行分词了,例如:

import jieba

text = '我喜欢自然语言处理'
words = jieba.cut(text)
print(list(words))
# ['我', '喜欢', '自然语言处理']

上面的代码中,我们使用jieba.cut方法对文本进行分词,得到的结果是一个可迭代的generator,我们可以用list将其转换成列表,方便查看。可以看到,分词的结果已经将句子切分成了单词。

停用词

在分词后的结果中,有些单词对于我们的分析是没有意义的,例如“的”、“了”等等,这些单词被称为停用词。为了减少无用的信息,我们可以过滤掉这些停用词。

在jieba中,已经提供了一个中文停用词表stopwords.txt,我们可以使用它对分词结果进行过滤。我们可以先查看一下这个停用词表:

with open('jieba\\stopwords.txt', 'r', encoding='utf-8') as f:
    stopwords = f.read().split()
    print(stopwords)

输出结果如下:

['\ufeff', ',', '.', ':', ';', '!', '?', '(', ')', '[', ']', '{', '}', '<', '>', '\'', '\"', '\`', '-', '=', '/', '\\', '@', '#', '$', '%', '^', '&', '*', '—', '~', '的', '了', '和', '是', '就', '都', '而', '及', '与', '或', '等', '一些', '一定', '一是', '例如', '如', '如上', '诸如此类', '等等', '另外', '别的', '除此之外', '此外', '其余', '其它', '另', '等等']

我们可以看到,这些停用词包括了一些标点符号和一些无关紧要的词语。

接着,我们将停用词表加载到内存中,并在分词的时候进行过滤:

import jieba

with open('jieba\\stopwords.txt', 'r', encoding='utf-8') as f:
    stopwords = f.read().split()

text = '我喜欢自然语言处理'
words = jieba.cut(text)
result = [word for word in words if word not in stopwords]
print(result)
# ['我', '喜欢', '自然语言处理']

这里我们使用了列表推导式,将停用词过滤掉后,得到了我们需要的分词结果。

总结

本文我们介绍了如何使用Python中的jieba分词器,并通过停用词表过滤掉分词结果中的无用信息。分词器和停用词表是NLP处理中的两个重要工具,通过合理使用它们可以大大提高我们对文本的处理效率和准确率。