【发布时间】:2020-06-21 15:52:33
【问题描述】:
我想使用 spacy 将 bs-it 标记为 ["bs","it"],因为我将它与 rasa 一起使用。我得到的输出是[“bs-it”]。有人可以帮我吗?
【问题讨论】:
我想使用 spacy 将 bs-it 标记为 ["bs","it"],因为我将它与 rasa 一起使用。我得到的输出是[“bs-it”]。有人可以帮我吗?
【问题讨论】:
您可以向 spaCy 的分词器添加自定义规则。 spaCy 的分词器将连字符的单词视为单个token。为了改变这一点,您可以添加自定义标记化规则。在您的情况下,您想要标记 infix,即出现在两个单词之间的东西,这些通常是连字符或下划线。
import re
import spacy
from spacy.tokenizer import Tokenizer
infix_re = re.compile(r'[-]')
def custom_tokenizer(nlp):
return Tokenizer(nlp.vocab,infix_finditer=infix_re.finditer)
nlp = spacy.load("en_core_web_sm")
nlp.tokenizer = custom_tokenizer(nlp)
doc = nlp("bs-it")
print([t.text for t in doc])
输出
['bs', '-', 'it']
【讨论】: