【问题标题】:Failing to implement TF\IDF on a given dataframe未能在给定的数据帧上实现 TF\IDF
【发布时间】:2020-08-09 16:53:46
【问题描述】:

我正在尝试实现 TF\IDF,但我似乎无法让我的代码正常工作。 我清理了数据,目前的情况是这样的:

我有一个包含 2 列的数据框:标题、文本。 每一行都被视为一个文档,其内容是位于文本列中的相应列表中的单词。

我正在尝试首先执行 TF 部分,这意味着对于每个文档,获取每个单词的计数并为每个单词应用 log(1+count)。

对于 IDF 部分,我认为我应该连接“文本”列中的每个列表并在其中只留下不同的值,然后对于每个单词我应该计算它出现在多少文档中。

问题是,我不知道如何将这些想法实现到代码中。

我试图将每一行分隔成一个独立的数据框,我得到了它的代码,但它花费了太多时间,所以我什至无法朝着那个方向前进......

我需要的是有关如何在所述列“文本”的每一行上应用函数并在那里应用常规 count->reducekey 来计算每个文档的单词并将结果返回到列表中的知识或我猜是一个哈希图。

之后,我需要找到一种方法来连接每个列表并计算每个单词的出现次数。

我添加了一张图片来显示我正在处理的内容。

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    这是下面教程中的示例代码

    tf_idf = {}
    for i in range(N):
        tokens = processed_text[i]
        counter = Counter(tokens + processed_title[i])
        for token in np.unique(tokens):
            tf = counter[token]/words_count
            df = doc_freq(token)
            idf = np.log(N/(df+1))
            tf_idf[doc, token] = tf*idf
    

    如果您是 python 开发人员,可以使用本教程了解更多信息:

    https://towardsdatascience.com/tf-idf-for-document-ranking-from-scratch-in-python-on-real-world-dataset-796d339a4089

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 1970-01-01
      • 2019-03-28
      • 2023-04-06
      • 2015-06-16
      • 2020-02-14
      • 2020-04-13
      • 1970-01-01
      • 2012-06-21
      相关资源
      最近更新 更多