是否可以更改 Spacy 分词器的分词规则?

2023-11-22

默认情况下,(德语)spacy 分词器不会按斜杠、下划线或星号进行拆分,这正是我所需要的(因此“der/die”会生成单个标记)。

然而,它确实在括号上拆分,因此“dies(und)das”被拆分为 5 个标记。有没有一种(简单)方法告诉默认标记器也不在括号上拆分,括号两边都由字母括起来,没有空格?

为标记生成器定义的括号上的分割到底是如何定义的?


括号上的分割在此行中定义,它在两个字母之间的括号上分割:

https://github.com/explosion/spaCy/blob/23ec07debdd568f09c7c83b10564850f9fa67ad4/spacy/lang/de/punctuation.py#L18

没有简单的方法可以删除中缀模式,但您可以定义一个自定义分词器来执行您想要的操作。一种方法是复制中缀定义spacy/lang/de/punctuation.py并修改它:

import re
import spacy
from spacy.tokenizer import Tokenizer
from spacy.lang.char_classes import ALPHA, ALPHA_LOWER, ALPHA_UPPER, CONCAT_QUOTES, LIST_ELLIPSES, LIST_ICONS
from spacy.lang.de.punctuation import _quotes
from spacy.util import compile_prefix_regex, compile_infix_regex, compile_suffix_regex

def custom_tokenizer(nlp):
    infixes = (
        LIST_ELLIPSES
        + LIST_ICONS
        + [
            r"(?<=[{al}])\.(?=[{au}])".format(al=ALPHA_LOWER, au=ALPHA_UPPER),
            r"(?<=[{a}])[,!?](?=[{a}])".format(a=ALPHA),
            r'(?<=[{a}])[:<>=](?=[{a}])'.format(a=ALPHA),
            r"(?<=[{a}]),(?=[{a}])".format(a=ALPHA),
            r"(?<=[{a}])([{q}\]\[])(?=[{a}])".format(a=ALPHA, q=_quotes),
            r"(?<=[{a}])--(?=[{a}])".format(a=ALPHA),
            r"(?<=[0-9])-(?=[0-9])",
        ]
    )

    infix_re = compile_infix_regex(infixes)

    return Tokenizer(nlp.vocab, prefix_search=nlp.tokenizer.prefix_search,
                                suffix_search=nlp.tokenizer.suffix_search,
                                infix_finditer=infix_re.finditer,
                                token_match=nlp.tokenizer.token_match,
                                rules=nlp.Defaults.tokenizer_exceptions)


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

是否可以更改 Spacy 分词器的分词规则? 的相关文章

  • 从正在运行的 python 脚本检测优化标志是否为 -O 或 -OO

    有时我想生成一个子进程 其优化标志与启动父进程时使用的优 化标志相同 我可以使用类似的东西 optimize not debug 但这样我就可以匹配两者 O and OO flags 是否有一些 python 内部状态包含该信息 经过一番深
  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • 可以在 TensorFlow 中使用排名相关作为成本函数吗?

    我正在处理偶尔充满异常值的极其嘈杂的数据 因此我主要依靠相关性来衡量我的神经网络的准确性 是否可以明确使用诸如等级相关性 斯皮尔曼相关系数 之类的东西作为我的成本函数 到目前为止 我主要依赖 MSE 作为相关性的代理 我现在面临三个主要障碍
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 错误:permission_manager_qt.cpp(82) 不支持的权限类型:13

    我正在开发具有内置浏览器功能的 python 代码 PyQt 5 13 import sys from PyQt5 QtCore import from PyQt5 QtGui import from PyQt5 QtWidgets imp
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 将 Pandas 列中的列表拆分为单独的列

    这是我在 pandas 数据框中的 特征 列 Feature Cricket 82379 Kabaddi 255 Reality 4751 Cricket 15640 Wildlife 730 LiveTV 13 Football 4129
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • 为什么实现 __iter__ 的对象不被识别为可迭代的?

    假设您使用包装对象 class IterOrNotIter def init self self f open tmp toto txt def getattr self item try return self getattribute
  • Python - 如何查询定义方法的类?

    我的问题有点类似于this one https stackoverflow com questions 5520580 how do you get all classes defined in a module but not impor
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如
  • 来自 django 教程 was_published_recently.admin_order_field = 'pub_date'

    From Django 教程 https www jetbrains com help pycharm 2017 1 creating and running your first django project html d28041e21

