Python 仅使用“空白”规则的Spacy标记器
我想知道spacy标记器是否只能使用空格规则标记单词。 例如:Python 仅使用“空白”规则的Spacy标记器,python,python-3.x,nlp,spacy,Python,Python 3.x,Nlp,Spacy,我想知道spacy标记器是否只能使用空格规则标记单词。 例如: sentence= "(c/o Oxford University )" 通常,使用以下空间配置: nlp = spacy.load("en_core_news_sm") doc = nlp(sentence) for token in doc: print(token) 结果将是: ( c / o Oxford University ) 相反,我希望使用spacy获
sentence= "(c/o Oxford University )"
通常,使用以下空间配置:
nlp = spacy.load("en_core_news_sm")
doc = nlp(sentence)
for token in doc:
print(token)
结果将是:
(
c
/
o
Oxford
University
)
相反,我希望使用spacy获得如下输出:
(c/o
Oxford
University
)
使用spacy是否可能获得这样的结果?您可以在spacy文档中找到这个问题的解决方案:。简而言之,您创建一个函数,该函数接受字符串文本并返回一个Doc对象,然后将该可调用函数分配给nlp.tokenizer:
您可以在spaCy文档中找到这个问题的解决方案:。简而言之,您创建一个函数,该函数接受字符串文本并返回一个Doc对象,然后将该可调用函数分配给nlp.tokenizer: 让我们使用自定义的token\u match regex更改nlp.tokenizer: 您可以通过添加自定义后缀、前缀和中缀规则来进一步调整标记器 另一种更细粒度的方法是找出它的令牌为何像nlp.tokenizer.explain一样被拆分: 您会发现拆分是由于特殊规则造成的: 可以对其进行更新,以将其从以下异常中删除:
exceptions = nlp.Defaults.tokenizer_exceptions
filtered_exceptions = {k:v for k,v in exceptions.items() if k!="it's"}
nlp.tokenizer = Tokenizer(nlp.vocab, rules = filtered_exceptions)
[tok for tok in nlp(text)]
或者删除撇号上的拆分:
filtered_exceptions = {k:v for k,v in exceptions.items() if "'" not in k}
nlp.tokenizer = Tokenizer(nlp.vocab, rules = filtered_exceptions)
[tok for tok in nlp(text)]
请注意标记上附加的点,这是由于未指定后缀规则造成的。让我们使用自定义的with token\u match regex更改nlp.tokenizer:
您可以通过添加自定义后缀、前缀和中缀规则来进一步调整标记器
另一种更细粒度的方法是找出它的令牌为何像nlp.tokenizer.explain一样被拆分:
您会发现拆分是由于特殊规则造成的:
可以对其进行更新,以将其从以下异常中删除:
exceptions = nlp.Defaults.tokenizer_exceptions
filtered_exceptions = {k:v for k,v in exceptions.items() if k!="it's"}
nlp.tokenizer = Tokenizer(nlp.vocab, rules = filtered_exceptions)
[tok for tok in nlp(text)]
或者删除撇号上的拆分:
filtered_exceptions = {k:v for k,v in exceptions.items() if "'" not in k}
nlp.tokenizer = Tokenizer(nlp.vocab, rules = filtered_exceptions)
[tok for tok in nlp(text)]
请注意标记上的点,这是由于未指定后缀规则造成的。SENTURE.split,不需要空间。@DYZ不幸的是SENTURE.split不提供任何NLP信息,如nlpsentence dosentence.split,不需要空间。@DYZ不幸的是SENTURE.split不提供任何NLP信息,如nlpsentence do
[('TOKEN', 'This'),
('TOKEN', 'is'),
('SPECIAL-1', 'it'),
('SPECIAL-2', "'s"),
('SUFFIX', '.'),
('SPECIAL-1', 'I'),
('SPECIAL-2', "'m"),
('TOKEN', 'fine')]
exceptions = nlp.Defaults.tokenizer_exceptions
filtered_exceptions = {k:v for k,v in exceptions.items() if k!="it's"}
nlp.tokenizer = Tokenizer(nlp.vocab, rules = filtered_exceptions)
[tok for tok in nlp(text)]
[This, is, it's., I, 'm, fine]
filtered_exceptions = {k:v for k,v in exceptions.items() if "'" not in k}
nlp.tokenizer = Tokenizer(nlp.vocab, rules = filtered_exceptions)
[tok for tok in nlp(text)]
[This, is, it's., I'm, fine]