如何进行中英文分句以及对中英文进行分词
中英文分词简介
中英文分词是进行机器学习文本处理方面必须进行的一步,就类似于机器学习中图像处理的降噪,英文分词主要是将标点符号与英文单词进行分隔,中文分词就是讲每个词组进行分隔,ex:‘我是一只程序猿’------>‘我’、‘是’、‘一只’、‘程序猿’,分词是文本处理中数据预处理的必做工作。
英文分词
英文分词我们使用nltk中提供的WordPunctTokenizer来进行分词,nltk库还是很好用的,详细的代码请看中文分词~
额,重新说明一下,使用WordPunctTokenizer来进行分词的话它是按照标点符号进行分词的,也就是说如果有数据: 22.13% 他会给你分成 22 . 13 %,这样的效果,我们要的效果应该是 22.13 %。
nltk还提供一个分词函数:
import nltk
sentences='hello world , what is your name? the number of the money is 22.13 % '
words=nltk.word_tokenize(sentences)
print(words)
中文分词
中文分词我们要感谢哈工大自然语言处理平台ltp,提供了pyltp模块来进行分词以及分句的处理,话不多说,这是使用说明以及下载说明
直接上中英文分词的详细代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-import osfrom nltk.tokenize import WordPunctTokenizer as WPT
from pyltp import SegmentorLTP_DATA_DIR = 'ltp-models/ltp_data' #ltp模型路径
cws_model_path = os.path.join(LTP_DATA_DIR,'cws.model') #分词模型路径def fenci():with open('分句/all_en.en','r',encoding='utf-8') as f:sentence_en=f.readlines()count=0for i in range(len(sentence_en)):words_en=WPT().tokenize(sentence_en[i])fen_en_sentence=' '.join(words_en)save_data(fen_en_sentence,count)with open('分句/all.zh','r',encoding='utf-8') as f:sentence_zh=f.readlines()#print(type(sentence))segmentor=Segmentor()segmentor.load(cws_model_path)count=1for j in range (len(sentence_zh)):words_zh=segmentor.segment(sentence_zh[j])fen_zh_sentence=' '.join(words_zh)save_data(fen_zh_sentence,count)segmentor.release()def save_data(data,count):if count==0:#print(data)try:with open('分句/fen_all.en','a',encoding='utf-8') as f:f.write(data+'\n')except:with open('分句/fen_all.en','w',encoding='utf-8') as f:f.write('')elif count==1:# print(data)try:with open('分句/fen_all.zh', 'a') as f:f.writelines(data+'\n')except:with open('分句/fen_all.zh', 'w', encoding='utf-8')as f:f.write('')if __name__=='__main__':fenci()
中英文分句
不赘述,直接上代码,有啥问题是留言or加个粉?????嘿嘿嘿,英文分句使用的是nltk模块,中文分句时使用的哈工大的pyltp模块
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import nltk
import nltk.data
import os
from os import path
from pyltp import SentenceSplitter as SS
import time
def get_data():for mainfile,subfile,filename in os.walk('abstract'): #mainfile是详细的文件夹路径,subfile显示了有哪几个文件夹,filename是文件夹中文件名称#for i in range(len(filename)):for i in range(len(filename)):if path.splitext(mainfile+filename[i])[1]=='.zh':count=1with open(mainfile+'/'+filename[i],'r',encoding='utf-8')as f_zh:file_en_name=mainfile+'/'+filename[i]print(file_en_name)content_zh=f_zh.read()zh_sen=[]sentences_zh= SS.split(content_zh)for i in range(len(sentences_zh)):try:zh_sen.append(sentences_zh[i])except:pass#print(sentences_zh.)save_sentence_zh = '\n'.join(zh_sen)# print('{0}/{1}'.format(mainfile, filename[i]))# print('1')save_data(save_sentence_zh,count)# print(save_sentence_zh)count=0#file_en_name = path.splitext((mainfile +'/'+ filename[i]))file_en_name = list(file_en_name)#print(file_en_name)file_en_name[-1] = 'n'file_en_name[-2] = 'e'file_en_name = ''.join(file_en_name)print(file_en_name)with open(file_en_name, 'r', encoding='utf-8')as f_en:#print(file_en_name)content_en = f_en.read()tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')sentences_en = tokenizer.tokenize(content_en)# print(type(sentences_en))save_data(sentences_en, count)# print(sentences_en)#time.sleep(60)def save_data(data,count):if count==0:#print(data)try:for line in data:with open('分句/all.en','a',encoding='utf-8') as f:f.write(line + '\n')except:with open('分句/all.en','w',encoding='utf-8') as f:f.write('')elif count==1:# print(data)try:with open('分句/all.zh', 'a') as f:f.writelines(data)except:with open('分句/all.zh', 'w', encoding='utf-8')as f:f.write('')if __name__ == '__main__':get_data()print('都存完了')
有啥问题请不吝赐教,留言就行啦
如何进行中英文分句以及对中英文进行分词相关推荐
- matlab中英文对照表,Matlab工具箱中英文对照
Matlab工具箱中英文对照 Matlab2010工具箱中英文对照 matlab distributed computing server 分布式计算服务器 simulink 仿真 aerospace ...
- html中英文混排,EndNote中英文混排时et al和等的3种解决方法 | 科研动力
EndNote对于英文文献的处理很出色,但是对于中文文献的处理就有点别扭,尤其是中英文文献混排时更是不爽.木有关系,EndNote的强大这处之一就是可以驯服和调教.下面介绍3种如何处理中英文混排时et ...
- linux专业术语中英文,Linux专业术语中英文对照.doc
Linux专业术语中英文对照.doc Linux专业术语中英文对照 (A) 帐户名称(Account Name)- 等同于登录标识.用户标识或用户名.是指派给 UNIX/Linux 系统上用户的名称. ...
- php 中英文截取 php,PHP 中英文截取无乱码
在学习MySql 字符集时,解决了PHP中英文截取无乱码的问题.这个方法的核心在于判断取多少个字节上. //PHP中英文截取无乱码 header('Content_type=text/php;char ...
- 计算机桌面无法中英文切换,Win10输入法中英文切换不了怎么办?
我们在使用电脑的过程中,打字是必须要进行的工作,但是有Win10用户碰到输入法中英文切换不了的情况,这就很尴尬了,打不了字,想工作玩耍都不行啊!那么该如何解决Win10中英文输入法无法切换的问题呢?下 ...
- 免费的中英文翻译软件-自动批量中英文翻译软件推荐大全
免费的中英文翻译软件,免费的中英文翻译软件哪个好?什么样的翻译软件称为好呢,首先第一点翻译质量高,第二点可以批量翻译,第三点保留翻译前的格式.第四点支持采集翻译.今天我给大家分享一款免费的中英文翻译软 ...
- 参考文献中英文人名_参考文献中英文人名的缩写规则精要.doc
参考文献中英文人名的缩写规则 参考文献是科技论文的重要组成部分,也是编辑加工和重要内容.温哥华格式要求,著录文后参考文献时,英文刊名和人名一律用缩写.这一规则也是众多检索系统在人名著录时的首选规则.下 ...
- 参考文献中英文人名_参考文献中英文人名的缩写规则 (2)
. . 参考文献中英文人名的缩写规则 参考文献是科技论文的重要组成部分, 也是编辑加工和重要内容. 温哥华格式要求, 著 录文后参考文献时, 英文刊名和人名一律用缩写. 这一规则也是众多检索系统在人名 ...
- maya中英文对照_maya菜单中英文对照(1)_maya教程
Maya菜单中英文对照 Standard标准菜单 File文件 NewScene建立新场景 OpenScene打开场景 SaveScene存盘场景 SaveSceneAs改名存盘 Import导入 E ...
最新文章
- windows上不同版本的CUDA、cudnn是否能够共用?
- NLB网路负载均衡管理器详解
- vue使用element ui实现下拉列表分页的功能!!!
- 视差滚动(Parallax Scrolling)效果的原理和实现
- Integer类的装箱和拆箱到底是怎样实现的?
- 【华为云技术分享】听说,AI界奔涌的后浪都相聚在这里
- 华为双 11 发 20 亿奖金!?
- 浅析JBPM工作流引擎
- Altium Designer 17 安装方法及步骤
- jQuery图片LightBox插件 点击图片放大 支持移动手机
- ping-pong机制
- 数据清洗之 数据整理
- 从一个帝国的消逝,看商业组织的进化
- 蚂蚁集团副总裁,任复旦大学人工智能学院院长!
- 优盘复制进来为空_为什么复制后文件夹u磁盘为空
- MapBoxMap 之 定位
- 百度对site语法的几种情况
- 无功补偿的原理和形式
- win10 itunes更新ios系统异常 提示“未能恢复iPhone 发生未知错误(14)”
- 动态规划8FatMouse's Speed
热门文章
- c语言arctan函数输出角度,请问反正切函数arctanx用c语言怎么表示?
- opencv null pointer (null name string) in cvNamedWindow
- 渐变的知识和动画总结
- implicitly
- socket与tcp/ip编程
- 【正点原子STM32连载】 第六十二章 UCOSII实验2-信号量和邮箱 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- EasyTouch5插件
- 多元统计分析——聚类分析——层次聚类
- 中国信通院:大数据白皮书2020 摘要
- 孙俪邓超不婚缘于单亲阴影?