我正在使用SpaCy预处理一些数据。但是,我仍然坚持如何修改spacy.tokens.doc.Doc
类的内容。
例如,在这里:
npc = spacy.load("pt")
def pre_process_text(doc) -> str:
new_content = ""
current_tkn = doc[0]
for idx, next_tkn in enumerate(doc[1:], start=0):
# Pre-process data
# new_content -> currently, it is the way I'm generating
# the new content, concatenating the modified tokens
return new_content
nlp.add_pipe(pre_process_text, last=True)
在上述代码内的注释部分,有些标记我想从doc
参数中删除,或者我想更改其标记文本内容。换句话说,我可以通过(1)完全删除令牌或(2)更改令牌内容来修改spacy.tokens.doc.Doc
的内容。
是否有一种方法可以使用已修改的令牌创建另一个spacy.tokens.doc.Doc
,但又将Vocab
与npc = spacy.load("pt")
隔离。
当前,我通过返回字符串来生成新内容,但是有没有办法返回修改后的文档?
答案 0 :(得分:0)
spaCy resolve(route: ActivatedRouteSnapshot): Promise<any> {
const promise = new Promise((resolve, reject) => {
if (route) {
console.log(route.params);
console.log(route.queryParams);
}
}
return promise;
}
的核心原则之一是should always represent the original input:
spaCy的标记化是非破坏性的,因此它始终代表原始输入文本,并且从不添加或删除任何内容。这是
Doc
对象的核心原理:您应该始终能够重建和再现原始输入文本。虽然您可以 解决此问题,但通常有更好的方法可以实现相同的目的而又不会破坏输入文本↔
Doc
的文本一致性。
我已经概述了一些在不破坏my comment here中原始输入的情况下排除令牌的方法。
或者,如果您确实要修改Doc
,则组件可以create a new Doc
object并返回它。 Doc
对象包含一个词汇表(例如原始文档的词汇表),字符串Doc
列表和words
的可选列表,布尔值列表,指示该位置的标记是否为后面是否有空格。
spaces
请注意,您可能要先在管道中先添加此组件,然后再运行其他组件。否则,您将失去先前组件分配的任何语言功能(例如词性标签,依赖项等)。