文本处理之句子切分-日语和英语
前言:
神秘力量出现,博主转投NLP领域,干起了文本类型数据处理和识别。由于博主之前一直在视频、图像领域挖坑对NLP这一块儿相当无知,所以,那么,就从最简单的拆分句子开始吧。
背景:
为什么要拆分句子?对于大段的文本,一般情况下都是多个句子合在一起的,如果把它们当成一句语来处理,即作为RNN网络的一条数据有些太“长”,所以我们要对长文本进行切分使其尽可能的“短”,但是为了保持句子意思的完整性又不能随便切分必须按照一定的规则,最简单的是按照 “。?!.” 等中文或英文中常用的句子结束符号。(如有特殊情况特殊处理)
实现:
这个切分实现起来很简单,烦恼点在如何用 python 处理这些文本数据。总所周知,文本数据是字符串类型(string,str)对于 .txt 类型的文件可以直接通过 open() 然后 read() 读取整个文本的内容,然后对于读取到的文本数据可以直接通过正则表达式进行切分。
import re
re.split('[。?!]',text)
这种切分方式对大部分中文和英文文本都适用,但是对于如日文、韩语等语言则不适用,需要别的切分规则,另外如果需要对切分后的文本做进一步的处理,或者直接对原文本做一些处理,推荐一个优秀的package:NLTK pip install nltk。安装时选择download all 即下载所有的文件,成功后会生成一个nltk_data文件,在其中的 tokenizers 的punkt中显示直接支持的语言类型,很遗憾 汉语和日语都不在此列,但是别慌,作为一个成熟以及广受好评的自然语言处理包,不能说不行。
NLTK 内置了一些语言如English、German、Greek等的切分规则,意思就是你可以不用知道这些语言都是以哪种符号结尾,直接调用NLTK的方法就可以完成切分过程,那么如果要处理支持之外的语言呢?NLTK是支持正则表达式的,又回到最初的起点,记忆中。。。
# 对于直接支持的语言
import nltk
from nltk import sent_tokenizesentences = sent_tokenize(text)# 对于不直接支持的语言from nltk import RegexpTokenizertokenizer = RegexpTokenizer(".*?[各种奇葩的符号]")
sentences = tokenizer.tokenize(text)
到此,一切看上去都很完美,世界和平,社会和谐,然而事情又怎么会这么简单。文本类型的数据又岂止 .txt 一种格式,你仿佛忘记了大名鼎鼎的 .docx 家族。
pip install docx 不解释。
docx 文本中主要有两大类,纯文本,以及纯表格,至于表格和文本纠缠不清的,对不起,我不会。
纯表格文本
from docx import Documentdocument = Document('path_to_docx')tables = document.tablesrows = tables.rowscells = rows.cellsparagraphs = cells.paragraphstext = paragraphs.text简洁明了,通俗易懂,建议好好看文档。纯文本就省事多了paragraphs = document.paragraphstext = paragraphs.text
这里给出一个简单的通过正则表达式切分的例子。
import re
import csv
path = "クリスマス・イーヴ.txt"
with open(path, encoding="utf8", errors='ignore') as f:words = f.read()#print(words)def txtSplit(artical):sequencelist = re.split('[。?!]',artical)print(len(sequencelist))#print(sequencelist)return sequencelist
def save2txt(sequenceList):with open("クリスマス・イーヴ1.txt",'w') as f:for i in range(len(sequenceList)):f.write(sequenceList[i])
def save2csv(sequenceList):with open('スリーピー・ホローの伝説.csv', mode='w') as result:result_writer = csv.writer(result,delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)for i in range(len(sequenceList)):result_writer.writerow(sequenceList[i]) if __name__ == '__main__':sequ = txtSplit(words) save2txt(sequ)
建议不要直接写入csv格式,可以操作看一下效果。另外,基于NLTK、docx等库的代码,可以下载超值大礼包,包含《nltk cook book》。
https://download.csdn.net/download/zshluckydogs/11008473
文本处理之句子切分-日语和英语相关推荐
- python 文本词汇,句子校正 autocorrect库的使用
python 文本词汇,句子校正 但是,事实上,spell已经过时了,现在一般使用 from autocorrect import Speller 查看源代码 class Speller:def __ ...
- 韩语韵尾(收音)在粤语、日语、英语中相应的发音
韩语韵尾(收音)在粤语.日语.英语中相应的发音 2009年07月14日
- python英文文本分析和提取_python如何提取英语pdf内容并翻译
本文实例为大家分享了python提取英语pdf内容并翻译的具体代码,供大家参考,具体内容如下 前期准备工作: 翻译接口: 调用的是百度翻译的api(注册后,每个月有2百万的免费翻译字符数.) pdfm ...
- NLP文本分析(文本分类与句子评分)
在线课堂质量评估文本分析 文本分析的任务是对一堂在线课的师生对话进行分析,得到问答.讲堂和纠错三个方面的定性评估. 更新 Apr 28, 2020 当前版本: 0.1.0, 初始版本. 目录 章节 内 ...
- 计算机的英语句子,最经典的英语句子
最经典的英语句子 a joyful heart is the inevitable result of a heart burning with love.内心只要有爱在燃烧,就不然有快乐. don' ...
- c语言英文版孤独怎么说,孤单英文句子 关于“孤独”的英语句子有哪些?
1.天空一无所有,要如何给我安慰. The sky has nothing, how to give me comfort. 2.时光俨然催人老,时光荏苒成蹉跎. Time peremptory ma ...
- 大学计算机英语句子,万能句大学英语句子大全
不管是初中还是高中特别是大学,我都听到很多人说作文难写,那是你积累不够,我们要要成积累句子的习惯,这样对于提升写作能力非常显著.接下来小编在这里给大家带来万能句大学英语句子大全,希望对你有所帮助! 1 ...
- java 时间格式 外语,java-如何使用ERA设置日语的英语日期格式
搜索热词 我希望新的日语ERA日期为" R010501",而我却得到" R151". 我正在使用com.ibm.icu.text.DateFormat包来获取日 ...
- 日语截图翻译软件(百度ocr+python3+pyqt5)
1.引言: 网上有很多的ocr识别图片转文字再翻译的软件.但是没有翻译日语的.于是想自己做一个对含有日语的图片进行识别并翻译为中文的小工具.这里提一下,如果看这篇文章的人只是希望找个选中文本并翻译的软 ...
最新文章
- 笔记精选(返回点赞总数和挑选笔记数量)
- C#入门篇5-5:流程控制语句 dowhile
- 让您的Eclipse具有千变万化的外观
- cp 提示 overwrite 问题
- 79-Spark Standalone架构设计要点分析
- VLAN专题之三:VLAN的访问链接
- python正则表达式处理文本内容_Python处理txt文本
- 使用 EPUB 制作数字图书
- 出现错误/ncnn/src/cpu.cpp:426: undefined reference to `stderr'完美解决方案。
- 计算机编程的地位,学习编程的重要性
- Windows Server2012搭建邮件服务器
- 计算机由于exls表格经常卡,excel表格数据多总是卡-EXCEL表格中的不多,但是老是卡,怎么办?...
- 玩转儿童语音数据,打造儿童专属AI
- Windows安装OpenCV
- Unity正在将云渲染市场拱手相让!
- Python中的np.array理解
- 如何站在成功人士的肩上成为一个真正的巨人————《赛马娘 Pretty Derby》评测
- 【转】强悍的搞笑语录,老衲再也忍…
- HWND CDC HDC的转换
- 【机器人识别抓取】基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计
热门文章
- 阿里、腾讯、华为爆发云巅大战(转载)
- N - Wires(dfs 图论 离散化)
- 苹果iOS系统手机如何实现微信多开?超简单教程!
- python画图(标记、marker、设置标记大小、marker符号大全)
- cpp教程2-cpp命名规范整理
- 能源消耗监测管理系统_能源消耗监测系统管理平台
- 如何防止工具(八门神器)进行内存修改
- 从有限状态机、图灵机到现代计算机
- ug585_ch19 UART 导读
- python爬虫数据可视化_[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网...