C# 查找相关提交的高效算法
我最近启动了my,希望在查看提交时添加“相关提交”部分。与此完全相同-请参阅右侧标题为“相关”的专栏 考虑到每个提交都有一个标题和一组标记,那么查询数据库中相关提交的最有效(最佳结果)、最高效(快速、内存友好)的方法是什么C# 查找相关提交的高效算法,c#,database,performance,algorithm,memory,C#,Database,Performance,Algorithm,Memory,我最近启动了my,希望在查看提交时添加“相关提交”部分。与此完全相同-请参阅右侧标题为“相关”的专栏 考虑到每个提交都有一个标题和一组标记,那么查询数据库中相关提交的最有效(最佳结果)、最高效(快速、内存友好)的方法是什么 我可以想出一种方法来做到这一点(我会把它作为一个答案发布),但我很有兴趣看看其他人有什么要说的。或者可能已经有了一种标准的方法来实现这一点?这是我的两分钱解决方案: 为了获得最佳输出,我们需要对查询结果施加“权重” 首先,假设数据库中的每个提交的权重为零。 然后,如果“池”中
我可以想出一种方法来做到这一点(我会把它作为一个答案发布),但我很有兴趣看看其他人有什么要说的。或者可能已经有了一种标准的方法来实现这一点?这是我的两分钱解决方案:
为了获得最佳输出,我们需要对查询结果施加“权重” 首先,假设数据库中的每个提交的权重为零。 然后,如果“池”中的提交与当前提交共享一个标记,我们将向找到的提交添加+3。因此,如果发现另一个提交与当前提交共享两个标签,我们将在权重中添加+6 接下来,我们拆分/标记当前提交的标题并删除“停止词”。
我已经看到了谷歌的停止词列表,但现在我将我的停止词定义为:[“of”,“a”,“the”,“in”] 示例:
标题“所有时间的最佳提交”
结果数组:[“the”,“Best”,“Submission”,“of”,“All”,“Times”]
删除停止词:[“最佳”、“提交”、“所有”、“次数”] 然后我们在数据库中查询包含上述任何标题的提交,并为每个结果添加权重:+2
最后,按权重对列表进行降序排序,取前N个结果
你觉得怎么样?(温柔点!)如果我理解得很好,你需要一种技巧来确定两篇文章是否彼此“相似”。您可能希望使用概率模型: 这样做的意思是,如果两篇文章分享了很多“不寻常”的词语,那么他们可能是在谈论同一个话题。为了检测不常见的单词,根据您的应用程序,您可以使用一个通用的频率表,或者更好的方法,根据您的帖子中的单词来构建它(但是您需要有足够的频率表才能有相关的内容) 我不会在标题和标签上限制自己,但我会在研究中增加它们的分量 这种想法在垃圾邮件过滤中非常常见。不幸的是,我没有时间做一个全面的回顾,但快速的谷歌搜索会给出: karlmicha.googlepages.com/acl2004_poster.pdf