Skip to main content
 首页 » 编程设计

python之来自 Tensorflow TextLineDataset 的 Ngram

2024年11月24日28rubylouvre

我有一个文本文件,每行包含一个句子

当我创建一个 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 这样做?

编辑:“标记”是指“单词”

请您参考如下方法:

这绝对是可能的,但您需要做一些争论。你需要:

  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)