【问题标题】:Finding similar/related texts algorithms查找相似/相关文本算法
【发布时间】:2012-09-21 07:26:08
【问题描述】:

我在 stackoverflow 和 Google 中进行了很多搜索,但没有找到最佳答案。 实际上,我打算开发一个新闻阅读器系统,从网络(使用爬虫)爬取和收集新闻,然后,我想在网站中找到相似或相关的新闻(为了防止在网站上显示重复的新闻)

我认为最好的活生生的例子是谷歌新闻,它从网络上收集新闻,然后分类和查找相关的新闻和文章。这就是我想做的。

执行此操作的最佳算法是什么?

【问题讨论】:

标签: nlp artificial-intelligence similarity


【解决方案1】:

一个相对简单的解决方案是为每个文档计算一个 tf-idf 向量 (en.wikipedia.org/wiki/Tf*idf),然后使用它们之间的余弦距离 (en.wikipedia.org/wiki/Cosine_similarity)向量作为文章之间语义距离的估计。

这可能会比 Levenstein 距离更好地捕捉语义关系,并且计算速度要快得多。

【讨论】:

    【解决方案2】:

    这是一个:http://en.wikipedia.org/wiki/Levenshtein_distance

    public static SqlInt32 ComputeLevenstheinDistance(SqlString firstString, SqlString secondString)
    {
        int n = firstString.Value.Length;
        int m = secondString.Value.Length;
        int[,] d = new int[n + 1,m + 1];
    
        // Step 1
        if (n == 0)
        {
            return m;
        }
    
        if (m == 0)
        {
            return n;
        }
    
        // Step 2
        for (int i = 0; i <= n; d[i, 0] = i++)
        {
        }
    
        for (int j = 0; j <= m; d[0, j] = j++)
        {
        }
    
        // Step 3
        for (int i = 1; i <= n; i++)
        {
            //Step 4
            for (int j = 1; j <= m; j++)
            {
                // Step 5
                int cost = (secondString.Value[j - 1] == firstString.Value[i - 1]) ? 0 : 1;
    
                // Step 6
                d[i, j] = Math.Min(Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1), d[i - 1, j - 1] + cost);
            }
        }
        // Step 7
        return d[n, m];
    }
    

    这对于手头的任务很方便:http://code.google.com/p/boilerpipe/

    另外,如果您需要减少要分析的单词数量,请尝试以下操作:http://ots.codeplex.com/

    我发现 OTS 在情感分析中非常有用,我可以将句子的数量减少到一个小的常用短语和/或单词列表中,并据此计算整体情绪。这同样适用于相似性。

    【讨论】:

    • 如果可以收集关于“悲伤”的人和“疯狂的”奶牛的新闻,那么 Levensthein 距离是很好的。它可能适用于“自动完成”或拼写检查建议,但不能提取单词的含义!
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 2023-03-27
    • 2013-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多