在本案例中,我们将尝试将Yelp评论分类为正面或负面的情感极性。我们将通过加载评论数据,进行文本预处理,使用TF-IDF向量化技术,并通过支持向量机(SVM)分类模型来完成分类任务。尽管这是一个基础任务,但它可以帮助我们回顾并掌握文本预处理和分类任务中的关键步骤。
0. 基本文本预处理
在自然语言处理(NLP)任务中,文本预处理是不可或缺的步骤,它能够有效地提高模型的性能。我们将会进行以下几种基本的预处理操作:
- 词形还原(Lemmatization):将不同形式的词语还原为它们的基本形式,如
run
、runs
、running
会被还原为run
。 - 去除停用词(Stopwords):去除常见但没有实际意义的词,如“the”、“is”。
- 去除标点符号和空格:移除标点符号和多余的空格,并将文本转换为小写。
首先,安装和加载Spacy库并初始化模型来处理这些任务:
import spacy
# 加载英语语言模型
nlp = spacy.load("en_core_web_sm")
词形还原
词形还原是将单词还原为其基础词干形式。通过Spacy的lemma_
属性,我们可以提取词的基础形式。示例代码如下:
# 示例文本
doc = nlp('run runs running ran')
# 遍历文档中的词并提取词干
for token in doc:
print(token.text, token.lemma_)
去除停用词和标点符号
停用词是一些常见的、对文本分析意义不大的词语。我们使用Spacy内置的停用词列表,并结合POS标注去除标点符号。示例代码如下:
from spacy.lang.en.stop_words import STOP_WORDS
# 示例文档
doc = nlp('Going t