如何在 spacy before/after 标记器中强制使用 pos 标记?
How to force a pos tag in spacy before/after tagger?
如果我处理句子
'Return target card to your hand'
使用 spacy 和 en_web_core_lg 模型,它识别如下标记:
Return NOUN target NOUN card NOUN to ADP your ADJ hand NOUN
如何强制将'Return'标记为动词?以及如何在解析器之前完成,以便解析器可以更好地解释之间的关系代币?
在其他情况下这会很有用。我正在处理包含特定符号的文本,例如 {G}
。这三个字符作为一个整体应该被认为是一个名词,{T}
应该是一个动词。但是现在我不知道如何在不开发新的标记化和标记模型的情况下实现这一目标。如果我可以 "force" 一个标记,我可以将这些符号替换为将被识别为一个标记的东西,并强制对其进行适当标记。例如,我可以用 SYMBOLG 替换 {G} 并强制将 SYMBOLG 标记为 NOUN。
编辑: 该解决方案使用了 spaCy 2.0.12 (IIRC)。
要回答问题的第二部分,您可以向标记器添加特殊的标记化规则,如文档 here 中所述。假设这些符号是明确的,下面的代码应该做你想做的事:
import spacy
from spacy.symbols import ORTH, POS, NOUN, VERB
nlp = spacy.load('en')
nlp.tokenizer.add_special_case('{G}', [{ORTH: '{G}', POS: NOUN}])
nlp.tokenizer.add_special_case('{T}', [{ORTH: '{T}', POS: VERB}])
doc = nlp('This {G} a noun and this is a {T}')
for token in doc:
print('{:10}{:10}'.format(token.text, token.pos_))
此输出是(标签不正确,但这表明已应用特殊情况规则):
This DET
{G} NOUN
a DET
noun NOUN
and CCONJ
this DET
is VERB
a DET
{T} VERB
至于你问题的第一部分,将词性分配给单个单词的问题在于它们在上下文之外大多是模棱两可的(例如“return”名词或动词?) .因此,上述方法不允许您考虑在上下文中使用,并且可能会产生错误。然而,spaCy 确实允许您执行 token-based pattern matching,因此值得一看。也许有一种方法可以满足您的需求。
如果我处理句子
'Return target card to your hand'
使用 spacy 和 en_web_core_lg 模型,它识别如下标记:
Return NOUN target NOUN card NOUN to ADP your ADJ hand NOUN
如何强制将'Return'标记为动词?以及如何在解析器之前完成,以便解析器可以更好地解释之间的关系代币?
在其他情况下这会很有用。我正在处理包含特定符号的文本,例如 {G}
。这三个字符作为一个整体应该被认为是一个名词,{T}
应该是一个动词。但是现在我不知道如何在不开发新的标记化和标记模型的情况下实现这一目标。如果我可以 "force" 一个标记,我可以将这些符号替换为将被识别为一个标记的东西,并强制对其进行适当标记。例如,我可以用 SYMBOLG 替换 {G} 并强制将 SYMBOLG 标记为 NOUN。
编辑: 该解决方案使用了 spaCy 2.0.12 (IIRC)。
要回答问题的第二部分,您可以向标记器添加特殊的标记化规则,如文档 here 中所述。假设这些符号是明确的,下面的代码应该做你想做的事:
import spacy
from spacy.symbols import ORTH, POS, NOUN, VERB
nlp = spacy.load('en')
nlp.tokenizer.add_special_case('{G}', [{ORTH: '{G}', POS: NOUN}])
nlp.tokenizer.add_special_case('{T}', [{ORTH: '{T}', POS: VERB}])
doc = nlp('This {G} a noun and this is a {T}')
for token in doc:
print('{:10}{:10}'.format(token.text, token.pos_))
此输出是(标签不正确,但这表明已应用特殊情况规则):
This DET
{G} NOUN
a DET
noun NOUN
and CCONJ
this DET
is VERB
a DET
{T} VERB
至于你问题的第一部分,将词性分配给单个单词的问题在于它们在上下文之外大多是模棱两可的(例如“return”名词或动词?) .因此,上述方法不允许您考虑在上下文中使用,并且可能会产生错误。然而,spaCy 确实允许您执行 token-based pattern matching,因此值得一看。也许有一种方法可以满足您的需求。