文本预处理:分词、停用词处理和向量化 (TF-IDF)

本文将介绍如何使用 Python 对文本数据进行预处理,包括分词、停用词处理和向量化。我们将使用 TF-IDF 方法进行向量化,并展示预处理后的结果。

数据集

假设我们有一个数据集 corpus,其目录结构如下:

corpus
├── neg
│   ├── 1.txt
│   ├── 2.txt
│   └── ...
└── pos
    ├── 1.txt
    ├── 2.txt
    └── ...

其中 neg 和 pos 分别代表负面和正面情感的文本数据。每个文本文件包含一段文本。

代码实现

import os
import jieba
from collections import Counter
from sklearn.feature_extraction.text import TfidfVectorizer

# 读取停用词表
stopwords = []
with open('stopwords.txt', 'r', encoding='utf-8') as f:
    for line in f:
        stopwords.append(line.strip())

# 定义文本预处理函数
def preprocess_text(text):
    # 分词
    words = jieba.cut(text)
    # 去除停用词
    words = [word for word in words if word not in stopwords]
    return words

# 定义向量化函数
def vectorize(corpus, method='tf-idf'):
    if method == 'tf-idf':
        vectorizer = TfidfVectorizer(tokenizer=preprocess_text)
    else:
        raise ValueError('Invalid vectorization method.')
    X = vectorizer.fit_transform(corpus)
    return X, vectorizer

# 读取数据集
corpus = []
labels = []
root_dir = 'E:/Learning/大三下/自然语言处理/corpus'
for label, sub_dir in enumerate(['neg', 'pos']):
    for file_name in os.listdir(os.path.join(root_dir, sub_dir)):
        with open(os.path.join(root_dir, sub_dir, file_name), 'r', encoding='utf-8') as f:
            text = f.read().strip()
            corpus.append(text)
            labels.append(label)

# 向量化
X, vectorizer = vectorize(corpus, method='tf-idf')

# 输出向量化结果
print('Vocabulary size:', len(vectorizer.vocabulary_))
print('Sample document:', corpus[0])
print('Sample vector:', X[0].toarray())
print('Sample label:', labels[0])

说明

  1. 上述代码中的停用词表文件为 stopwords.txt,需要先下载哈工大停用词表,或者使用其他停用词表。
  2. 向量化方法可选 tf-idf,也可以替换为其他方法,例如 one-hot、Word2Vec 等。
  3. 输出结果中,Vocabulary size 表示词汇表大小,Sample document 表示样本文本,Sample vector 表示样本文本的向量表示,Sample label 表示样本标签(0 表示 neg,1 表示 pos)。

总结

本文介绍了如何使用 Python 对文本数据进行预处理,包括分词、停用词处理和向量化。代码示例使用 TF-IDF 方法进行向量化,并展示了预处理后的结果。希望本文对您有所帮助。

文本预处理:分词、停用词处理和向量化 (TF-IDF)

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

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