Nlp 查找相似/相关文本算法

Nlp 查找相似/相关文本算法,nlp,artificial-intelligence,similarity,Nlp,Artificial Intelligence,Similarity,我在stackoverflow和Google中搜索了很多,但没有找到最好的答案。 事实上,我将开发一个新闻阅读器系统,从网络上抓取和收集新闻(使用爬虫),然后,我想在网站上找到类似或相关的新闻(以防止在网站上显示重复的新闻) 我认为最好的现场例子是谷歌新闻,它从网上收集新闻,然后分类和查找相关的新闻和文章。这就是我想做的 执行此操作的最佳算法是什么?这是一个: 公共静态SqlInt32 ComputeTelevensity(SqlString firstString,SqlString seco

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

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

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

这是一个:

公共静态SqlInt32 ComputeTelevensity(SqlString firstString,SqlString secondString)
{
int n=firstString.Value.Length;
int m=secondString.Value.Length;
int[,]d=新的int[n+1,m+1];
//第一步
如果(n==0)
{
返回m;
}
如果(m==0)
{
返回n;
}
//步骤2

对于(int i=0;i一个相对简单的解决方案是为每个文档计算tf idf向量(en.wikipedia.org/wiki/tf*idf),然后使用这些向量之间的余弦距离(en.wikipedia.org/wiki/cosine_相似度)作为文章之间语义距离的估计值


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

在我看来,你可以使用贝叶斯网络,但一个好的网络并不是那么容易实现的。我们可以聊一聊吗:Levenstein距离是好的,如果可以收集关于“悲伤”的人和“疯狂”的大量新闻的话奶牛。它可能有利于“自动完成”或拼写检查建议,但不能提取单词的意思!
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];
}