如果我处理这句话
'将目标卡返回您的手上'
使用 spacy 和 en_web_core_lg 模型,它识别令牌如下:
将 NOUN 目标 NOUN 卡 NOUN 返回到 ADP 您的 ADJ 手 NOUN
如何强制将“返回”标记为动词?以及如何在解析器之前进行,以便解析器可以更好地解释令牌之间的关系?
在其他情况下这会很有用。我正在处理包含特定符号的文本,例如{G}. 这三个字符应该被视为一个名词,作为一个整体,并且{T}应该是一个动词。但是现在我不知道如何实现这一点,如果不开发用于标记和标记的新模型。如果我可以“强制”一个标记,我可以将这些符号替换为可以被识别为一个标记的东西,并强制它被适当地标记。例如,我可以用 SYMBOLG 替换 {G} 并强制将 SYMBOLG 标记为 NOUN。
编辑:此解决方案使用了 spaCy 2.0.12 (IIRC)。
为了回答你问题的第二部分,你可以添加特殊断词规则的tokeniser,如在文档中阐明这里。假设这些符号是明确的,以下代码应该可以满足您的需求:
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_))
Run Code Online (Sandbox Code Playgroud)
输出为(标签不正确,但这表明已应用特殊情况规则):
This DET
{G} NOUN
a DET
noun NOUN
and CCONJ
this DET
is VERB
a DET
{T} VERB
Run Code Online (Sandbox Code Playgroud)
至于您问题的第一部分,将词性分配给单个单词的问题在于,它们大多在上下文之外是模棱两可的(例如“返回”名词或动词?)。所以上面的方法不会让你考虑上下文中的使用,并且很可能会产生错误。但是,spaCy 确实允许您进行基于令牌的模式匹配,因此值得一看。也许有一种方法可以做你想做的事。
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |