python实现中文文本分句的例子

yipeiwu_com6年前Python基础

对于英文文本分句比较简单,只要根据终结符"."划分就好,中文文本分句看似很简单,但是实现时会遇到很多麻烦,尤其是处理社交媒体数据时,会遇到文本格式不规范等问题。

下面代码针对一段一段的短文本组成了文档分句

import re
def cut_sent(infile, outfile):
  cutLineFlag = ["?", "!", "。","…"] #本文使用的终结符,可以修改
  sentenceList = []
  with open(infile, "r", encoding="UTF-8") as file:
    oneSentence = ""
    for line in file:
      if len(oneSentence)!=0:
        sentenceList.append(oneSentence.strip() + "\r")
        oneSentence=""
      # oneSentence = ""
      for word in words:
        if word not in cutLineFlag:
          oneSentence = oneSentence + word
        else:
          oneSentence = oneSentence + word
          if oneSentence.__len__() > 4:
            sentenceList.append(oneSentence.strip() + "\r")
          oneSentence = ""
  with open(outfile, "w", encoding="UTF-8") as resultFile:
    print(sentenceList.__len__())
    resultFile.writelines(sentenceList)

如果段尾3没有终结符但是换行了,这句话可能会丢失,所有加入如下代码:

   if len(oneSentence)!=0:
   sentenceList.append(oneSentence.strip() + "\r")
     oneSentence=""

会得到比较好的处理结果

要处理的文本:

自从微信出了三天可见功能,我的朋友圈就越来越冷清越来越冷清越来越冷清,点开都没什么可看的了。今天我把屏蔽的代购一个一个一个都放出来了,快过年了,热闹点
一女性,想DIY矫正门牙缝隙,在家自己制取模型,结果悲剧了,因为用的是石膏,自己无法取出,来我院求助,医生废了九牛二虎之力才搞定……DIY有风险,操作需谨慎!
闺女同学家养了一只鹦鹉,两只珍珠鸟,一只猫,两只仓鼠。鹦鹉是老大,珍珠鸟怕它,猫是后进家的,也怕鹦鹉。仓鼠经常溜出笼子,据说猫会把它逮住塞回笼子。

处理后的文本:

自从微信出了三天可见功能,我的朋友圈就越来越冷清越来越冷清越来越冷清,点开都没什么可看的了。
今天我把屏蔽的代购一个一个一个都放出来了,快过年了,热闹点
一女性,想DIY矫正门牙缝隙,在家自己制取模型,结果悲剧了,因为用的是石膏,自己无法取出,来我院求助,医生废了九牛二虎之力才搞定…
DIY有风险,操作需谨慎!
闺女同学家养了一只鹦鹉,两只珍珠鸟,一只猫,两只仓鼠。
鹦鹉是老大,珍珠鸟怕它,猫是后进家的,也怕鹦鹉。
仓鼠经常溜出笼子,据说猫会把它逮住塞回笼子。

得到了比较好的分句结果,也不会丢失信息。

以上这篇python实现中文文本分句的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python实现狄克斯特拉算法

python实现狄克斯特拉算法

一、简介 是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止 二、步骤 (1) 找出“最便宜”的...

python实现简单五子棋游戏

python实现简单五子棋游戏

本文实例为大家分享了python实现简单五子棋游戏的具体代码,供大家参考,具体内容如下 from graphics import * from math import * impo...

详解Python开发中如何使用Hook技巧

详解Python开发中如何使用Hook技巧

什么是Hook,就是在一个已有的方法上加入一些钩子,使得在该方法执行前或执行后另在做一些额外的处理,那么Hook技巧有什么作用以及我们为什么需要使用它呢,事实上如果一个项目在设计架构时考...

python sys,os,time模块的使用(包括时间格式的各种转换)

sys模块 sys.argv: 实现从程序外部向程序传递参数。 位置参数argv[0]代表py文件本身,运行方法 python xx.py 参数1,参数2 。。 self = s...

Kears+Opencv实现简单人脸识别

写在前面:这篇文章也是借鉴了一些前辈的代码和思路写的,代码有些也是复用了别人的。 先说下思路: 1.首先利用Opencv检测出人脸的区域  2.在成功的检测出人脸区域后,将识别...