首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自Tensorflow TextLineDataset的Ngrams

来自Tensorflow TextLineDataset的Ngrams
EN

Stack Overflow用户
提问于 2019-07-30 14:23:46
回答 1查看 202关注 0票数 2

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

当我创建一个TextLineDataset并使用迭代器在其上迭代时,它将逐行返回文件。

我想一次迭代我的文件两个令牌,下面是我的当前代码:

代码语言:javascript
复制
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可以做到这一点吗?

编辑:“记号”指的是“单词”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-02 06:55:37

当然,这是可能的,但你有一点争论要做。你需要:

  1. 把每一行分成几个字
  2. 把这个简化成一个词流
  3. 分批成2

我们可以将tf.strings.split用于1.:

代码语言:javascript
复制
words = sentences.map(tf.strings.split)

flat_map为2.:

代码语言:javascript
复制
flat_words = words.flat_map(tf.data.Dataset.from_tensor_slices)

batch为3:

代码语言:javascript
复制
word_pairs = flat_words.batch(2)

当然,我们可以把所有这些操作联系在一起,给我们这样的东西:

代码语言:javascript
复制
word_pairs = sentences \
  .map(tf.strings.split) \
  .flat_map(tf.data.Dataset.from_tensor_slices) \
  .batch(2)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57273962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档