Python文本预处理与特征提取实战:清洗、去停用词及关键词抽取
本文详细介绍利用Python进行文本预处理的完整流程,涵盖使用正则表达式去除多余空格、过滤非中文字符及BAS4编码解码。接着演示如何加载停用词表进行文本清洗,并深入讲解基于jieba库的TF-IDF与Textrank两种特征提取方法,帮助开发者构建高效的自然语言处理管道。
具体实现代码如下所示:
<strong><span style="font-size:14px;">文本过滤</span></strong>
result = re.sub(r'[^\u4e00-\u9fa5,。?!,、;:“ ”‘ '( )《 》〈 〉]', "", content)#只保留中文和标点
result = re.sub(r'[^\u4e00-\u9fa5]', "",content)#只保留中文 result = re.sub(r'[^\0-9\.\u4e00-\u9fa5,。?!,、;:“ ”‘ '( )《 》〈 〉]', "", content)#只保留中文和标点和数字 result = re.sub(r'[^\u4e00-\u9fa5,A-Za-z0-9]', "",content)#只保留中文、英文和数字
第一步,处理文本中的冗余空格,将连续两个或以上的空格替换为单个空格或直接移除。
content=re.sub(r'\s{2,}', '', content)
第二步,处理BAS4编码内容,将其解码为中文文本。
def bas4_decode(bas4_content): decodestr= base64.b64decode(bas4_content) result = re.sub(r'[^\0-9\.\u4e00-\u9fa5,。?!,、;:“ ”‘ '( )《 》〈 〉]', "", decodestr.decode())#只保留中文和标点和数字 return result
第三步,执行文本去停用词操作,过滤掉无实际语义的常见词汇。
def text_to_wordlist(text):
result = re.sub(r'[^\u4e00-\u9fa5]', "",text)
f1_seg_list = jieba.cut(result)#需要添加一个词典,来弥补结巴分词中没有的词语,从而保证更高的正确率
f_stop = codecs.open(".\stopword.txt","r","utf-8")
try:
f_stop_text = f_stop.read()
finally:
f_stop.close()
f_stop_seg_list = f_stop_text.split()
test_words = []
for myword in f1_seg_list:
if myword not in f_stop_seg_list:
test_words.append(myword)
return test_words
第四步,对清洗后的文本进行特征提取,获取关键信息。
import jieba
import jieba.analyse
import numpy as np
#import json
import re
def Textrank(content):
result = re.sub(r'[^\u4e00-\u9fa5]', "",content)
seg = jieba.cut(result)
jieba.analyse.set_stop_words('stopword.txt')
keyList=jieba.analyse.textrank('|'.join(seg), topK=10, withWeight=False)
return keyList
def TF_IDF(content):
result = re.sub(r'[^\u4e00-\u9fa5]', "",content)
seg = jieba.cut(result)
jieba.analyse.set_stop_words('stopword.txt')
keyWord = jieba.analyse.extract_tags(
'|'.join(seg), topK=10, withWeight=False, allowPOS=())#关键词提取,在这里对jieba的tfidf.py进行了修改
return keyWord
上述内容即为使用Python进行文本预处理和特征提取的完整示例,希望能为读者提供有价值的参考,欢迎持续关注以获取更多技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









