当使用 spacy 的语言返回的标记时,`token.i+1` 中的 `i` 是什么意思?

What does `i` in `token.i+1` mean when using a token returned by spacy's Language?

from spacy.language import Language

@Language.component("CustomB")
def set_custom_boundaries(doc):
    for token in doc[:-1]:
        if token.text == ';':
            doc[token.i+1].is_sent_start = True
    return doc
nlp.add_pipe("CustomB",before="parser")

我只需要知道 i+1 在这段代码中做了什么:

doc[token.i+1]

知道函数中没有定义i,既不是索引也不是简单变量

i 不是单独的变量。它是 token 的一个属性。请注意,它不是 i+1,而是 token.i + 1i 来自 token 对象。首先 python 从 token 获取 i 的值,然后将其加一。

考虑以下示例:

class X:
    i = 10

token = X()

print(token.i+1) # it is in fact (token.i) + 1 so result is: 11

如有任何问题请提问

该函数接受 Doc 类型:https://spacy.io/api/doc/#init

本节内容:

for token in doc[:-1]:
    if token.text == ';':
        doc[token.i+1].is_sent_start = True
  • 迭代文档的 'tokens':https://spacy.io/api/token 除了最后一个 (:-1)
  • 如果令牌的文本是semi-colon,获取当前令牌的索引token.i+1并将属性“is_sent_start”设置为True。 来自文档:

    i: The index of the token within the parent document