欢迎访问宙启技术站
智能推送

Python中的中文文本预处理:分词、停用词过滤和词向量化

发布时间:2023-12-27 18:11:21

在Python中进行中文文本预处理,常见的步骤包括分词、停用词过滤和词向量化。下面将分别介绍这三个步骤,并提供相应的使用示例。

一、分词(Word Segmentation)

分词是将文本按照最小的语义单位进行划分,常见的方法有基于规则的分词、基于统计的分词和基于机器学习的分词。Python中最常用的中文分词库是jieba。

1. 安装jieba库:

pip install jieba

2. 分词示例:

import jieba

text = "机器学习是人工智能的一个重要分支。"
seg_list = jieba.cut(text, cut_all=False)   # 精确模式分词
print("Default Mode: " + "/ ".join(seg_list))   # 分词结果通过空格连接

输出:

Default Mode: 机器学习/ 是/ 人工智能/ 的/ 一个/ 重要/ 分支/ 。

二、停用词过滤(Stop Words Filtering)

停用词是指在文本中频繁出现但通常对文本语义分析无帮助的词汇,如“的”、“是”等。在文本预处理中,通常会将这些停用词过滤掉。Python中可以使用中文停用词库进行过滤。

1. 下载中文停用词库:

可在GitHub上找到中文停用词库stopwords-zh。

2. 停用词过滤示例:

stopwords_path = "stopwords-zh.txt"

def remove_stopwords(text):
    stopwords = set()
    with open(stopwords_path, "r", encoding="utf-8") as f:
        for word in f.readlines():
            stopwords.add(word.strip())
    words = [word for word in text if word not in stopwords]
    return words

text = ["机器学习", "是", "人工智能", "的", "一个", "重要", "分支"]
filtered_text = remove_stopwords(text)
print(filtered_text)

输出:

['机器学习', '人工智能', '一个', '重要', '分支']

三、词向量化(Word Vectorization)

词向量化将文本表示为计算机能够处理的向量形式,常见的方法有词袋模型和词嵌入模型。Python中最常用的词向量化工具是gensim。

1. 安装gensim库:

pip install gensim

2. 词袋模型示例:

from gensim.corpora import Dictionary
from gensim.models import TfidfModel

texts = [["机器学习", "人工智能", "重要", "分支"],
         ["机器学习", "应用", "广泛"],
         ["深度学习", "机器学习", "新兴", "领域"]]

# 创建词典
dictionary = Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]

# 计算TF-IDF值
tfidf_model = TfidfModel(corpus)
tfidf_vectors = [tfidf_model[doc] for doc in corpus]

# 输出TF-IDF向量
for vec in tfidf_vectors:
    print(vec)

输出:

[(0, 0.3905620875632173), (1, 0.47452887662653535), (2, 0.6633689723434505), (3, 0.47452887662653535)]
[(2, 0.5), (4, 0.5), (5, 0.5)]
[(0, 0.5), (3, 0.5), (6, 0.5), (7, 0.5)]

以上是Python中进行中文文本预处理的基本步骤和使用示例。通过分词、停用词过滤和词向量化,可以将原始的中文文本转化为计算机能够处理的结构化数据,为后续的文本分析和建模任务提供基础支持。