0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

文本分割技术的应用场景

深度学习自然语言处理 来源:AI算法小喵 2023-02-01 11:46 次阅读

写在前面

之前看了一篇很不错的外文博客,结合自己查阅学习的一些论文和资料,加上自己的理解,整理了一些内容,准备来跟大家分享关于文本分割任务的相关内容。

文本分割任务的目的是将文本划分为若干有意义的文本块,不同的分割目的有不同的分割粒度,比如:词、句子或者主题。

今天我们将要分享的文本分割任务的分割粒度聚焦在主题上,这类文本分割任务也称为主题分割:识别文本主题的过渡从而将长文本划分若干具有不同主题的文本块。

1. 不同的文本形式

文本分割非常实用。在日常生活学习中,我们会接触到各种各样的文本:

  • 书面文本,如:博客、文章、新闻等
  • 各种转录文本(即记录文本):
    • 电视新闻的转录
    • 播客的转录
    • 电话的转录
    • 在线会议的转录

这些文本通常都非常长,需要利用文本分割技术来处理这些文本,将它们按照主题的转移或变化划分为若干主题段落,每个主题段落内部所表达的主题一致且连贯,不同主题段落间则描述不同的主题。

当然,针对不同的文本,“主题”定义不同。比如:新闻文本分割中,主题可能是指一则新闻故事(Story);在线会议转录文本分割中,主题可能指的是不同的会议议题。无论“主题”代表的是什么,利用文本分割技术划分长文本最直接的目的都是增加文本的可读性。

当然以上这些文本中可能含有各种会影响文本分割结果的噪声,最常见的就是错别字。当然在英文场景下还可能有拼写错误、语法错误,在自动转录的情况下出现使用不当的单词。

转录需要自动识别语音并将所说的内容转录成等效的书面格式(依赖ASR技术),所以通常来说相对于书面文本,转录文本中含有更多的噪声,尤其是在线会议的转录文本。这点很容易理解,因为在线会议中,参会人有各种各样的口音、网络连接质量也常常不太稳定、参会人使用的介质(麦克风)的质量也参差不齐。

2. 文本分割技术的应用场景

通过前面的介绍,我们已经了解了文本分割(主题分割)任务是什么以及它所处理的文本的各种形式,现在我们一起来看看文本分割的应用场景。

2.1 增加可读性

现在给你两篇文章:一篇没有任何章节名称、没有任何段落,就只是长长的文本字符串;另一篇分段合理,每个自然段落过渡合理,逻辑自洽。

你愿意读哪一篇?不用想,当然是第二篇。文本分割最基础的作用就是将冗长的文本划分为读者更易阅读的一个个文本块,也就是把形如第一篇的文章变成第二篇。

2.2 更全面的摘要

文本摘要技术是用于总结提炼文章的。通常我们在阅读文章前,可以先通过文章的摘要了解内容概况,如果感兴趣再逐字逐句进行精读。就跟我们挑选要去电影院看的电影一样,先看简介,看看是不是自己的菜,免得浪费电影票和自己的时间。

但是,多数文本摘要模型在处理多主题的文章上效果还没那么好,生成的摘要通常很难囊括文章所涵盖的所有主题。

在处理多主题文章时,一个很直接且有效的解决方案就是,先利用文本分割模型将文章分成若干个具有不同主题的文本块,再利用摘要模型为每个文本块生成摘要,在进行进一步的组织和编排。

2.3 视频转文章

融合媒体时代,新闻报道需要以不同的形式(如:视频、文章、博客等)分发至不同的渠道(如:短视频app、微信、微博等)。借助ASR技术,我们可以将新闻视频中的语音文本提取出来并转化成书面格式。为增加可读性,再利用文本分割技术将转换的书面文本划分成有意义的段落,组织成更适合阅读的形式。

当然文本分割技术在信息检索、写作助手、对话建模等等其他NLP下游任务上也有其相应的应用。

3. 文本分割任务的评价指标

文本分割任务是识别文本主题的过渡从而将长文本划分若干具有不同主题的文本块。所以,如下图所示文本分割模型实际上就是在对文本中的每个句子进行二分类,判断每个句子是否是分割边界(也就是文本块的最后一句)。

9e91dba6-a1d0-11ed-bfe3-dac502259ad0.png

在这样一个任务上,比较常用的评价指标有:Precision&Recall(也就是我们在《二分类任务评价指标(中)》介绍过的查准率和查全率)、PkWindowDiff

