Python中的文本预处理技巧
更新时间:2023-09-081. 分词
文本分析的第一步通常是把文本分解成一个个有意义的词语,即分词。在Python中,有多个成熟的中文分词库可供使用,如jieba、HanLP等。
import jieba
text = "我在学自然语言处理"
seg_list = jieba.cut(text, cut_all=False) #采用精确模式分词
print("精确模式分词结果:", "/".join(seg_list)) #默认输出方式为迭代器,这里将结果用/拼接输出
2. 去除停用词
由于在分词的过程中,会出现一些无法影响文本整体含义的“停用词”,比如“的”、“和”、“是”等,这些词语不仅不增加语义信息,而且可能影响后续的处理效果。因此需要将这些停用词去除。
import jieba
text = "我们一起去北京看长城吧"
stopword_list = ["我们", "一起", "去", "看", "吧"] #假设这些为停用词
seg_list = jieba.cut(text, cut_all=False) #采用精确模式分词
seg_list = [word for word in seg_list if word not in stopword_list] #去除停用词
print("去除停用词后分词结果:", "/".join(seg_list))
3. 提取关键词
在文本分析中,有时需要从大量文本中挑选出一些最为重要的词语或短语,这些词语即为关键词。Python中同样有多种方法可供提取关键词,如TF-IDF、TextRank等。
import jieba.analyse
text = "Python是一门很好的编程语言,广泛应用于数据分析、人工智能等方面"
keywords = jieba.analyse.extract_tags(text, topK=3, withWeight=False) #提取前3个权重最高的关键词
print("关键词:", keywords)
4. 文本向量化
在自然语言处理中,常常需要将文本转换为可处理的数学形式,即向量化。一种常用的方法是将每个词语视为向量空间的一个维度,给每个词语赋予一个权重(如TF-IDF权重),从而形成文本向量。
from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
"Python是一门很好的编程语言,广泛应用于数据分析、人工智能等方面",
"Java是一门非常流行的编程语言,经常应用于企业级开发",
"C++是一门强大的编程语言,被广泛应用于操作系统、游戏等领域"
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus) #将文本转换成向量
print("向量化结果:", X.toarray()) #转换成numpy数组输出