文本预处理实战:基于哈工大停用词表进行分词、停用词处理和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向量化。这是一种常用的文本处理流程,可以帮助我们从文本数据中提取有效信息,并将其用于后续的自然语言处理任务。

文本预处理实战:基于哈工大停用词表进行分词、停用词处理和TF-IDF向量化

原文地址: https://www.cveoy.top/t/topic/ocZ1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录