python - 在 Spacy 中向标记器添加一些自定义单词

标签 python tokenize spacy

我有一个句子,希望看到如下预期的标记。

Sentence: "[x] works for [y] in [z]."
Tokens: ["[", "x", "]", "works", "for", "[", "y", "]", "in", "[", "z", "]", "."]
Expected: ["[x]", "works", "for", "[y]", "in", "[z]", "."]

如何通过自定义分词器函数来做到这一点?

最佳答案

您可以从标记器前缀和后缀中删除 [],以便括号不会与相邻标记分开:

import spacy
nlp = spacy.load('en_core_web_sm')

prefixes = list(nlp.Defaults.prefixes)
prefixes.remove('\\[')
prefix_regex = spacy.util.compile_prefix_regex(prefixes)
nlp.tokenizer.prefix_search = prefix_regex.search

suffixes = list(nlp.Defaults.suffixes)
suffixes.remove('\\]')
suffix_regex = spacy.util.compile_suffix_regex(suffixes)
nlp.tokenizer.suffix_search = suffix_regex.search

doc = nlp("[x] works for [y] in [z].")
print([t.text for t in doc])
# ['[x]', 'works', 'for', '[y]', 'in', '[z]', '.']

相关文档在这里:

https://spacy.io/usage/linguistic-features#native-tokenizer-additions

关于python - 在 Spacy 中向标记器添加一些自定义单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686259/

相关文章:

python - 是否可以找到 spaCy POS 标签的不确定性?

nlp - Spacy 手动下载 en_core_web_lg

python - 训练自己的模型并使用 spacy 添加新实体

Python UTF-8 转换

python - 如何在pygame中加载和播放视频

python - BeautifulSoup,请求 - 以下代码有什么区别?

C Tokenizer - 它是如何工作的?

python - Word2Vec 词汇结果仅包含字母和符号

python - 在 [Errno 32] Broken pipe 的情况下,Python 3.2 抛出什么样的异常

elasticsearch - 分词器与分词过滤器