python中的子句提取/长句分割

2023-11-25

我目前正在开展一个涉及句子向量的项目(来自 RoBERTa 预训练模型)。当句子很长时,这些向量的质量较低,并且我的语料库包含许多带有子句的长句子。

我一直在寻找子句提取/长句分割的方法,但令我惊讶的是,没有一个主要的 NLP 软件包(例如 spacy 或 stanza)提供开箱即用的功能。

我想这可以通过使用 spacy 或 stanza 的依赖解析来完成,但正确处理各种复杂的句子和边缘情况可能会非常复杂。

我遇到过这个实现ClausIE 信息提取系统与 spacy 的功能类似,但它尚未更新并且无法在我的计算机上运行。

我也遇到过这个仓库为了简化句子,但是当我在本地运行时,我从斯坦福 coreNLP 得到注释错误。

有没有我忽略的明显的包/方法?如果没有,是否有一种简单的方法可以使用 stanza 或 spacy 来实现此目的?


这是适用于您的特定示例的代码。将其扩展到所有情况并不简单,但可以根据需要随着时间的推移进行处理。

import spacy
import deplacy
en = spacy.load('en_core_web_sm')

text = "This all encompassing experience wore off for a moment and in that moment, my awareness came gasping to the surface of the hallucination and I was able to consider momentarily that I had killed myself by taking an outrageous dose of an online drug and this was the most pathetic death experience of all time."

doc = en(text)
#deplacy.render(doc)

seen = set() # keep track of covered words

chunks = []
for sent in doc.sents:
    heads = [cc for cc in sent.root.children if cc.dep_ == 'conj']

    for head in heads:
        words = [ww for ww in head.subtree]
        for word in words:
            seen.add(word)
        chunk = (' '.join([ww.text for ww in words]))
        chunks.append( (head.i, chunk) )

    unseen = [ww for ww in sent if ww not in seen]
    chunk = ' '.join([ww.text for ww in unseen])
    chunks.append( (sent.root.i, chunk) )

chunks = sorted(chunks, key=lambda x: x[0])

for ii, chunk in chunks:
    print(chunk)
        

部署是可选的,但我发现它对于可视化依赖关系很有用。

另外,我看到您对此表示惊讶,这不是常见 NLP 库的固有特征。原因很简单 - 大多数应用程序不需要这个,虽然这看起来是一个简单的任务,但实际上随着您尝试涵盖的案例越多,它最终会变得非常复杂并且特定于应用程序。另一方面,对于任何特定的应用程序,就像我给出的示例一样,组合出一个足够好的解决方案相对容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中的子句提取/长句分割 的相关文章

  • 将tensorflow 2.0 BatchDataset转换为numpy数组

    我有这个代码 train images test images tf keras datasets mnist load data train dataset tf data Dataset from tensor slices train
  • 没有任何元数据的 zip 文件

    我想找到一种简单的方法来压缩一堆文件 而无需任何文件元数据 例如时间戳 这zip命令似乎总是保留元数据 我没有找到禁用元数据的方法 我希望解决方案是一个命令或最多一个 python 脚本 谢谢 正如一些帖子已经指出的那样 zip 标头中的大
  • python - 是否可以扩展 xml-rpc 可以序列化的事物集?

    我看到几个问题询问如何发送numpy ndarray通过 xml rpc 调用 这不能开箱即用 因为正如 xml rpc 中所述docs https docs python org 2 library xmlrpclib html 有一组固
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 如何使用Python的super()来更新父值?

    我对继承很陌生 之前所有关于继承和 Python 的 super 函数的讨论都有点超出我的理解 我当前使用以下代码来更新父对象的值 usr bin env python test py class Master object mydata
  • Python:计算数据帧列中所有行中特定字符的实例数

    我有一个包含列 toaddress ccaddress body 的数据框 df 我想迭代数据帧的索引 以获取 toaddress 和 ccaddress 字段中电子邮件地址的最小 最大和平均数量 这是通过计算这两列中每个字段中的 和 的实
  • 无法截取宽度为 0 的屏幕截图

    我正在尝试截取 Bootstrap 模态内元素的屏幕截图 经过一番努力 我终于想出了这段代码 driver get https enlinea sunedu gob pe driver find element by xpath div c
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • 为什么实现 __iter__ 的对象不被识别为可迭代的?

    假设您使用包装对象 class IterOrNotIter def init self self f open tmp toto txt def getattr self item try return self getattribute
  • 为什么我们应该在 def __init__(self, n) -> None: 中使用 -> ?

    我们为什么要使用 gt in def init self n gt None 我读了以下摘录来自 PEP 484 https www python org dev peps pep 0484 the meaning of annotatio
  • 使用 Python 生成类似于 Messenger 或 kik 代码的圆形二维码

    我可以使用 Python 生成圆形 QR 码 就像 Facebook Messenger 或 kik 使用的那样吗 我访问了很多网站 但找不到这种类型的二维码 默认情况下 Python 生成方形 QR 码 但在我的项目中我想要圆形 QR 码

