使用 python 和 spacy(德语)分析数学任务,包括数学表达式:是否可以标记这些数学表达式?例如使用 {}:
Two cyclists {A} and {B}, {120 miles} apart, approach each other, each pedaling at {10 mph}.
现在(没有 {})A 和 B 有不同的标签(德语:NOUN 和 X)。
是的,绝对有可能做到这一点。首先,您应该定义一个新的 'math' 属性,表明该标记与数学有关。
之后,您向 spacy 管道添加一个新组件,该组件应实现以下 2 个:
以下代码应该可以解决您的问题:
import spacy
from spacy.tokens import Token
Token.set_extension('math', default=False)
nlp = spacy.load('en')
def math_expressions(doc):
flag_start = False
to_merge = []
for index, token in enumerate(doc):
if (token.text == "{"):
start = index
flag_start = True
if (flag_start and token.text == "}"):
flag_start = False
to_merge.append(doc[start:index+1])
for span in to_merge:
token = span.merge()
token._.set('math', True)
return doc
nlp.add_pipe(math_expressions, after='ner')
doc = nlp('Two cyclists {A} and {B}, {120 miles} apart, approach each other, each pedaling at {10 mph}.')
for token in doc:
if (token._.math):
print(token)
希望能帮助到你!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句