代码之家  ›  专栏  ›  技术社区  ›  Hadi Monzer

代币中的“i”是什么。i+1`是指使用spacy语言返回的标记时?

  •  -1
  • Hadi Monzer  · 技术社区  · 2 年前
    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 未在函数中定义,既不是索引,也不是简单变量。

    2 回复  |  直到 2 年前
        1
  •  2
  •   Hadi Hajihosseini    2 年前

    i 不是一个单独的变量。这是人类的一种属性 token .请注意,事实并非如此 i+1 但事实并非如此 token.i + 1 . 是从 代币 对象首先,python获得 从…起 代币 然后它会增加1。

    考虑下面的例子:

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

    如果你有任何问题,请提问。

        2
  •  2
  •   Glycerine    2 年前

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

    在本节中:

    for token in doc[:-1]:
        if token.text == ';':
            doc[token.i+1].is_sent_start = True
    
    • 迭代文档的“标记”: https://spacy.io/api/token 除了最后一个( :-1 )
    • 如果标记的文本是分号,则使用当前标记的索引 token.i+1 并将属性“is_sent_start”设置为 True . 从文件中:

      i :父文档中标记的索引