中文自然语言预处理总结
目录
中文文本预处理总结
1、文本数据准备
2、全角与半角的转化
3、文本中大写数字转化为小写数字
4、文本中大写字母转化为小写字母
5、文本中的表情符号去除(只保留中英文和数字)
6、去除文本中所有的字符(只保留中文)
7、中文文本分词
8、繁体中文与简体中文转换
9、中文文本停用词过滤
10、将清洗后的数据写入CSV文件
中文文本预处理总结
1、文本数据准备
(1)使用已有的语料库
(2)网络爬虫获取自己的语料库(可以使用beautifulsoup等爬虫工具)
#读取文件列表数据,返回文本数据的内容列表和标签列表
def filelist_contents_labels(filelist):contents=[]labels = []for file in filelist:with open(file, "r", encoding="utf-8") as f:for row in f.read().splitlines():sentence=row.split('\t')contents.append(sentence[-1])if sentence[0]=='other' :labels.append(0)else:labels.append(1)return contents,labels
2、全角与半角的转化
在自然语言处理过程中,全角、半角的的不一致会导致信息抽取不一致,因此需要统一。中文文字永远是全角,只有英文字母、数字键、符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角,占半个汉字的位置叫半角。标点符号在中英文状态下、全半角的状态下是不同的。
有规律(不含空格):全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E);半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
特例:空格比较特殊,全角为 12288(0x3000),半角为 32(0x20)
#全角转半角
def full_to_half(sentence): #输入为一个句子change_sentence=""for word in sentence:inside_code=ord(word)if inside_code==12288: #全角空格直接转换inside_code=32elif inside_code>=65281 and inside_code<=65374: #全角字符(除空格)根据关系转化inside_code-=65248change_sentence+=chr(inside_code)return change_sentence
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
#半角转全角
def hulf_to_full(sentence): #输入为一个句子change_sentence=""for word in sentence:inside_code=ord(word)if inside_code==32: #半角空格直接转换inside_code=12288elif inside_code>=32 and inside_code<=126: #半角字符(除空格)根据关系转化inside_code+=65248change_sentence+=chr(inside_code)return change_sentence
3、文本中大写数字转化为小写数字
#大写数字转换为小写数字
def big2small_num(sentence):numlist = {"一":"1","二":"2","三":"3","四":"4","五":"5","六":"6","七":"7","八":"8","九":"9","零":"0"}for item in numlist:sentence = sentence.replace(item, numlist[item])return sentence
4、文本中大写字母转化为小写字母
#大写字母转为小写字母
def upper2lower(sentence):new_sentence=sentence.lower()return new_sentence
5、文本中的表情符号去除(只保留中英文和数字)
使用正则表达式
#去除文本中的表情字符(只保留中英文和数字)
def clear_character(sentence):pattern1= '\[.*?\]' pattern2 = re.compile('[^\u4e00-\u9fa5^a-z^A-Z^0-9]') line1=re.sub(pattern1,'',sentence)line2=re.sub(pattern2,'',line1) new_sentence=''.join(line2.split()) #去除空白return new_sentence
6、去除文本中所有的字符(只保留中文)
#去除字母数字表情和其它字符
def clear_character(sentence):pattern1='[a-zA-Z0-9]'pattern2 = '\[.*?\]'pattern3 = re.compile(u'[^\s1234567890::' + '\u4e00-\u9fa5]+')pattern4='[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+'line1=re.sub(pattern1,'',sentence) #去除英文字母和数字line2=re.sub(pattern2,'',line1) #去除表情line3=re.sub(pattern3,'',line2) #去除其它字符line4=re.sub(pattern4, '', line3) #去掉残留的冒号及其它符号new_sentence=''.join(line4.split()) #去除空白return new_sentence
7、中文文本分词
本文使用的是jieba分词。
8、繁体中文与简体中文转换
from langconv import *
# 转为简体
def Traditional2Simplified(sentence):sentence = Converter('zh-hans').convert(sentence)return sentence
# 转为繁体
def Simplified2Traditional(sentence):sentence = Converter('zh-hant').convert(sentence)return sentence
9、中文文本停用词过滤
#去除停用词,返回去除停用词后的文本列表
def clean_stopwords(contents):contents_list=[]stopwords = {}.fromkeys([line.rstrip() for line in open('data/stopwords.txt', encoding="utf-8")]) #读取停用词表stopwords_list = set(stopwords)for row in contents: #循环去除停用词words_list = jieba.lcut(row)words = [w for w in words_list if w not in stopwords_list]sentence=''.join(words) #去除停用词后组成新的句子contents_list.append(sentence)return contents_list
10、将清洗后的数据写入CSV文件
# 将清洗后的文本和标签写入.csv文件中
def after_clean2csv(contents, labels): #输入为文本列表和标签列表columns = ['contents', 'labels']save_file = pd.DataFrame(columns=columns, data=list(zip(contents, labels)))save_file.to_csv('data/clean_data.csv', index=False, encoding="utf-8")
本人博文NLP学习内容目录:
一、NLP基础学习
1、NLP学习路线总结
2、TF-IDF算法介绍及实现
3、NLTK使用方法总结
4、英文自然语言预处理方法总结及实现
5、中文自然语言预处理方法总结及实现
6、NLP常见语言模型总结
7、NLP数据增强方法总结及实现
8、TextRank算法介绍及实现
9、NLP关键词提取方法总结及实现
10、NLP词向量和句向量方法总结及实现
11、NLP句子相似性方法总结及实现
12、NLP中文句法分析
二、NLP项目实战
1、项目实战-英文文本分类-电影评论情感判别
2、项目实战-中文文本分类-商品评论情感判别
3、项目实战-XGBoost与LightGBM文本分类
4、项目实战-TextCNN文本分类实战
5、项目实战-Bert文本分类实战
6、项目实战-NLP中文句子类型判别和分类实战
交流学习资料共享欢迎入群:955817470(群一),801295159(群二)
中文自然语言预处理总结相关推荐
- 中文文本挖掘预处理流程总结
在对文本做数据分析时,我们一大半的时间都会花在文本预处理上,而中文和英文的预处理流程稍有不同,本文就对中文文本挖掘的预处理流程做一个总结. 1. 中文文本挖掘预处理特点 首先我们看看中文文本挖掘预处理 ...
- 第01课:中文自然语言处理的完整机器处理流程
2016年全球瞩目的围棋大战中,人类以失败告终,更是激起了各种"机器超越.控制人类"的讨论,然而机器真的懂人类吗?机器能感受到人类的情绪吗?机器能理解人类的语言吗?如果能,那它又是 ...
- 对话系统中的中文自然语言理解 (NLU) 任务介绍
每天给你送来NLP技术干货! 来自:看个通俗理解吧 Chinese Natural Language Understanding, NLU, in Dialogue Systems 1&2 T ...
- 实在智能参与中文自然语言理解评价标准体系(CLUE)阶段性进展回顾
「实在智能」简介 「实在智能」(杭州实在智能科技有限公司)是一家人工智能科技公司,聚焦大规模复杂问题的智能决策领域,通过AI+RPA技术打造广泛应用于各行业的 智能软件机器人,即"数字员工& ...
- 中文自然语言处理导论
中文自然语言处理导论 作者: 黄锦辉等 出版时间: 2018年10月 出版社名称: 科学出版社
- 中文自然语言处理数据集:ChineseNLPCorpus(附链接)
来源:AINLP 本文约1300字,建议阅读5分钟. 本文为你推荐中文自然语言处理数据集. 推荐一个Github项目:ChineseNLPCorpus,该项目收集了一批中文自然语言处理数据集的相关链接 ...
- N-LTP:基于预训练模型的中文自然语言处理平台
2021-05-03 18:12:52 论文名称:N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretr ...
- 【NLP】N-LTP:基于预训练模型的中文自然语言处理平台
论文名称:N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretrained Models 论文作者:车万 ...
- NLP Chinese Corpus:大规模中文自然语言处理语料
中文的信息无处不在,但如果想要获得大量的中文语料,却是不太容易,有时甚至非常困难.在 2019 年初这个时点上,普通的从业者.研究人员或学生,并没有一个比较好的渠道获得极大量的中文语料. 笔者想要训练 ...
最新文章
- [转载].sscanf的用法
- 数据智能是大数据的未来
- appium第一个安卓自动化工程
- 如何自动搞定全站图片的alt属性?
- Netfilter 详解
- IDEA 中 右键新建时,没有新建class的解决方案
- 安装kerberos报错 error: command 'gcc' failed with exit status 1
- 转】MyEclipse使用总结——在MyEclipse中设置jsp页面为默认utf-8编码
- kvm虚拟机不通网关_linux ssh 虚拟机下CentOS7开启SSH连接
- 用斐波那契数列绘画银杏树
- qt多级菜单_Qt高仿电脑管家界面(二):点击按钮弹出菜单
- IDEA中pom.xml文件图标变红,而不是蓝问题
- 德语语法笔记——冠词的用法
- php cgi.sock 502,nginx中unix:/tmp/php-cgi.sock错误解决解决
- nohup命令原理解析
- 北京有哪些牛逼的中小型公司?
- 宝塔修改网站中的文件后未生效
- Halcon图像读取的方式
- 百度跳动争抢优质内容,豆瓣微博们何去何从?
- scrapy爬虫【4】→爬百度美女图
热门文章
- iOS中 WGAFN_网络监控 技术分享
- 2个步骤让你秒获KOL抖音运营数据分析报告
- 干电池电量采集_干电池电量检测方法
- 读《卓有成效的程序员》-----我的一些题内和题外的感想
- Knockoutjs官网翻译系列(二) Observable 数组
- 《计算机组成原理》课程学习(7)——第3篇 中央处理器——第7章 指令系统
- SUMO学习日志(一)SUMO安装
- 计算机辅助设计绘图员技能鉴定试题(建筑类),计算机辅助设计高级绘图员技能鉴定试题...
- 代码同时托管到github和oschina上
- 红红纪念日记录器(原创)