【问题标题】:Are TF-IDF scores for a single term combined?单个术语的 TF-IDF 分数是否合并?
【发布时间】:2019-03-12 02:46:00
【问题描述】:

我正在阅读有关 TF-IDF 的信息,以便从我的语料库中过滤掉常用词。在我看来,您获得了每个单词、文档对的 TF-IDF 分数。

你关注哪个分数?您是否将所有文档的分数合并为一个单词?

【问题讨论】:

    标签: nlp tf-idf stop-words


    【解决方案1】:

    TFIDF 例如:

    doc1 = "This is doc1"
    doc2 = "This is a different document"
    corpus = [doc1, doc2]
    from sklearn.feature_extraction.text import TfidfVectorizer
    vec = TfidfVectorizer()
    X = vec.fit_transform(corpus)
    X.toarray()
    return: array([[0.        , 0.70490949, 0.        , 0.50154891, 0.50154891],
       [0.57615236, 0.        , 0.57615236, 0.40993715, 0.40993715]])
    vec.get_feature_names()
    

    因此,对于语料库中的每个文档,您都有一个 line/1d 数组,并且该数组在您的语料库中具有 len = total vocab(可以变得非常稀疏)。您关注的分数取决于您在做什么,即在文档中查找最重要的词您可以在该文档中查找最高的 TF-idf。在语料库中最重要的是,查看整个数组。如果您尝试识别停用词,您可以考虑找到具有最低 TF-IDF 分数的 X 个词的集合。但是,我真的不建议首先使用 TF-IDF 来查找停用词,它降低了停用词的权重,但它们仍然经常出现,可以抵消重量损失。您最好找到最常用的单词,然后将它们过滤掉。不过,您可能希望查看手动生成的任一集合。

    【讨论】:

    • 是的,我会使用 TF-IDF 来查找最常用的单词。我会研究 TfidfVectorizer,我只是要对维基百科的描述进行编码 en.wikipedia.org/wiki/Tf%E2%80%93idf
    • 在 wiki 的示例中(我刚刚添加到我的帖子中) - 在哪种情况下您会选择哪个分数?
    • 我不会真的像我提到的那样使用 TFIDF。我建议只使用 TF(即使用 sklearn 中的 CountVectorizer 而不是 TfidfVectorizer),然后运行 ​​sum(X.toarray()) 以查找总体上出现频率最高的单词。然后提取具有最高 n 值的索引,然后将其插入 vec.get_feature_names() 以查找实际单词本身。如果你真的打算使用 TFIDF,同样的过程,但不是找到 n-max 和,而是找到 n-min sums。注意 - 对数组求和应该给你一个 vec。
    猜你喜欢
    • 2015-11-27
    • 2019-11-04
    • 2023-03-11
    • 2010-09-18
    • 2019-06-09
    • 2021-06-17
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多