可以向spacy标记程序添加自定义异常。这些异常工作正常。 但是,据我所知,可以仅将字符串用作匹配这些异常的键。这样做是这样的:
57208090
#scheduledJob
✓ should schedule job
#run
run called
✓ should run server
2 passing (12ms)
----------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------------|----------|----------|----------|----------|-------------------|
All files | 100 | 100 | 100 | 100 | |
server.js | 100 | 100 | 100 | 100 | |
server.test.js | 100 | 100 | 100 | 100 | |
----------------|----------|----------|----------|----------|-------------------|
是否可以添加正则表达式键的例外,例如匹配电话号码?
类似的东西(以粗体突出显示):
import spacy
from spacy.tokens import Doc, Span, Token
from spacy.util import update_exc
from spacy.lang.tokenizer_exceptions import BASE_EXCEPTIONS
from spacy.symbols import ORTH, NORM, LEMMA, POS, TAG
CUSTOM_EXCEPTIONS = {
# prevent '3g' to be splitted into ['3', 'g']
"3g": [{ORTH: "3g", LEMMA: "3g"}],
}
spacy.lang.tokenizer_exceptions.BASE_EXCEPTIONS = update_exc(BASE_EXCEPTIONS, CUSTOM_EXCEPTIONS)
CUSTOM_EXCEPTIONS = {
# prevent '3g' to be splitted into ['3', 'g']
"3g": [{ORTH: "3g", LEMMA: "3g"}],
r'([\(]?\+[\(]?\d{2}[\)]?[ ]?\d{2} \d{2} \d{2} \d{2})': [{LEMMA: match_result} for match_result in match_results]
我发现的唯一线索是: https://github.com/explosion/spaCy/issues/840
在tokenizer_exceptions.py的修订版中,有一些方法可以使用正则表达式作为令牌生成器异常的键(但是,我还没有找到这样做的示例)
但是在当前的修订中,至少初步分析还没有显示出执行s
的任何方法。那么有没有办法解决这个任务?
(输入:正则表达式是例外的键,输出-包含空格的电话号码)
答案 0 :(得分:0)
否,没有办法使用正则表达式作为令牌生成器异常。标记生成器仅在字符串完全匹配时才查找异常,这主要是出于速度方面的考虑。这种示例的另一个困难是令牌生成器异常当前不能包含空格。 (计划在将来的spacy版本中支持空间,但不支持正则表达式,因为它仍然太慢。)
我认为最好的方法是在管道的开头添加一个自定义管道组件,该组件使用重新令牌化器https://spacy.io/api/doc#retokenize来重新令牌化文档。重新令牌化时,您可以提供任何必要的属性(例如引理)。