首页 > 解决方案 > 如何将 TF-IDF 矩阵转换为前 10 个单词的整体字典

问题描述

我正在尝试获取一些文本中单词的整体 tf-idf 分数。我正在遵循此处看到的计算 tf-idf 的手动方法:https ://towardsdatascience.com/natural-language-processing-feature-engineering-using-tf-idf-e8b9d00e7e76

我正在使用这些句子:['那个人出去散步','孩子们围坐在火边']

结果可以在这个熊猫数据框表中看到:

在此处输入图像描述

可以在这里看到用于显示 tf-idf 结果的字典:

[{'a': 0.09902102579427789, 'for': 0.09902102579427789, 'man': 0.09902102579427789, 'out': 0.09902102579427789, 'the': 0.0, 'walk': 0.09902102579427789, 'went': 0.09902102579427789}, 

{'around': 0.11552453009332421, 'children': 0.11552453009332421, 'fire': 0.11552453009332421, 'sat': 0.11552453009332421, 'the': 0.0}]

如何按顺序将这个 TF-IDF 结果字典列表转换为一个总体上排名最高的 tf-idf 结果字典?

标签: pythonpython-3.xnltktf-idfcorpus

解决方案


由于我们在这里只处理几句话,并且考虑到 TF-IDF 的性质,ig 整个文档中的词频与整个语料库中的词频,我们可以将您的结果按从大到小的顺序排列。为此,我们可以使用一种方法对您在问题中显示的字典进行排序。

def sort_dictionary(my_dict):
    return {k: v for k, v in sorted(my_dict.items(), key=lambda item: item[1], reverse=True)}

这样做我们得到的结果是:

{'a': 0.09902102579427789, 'for': 0.09902102579427789, 'man': 0.09902102579427789, 'out': 0.09902102579427789, 'walk': 0.09902102579427789, 'went': 0.09902102579427789, 'the': 0.0}

符合文档或句子,我们用作输入。虽然我们在句子中有 13 个单词,但只有 7 个独特的单词,但如果我们有数百个单词,我们可以将搜索限制在排序字典中的前 10 个,这样我们就会得到前 10 个。


推荐阅读