gpt4 book ai didi

SpaCy:从字符索引中获取 token

转载 作者:行者123 更新时间:2023-12-03 23:13:25 27 4
gpt4 key购买 nike

有没有一种简单的方法可以从字符索引中获取 token ?对于每个文档,我都有一个由字符索引(开始、结束)标识的目标词或短语。 doc.char_span()方法可以从中返回一个跨度,并且在大多数情况下都可以正常工作,但是当索引由于不匹配的标记化(即索引落在标记的中间)而没有映射到有效跨度时,就会出现问题。

显而易见的解决方案是遍历 token 以获得有效的跨度作为备份,这应该没问题,因为这种情况很少发生,但我想知道是否有更聪明的方法来解决这个问题。

最佳答案

你也可以做这样的事情,但我不确定这是否更有效:

def get_token_for_char(doc, char_idx):
for i, token in enumerate(doc):
if char_idx > token.idx:
continue
if char_idx == token.idx:
return token
if char_idx < token.idx:
return doc[i - 1]

请注意,这只是一个简单的示例,您仍然需要处理超出范围的错误以及字符索引是折叠到 Token.whitespace 中的空格的情况。在标记化期间。目前,这些情况将回退到附加空格的 token (毕竟这实际上可能不是一个糟糕的解决方案)。

为了最终的效率,您也可以考虑通过 spaCy's Cython API 直接实现上述内容。 .如果您需要对该函数进行大量调用,您还可以将字符索引及其标记索引映射存储在 dict 中,这样您只需为每个索引计算一次。

关于SpaCy:从字符索引中获取 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109468/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com