split()和tokenize()之间的区别

时间:2019-10-20 15:23:52

标签: python tensorflow dataset

我正在计算已加载的文本文件中唯一单词的数量。但是我已经意识到,当我使用split()和tensorflow_datasets tokenize()时,我得到了不同的结果,但我认为它们可以实现相同的目的。这是我的代码。有人可以帮我知道两者之间的区别吗?

import tensorflow as tf
import tensorflow_datasets as tfds

tf.enable_eager_execution()

BUFFER_SIZE = 50000
TAKE_SIZE = 5000
BATCH_SIZE = 64

tokenizer = tfds.features.text.Tokenizer()
data = open("news.2011.en.shuffled","r").read()
vocab = list(set(data.split()))  # gives more count
print(len(vocab))

tokenized_data = tokenizer.tokenize(data)
print(len(set(tokenized_data)))  # gives less count

1 个答案:

答案 0 :(得分:1)

split()函数在不带参数的情况下仅根据字符串中存在的空格字符进行拆分。

tfds.features.text.Tokenizer()的{​​{1}}方法具有更多的文本分割方法,而不仅仅是空白字符。您可以在GitHub code repository中看到它。目前,没有默认的tokenize()设置,但是reserved_tokens的属性默认设置为True。

因此,可能许多非字母数字字符被过滤掉,因此您获得的令牌数量更少。