gpt4 book ai didi

correlation - 根据 tf-idf 值计算相关性?

转载 作者:行者123 更新时间:2023-12-04 05:49:49 25 4
gpt4 key购买 nike

基于 tf-idf 矩阵计算皮尔逊相关系数以查看哪些项与其他项组合出现是否有意义?它在数学上是正确的吗?

我的输出是一个相关矩阵,每个单元格中的每个术语都有相关系数。

  • -------term1 term2 term3
  • term2
  • term2
  • term2
  • 最佳答案

    这取决于您对“与其他术语结合发生”的定义。为了澄清这一点,还有几点:

    进行皮尔逊均值相关时,idf 无关紧要。同一术语的所有 tf​​ 值将乘以相同的 idf 值,产生最终的 tf-idf。 PMC 相对于输入的缩放是不变的,因此这里取消了 idf。因此,您提出的想法中最重要的是 tf.如果您甚至不计算 idf,您可能会节省一些计算,但如果您这样做,则不会有太大影响。

    现在关于 tf.让我们举一个例子来弄清楚你可能需要什么:

    让我们说 TermA出现在 Document1经常和一点在 Document2 . TermB另一方面出现在Document1很少而且经常在 Document2 .你说这两个词是否一起出现?它们出现在同一个文档中,但频率不同。如果您使用 tf-idf 的 PMC,那么结果将是它们不会同时出现(因为频率不同)。

    此时,您还应该注意到 PMC 的值从 -1 变为 1。 IE。你可以有同时出现(PMC=1)独立(PMC=0)的词和相反(PMC=-1)的词。这是否适合您正在建模的领域?如果没有,只需将 1 添加到 PMC。

    另一种选择是使用余弦相似度,它与 PMC 非常相似,但具有一些不同的特性。此外,在其他一些情况下,您可能只对实际的共现感兴趣,而不关心频率。

    可以这么说,所有这些方法都是“正确的”。更重要的问题是,这些方法中的哪一种最适合您正在建模的问题。在许多情况下,这无法从理论上确定,而只能通过尝试不同的替代方案并测试哪一种最适合您的问题域来确定。

    编辑(关于下面评论的一些评论) :

    余弦相似度确实有帮助,但在这种情况下你必须以不同的方式思考。您当然可以为文档中的术语生成词频向量,然后计算这些文档词频向量的余弦相似度。您指出正确,这将使您的帖子彼此相似。但这不是我的意思。如果您有完整的词频矩阵,您还可以生成向量,这些向量描述单个词条在每个文档中出现的频率。您还可以计算这些向量的余弦相似度。这将为您提供基于文档共现的术语的相似性。

    这样想一下(但首先我们需要一些符号):

    f_{i,j}表示项i的次数出现在文档j (请注意,我在这里忽略了 idf,因为它会在处理条款而不是文档时取消)。也让F=(f_{i,j})_{i=1...N,j=1...M}表示整个文档-术语矩阵(术语在列中,文档在行中)。然后最后我们会打电话|F|_c矩阵 F其中每个列都根据 l^2 归一化规范和 |F|_r矩阵 F其中每一行都根据 l^2 进行规范化规范。当然和往常一样 A^T表示 A 的转置.在这种情况下,您将基于术语的所有文档之间的正常余弦距离为

    (|F|_r)*(|F|_r)^T

    这会给你一个 MxM描述文档相似度的矩阵。

    如果您想计算术语相似度,您只需计算
    (|F|_c)^T*(|F|_c)

    这会给你一个 NxN基于文档中的共现描述术语相似度的矩阵。

    请注意,PMC 的计算基本上是相同的,只是在每个矩阵乘法中应用于行和列的归一化类型不同。

    现在到你的另一篇文章,你说你想知道如果 termA 的可能性有多大。出现在文档中,即 termB也出现在同一文档中。或者正式说 p(termB | termA)哪里 p(termX)表示 termX的概率出现在文档中。那是完全不同的野兽,但计算起来也很简单:
    1. Count the number of documents in which `termA` appears (call it num_termA)
    2. Count the number of documents in which both `termA` and `termB` appear (call it num_termA_termB)

    then p(termB | termA)=num_termA_termB/num_termA

    这是共现可能性的实际统计量度。但是请注意,很可能是关系 p(termB | termA ) == p(termA | termB)将不成立,因此这种共现度量根本无法用于通过 MDS 进行聚类,这很可能(没有双关语意图)。

    我的建议是同时尝试 PMC 和余弦相似性(正如您在上面看到的,它们仅在归一化方面有所不同,因此它们应该可以快速实现两者),然后在聚类后检查哪个看起来更好。

    有一些更高级的技术可用于基于一组文档对主题进行聚类。术语文档矩阵的主成分分析 (PCA) 或非负矩阵分解也经常使用(有关更多信息,请参阅潜在语义分析或 LSA)。然而,这对于您的用例来说可能有点矫枉过正,而且这些技术更难做到。 PMC 和 cosine-similarity 的绝对优势是实现起来非常简单(cosine-similarity 稍微简单一点,因为标准化更容易),因此很难出错。

    关于correlation - 根据 tf-idf 值计算相关性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212722/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com