3.1 Precision & Recall

3.1 Precision & Recall的含义

既然文本分割(主题分割)本质上是在句子级的二分类任务,那么自然可以使用PrecisionRecall,对应的含义如下:

  • Precision(查准率):衡量了“被判别为分割边界的句子中有多少比例是真正的边界” ;
  • Recall(查全率):衡量了“所有真正的分割边界中有多少比例被模型识别出来了” ;

3.2 Precision & Recall 的问题

然而,Precision&Recall这两个指标对“near miss”不敏感。

9ee4f6ba-a1d0-11ed-bfe3-dac502259ad0.png

在上图中,Ref 是 ground truth,每个块代表一个句子,垂直线表示真实的分割边界。A-0 与 A-1 是两个文本分割模型。

从图中可以清楚地看到,模型 A-0 预测的分割边界非常接近 ground truth,这就是所谓的“near miss”,即预测结果与真实结果偏离得很少,大概一两句话。另一方面,模型 A-1 预测的分割边界与ground truth 就差得远了。

也就是说,虽然两个模型都没有预测正确,但从“near miss”角度来看,模型 A-0 相对优于模型 A-1。但是,Precision&Recall指标可不会考虑这些,它们不在乎预测边界与真实边界的相对距离,只管预测正确与否,所以 A-0 与 A-1 从PrecisionRecall值来看效果是相当的。

3.2 Pk 指标

3.2.1 Pk 指标定义

针对 “near miss”, Beeferemen 等人提出了Pk指标。

9f2dc516-a1d0-11ed-bfe3-dac502259ad0.png

Pk是基于滑动窗口计算的,窗口大小可以自行指定,如果没有指定一般就取真实文本段平均长度的的一半。在滑动窗口的同时,判断窗口的两端的节点是否属于同一文本段,并比较真实结果与模型预测的结果是否一致,最后将不一致的数量除以滑动次数即可得到Pk值。所以模型的Pk值越低,说明模型预测得越好。

Pk指标在nltk中有相应实现,可以直接调用(nltk.pk[1]):

9f61313a-a1d0-11ed-bfe3-dac502259ad0.png

下面是Pk的实现源码(为了便于大家结合定义看代码实现,小喵已经在下面的源代码中添加了相应注释):

#Beeferman'sPktextsegmentationevaluationmetric

[docs]defpk(ref,hyp,k=None,boundary='1'):
"""
ComputethePkmetricforapairofsegmentationsAsegmentation
isanysequenceoveravocabularyoftwoitems(e.g."0","1"),
wherethespecifiedboundaryvalueisusedtomarktheedgeofa
segmentation.

>>>'%.2f'%pk('0100'*100,'1'*400,2)
'0.50'
>>>'%.2f'%pk('0100'*100,'0'*400,2)
'0.50'
>>>'%.2f'%pk('0100'*100,'0100'*100,2)
'0.00'

:paramref:thereferencesegmentation
:typeref:strorlist
:paramhyp:thesegmentationtoevaluate
:typehyp:strorlist
:paramk:windowsize,ifNone,settohalfoftheaveragereferencesegmentlength
:typeboundary:strorintorbool
:paramboundary:boundaryvalue
:typeboundary:strorintorbool
float
"""
#若k未指定,则k设置为真实分割结果中文本段平均长度的一半
ifkisNone:
k=int(round(len(ref)/(ref.count(boundary)*2.)))
#不匹配计数
err=0
#滑动
foriinxrange(len(ref)-k+1):
#判断是否属于同一文本段,只需要判断窗口内是否出现了分割边界,若出现了就不属于同一文本段
r=ref[i:i+k].count(boundary)>0
h=hyp[i:i+k].count(boundary)>0
ifr!=h:
err+=1
#pk值为不匹配次数除以总的滑动次数
returnerr/(len(ref)-k+1.)

3.2.2 Pk 指标问题

Pk指标也存在一些问题:

  • 对文本块大小过于敏感
  • 没有考虑分割边界数量
  • 假负例比假正例更易受到惩罚
  • 对于“near miss”处罚太多

Pk指标存在的问题感兴趣的读者可以细读相关论文。小喵在这里仅针对“假负例比假正例更易受到惩罚”展开提一下。

9f95e8bc-a1d0-11ed-bfe3-dac502259ad0.png

