gpt4 book ai didi

python - 我如何使用 NLTK 的默认分词器来获取跨度而不是字符串?

转载 作者:太空狗 更新时间:2023-10-29 17:48:31 29 4
gpt4 key购买 nike

NLTK 的默认分词器 nltk.word_tokenizer 链接两个分词器,一个句子分词器,然后是一个对句子进行操作的单词分词器。它开箱即用,效果非常好。

>>> nltk.word_tokenize("(Dr. Edwards is my friend.)")
['(', 'Dr.', 'Edwards', 'is', 'my', 'friend', '.', ')']

我想使用相同的算法,只是让它返回原始字符串中的偏移量元组而不是字符串标记。

我所说的偏移量是指可以作为原始字符串索引的 2-ples。例如这里我有

>>> s = "(Dr. Edwards is my friend.)"
>>> s.token_spans()
[(0,1), (1,4), (5,12), (13,15), (16,18), (19,25), (25,26), (26,27)]

因为 s[0:1] 是“(”,s[1:4] 是“Dr.”等等。

是否有单个 NLTK 调用可以执行此操作,还是我必须编写自己的偏移算法?

最佳答案

是的,nltk 中的大多数 Tokenizer 都有一个名为 span_tokenize 的方法,但不幸的是,您使用的 Tokenizer 没有。

默认情况下 word_tokenize 函数 uses a TreebankWordTokenizer . TreebankWordTokenizer 实现具有相当强大的 implementation但目前它缺少一个重要方法 span_tokenize 的实现。

我没有看到 TreebankWordTokenizerspan_tokenize 实现,所以我相信您需要自己实现。子类化 TokenizerI可以使这个过程稍微不那么复杂。

您可能会发现 PunktWordTokenizerspan_tokenize 方法可用作 starting point .

希望这些信息对您有所帮助。

关于python - 我如何使用 NLTK 的默认分词器来获取跨度而不是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678318/

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