如何进行中英文分句以及对中英文进行分词
中英文分词简介
中英文分词是进行机器学习文本处理方面必须进行的一步,就类似于机器学习中图像处理的降噪,英文分词主要是将标点符号与英文单词进行分隔,中文分词就是讲每个词组进行分隔,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 ...
最新文章
- 仅一台摄像机即可进行3D身体重建
- RIPv1和v2综合实验(CCNP阶段)
- java设计模式:prototype模式
- Cisco热备份路由协议(HSRP) 2
- Java Web使用数据库连接池
- vb 实现小超市饮料补货提醒程序 public全局变量的声明与初始化
- 没有终结点在侦听可以接受消息的_【大卫聊股】2019.05.05 周末重要消息分析及下周一走势预判...
- w3ctech 2011 北京站(组图)
- 瑞典 林雪平大学 机器人视觉方向 博士招生
- 专访第一棋牌创始人陈总:_如何解雇自己:创始人的困境
- 2022 年人工智能全球最具影响力学者榜单 AI 2000 正式发布
- 【java学习之路】(数据结构篇)004.递归和二叉搜索树
- 可以插卡的ipad_如何使用Mac或者ipad打电话
- 快速幂算法c语言求a的n次方,快速幂运算模板(求n^k以及前几位或后几位)
- Java开发人员可以从Spring框架中学到编程技巧
- Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较
- 11月国内网站流量统计:百度夺冠 360安全中心居亚
- 基于Socket网络编程基本步骤
- Java项目集成永中文档在线预览
- 数据分析的坑,都在统计学里埋过
热门文章
- iphone个系列尺寸_iphone7和iphone6系列尺寸和分辨率对比图
- 纳米小药丸穿透癌细胞(治癌)
- win7怎样打开位置定位服务器,Win7系统如何打开系统服务?Win7系统打开系统服务的方法...
- TMS320F28335之系统时钟
- 【东方博宜】1112 - 【入门】查找子串并替换
- L-Ascorbic acid-13C-3 L-抗坏血酸 13C-3; 维生素C 13C-3; 维生素 C 13C-3 活性氧
- Spring学习(二)--装配Bean
- [转]屏幕录相专家常见问题
- Cisco(49)——DMV
- PHP中16进制和8进制