您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

可以在管道处理期间从spaCy文档中删除令牌吗?

可以在管道处理期间从spaCy文档中删除令牌吗?

spaCy的标记化 ,因此它始终代表原始输入文本,并且从不添加删除任何内容。这是Doc对象的一种核心原理:您应该 始终 能够重建和再现原始输入文本。

尽管 可以 解决此问题,但通常有更好的方法可以实现相同的目的而不破坏输入文本?Doc文本一致性。一种解决方案是根据您要使用的任何目标,向令牌添加自定义扩展属性,例如is_excluded

from spacy.tokens import Token

def get_is_excluded(token):
    # Getter function to determine the value of token._.is_excluded
    return token.text in ['some', 'excluded', 'words']

Token.set_extension('is_excluded', getter=get_is_excluded)

处理时Doc,您现在可以对其进行过滤,以仅获取未排除的令牌:

doc = nlp("Test that tokens are excluded")
print([token.text for token if not token._.is_excluded])
# ['Test', 'that', 'tokens', 'are']

您还可以使用MatcherPhraseMatcher在上下文中找到标记序列并将其标记为已排除,从而使其更加复杂。

另外,出于完整性考虑:如果您确实想更改中的令牌Doc,则可以通过构造一个新的Doc对象来实现此目的,words该对象具有(字符串列表)和可选spaces(布尔值列表,指示令牌后跟空格还是空格)不)。要构造Doc具有词性标签或依赖项标签Doc.from_array之类的属性的,您可以调用具有要设置的属性和值(所有ID)的numpy数组的方法

其他 2022/1/1 18:49:25 有549人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