我们来看上面这幅图,图中滑动窗口大小为4 (表示在窗口两端点内潜在的分割边界数为4)。模型将两个真实的分割边界都预测了出来,同时也多预测了一个(即假正例,本来不是分割边界的被预测为分割边界)。

但是从Pk的定义来看,在每一个窗口内,模型预测与真实结果都是一致的,即窗口两端情况都是一样的,要么都是在同一文本段内,要么都在不同文本段内。也就是说只要窗口两端情况一致,不管窗口内部情况如何,Pk都认为模型做对了,这样“假正例”逃脱了惩罚。

3.3 WindowDiff 指标

针对Pk指标存在的问题,WindowDiff指标被提了出来(《A Critique and Improvement of an Evaluation Metric for Text Segmentation》[2])。

WindowDiff指标也是基于滑动窗口计算。不同的是,WindowDiff指标直接判别在窗口内部真实结果与预测结果分割边界数量的异同。

也就是说PkWindowDiff的计算类似,都是在分割结果上每次移动一个固定大小的窗口,并在窗口内计算模型预测结果与真实结果不匹配情况,最终求平均。不同之处在于,Pk是从“窗口两端的句子是否位于同一个文本”的角度来判断,而WindowDiff则是根据“窗口内所包含的分割边界个数”来判断。

同样地,模型的WindowDiff值越低,说明模型预测的分割边界与真实的分割边界越接近,模型预测得越好。

WindowDiff在nltk中也有相应的实现(nltk.windowdiff()[3]):

9fbc4ac0-a1d0-11ed-bfe3-dac502259ad0.png

下面是WindowDiff的实现源码(小喵也在代码中添加了相应注释):

defwindowdiff(seg1,seg2,k,boundary="1",weighted=False):
"""
Computethewindowdiffscoreforapairofsegmentations.A
segmentationisanysequenceoveravocabularyoftwoitems
(e.g."0","1"),wherethespecifiedboundaryvalueisusedto
marktheedgeofasegmentation.

>>>s1="000100000010"
>>>s2="000010000100"
>>>s3="100000010000"
>>>'%.2f'%windowdiff(s1,s1,3)
'0.00'
>>>'%.2f'%windowdiff(s1,s2,3)
'0.30'
>>>'%.2f'%windowdiff(s2,s3,3)
'0.80'

:paramseg1:asegmentation
:typeseg1:strorlist
:paramseg2:asegmentation
:typeseg2:strorlist
:paramk:windowwidth
:typek:int
:paramboundary:boundaryvalue
:typeboundary:strorintorbool
:paramweighted:usetheweightedvariantofwindowdiff
:typeweighted:boolean
float
"""
#句子数相同
iflen(seg1)!=len(seg2):
raiseValueError("Segmentationshaveunequallength")
ifk>len(seg1):
raiseValueError("Windowwidthkshouldbesmallerorequalthansegmentationlengths")
#不匹配计数
wd=0
#滑动
foriinrange(len(seg1)-k+1):
#预测结果与真实结果在窗口内的分割边界数的差值
ndiff=abs(seg1[i:i+k].count(boundary)-seg2[i:i+k].count(boundary))
ifweighted:
wd+=ndiff
else:
#分割边界不相同,即边界数差值不为人零时,不匹配计数加1
wd+=min(1,ndiff)
#不匹配次数除以总的滑动次数
returnwd/(len(seg1)-k+1.)

总结

在今天的文章中,小喵跟大家一起学习了什么是文本分割主题分割)、文本分割任务的应用场景以及文本分割任务的相关评价指标,如:Precision&RecallPkWindowDiff

希望大家通过本文能够对文本分割任务有一个基本的认识。在接下来的文章里,小喵将跟大家一起阅读文本分割的相关论文、学习文本分割的相关模型。

审核编辑 :李倩



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自动识别
    +关注

    关注

    3

    文章

    217

    浏览量

    22818
  • 文本
    +关注

    关注

    0

    文章

    118

    浏览量

    17068

