Разница между split () и tokenize () - PullRequest
1 голос
/ 20 октября 2019

Я считаю количество уникальных слов в загруженном текстовом файле. Однако я понял, что, когда я использую split() и tenorflow_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 Ответ

1 голос
/ 20 октября 2019

split() функция при передаче без разделения параметров только на основе пробелов, присутствующих в строке.

Метод tfds.features.text.Tokenizer() tokenize() имеет больше способов расщепления текста, чем только пробел. Вы можете видеть это в GitHub код хранилища . В настоящее время значение reserved_tokens по умолчанию не задано, но для свойства alphanum_only установлено значение True по умолчанию.

Следовательно, потенциально многие не алфавитно-цифровые символы отфильтровываются, и, следовательно, вы получаете меньшее количество токенов.

...