如何使用Tensorflow将中文字符串拆分为字符

时间:2017-12-27 08:35:40

标签: tensorflow split

我想用tf.data.TextLineDataset()来阅读中文句子,然后使用map()函数分成单个单词,但tf.split不适用于中文。

2 个答案:

答案 0 :(得分:0)

我也希望有人可以在这个问题上为我们提供帮助。 这是我目前的解决方案:

  1. 从文件中读取Utf-8编码格式的中文句子。
  2. 使用诸如jieba之类的工具对句子进行标记。
  3. 构造vocab表。
  4. 根据词汇表转换源/目标句子。
  5. 使用from_tensor_slices转换为数据集。
  6. 从数据集中获取迭代器。
  7. 做其他事情。

如果使用TextLineDataset直接加载中文句子,则数据集的内容有些奇怪,以字节流显示。 也许我们可以将每个字节视为英语中的一个字符。

有人可以确认这一点或有其他建议吗?

答案 1 :(得分:0)

上述答案是处理非英语风格的语言(例如中文,韩语,日语等)时的一种常见选择。

您还可以使用下面的代码。

顺便说一句,顺便说一句,TextLineDataSet将以byte string的形式读取文本内容。 因此,如果要处理中文,则需要先将其解码为unicode。 不幸的是,在张量流中没有这样的选择。 我们需要选择其他方法,例如py_funct

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tensorflow as tf

def preprocess_func(x):
 ret= "*".join(x.decode('utf-8'))
    return ret

str = tf.py_func(
        preprocess_func,
        [tf.constant(u"我爱,南京")],
        tf.string)

with tf.Session() as sess:
    value = sess.run(str)
    print(value.decode('utf-8'))

输出:我*爱*,*南*京