使用 Spacy 拆分单词内的多个标点符号

问题描述 投票:0回答:1

如何修改 Spacy English 分词器,以便它能够分割并分开特定的标点符号对:

import spacy
nlp = spacy.load('en_core_web_md')
doc = nlp("running.(together")
# desired outcome
assert( [t.text for t in doc] == ["running", ".", "(", "together"])

目前得到的,只是一个token,

"running.(together"

通过修改,我的意思是:执行所有当前的英语标记化,但也拆分此连续案例。

python spacy tokenize
1个回答
1
投票

就我个人而言,我会通过创建自定义标记器来解决这个问题。这是根据您共享的测试用例的代码。

import re
import spacy
from spacy.tokenizer import Tokenizer

infix_re = re.compile(r'''[(.]''') # it would split either on ( or .

def custom_tokenizer(nlp):
    return Tokenizer(nlp.vocab, infix_finditer=infix_re.finditer)

nlp = spacy.load("en_core_web_md")
nlp.tokenizer = custom_tokenizer(nlp)
doc = nlp("running.(together")

assert( [t.text for t in doc] == ["running", ".", "(", "together"]) # passes

更新 是的,它将保留默认标记生成器以及您的连续案例的功能。

如果您想了解更多信息,请查看官方文档

© www.soinside.com 2019 - 2024. All rights reserved.