原文标题:总结

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    系统放大器的技术原理和应用场景

    系统放大器是一种重要的电子设备,其技术原理和应用场景都具有一定的专业性和广泛性。以下是对系统放大器的技术原理和应用场景的详细介绍:一、技术
    发表于 11-18 14:46

    OTA测试暗箱的技术原理和应用场景

    OTA测试暗箱在无线通信设备的研发与测试中扮演着至关重要的角色。以下是对OTA测试暗箱技术原理和应用场景的详细阐述:一、OTA测试暗箱的技术原理OTA测试暗箱的技术原理主要基于电磁波在
    发表于 11-14 14:36

    无线通信测试平台的技术原理和应用场景

    无线通信测试平台的技术原理和应用场景是无线通信领域的重要组成部分。以下是对这两个方面的详细阐述:一、无线通信测试平台的技术原理无线通信测试平台的技术原理主要基于无线信号传输和接收过程中
    发表于 11-06 14:29

    移动终端测试仪的技术原理和应用场景

    ,确保设备在导航服务中的准确性和可靠性。 应用场景移动终端测试仪的应用场景广泛,涵盖了从研发到生产、从维护到监管的多个环节: 移动维修服务:维修技术人员可以使用便携的综测仪快速对手机进行全面检测
    发表于 11-04 16:01

    便携式示波器的技术原理和应用场景

    便携式示波器作为示波器的一种,具有体积小、重量轻、便于携带等特点,在多个领域有着广泛的应用。以下是对其技术原理和应用场景的详细介绍:一、技术原理便携式示波器的基本原理与传统示波器相同,都是通过采集
    发表于 10-24 14:31

    实时示波器的技术原理和应用场景

    实时示波器是一种高性能的电子测量仪器,其技术原理和应用场景对于电子工程和通信技术领域具有重要意义。以下是对实时示波器的技术原理和应用场景的详
    发表于 10-23 14:22

    源测量单元设备的技术原理和应用场景

    源测量单元(SMU)设备是一种集成了精密电源(PPS)和高性能数字万用表(DMM)功能的测试设备。以下是对其技术原理和应用场景的详细解析:一、技术原理 集成功能: SMU在单个仪器中集成了电源
    发表于 10-22 11:10

    太阳膜测试仪的技术原理和应用场景

    太阳膜测试仪的技术原理和应用场景可以详细阐述如下:技术原理太阳膜测试仪的技术原理主要基于光学测量和物理定律。具体来说,它通过模拟太阳光中的各种波长(主要是紫外线、可见光和红外线)的辐射
    发表于 09-29 14:18

    超声波测厚仪的技术原理和应用场景

    超声波测厚仪的技术原理和应用场景详细如下:技术原理超声波测厚仪利用超声波脉冲反射原理来测量材料的厚度。具体工作原理如下: 发射超声波脉冲:测厚仪的探头(也称为换能器)向被测物体发射一束高频超声波脉冲
    发表于 09-27 15:06

    智能IC卡测试设备的技术原理和应用场景

    智能IC卡测试设备的技术原理和应用场景,可以从以下几个方面进行阐述:技术原理智能IC卡测试设备的技术原理主要围绕IC卡的通信和数据处理机制展开。IC卡(包括智能IC卡)通常内置有微电子
    发表于 09-26 14:27

    NFC协议分析仪的技术原理和应用场景

    NFC协议分析仪的技术原理和应用场景可以详细阐述如下:技术原理NFC(Near Field Communication,近场通信)协议分析仪是一种用于分析NFC通信协议和性能的专业设备。其技术
    发表于 09-25 14:45

    脉冲式线圈测试仪的技术原理和应用场景

    脉冲式线圈测试仪,也被称为数字式匝间绝缘测试仪,其技术原理和应用场景如下:技术原理脉冲式线圈测试仪的技术原理主要基于电磁感应和瞬态波形分析。具体来说,测试仪会对标准线圈绕组和被测试绕组
    发表于 09-18 14:29

    卷积神经网络在文本分类领域的应用

    在自然语言处理(NLP)领域,文本分类一直是一个重要的研究方向。随着深度学习技术的飞速发展,卷积神经网络(Convolutional Neural Network,简称CNN)在图像识别领域取得了
    的头像 发表于 07-01 16:25 624次阅读

    NanoEdge AI的技术原理、应用场景及优势

    能耗并提高数据安全性。本文将对 NanoEdge AI 的技术原理、应用场景以及优势进行综述。 1、技术原理 NanoEdge AI 的核心技术包括边缘计算、神经网络压缩和低功耗硬
    发表于 03-12 08:09

    人工智能中文本分类的基本原理和关键技术

    在本文中,我们全面探讨了文本分技术的发展历程、基本原理、关键技术、深度学习的应用,以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用,旨在提供对
    的头像 发表于 12-16 11:37 1179次阅读
    人工智能中<b class='flag-5'>文本分</b>类的基本原理和关键<b class='flag-5'>技术</b>