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