广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现对中文文本分段分句
  • 174
分享到

Python如何实现对中文文本分段分句

2023-07-05 12:07:44 174人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python如何实现对中文文本分段分句”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现对中文文本分段分句”文章能帮助大家解决问题。一、问题实现对文本的分句,大致来

这篇文章主要介绍“python如何实现对中文文本分段分句”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现对中文文本分段分句”文章能帮助大家解决问题。

一、问题

实现对文本的分句,大致来说主要是以中文的句号、感叹、问号等符号进行分句。难点在于直接分句可能会造成人物说话的语句也被分开!

二、步骤

分段

首先读取文本,文本读取后整体是一个字符串,每一个段之间是空白,所以分段之间按照空白分开来即可,最后存入一个paragraph_list,注意该list的下标就是段落的顺序号!其他的这里就不再多赘述!(可以查看最后的整体代码)

分句

首先拿到上面分好的paragraph_list,循环拿到每一段,然后对每一段直接按照分句规则(正则表达式)进行分句,参考该文章

import redef cut_sent(para):    para = re.sub('([。!?\?])([^”'])', r"\1\n\2", para)    para = re.sub('(\.{6})([^”'])', r"\1\n\2", para)    para = re.sub('(\…{2})([^”'])', r"\1\n\2", para)    para = re.sub('([。!?\?][”'])([^,。!?\?])', r'\1\n\2', para)    para = para.rstrip()    return para.split("\n")# 这一段文字分句后应该有的结果s = '今天天气好啊!' \    '温度高吗?你好,很高兴遇见你,真不错。' \    '小明遇见小红说:"你的衣服这好看!"' \    '小红说:"什么?衣服真好看?真的吗?"' \    '小明回答到:"嗯,真的!我也想买。"'for i in cut_sent(s):    print(i)    #结果将人物语句也分开"""今天天气好啊!温度高吗?你好,很高兴遇见你,真不错。小明遇见小红说:"你的衣服这好看!"小红说:"什么?衣服真好看?真的吗?"小明回答到:"嗯,真的!我也想买。""""

连接

这里解决办法就是循环每一句,识别:"和"

  • 两个符号均有,则该句直接就是一整句,直接就加入

  • 两个符号都没有,则该句直接就是一整句,直接就加入

  • 如果只有前面符号而无后面符号,则记录有前面符号那一句,依次往下拼接,直到遇到字符最后有“,将上面拼接好的语句作为一整句放入

def connect(paragraph):    sentence_before = []    sentence_after = []    for each_para in paragraph:        sentence_before.append(cut(each_para))    # 核心代码!(将被错分的语句进行连接)    for each in sentence_before:        list = []        sentence = ""        FLAG = True # 非常关键!判断有':“'的符号后面的语句是否继续拼接        for i in each:            if i.find(':“') * i.find('”') >= 0 and FLAG:                list.append(i + sentence)            else:                FLAG = False                sentence = sentence + i                if i.find('”') > 0:                    list.append(sentence)                    sentence = ""                    FLAG = True        sentence_after.append(list)    return sentence_after

三、最后整体代码

import reimport pandas as pd# 将整篇文章进行分段def segments(url):    raw = pd.read_csv(url,names=['txt'], sep='aaa', encoding="GBK" ,engine='python')    def m_head(tem_str):        return tem_str[:1]    def m_mid(tmp_str):        return tmp_str.find("回 ")    raw['head'] = raw.txt.apply(m_head)    raw['mid'] = raw.txt.apply(m_mid)    raw['len'] = raw.txt.apply(len)    chap_num = 0    for i in range(len(raw)):        if raw['head'][i] == "第" and raw['mid'][i] > 0 and raw['len'][i] < 30:            chap_num += 1        if chap_num >= 40 and raw['txt'][i] == "附录一:成吉思汗家族":            chap_num = 0        raw.loc[i, 'chap'] = chap_num    del raw['head']    del raw['mid']    del raw['len']    tmp_chap = raw[raw['chap'] == 7].copy()    tmp_chap.reset_index(drop=True, inplace=True)    tmp_chap['paraidx'] = tmp_chap.index    paragraph = tmp_chap['txt'].values.tolist()    return paragraph# 将每段进行分句def cut(para):    # 相关规则    pattern = ['([。!?\?])([^”'])','(\.{6})([^”'])','(\…{2})([^”'])','([。!?\?][”'])([^,。!?\?])']    for i in pattern:        para = re.sub(i, r"\1\n\2", para)    para = para.rstrip()    return para.split("\n")# 将其中被错分的语句进行连接(主要是针对话语)def connect(paragraph):    sentence_before = []    sentence_after = []    for each_para in paragraph:        sentence_before.append(cut(each_para))    # 核心代码!(将被错分的语句进行连接)    for each in sentence_before:        list = []        sentence = ""        FLAG = True # 非常关键!判断有':“'的符号后面的语句是否继续拼接        for i in each:            if i.find(':“') * i.find('”') >= 0 and FLAG:                list.append(i + sentence)            else:                FLAG = False                sentence = sentence + i                if i.find('”') > 0:                    list.append(sentence)                    sentence = ""                    FLAG = True        sentence_after.append(list)    return sentence_after# 将最后的结果保存到DataFramedef toDataFrame(list3):    df = pd.DataFrame(columns=["content","paragraph","sentence"])    for para_num,i in enumerate(list3):       for sentence_num,j in enumerate(i):            df_ = pd.DataFrame({"content": j, "paragraph": para_num,"sentence":sentence_num+1},index=[para_num])            df = df.append(df_,ignore_index=True)    for i in df['content'].values.tolist():        print(i)def main():    # URL = "/Users/dengzhao/Downloads/金庸-射雕英雄传txt精校版.txt"    URL = input("请输入文件地址:")    para = segments(URL)    result = connect(para)    print(result)    flag = input("以DataFrame形式输出数据(Y,N):")    if flag == 'Y':        toDataFrame(result)    elif flag == 'N':        print("Thanks!!!!")    else:        print("程序结束!请检查的你的输入!")if __name__ == '__main__':    main()

关于“Python如何实现对中文文本分段分句”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Python如何实现对中文文本分段分句

本文链接: https://www.lsjlt.com/news/351641.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现对中文文本分段分句
    目录一、问题二、步骤三、最后整体代码一、问题 实现对文本的分句,大致来说主要是以中文的句号、感叹、问号等符号进行分句。难点在于直接分句可能会造成人物说话的语句也被分开! 二、步骤 分...
    99+
    2023-03-15
    Python中文文本分段分句 Python文本分段分句 Python文本分段 Python文本分句 Python文本
  • Python如何实现对中文文本分段分句
    这篇文章主要介绍“Python如何实现对中文文本分段分句”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现对中文文本分段分句”文章能帮助大家解决问题。一、问题实现对文本的分句,大致来...
    99+
    2023-07-05
  • python实现文本分类
    一、中文文本分类流程:1. 预处理2. 中文分词3. 结构化表示-构建词向量空间4.权重策略-TF-IDF5. 分类器6. 评价二、具体细节1.预处理    1.1. 得到训练集语料库    本文采用复旦中文文本分类语料库,下载链接:ht...
    99+
    2023-01-31
    文本 python
  • html如何实现文章分段
    小编给大家分享一下html如何实现文章分段,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 布局模式,结构文章时分,文章分段,均...
    99+
    2022-10-19
  • html中怎么用标签实现文本分段
    这篇文章主要介绍了html中怎么用标签实现文本分段的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇html中怎么用标签实现文本分段文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2022-10-19
  • Python中怎么实现文本分析
    这期内容当中小编将会给大家带来有关Python中怎么实现文本分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。任务(Task)人为判断同义词很简单,但用程序来判断就不简单了。小爱想到了两种方式:制作一个同...
    99+
    2023-06-16
  • VBS如何实现文本文件分割脚本
    这篇文章给大家分享的是有关VBS如何实现文本文件分割脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。而Windows下没有一个现存的比较好用的分割工具,所以我用VBS做了一个文本文件的分割工具,和各位网友共享。...
    99+
    2023-06-08
  • python如何实现大文本文件分割成多个小文件
    小编给大家分享一下python如何实现大文本文件分割成多个小文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂...
    99+
    2023-06-14
  • python实现大文本文件分割成多个小文件
    本文介绍一种将一个大的文本文件分割成多个小文件的方法 方法一: 1.读取文章所有的行,并存入列表中 2.定义分割成的小文本的行数 3.将原文本内容按一定行数依次写入小文件中 4.此方...
    99+
    2022-11-12
  • python实现按行切分文本文件的方法
    本文实例讲述了python实现按行切分文本文件的方法。分享给大家供大家参考,具体如下: python脚本利用shell命令来实现文本的操作, 这些命令大大减少了我们的代码量。 比如按行切分文件并返回切分后得...
    99+
    2022-06-04
    切分 文本文件 方法
  • Python实现文本文件拆分写入到多个文本文件的方法
    引言 将一个txt文本文件中的内容行拆分固定的行数,自动分批写入到多个文本文件。 比如:一个源txt文件有5100行数据,每1000行插入到一个txt文件,最后获得6个txt文件(5...
    99+
    2022-11-12
  • VBS如何实现iPod文本分割器
    这篇文章将为大家详细讲解有关VBS如何实现iPod文本分割器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。因此暑假闲暇编写了这个简短精悍的脚本版的分割器。脚本版的最大的好处可以由使用者进行DIY。 具体情...
    99+
    2023-06-08
  • Linux中Docker镜像如何实现文本切分
    这篇文章将为大家详细讲解有关Linux中Docker镜像如何实现文本切分,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。文本切分接下来,使用 cut 命令对结果进行进一步切分并取出第三个字段:$ ...
    99+
    2023-06-27
  • HTML中如何实现文本超出部分隐藏
    小编给大家分享一下HTML中如何实现文本超出部分隐藏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!文本超出部分隐藏,总结两种方法...
    99+
    2022-10-19
  • 如何用Python实现自然语言处理中的文本分类?
    自然语言处理(Natural Language Processing,简称NLP)是人工智能领域中的一个重要分支。文本分类是NLP中的一个基本任务,它的目的是将文本分成不同的类别。在本文中,我们将介绍如何使用Python实现自然语言处理中的...
    99+
    2023-11-04
    大数据 二维码 自然语言处理
  • 如何用Python实现分段函数
    在Python中编写分段函数的方法Python代码如下:import numpy as npimport matplotlib.pyplot as plt#绘制分段函数def sgn(x):if x > 0:return 1elif x <...
    99+
    2022-10-07
  • Tensorflow中怎么实现CNN文本分类
    今天就跟大家聊聊有关Tensorflow中怎么实现CNN文本分类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 数据和预处理我们将在这篇文章中使用的数据集是 Movie Revi...
    99+
    2023-06-19
  • Python中如何实现分布式文件管理?
    在现代互联网时代,数据已经成为企业和个人的重要资产。为了有效地管理这些数据,分布式文件管理已经成为了一种越来越受欢迎的解决方案。在这篇文章中,我们将介绍如何使用Python来实现分布式文件管理。 什么是分布式文件管理? 分布式文件管理...
    99+
    2023-09-29
    分布式 文件 django
  • JavaScript中如何实现文本左对齐
    这篇文章主要介绍了JavaScript中如何实现文本左对齐的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript中如何实现文本左对齐文章都会有所收获,下面我们一起来...
    99+
    2022-10-19
  • python中文分词,使用结巴分词对python进行分词(实例讲解)
    在采集美女站时,需要对关键词进行分词,最终采用的是python的结巴分词方法。 中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词。 其基本实现原理有三点: 1.基于Trie树结构实现高效的词...
    99+
    2022-06-04
    分词 结巴 中文
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作