如何在 Tensorflow Transform 中计算 TF-IDF(使用 tft.tfidf 函数)

How to calculate TF-IDF (using tft.tfidf function) in Tensorflow Transform

在浏览 tensorflow 转换中的文档时,我遇到了执行 TD-IDF 的函数。

tft.tfidf(
    x, vocab_size, smooth=True, name=None
)

由于文档在提供如何执行 TD-IDF 的示例方面不清楚,我尝试使用 example_string

example_strings=[["I", "like", "pie", "pie", "pie"], ["yum", "yum", "pie"]]

词汇大小为 1000。(只是随机数)但下面的代码给我一个属性错误。

tft.tfidf(example_strings, vocab_size=1000)

AttributeError: 'list' 对象没有属性 'indices'

请帮我解决这个问题,因为我对 Tensorflow 转换操作还很天真。

如果您想使用 TFT (here an example) 计算 tfidf,您可以这样做

example_strings = ["I like pie pie pie", "yum yum pie"]
VOCAB_SIZE = 100

tf.compat.v1.disable_eager_execution()

tokens = tf.compat.v1.string_split(example_strings)
indices = tft.compute_and_apply_vocabulary(tokens, top_k=VOCAB_SIZE)
bow_indices, weight = tft.tfidf(indices, VOCAB_SIZE + 1)

否则你也可以用TF Tokenizer:

tk = tf.keras.preprocessing.text.Tokenizer(num_words=VOCAB_SIZE)
tk.fit_on_texts(example_strings)

tk.sequences_to_matrix(tk.texts_to_sequences(example_strings), mode='tfidf')