Spacy:创建空的或错误的Token实例?

问题描述 投票:0回答:2

我正在字典中收集一些标记以供进一步使用。 问题是我需要一个令牌来扮演 None/NIL 的角色,以防我在文档中找不到我需要的东西来充当无值情况,即仍然具有所有属性(字符串值可以是一些特殊的字符)...即充当令牌,但不是来自文档的令牌。

有没有办法创建这样的Token?或者可以复制一些但修改 .dep_, .pos_ 等。

python token spacy
2个回答
1
投票

一种方法是创建一个仅包含一个字符(例如空格或 * 或您选择的任何其他字符)的文档,即 nlp(''),并在索引 0 处获取标记。例如,如果您的特殊字符是 #,这看起来像:

empty_token = nlp('#')[0]

empty_token
是一个普通令牌,因此它具有所有属性。运行下面的代码会产生相应的输出:

print('text:', empty_token.text)
print('pos:', empty_token.pos_)
print('dep:', empty_token.dep_)

输出:

text: #
pos: SYM
dep: ROOT

0
投票

我在创建一个空令牌时遇到了同样的问题,没有附加信息(没有文本,没有子项,没有依赖项等),但稍后由 spacy 模块调用,以避免在迭代多个令牌时代码崩溃,如果其中一次迭代未找到令牌。

我通过从给定文本创建索引为-1的令牌实例解决了这个问题:

    text = "This is a very simple text."
    doc = nlp(text)
    empty_token = spacy.tokens.token.Token(nlp.vocab, doc, -1)
    assert empty_token.text == ''
    assert [t for t in empty_token.children] == []

empty_token
是一个普通的 token,它具有所有属性,但设置为空值。运行以下代码会产生空输出:

print('text:', empty_token.text)
print('pos:', empty_token.pos_)
print('dep:', empty_token.dep_)

# Output
# text:
# pos:
# dep:
© www.soinside.com 2019 - 2024. All rights reserved.