如何正确使用 tft.compute_and_apply_vocabulary 和 tft.tfidf?



我尝试使用tft.compute_and_apply_vocabulary和tft.tfidf在我的jupyter笔记本中计算tfidf。但是我总是收到以下错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'compute_and_apply_vocabulary/vocabulary/Placeholder' with dtype string
[[node compute_and_apply_vocabulary/vocabulary/Placeholder (defined at C:UserssecsiAnaconda3envstf2libsite-packagestensorflow_

但占位符类型实际上是字符串。

这是我的代码:

import tensorflow as tf
import tensorflow_transform as tft
with tf.Session() as sess:
documents = [
"a b c d e",
"f g h i j",
"k l m n o",
"p q r s t",
]
documents_tensor = tf.placeholder(tf.string)
tokens = tf.compat.v1.string_split(documents_tensor)
compute_vocab = tft.compute_and_apply_vocabulary(tokens, vocab_filename='vocab.txt')
global_vars_init = tf.global_variables_initializer()
tabel_init = tf.tables_initializer()

sess.run([global_vars_init, tabel_init])
token2ids = sess.run(tfidf, feed_dict={documents_tensor: documents})
print(f"token2ids: {token2ids}")

版本:

  • 张量流:1.14
  • 张量流变换:0.14

提前感谢!

我们不能像tft.compute_and_apply_vocabulary那样直接使用Tensorflow Transform的操作,不像Tensorflow操作可以直接在Session中使用。

为了使用Tensorflow Transform的操作,我们必须在preprocessing_fn中运行它们,然后传递给tft_beam.AnalyzeAndTransformDataset

在您的情况下,由于您有文本数据,因此可以修改代码,如下所示:

def preprocessing_fn(inputs):
"""inputs is our dataset"""
documents = inputs['documents']
tokens = tf.compat.v1.string_split(documents)
compute_vocab = tft.compute_and_apply_vocabulary(tokens)
# Add one for the oov bucket created by compute_and_apply_vocabulary.
review_bow_indices, review_weight = tft.tfidf(compute_vocab,
VOCAB_SIZE + 1)
return {
REVIEW_KEY: review_bow_indices,
REVIEW_WEIGHT_KEY: review_weight,
LABEL_KEY: inputs[LABEL_KEY]
}
(transformed_train_data, transformed_metadata), transform_fn = 
((train_data, RAW_DATA_METADATA) | 'AnalyzeAndTransform' >>
tft_beam.AnalyzeAndTransformDataset(preprocessing_fn))

有关如何在文本数据集上使用Tensorflow Transform执行数据预处理(情绪分析(的示例,可以参考此链接。

如果您觉得这个答案有用,请接受这个答案和/或投赞成票。谢谢。

相关内容

  • 没有找到相关文章

最新更新