Python中文语料批量预处理手记jieba

简介:

手记实用系列文章:

结巴分词和自然语言处理HanLP处理手记

Python中文语料批量预处理手记

自然语言处理手记

Python中调用自然语言处理工具HanLP手记

Python中结巴分词使用手记

语料预处理封装类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#coding=utf-8
import os
import jieba
import sys
import re
import time
import jieba.posseg  as  pseg
 
sys.path.append( "../" )
jieba.load_userdict( "../Database/userdict.txt" ) # 加载自定义分词词典
 
'' '
title:利用结巴分词进行文本语料处理:单文本处理器、批量文件处理器
     1 首先对文本进行遍历查找
     2 创建原始文本的保存结构
     3 对原文本进行结巴分词和停用词处理
     4 对预处理结果进行标准化格式,并保存原文件结构路径
author:白宁超
myblog:http: //www.cnblogs.com/baiboy/
'' '
 
 
'' '
分词.词性标注以及去停用词
stopwordspath: 停用词路径
dealpath:中文数据预处理文件的路径
savepath:中文数据预处理结果的保存路径
'' '
def cutTxtWord(dealpath,savepath,stopwordspath):
     stopwords = {}.fromkeys([ line.rstrip()  for  line  in  open(stopwordspath, "r" ,encoding= 'utf-8' )]) # 停用词表
     with open(dealpath, "r" ,encoding= 'utf-8' as  f:
         txtlist=f.read() # 读取待处理的文本
     words =pseg.cut(txtlist) # 带词性标注的分词结果
     cutresult= "" # 获取去除停用词后的分词结果
     for  word, flag  in  words:
         if  word not  in  stopwords:
             cutresult += word+ "/" +flag+ " "  #去停用词
             getFlag(cutresult,savepath) #
 
 
 
'' '
分词.词性标注以及去停用词
stopwordspath: 停用词路径
read_folder_path :中文数据预处理文件的路径
write_folder_path :中文数据预处理结果的保存路径
filescount=300 #设置文件夹下文件最多多少个
'' '
 
def cutFileWord(read_folder_path,write_folder_path,stopwordspath):
     # 停用词表
     stopwords = {}.fromkeys([ line.rstrip()  for  line  in  open(stopwordspath, "r" ,encoding= 'utf-8' )])
 
     # 获取待处理根目录下的所有类别
     folder_list = os.listdir(read_folder_path)
     # 类间循环
     for  folder  in  folder_list:
         #某类下的路径
         new_folder_path = os.path. join (read_folder_path, folder)
 
         # 创建保存文件目录
         path=write_folder_path+folder #保存文件的子文件
         isExists=os.path.exists(path)
         if  not isExists:
             os.makedirs(path)
             print(path+ ' 创建成功' )
         else : pass
         save_folder_path = os.path. join (write_folder_path, folder)#某类下的保存路径
         print( '--> 请稍等,正在处理中...' )
 
         # 类内循环
         files = os.listdir(new_folder_path)
         j = 1
         for  file  in  files:
             if  j > len(files):  break
             dealpath = os.path. join (new_folder_path, file) #处理单个文件的路径
             with open(dealpath, "r" ,encoding= 'utf-8' as  f:
                 txtlist=f.read()
                 # python 过滤中文、英文标点特殊符号
                 # txtlist1 = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+", "",txtlist)
             words =pseg.cut(txtlist) # 带词性标注的分词结果
             cutresult= ""  # 单个文本:分词后经停用词处理后的结果
             for  word, flag  in  words:
                 if  word not  in  stopwords:
                     cutresult += word+ "/" +flag+ " "  #去停用词
             savepath = os.path. join (save_folder_path,file)
             getFlag(cutresult,savepath)
             j += 1
 
'' '
做词性筛选
cutresult:str类型,初切分的结果
savepath: 保存文件路径
'' '
def getFlag(cutresult,savepath):
     txtlist=[] #过滤掉的词性后的结果
     #词列表为自己定义要过滤掉的词性
     cixing=[ "/x" , "/zg" , "/uj" , "/ul" , "/e" , "/d" , "/uz" , "/y" ]
     for  line  in  cutresult.split( '\n' ):
         line_list2=re.split( '[ ]' , line)
         line_list2.append( "\n" ) # 保持原段落格式存在
         line_list=line_list2[:]
         for  segs  in  line_list2:
             for  in  cixing:
                 if  in  segs:
                     line_list.remove(segs)
                     break
                 else :
                     pass
         txtlist.extend(line_list)
 
     # 去除词性标签
     resultlist=txtlist[:]
     flagresult= ""
     for  in  txtlist:
         if  "/"  in  v:
             slope=v.index( "/" )
             letter=v[0:slope]+ " "
             flagresult+= letter
         else :
             flagresult+= v
     standdata(flagresult,savepath)
 
'' '
标准化处理,去除空行,空白字符等。
flagresult:筛选过的结果
'' '
def standdata(flagresult,savepath):
     f2=open(savepath, "w" ,encoding= 'utf-8' )
     for  line  in  flagresult.split( '\n' ):
         if  len(line)>=2:
             line_clean= "/ " . join (line.split())
             lines=line_clean+ " " + "\n"
             f2.write(lines)
         else : pass
     f2.close()
 
 
if  __name__ ==  '__main__'  :
     t1=time.time()
 
 
     # 测试单个文件
     dealpath= "../Database/SogouC/FileTest/1.txt"
     savepath= "../Database/SogouCCut/FileTest/1.txt"
 
     stopwordspath= '../Database/stopwords/CH_stopWords.txt'
     stopwordspath1= '../Database/stopwords/HG_stopWords.txt'  # 哈工大停用词表
 
     # 批量处理文件夹下的文件
     # rfolder_path = '../Database/SogouC/Sample/'
     rfolder_path =  '../Database/SogouC/FileNews/'
     # 分词处理后保存根路径
     wfolder_path =  '../Database/SogouCCut/'
 
     # 中文语料预处理器
     # cutTxtWord(dealpath,savepath,stopwordspath) # 单文本预处理器
     cutFileWord(rfolder_path,wfolder_path,stopwordspath) # 多文本预处理器
 
 
     t2=time.time()
     print( "中文语料语处理完成,耗时:" +str(t2-t1)+ "秒。" ) #反馈结果

执行结果:


转自:https://www.cnblogs.com/baiboy/p/7676251.html

目录
相关文章
|
7月前
|
数据采集 机器学习/深度学习 Python
在Python中进行数据清洗和预处理缺失值处理缺失值补全
在Python中进行数据清洗和预处理缺失值处理缺失值补全
166 3
|
7月前
|
数据采集 数据可视化 Python
在Python中进行数据清洗和预处理缺失值处理查看缺失值比例
在Python中进行数据清洗和预处理缺失值处理查看缺失值比例
125 5
|
7月前
|
数据采集 机器学习/深度学习 算法
在Python中进行数据清洗和预处理缺失值处理
在Python中进行数据清洗和预处理缺失值处理
78 2
|
22天前
|
数据采集 机器学习/深度学习 数据挖掘
利用Python进行高效的数据清洗与预处理
在数据科学和机器学习项目中,数据清洗与预处理是至关重要的一步。本文将介绍如何使用Python中的Pandas库进行高效的数据清洗与预处理。我们将探讨如何处理缺失值、异常值、重复数据,以及如何进行数据类型转换和特征工程。此外,还将介绍一些实用的技巧来优化数据处理的性能。
|
7月前
|
数据采集 Python
在Python中进行数据清洗和预处理缺失值处理缺失数据剔除
在Python中进行数据清洗和预处理缺失值处理缺失数据剔除
114 4
|
7月前
|
机器学习/深度学习 数据处理 Python
如何利用Python实现高效的数据清理与预处理
数据清理和预处理是数据科学家和分析师工作中不可或缺的一环,而Python作为一门强大的编程语言,可以使这个过程变得更加高效和便捷。本文将介绍一些常见的数据清理和预处理技术,并演示如何使用Python来实现这些技术。
|
3月前
|
数据挖掘 API 数据处理
Python 数据分析及预处理常用库
Python自身数据分析功能有限,需借助第三方库增强。常用库包括NumPy、pandas、Matplotlib等。NumPy由Numeric发展而来,提供了多维数组对象及各种API,支持高效的数据处理,如数学、逻辑运算等,常作为其他高级库如pandas和Matplotlib的依赖库。其内置函数处理速度极快,建议优先使用以提升程序效率。
33 0
|
4月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
57 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
6月前
|
数据采集 机器学习/深度学习 数据挖掘
利用Python实现高效的数据清洗与预处理流程
本文旨在探讨如何使用Python编程语言及其强大的数据处理库(如pandas、numpy等)来构建一个高效且灵活的数据清洗与预处理流程。与常规的数据清洗方法不同,本文不仅关注于传统的缺失值填充、异常值处理、数据类型转换等步骤,还引入了数据质量评估、数据特征选择以及自动化处理流程的设计等高级主题。通过实际案例和代码演示,本文将为读者提供一套完整的数据清洗与预处理解决方案,助力数据分析师和数据科学家在数据探索阶段更加高效、准确地处理数据。
|
5月前
|
存储 消息中间件 数据挖掘
Python实时数据分析:利用丰富的库(如Pandas, PySpark, Kafka)进行流处理,涵盖数据获取、预处理、处理、存储及展示。
【7月更文挑战第5天】Python实时数据分析:利用丰富的库(如Pandas, PySpark, Kafka)进行流处理,涵盖数据获取、预处理、处理、存储及展示。示例代码展示了从Kafka消费数据,计算社交媒体活跃度和物联网设备状态,并可视化结果。适用于监控、故障检测等场景。通过学习和实践,提升实时数据分析能力。
118 0