随机推荐

  • 接口和类实现接口的 PhpDoc - 区别 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 问题很简单 我应该如何区分接口和类实现接口的 phpdoc 它们应该 可以相同 或者接口文档应该尽可能通用 而实现该接口的类应该更具体 我在真实代码中包含了一种方法 phpDoc 我的界面
  • 查询 dbo.sysobjects 的权限

    我有以下查询来检查我的 SQL 数据库中是否有任何用户定义的对象 DECLARE testForEmpty BIT if exists select top 1 null from dbo sysobjects where objectpr
  • 我的 jar 是用什么版本的 javac 构建的?

    我如何知道构建 jar 时使用的是哪个版本的 Java 编译器 我有一个 jar 文件 它可以在三个 JDK 中的任何一个中构建 我们需要确切地知道是哪一个 以便我们可以证明兼容性 编译器版本是否嵌入在类文件或 jar 中的某个位置 A j
  • 如何将对象集合绑定到 Winforms 中的 DataGridView

    如果我有两个对象 即Fruit andColor 及其定义如下 public class Fruit public int FruitId get set public string Name get set public Color Co
  • 哪些 dbus 性能问题会阻止其在嵌入式系统中使用?

    根据我的阅读 由于守护进程的存在 dbus 性能应该比其他消息传递 ipc 机制慢两倍 在so问题的讨论中使用哪种 Linux IPC 技术有人提到性能问题 除了速度慢一倍之外 您是否还发现了性能问题 您是否看到了阻碍我们在嵌入式系统中使用
  • 如何根据意图强制重新启动活动

    My MainActivity有lauchMode singleTask 现在我想从具有特殊意图数据的通知启动活动 在MainActivity onResume我访问给定的意图数据 问题是 当活动已经存在时 我单击通知 活动进入前台 但是该
  • 在 Google Sheets 自定义函数中抛出自定义异常和错误消息?

    In 谷歌表格 与Excel等 如果用户在公式中输入错误的输入 错误代码将打印在有问题的单元格中 并且一个小弹出窗口提供有关错误的更多详细信息 所以如果我输入 SQRT 1 NUM 打印在单元格中 并且弹出窗口解释该值需要等于或大于 0 如
  • 使用 RestKit 进行外键关系映射

    我对 RestKit 完全陌生 并且有些挣扎 JSON teams id 1 name Team A id 2 name Team B users id 1 name cameron teamId 1 id 2 name
  • 如何在jq中添加索引

    我想使用 jq 映射我的输入 a b 输出 name a index 0 name b index 1 我已经到达 0 as i def incr i i 1 name index incr 其输出 name a index 1 name
  • 如何解决错误 LNK2019

    我正在用 C 发送一封简单的电子邮件 我从下面的链接下载了一个示例 C 程序 http cboard cprogramming com cplusplus programming 125655 sending simple email cp
  • 如何以编程方式在另一个 shapeDrawable 内绘制较小的 ShapeDrawable

    我试图在另一个圆圈内画一个较小的圆圈 这看起来很简单 但我遇到了麻烦并且找不到答案 我使用的代码是 ShapeDrawable biggerCircle new ShapeDrawable new OvalShape biggerCircl
  • iPhone:绘制一条曲线直到它变成一个圆形动画

    我希望画一条曲线 直到它旋转一周并连接成一个完整的圆 只是圆的轮廓 没有填充 这必须在几秒钟内进行动画处理 有人能指出我正确的方向吗 我已经问过一个类似的问题但我的措辞不正确 所以每个人都很难理解我的意思 因此它迷失在问题的海洋中 非常感谢
  • 在 spring 中销毁另一个用户的会话

    在我的应用程序中 我有一个可以删除用户的管理员 因此 当我从管理会话中删除用户时 我希望删除的用户应该自动注销 我知道我删除的用户的会话 ID 但我不知道如何使用会话 ID 使会话无效 我想要类似的东西 invalidate Session
  • ASP.Net MVC 中的 PageMethods

    我发现 ASP Net PageMethods 非常方便且易于使用 但我刚刚开始使用 MVC 进行开发 不确定如何使用它们 相当于什么PageMethods MyFunction 在 MVC 中 MyFunction 是控制器操作 我知道我
  • VB6:跨所有用户会话的单实例应用程序

    我有一个应用程序需要成为 Windows PC 上所有用户会话的单实例应用程序 到目前为止 我的研究主要集中在使用互斥锁来完成此任务 但我遇到了一个问题 我不确定这是否真的是一个问题 我相信这确实是一个最佳实践问题 首先是代码 Privat
  • javascript 如何创建引用

    您能否提出任何解决方法来使用闭包或任何其他技巧来实现对变量的引用 createReference function TODO how to implement var x 5 var refX createReference x could
  • 如何将 Bootstrap 4 导航栏中的品牌徽标设置到左边缘?

    我有一个徽标 如下所示
  • RabbitMQ 使用自定义标头来存储消息参数

    我是 RabbitMQ 的新手 我对文档有些迷失 目前 作为一个例子 我正在尝试构建一个侦听队列的小型邮件服务 但我有点卡在应该将服务的参数放在哪里 目的地 主题 我应该将它们放在消息中的某种编码格式 json 中 还是应该使用标头结构 如
  • 单击地图注释时显示另一个视图

    我有一张只有一个注释的地图 我创建了一个简单的类 我希望它在用户单击注释时显示 问题是 当我单击注释时什么也没有发生 这是我的代码 void reverseGeocoder MKReverseGeocoder geocoder didFin
  • python中的子句提取/长句分割

    我目前正在开展一个涉及句子向量的项目 来自 RoBERTa 预训练模型 当句子很长时 这些向量的质量较低 并且我的语料库包含许多带有子句的长句子 我一直在寻找子句提取 长句分割的方法 但令我惊讶的是 没有一个主要的 NLP 软件包 例如 s