目录  中文文本预处理总结  1、文本数据准备  2、全角与半角的转化  3、文本中大写数字转化为小写数字  4、文本中大写字母转化为小写字母  5、文本中的表情符号去除(只保留中英文和数字)  6、去除文本中所有的字符(只保留中文)  7、中文文本分词  8、中文文本停用词过滤  9、将清洗后的数据写入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=32        elif inside_code>=65281 and inside_code<=65374:  #全角字符(除空格)根据关系转化            inside_code-=65248        change_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=12288        elif inside_code>=32 and inside_code<=126:  #半角字符(除空格)根据关系转化            inside_code+=65248        change_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、中文文本停用词过滤  #去除停用词,返回去除停用词后的文本列表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  9、将清洗后的数据写入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")   
点赞 0
评论 0
全部评论

相关推荐

bg双非本科,方向是嵌入式。这次秋招一共拿到了 8 个 offer,最高年包 40w,中间也有一段在海康的实习经历,还有几次国家级竞赛。写这篇不是想证明什么,只是想把自己走过的这条路,尽量讲清楚一点,给同样背景的人一个参考。一、我一开始也很迷茫刚决定走嵌入式的时候,其实并没有一个特别清晰的规划。网上的信息很零散,有人说一定要懂底层,有人说项目更重要,也有人建议直接转方向。很多时候都是在怀疑:1.自己这种背景到底有没有机会2.现在学的东西到底有没有用3.是不是已经开始晚了这些问题,我当时一个都没答案。二、现在回头看,我主要做对了这几件事第一,方向尽早确定,但不把自己锁死。我比较早就确定了嵌入式这个大方向,但具体做哪一块,是在项目、竞赛和实习中慢慢调整的,而不是一开始就给自己下结论。第二,用项目和竞赛去“证明能力”,而不是堆技术名词。我不会刻意追求学得多全面,而是确保自己参与的每个项目,都能讲清楚:我负责了什么、遇到了什么问题、最后是怎么解决的。第三,尽早接触真实的工程环境。在海康实习的那段时间,对我触动挺大的。我开始意识到,企业更看重的是代码结构、逻辑清晰度,以及你能不能把事情说清楚,而不只是会不会某个知识点。第四,把秋招当成一个需要长期迭代的过程。简历不是一次写完的,面试表现也不是一次就到位的。我会在每次面试后复盘哪些问题没答好,再针对性补。三、我踩过的一些坑现在看也挺典型的:1.一开始在底层细节上纠结太久,投入产出比不高2.做过项目,但前期不会总结,导致面试表达吃亏3.早期有点害怕面试,准备不充分就去投这些弯路走过之后,才慢慢找到节奏。四、给和我背景相似的人一点建议如果你也是双非,准备走嵌入式,我觉得有几件事挺重要的:1.不用等“准备得差不多了”再投2.项目一定要能讲清楚,而不是做完就算3.不要只盯着技术,多关注表达和逻辑很多时候,差的不是能力,而是呈现方式。五、写在最后这篇总结不是标准答案,只是我个人的一次复盘。后面我会陆续把自己在嵌入式学习、竞赛、实习和秋招中的一些真实经验拆开来讲,希望能对后来的人有点帮助。如果你正好也在这条路上,希望你能少走一点弯路。
x_y_z1:蹲个后续
点赞 评论 收藏
分享
01-18 22:21
门头沟学院 Java
26届公办二本,目前在上海某二游中厂测试实习中两个多月了,准备下周问leader能不能转正,但感觉希望渺茫25年初时,我的目标还是后端开发,能够找到合适的暑期实习在秋招找寻机会。那段时间我一直都在欺骗自己,时间还早,小厂要求低。项目是抄的,算法是不刷的,八股是背了就忘的,直到七月才发现自己只有crud的能力,遂选择了一家互联网小厂去干功能测试。在这段实习我感觉什么都没有学到,只是一味的点点点,写在简历上的经历能把自己逗乐。秋招果然大败而归,于是在十一月初接下了一家二次元游戏公司的测试实习。新公司的氛围很好,管理扁平,日常福利也很多。虽然平时的会议也会参加,同事们也很友好,但是我仍感觉没有什么归属感。我肯定是非常想要能够转正的,一面面试官也说有转正机会,但hr面却和我说明是日常实习。我很喜欢这里,但可能没有太大的机会,所以我肯定是要去参加春招的。但最近考虑到春招的hc情况,我是又着急又难受。前几天公司举办了年会,这种情况达到了顶点,我连续三天失眠到凌晨四点,心里全在想如果找不到工作该怎么办。其实我知道,并不是我找不到,而是眼高手低,甚至秋招我只在各官网投,ssob没有任何投递。而且我选择游测完全是因为自己的二次元属性,春招也有特别意向的库洛,我甚至是因此才来这边实习的。但我害怕库洛给不了我机会,更害怕没有其他机会。在异地出租屋没有朋友,颈椎不舒服,睡眠越来越差,甚至痔疮越来越严重,烟也越抽越多,我真的害怕自己的身体再来些啥毛病春招啊,给我些运气吧。
星辰尽头:保持平常的心态,做该做的事情就好,要相信一切会水到渠成
春招启动,你开始投递了吗...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务