Ngrams из Tensorflow TextLineDataset

У меня есть текстовый файл, содержащий одно предложение в строке

Когда я создаю TextLineDataset и перебираю его с помощью итератора, он возвращает файл построчно

Я хочу перебирать мой файл по два токена за раз, вот мой текущий код:

sentences = tf.data.TextLineDataset("data/train.src")
iterator = sentences.make_initializable_iterator()
next_element = iterator.get_next()

sess = tf.Session()

sess.run(tf.tables_initializer())
sess.run(iterator.initializer)

elem = sess.run(next_element)
print(elem)

Можно ли это сделать с помощью TextLineDataset?

Обновлено: Под «токенами» я подразумеваю «слова»

Просто чтобы уточнить - когда вы говорите токены, вы имеете в виду элементы строки? Или, вернее, к самой линии?

rvinas 30.07.2019 23:28

Я имею в виду элементы строки, мы можем сказать «слова» вместо «токенов», если хотите. Я отредактирую свой вопрос, спасибо

Valentin Macé 31.07.2019 10:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
180
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Абсолютно это возможно, но вам придется немного повозиться. Тебе нужно:

  1. разделить каждую строку на слова
  2. свести это к одному потоку слов
  3. партия в 2-х

Мы можем использовать tf.strings.split для 1.:

words = sentences.map(tf.strings.split)

и flat_map для 2.:

flat_words = words.flat_map(tf.data.Dataset.from_tensor_slices)

и batch на 3:

word_pairs = flat_words.batch(2)

и, конечно же, мы могли бы связать все эти операции вместе, чтобы получить что-то вроде этого:

word_pairs = sentences \
  .map(tf.strings.split) \
  .flat_map(tf.data.Dataset.from_tensor_slices) \
  .batch(2)

Другие вопросы по теме

Похожие вопросы