随机推荐

  • Sublime 2 - 根据文件类型更改背景颜色?

    使用现有的 Sublime 2 配色方案 有没有办法有选择地调整背景颜色 例如 仅限 js 文件 非常感谢 你必须修改你的 tmTheme配色方案plist 你可以通过菜单找到它Preferences Browse Packages Col
  • 如何获取 Windows 会话列表?

    我正在尝试找到一种方法来获取 Windows 会话列表 我需要与 用户 选项卡上的 任务管理器 中显示的信息相同的信息 我需要知道用户是否处于活动状态以及她 他是否已登录远程桌面会话 知道如何使用 C Windows XP Pro 做到这一
  • 如何旋转二维数组?

    灵感来自雷蒙德 陈的帖子 假设您有一个 4x4 二维数组 请编写一个将其旋转 90 度的函数 雷蒙德链接到伪代码中的解决方案 但我想看看一些现实世界的东西 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 Becomes 3
  • 在 python 中使用 AWS Lambda 将 Post 请求发送到外部 API

    我想向外部 API 发送发布请求 https example com api jobs test 每隔一小时 我使用的Lambda函数如下 Handler index lambda handler python 3 6 index py i
  • 找不到变量:导航

    我正在尝试在两个屏幕之间导航react navigation 我能够访问navigate在 的里面render方法 因为它的范围也在该方法内部 我应该在哪里声明 以便我可以通过此方法访问它component 我正在尝试访问navigate在
  • 如何将基于 SWF 的自定义音频播放器嵌入到 Facebook 墙帖中?

    我们有一个基于 SWF 的音频播放器 我们希望能够将此播放器嵌入到 Facebook 帖子墙中 就像将 Youtube 视频或 BandPage 歌曲嵌入到 Facebook 动态墙中一样 现在 单击我们提供的图像会重定向到播放器 而不是内
  • OAuth 2 身份验证中 grant_type 参数的用途是什么

    我在 Lumen 微框架中使用 OAuth 2 身份验证 现在我正在使用grant type值为password 它抛出unsupported grant type 如果我使用不同的东西 我想知道使用的目的grant type is pas
  • Python反向跨步切片

    我的问题的一个具体例子是 在这个例子中我怎样才能得到 3210 gt gt gt foo 0123456 gt gt gt foo 0 4 0123 gt gt gt foo 1 6543210 gt gt gt foo 4 0 1 I w
  • 如果我 Thread.Sleep() 真的很忙吗?

    我的问题对定义有点挑剔 下面的代码可以用 忙等待 来形容吗 尽管它使用 Thread Sleep 来允许上下文切换 while true if work is ready doWork Thread Sleep A FEW MILLISEC
  • Python,使用多处理比不使用慢

    在花了很多时间尝试了解多处理之后 我想出了这段代码 这是一个基准测试 示例1 from multiprocessing import Process class Alter Process def init self word Proces
  • 为什么控制台输出这么慢?

    因此 我在 Windows XP Vista 和 7 上使用几种不同语言时注意到了这一点 如果每秒将几千行转储到控制台窗口 通常会对系统性能产生负面影响 计算机速度很快 而且总是更快 而控制台看起来只是背景上的一些文本 瓶颈在哪里 prin
  • 在eclipse中传递JUnit命令行参数

    最近在eclipse中使用junit 还在学习中 我知道如何在 Eclipse 中传递命令行参数 但是如何将它们传递给 Junit 中的测试用例 另外我如何访问它们 You cannot将命令行参数传递给 JUnit 测试 因为没有运行 m
  • 查询性能计数器状态?

    我读过一些关于 QPC 实现的问题和不准确性的文章 但所有这些讨论和文章似乎都已经过时了 有人知道最新 Win7 操作系统和 Intel AMD cpu 上 QPC 功能的当前状态吗 有什么改进吗 是例如涡轮增压仍然是一个大问题 我主要对此
  • 巨大的 XML 文件到文本文件

    我有一个巨大的 XML 文件 15 GB 我想将 XML 文件中的 文本 标签转换为单个页面 XML 文件示例
  • 在 Delphi 中开发具有管理员权限的应用程序

    我在Windows 7下使用D2010编写一个似乎需要管理员权限的应用程序 我认为是因为它使用COM与第三方 exe进行通信 这也需要管理员权限 我已根据需要添加了清单资源 但是当我尝试从 IDE 调试应用程序时 它会报告 无法创建进程 请
  • 缺少必需参数:redirect_uri 和 Passport-google-oauth

    Using passport google oauth 0 2 0 在我的 MEAN Stack 应用程序中 在这里找到 https github com jaredhanson passport google oauth 当我运行应用程序
  • 套接字编程的替代方案是什么?

    我正在浏览编程疑难解答 我想知道套接字编程的替代方案是什么 如果有的话 假设您可以控制所使用的协议 您可以选择更高级别的抽象 例如 NET 的 Remoting 或 WCF
  • 获取主窗口的位置/宽度/高度[重复]

    这个问题在这里已经有答案了 我想知道获取有关主窗口当前位置和宽度 高度信息的最佳方法 我想在主窗口内保留一个子窗口 因此我想在子窗口的移动功能期间检查 MainWindows 边框的坐标 我只能找到 Window LocationChang
  • 当页面完全呈现时,如何执行 JavaScript 函数?

    当页面完全呈现 显示 时 您将如何执行 JavaScript 函数我知道onLoad事件在页面加载时但在渲染之前执行 我之前已经通过使用间隔为 0 的超时来解决这个问题 这似乎通常有效 但对于我敏感的情感来说似乎有点不优雅 有没有正确的方法
  • 是否可以更改 Spacy 分词器的分词规则?

    默认情况下 德语 spacy 分词器不会按斜杠 下划线或星号进行拆分 这正是我所需要的 因此 der die 会生成单个标记 然而 它确实在括号上拆分 因此 dies und das 被拆分为 5 个标记 有没有一种 简单 方法告诉默认标记