Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找相关提交的高效算法_C#_Database_Performance_Algorithm_Memory - Fatal编程技术网

C# 查找相关提交的高效算法

C# 查找相关提交的高效算法,c#,database,performance,algorithm,memory,C#,Database,Performance,Algorithm,Memory,我最近启动了my,希望在查看提交时添加“相关提交”部分。与此完全相同-请参阅右侧标题为“相关”的专栏 考虑到每个提交都有一个标题和一组标记,那么查询数据库中相关提交的最有效(最佳结果)、最高效(快速、内存友好)的方法是什么 我可以想出一种方法来做到这一点(我会把它作为一个答案发布),但我很有兴趣看看其他人有什么要说的。或者可能已经有了一种标准的方法来实现这一点?这是我的两分钱解决方案: 为了获得最佳输出,我们需要对查询结果施加“权重” 首先,假设数据库中的每个提交的权重为零。 然后,如果“池”中

我最近启动了my,希望在查看提交时添加“相关提交”部分。与此完全相同-请参阅右侧标题为“相关”的专栏

考虑到每个提交都有一个标题和一组标记,那么查询数据库中相关提交的最有效(最佳结果)、最高效(快速、内存友好)的方法是什么


我可以想出一种方法来做到这一点(我会把它作为一个答案发布),但我很有兴趣看看其他人有什么要说的。或者可能已经有了一种标准的方法来实现这一点?

这是我的两分钱解决方案:
为了获得最佳输出,我们需要对查询结果施加“权重”

首先,假设数据库中的每个提交的权重为零。 然后,如果“池”中的提交与当前提交共享一个标记,我们将向找到的提交添加+3。因此,如果发现另一个提交与当前提交共享两个标签,我们将在权重中添加+6

接下来,我们拆分/标记当前提交的标题并删除“停止词”。
我已经看到了谷歌的停止词列表,但现在我将我的停止词定义为:[“of”,“a”,“the”,“in”]

示例:
标题“所有时间的最佳提交”
结果数组:[“the”,“Best”,“Submission”,“of”,“All”,“Times”]
删除停止词:[“最佳”、“提交”、“所有”、“次数”]

然后我们在数据库中查询包含上述任何标题的提交,并为每个结果添加权重:+2
最后,按权重对列表进行降序排序,取前N个结果


你觉得怎么样?(温柔点!)

如果我理解得很好,你需要一种技巧来确定两篇文章是否彼此“相似”。您可能希望使用概率模型:

这样做的意思是,如果两篇文章分享了很多“不寻常”的词语,那么他们可能是在谈论同一个话题。为了检测不常见的单词,根据您的应用程序,您可以使用一个通用的频率表,或者更好的方法,根据您的帖子中的单词来构建它(但是您需要有足够的频率表才能有相关的内容)

我不会在标题和标签上限制自己,但我会在研究中增加它们的分量

这种想法在垃圾邮件过滤中非常常见。不幸的是,我没有时间做一个全面的回顾,但快速的谷歌搜索会给出:

karlmicha.googlepages.com/acl2004_poster.pdf