gpt4 book ai didi

python - nltk wordpunct_tokenize 与 word_tokenize

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

有谁知道nltkwordpunct_tokenizeword_tokenize的区别?我正在使用 nltk=3.2.4 并且 wordpunct_tokenize 的文档字符串中没有任何内容可以解释差异。我在 nltk 的文档中也找不到此信息(也许我没有在正确的地方搜索!)。我原以为第一个会去掉标点符号等,但事实并非如此。

enter image description here

最佳答案

wordpunct_tokenize 基于简单的正则表达式标记化。它被定义为

wordpunct_tokenize = WordPunctTokenizer().tokenize

你可以找到here .基本上它使用正则表达式 \w+|[^\w\s]+ 来拆分输入。

另一方面,

word_tokenize 基于 TreebankWordTokenizer,请参阅文档 here .它基本上像 Penn Treebank 中那样标记文本。这是一个愚蠢的例子,应该表明两者有何不同。

sent = "I'm a dog and it's great! You're cool and Sandy's book is big. Don't tell her, you'll regret it! 'Hey', she'll say!"
>>> word_tokenize(sent)
['I', "'m", 'a', 'dog', 'and', 'it', "'s", 'great', '!', 'You', "'re",
'cool', 'and', 'Sandy', "'s", 'book', 'is', 'big', '.', 'Do', "n't", 'tell',
'her', ',', 'you', "'ll", 'regret', 'it', '!', "'Hey", "'", ',', 'she', "'ll", 'say', '!']
>>> wordpunct_tokenize(sent)
['I', "'", 'm', 'a', 'dog', 'and', 'it', "'", 's', 'great', '!', 'You', "'",
're', 'cool', 'and', 'Sandy', "'", 's', 'book', 'is', 'big', '.', 'Don',
"'", 't', 'tell', 'her', ',', 'you', "'", 'll', 'regret', 'it', '!', "'",
'Hey', "',", 'she', "'", 'll', 'say', '!']

正如我们所见,wordpunct_tokenize 几乎可以拆分所有特殊符号并将它们视为单独的单元。另一方面,word_tokenize're 之类的东西放在一起。不过它似乎并不是那么聪明,因为我们可以看到它无法将初始单引号与 'Hey' 分开。

有趣的是,如果我们改写这样的句子(单引号作为字符串分隔符,双引号围绕“Hey”):

sent = 'I\'m a dog and it\'s great! You\'re cool and Sandy\'s book is big. Don\'t tell her, you\'ll regret it! "Hey", she\'ll say!'

我们得到

>>> word_tokenize(sent)
['I', "'m", 'a', 'dog', 'and', 'it', "'s", 'great', '!', 'You', "'re",
'cool', 'and', 'Sandy', "'s", 'book', 'is', 'big', '.', 'Do', "n't",
'tell', 'her', ',', 'you', "'ll", 'regret', 'it', '!', '``', 'Hey', "''",
',', 'she', "'ll", 'say', '!']

所以 word_tokenize 确实会拆分双引号,但它也会将它们转换为 ``''wordpunct_tokenize 不会这样做:

>>> wordpunct_tokenize(sent)
['I', "'", 'm', 'a', 'dog', 'and', 'it', "'", 's', 'great', '!', 'You', "'",
're', 'cool', 'and', 'Sandy', "'", 's', 'book', 'is', 'big', '.', 'Don',
"'", 't', 'tell', 'her', ',', 'you', "'", 'll', 'regret', 'it', '!', '"',
'Hey', '",', 'she', "'", 'll', 'say', '!']

关于python - nltk wordpunct_tokenize 与 word_tokenize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50240029/

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