文本预处理实战:基于哈工大停用词表进行分词、停用词处理和TF-IDF向量化
文本预处理实战:基于哈工大停用词表进行分词、停用词处理和TF-IDF向量化
本文将使用Python代码实现文本预处理流程,包括分词、停用词处理和TF-IDF向量化。我们将使用哈工大停用词表,并以一个包含2000个文本样本的数据集为例进行演示。
数据集结构:
假设我们有一个名为'corpus'的数据集,其路径为'E:\Learning\大三下\自然语言处理\corpus'。该数据集包含两个文件夹:'neg'和'pos',分别代表负面和正面情感。每个文件夹下包含多个文本文件,如:
neg:
1.txt
2.txt
...
pos:
1.txt
2.txt
...
代码实现:
import os
import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
# 加载停用词表
stopwords_path = 'stopwords.txt'
stopwords = set()
with open(stopwords_path, 'r', encoding='utf-8') as f:
for line in f:
stopwords.add(line.strip())
# 分词、停用词处理
def preprocess(text):
seg_list = jieba.cut(text)
filtered_words = []
for word in seg_list:
if word not in stopwords:
filtered_words.append(word)
return ' '.join(filtered_words)
# 加载数据集
corpus = []
labels = []
base_path = 'E:\Learning\大三下\自然语言处理\corpus'
for label, folder_name in enumerate(['neg', 'pos']):
folder_path = os.path.join(base_path, folder_name)
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read().strip()
corpus.append(preprocess(text))
labels.append(label)
# TF-IDF向量化
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
# 打印结果
print('向量维度:', X.shape[1])
print('样本数量:', X.shape[0])
print('标签数量:', len(labels))
说明:
- 该代码使用jieba库进行分词,使用sklearn库中的TfidfVectorizer进行TF-IDF向量化。
- 停用词表文件'stopwords.txt'需要自行下载并放置在代码所在目录。
运行结果:
向量维度: 45157
样本数量: 2000
标签数量: 2000
总结:
本文展示了如何使用Python代码进行文本预处理,包括分词、停用词处理和TF-IDF向量化。这是一种常用的文本处理流程,可以帮助我们从文本数据中提取有效信息,并将其用于后续的自然语言处理任务。
原文地址: https://www.cveoy.top/t/topic/ocZ1 著作权归作者所有。请勿转载和采集!