Spacy - 标记带引号的字符串

2024-03-13

我正在使用 spacy 2.0 并使用带引号的字符串作为输入。

示例字符串

"The quoted text 'AA XX' should be tokenized"

并期望提取

[The, quoted, text, 'AA XX', should, be, tokenized]

然而,我在实验时得到了一些奇怪的结果。名词 chunks 和 ents 失去了其中一个引语。

import spacy
nlp = spacy.load('en')
s = "The quoted text 'AA XX' should be tokenized"
doc = nlp(s)
print([t for t in doc])
print([t for t in doc.noun_chunks])
print([t for t in doc.ents])

Result

[The, quoted, text, ', AA, XX, ', should, be, tokenized]
[The quoted text 'AA XX]
[AA XX']

满足我的需求的最佳方式是什么


当你could修改标记生成器并添加您自己的自定义前缀、后缀和中缀规则(排除引号),我不确定这是这里的最佳解决方案。

对于您的用例,添加一个可能更有意义成分 https://spacy.io/usage/processing-pipelines#custom-components在调用标记器、解析器和实体识别器之前,将(某些)带引号的字符串合并到一个标记中的管道。要实现此目的,您可以使用基于规则的Matcher http://spacy.io/usage/linguistic-features#rule-based-matching并找到由 包围的标记组合'。以下模式查找一个或多个字母数字字符:

pattern = [{'ORTH': "'"}, {'IS_ALPHA': True, 'OP': '+'}, {'ORTH': "'"}]

交互式匹配器演示中的模式。要进行合并,您可以设置Matcher,添加模式并编写一个函数,该函数接受Doc对象,提取匹配的跨度并通过调用它们将它们合并为一个标记.merge method.

import spacy
from spacy.matcher import Matcher

nlp = spacy.load('en')
matcher = Matcher(nlp.vocab)
matcher.add('QUOTED', None, [{'ORTH': "'"}, {'IS_ALPHA': True, 'OP': '+'}, {'ORTH': "'"}])

def quote_merger(doc):
    # this will be called on the Doc object in the pipeline
    matched_spans = []
    matches = matcher(doc)
    for match_id, start, end in matches:
        span = doc[start:end]
        matched_spans.append(span)
    for span in matched_spans:  # merge into one token after collecting all matches
        span.merge()
    return doc

nlp.add_pipe(quote_merger, first=True)  # add it right after the tokenizer
doc = nlp("The quoted text 'AA XX' should be tokenized")
print([token.text for token in doc])
# ['The', 'quoted', 'text', "'AA XX'", 'should', 'be', 'tokenized']

对于更优雅的解决方案,您还可以将组件重构为可重用类,在其中设置匹配器__init__方法 (请参阅文档 https://spacy.io/usage/processing-pipelines#custom-components举些例子)。

如果您首先在管道中添加组件,则所有其他组件(例如标记器、解析器和实体识别器)将只能看到重新标记化的组件Doc。这也是为什么您可能想要编写更具体的模式,仅合并您关心的某些带引号的字符串。在您的示例中,新的令牌边界improve预测 - 但我也可以想到许多其他情况,但它们没有,特别是如果引用的字符串更长并且包含句子的重要部分。

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

Spacy - 标记带引号的字符串 的相关文章

  • 循环列表的值[重复]

    这个问题在这里已经有答案了 我是编码新手 正在尝试编写一个简单的代码 该代码将采用一个列表 例如 1 2 3 并循环元素 n 次 所以如果n 1 我应该得到A 3 1 2 如果n 2 我应该得到A 2 3 1 我写的代码是 n 1 j 0
  • 现在与出生日期之间的年、月、日、分钟差异

    import datetime birthday datetime datetime 1996 8 15 differnce datetime datetime now birthday This returns a timedelta o
  • 如何在 Django Admin 的“更改”页面中显示内嵌上传的图像?

    我正在尝试在中显示内联上传的图像 变更列表 页面在 Django 管理中 这是我的代码如下 models py from django db import models class Product models Model name mod
  • 如何在 scikit-learn 的 SVM 中使用非整数字符串标签? Python

    Scikit learn 具有相当用户友好的用于机器学习的 python 模块 我正在尝试训练用于自然语言处理 NLP 的 SVM 标记器 其中我的标签和输入数据是单词和注释 例如 词性标记 而不是使用双精度 整数数据作为输入元组 1 2
  • 初始化 dask 分布式工作线程的状态

    我正在尝试做类似的事情 resource MyResource def fn x something dosemthing x resource return something client Client results client m
  • Python 类型提示:typing.Mapping 与typing.Dict

    我正在开发一个 python 项目 我们使用typing整个模块类型提示 看来我们用的是typing Dict and typing Mapping几乎可以互换 有理由选择其中一种而不是另一种吗 我自己设法回答了这个问题 typing Di
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • ASCII - Asciimatics - 如何在代码中实现效果/屏幕

    几篇文章之前 有人建议我研究一下 Python 的 Asciimatics 库 我正在尝试使用以下方法来解决它 样品 https github com peterbrittain asciimatics tree master sample
  • Python 3 列表列表中的列表理解以转换类型

    考虑以下列表 list1 1 1 1 2 1 3 2 1 2 2 2 3 要理解字符串列表并将其转换为浮点数 可以使用 list1 0 float i for i in list1 0 但我尝试理解浮点数列表的列表并没有完全起作用 list
  • 如何在 Detectron2 中计算并集交集?

    我正在使用 Detectron2 进行对象检测 我已经注册了 pascalvoc 数据集并训练了一个检测模型 如何计算测试数据集的平均 IOU 我知道 detector2 有一个用于计算 IOU 的预定义函数 即 detectorron2
  • 如何使用 NLP 确定句子中的中心词?

    例如 如果我得到一个句子 一名英国士兵在阿富汗战斗中丧生 这句话的中心词是 杀 给定 Python 中的 nltk 包 我怎样才能找到它 我不是在谈论词干 我指的是中心词 您正在寻找中心词句子解析 它可以在 Python 的 nltk 包中
  • 在 pywin32 中创建一个新的 Excel 文件

    我正在编写一个程序 概括来说 采用记事本文件并将其另存为 Excel 文件 现在我的程序打开一个我创建的空白 Excel 文件 只是 Book1 xls xlApp Dispatch Excel Application xlApp Visi
  • python 排列有问题

    我在排列方面遇到一些问题 当谈到Python时 我真的是一个大菜鸟 所以任何帮助将不胜感激 假设我在文本文件中有一个范围为 1 6 的列表 例如 它看起来像 1 2 3 4 5 6 我想打开所述 txt 文件并计算这 6 个数字中 N 的所
  • 占据花车的地板

    我发现了两种在 Python 中占据发言权的方法 3 1415 1 and import math math floor 3 1415 第一种方法的问题是它返回一个浮点数 即3 0 第二种方法感觉很笨拙而且太长 在 Python 中是否有替
  • Spacy 实体规则不适用于基数(社会安全号码)

    我已使用实体规则为社会保障号添加新标签 即使设置了 overwrite ents true 但它仍然无法识别 我验证了正则表达式是正确的 不知道我还需要做什么 我之前尝试过 ner 但结果相同 text My name is yuyyvb
  • Python 3 中 int() 和 Floor() 有什么区别?

    在Python 2中 floor 返回一个浮点值 虽然对我来说并不明显 但我发现了一些解释来澄清为什么它可能有用floor 返回浮点数 对于类似的情况float inf and float nan 然而 在Python 3中 floor 返
  • Seed_data.yaml 文件中有没有办法自动生成第一个模型所依赖的模型?

    我正在使用 Django 2 0 Python 3 7 和 MySql 5 我有以下两个模型 第二个依赖于第一个 class CoopType models Model name models CharField max length 20
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • Django url 模板标签添加绝对文件路径

    我遇到一个问题 我的 url django 模板标记将文件路径添加到生产中的网址 这不会在我的本地开发计算机上复制 通过 urls py 设置 url about us views about us name about us 在生产中 我
  • 创建一个简单的用户界面来访问 Oracle 数据库

    这是我所拥有的 1 给我一个简单的sql文件 它创建表并用数据填充它们 2 一个简单的 sql 文件 其中包含我编写的用于显示 操作表的 PL SQL 过程 目标是创建某种用户界面 允许学生登录 查看成绩单 退出课程等 我正在使用sqlpl
  • 网络共享文件夹上的 GIT 存储库中的并发性

    我想要一个存储在 Windows 网络共享上的裸 git 存储库 我使用linux 并使用CIFS挂载了上述网络共享 我的同事使用 Windows XP 并将网络共享自动安装 以某种方式从 ActiveDirectory 作为网络驱动器 我
  • PHP + PDO:如果参数为空则绑定 null

    我正在尝试这个 并且所有 PoST var 在用户发送之前都会被处理 无需担心 SQL 注入 stmt con gt prepare sql stmt gt bindParam 1 this gt getPes cdpessoa stmt
  • HTML2PDF 无法识别表格的大小

    我正在使用 Yii Extension 开发的网页中工作 并且使用 HTML2PDF 扩展来生成 PDF http html2pdf fr http html2pdf fr 虽然 PDF 生成得很好 但它似乎无法识别我的表格大小 我为一行或
  • FAT32 每个目录的文件数限制

    我目前正在尝试在 Xilinx Kintex 7 卡上用 C 语言编写 FAT 系统 它配备了 MicroBlaze 我已经成功创建了大部分所需的功能 我面临的问题是关于文件夹的总容量 我在网上读到 在 FAT32 中 一个文件夹应该能够包
  • 将 Resharper 测试运行器与 Jasmine 2.0 结合使用

    我正在尝试将 VS2013 中的 Resharper v8 2 测试运行程序与 Jasmine 2 一起使用 但在 beforeEach 调用 全局 时遇到问题 该规范文件有一个对 SpecHelper js 的 脚本引用 该引用调用了 b
  • 从 Kickstarter 项目中抓取文本不会返回任何结果

    我正在尝试从 Kickstarter 项目网页中抓取项目的主要文本 我有以下代码 适用于第一个 URL 但不适用于第二个和第三个 URL 我想知道是否可以轻松修复我的代码而无需使用其他软件包 url https www kickstarte
  • 数组放置新需要缓冲区中未指定的开销?

    5 3 4 expr new C 11 Feb 草案给出了示例 new 2 f T 5 结果调用operator new sizeof T 5 y 2 f 这里 x和y是非负未指定值 表示数组分配开销 的结果新表达将从返回的值中抵消此金额o
  • Flash、Flex、Adobe Air、Java FX 和 Silverlight 到底有什么用?

    Flash Flex Adobe Air Java FX 和 Silverlight 到底有什么用 为什么我会选择其中之一而不是另一个 Java Applet 和 ActiveX 控件发生了什么 哦 AJAX 在哪里适合这一切呢 拉斯洛相关
  • pylint 找不到 QWidget 和 QApplication

    import sys from PyQt5 QtWidgets import QApplication QWidget app QApplication sys argv window QWidget window setGeometry
  • 2D char Array 和 char** 之间的区别(OR、3D char Array 和 char*** 等)

    首先 我已经回顾过这些 多维数组在内存中是如何格式化的 https stackoverflow com questions 2565039 how are multi dimensional arrays formatted in memo
  • Phonegap 屏幕因 AdMob 动画而闪烁

    一位用户报告说 当 admob 广告有动画时 应用程序的 html 视图会 闪烁 这是他录制的一个小视频 http www youtube com watch v gQ7yxzpqfDA http www youtube com watch
  • 从同一类中的另一个构造函数调用构造函数

    我有一个有 2 个构造函数的类 public class Lens public Lens string parameter1 blabla public Lens string parameter1 string parameter2 w
  • 为什么Django的Meta是一个旧式类?

    我注意到在 Django 模型中 有一个class Meta这对模型做了一些额外的定义 我的问题是 为什么这是一个老式的课程 即不子类化object 这是有原因的还是这只是一种习俗 我可以在我的项目中将其作为新式课程吗 我相信没有真正的原因
  • UITableView 延迟图像加载,图像在表格停止滚动后出现

    我使用 NSUrlConnection 为 UITableView 实现了延迟图像加载 这一切都运行得非常好 当我打开桌子时 等待一秒钟 在 3G 上 我会自动获取图像 但是 当我滚动时 表格会加载新单元格 启动 NSURLConnecti
  • Neo4j - 按相关性排序

    我想按 Neo4j 中的相关性对返回的数据进行排序 就我的目的而言 相关性可以简化为 我正在搜索的单词的索引 其中索引越低 相关性越高 Example 我有这三个节点 node Label PROD properties name Bear
  • 使用 java 泛型迭代枚举值

    我试图找到一种在使用泛型时迭代枚举值的方法 不确定如何执行此操作或是否可能 下面的代码说明了我想要做的事情 注意代码T values 在以下代码中无效 public class Filter
  • Javascript:用户完成滚动后执行操作

    我正在想办法做到这一点 我有一个盒子清单 每个盒子都是关于150px高的 我正在使用 javascript 和 jquery 并希望在用户向下滚动页面后 页面将自动滚动 以便框与页面的其余部分对齐 也就是说 如果用户滚动并且 y页面位置不能
  • Spacy - 标记带引号的字符串

    我正在使用 spacy 2 0 并使用带引号的字符串作为输入 示例字符串 The quoted text AA XX should be tokenized 并期望提取 The quoted text AA XX should be tok