我想在消息论坛中为每条消息构建一个包含约6个关键字(甚至更好:几个字关键短语)的列表。
任何人都知道一个好的C#库来实现这个目标吗?也许有办法让Lucene.NET屈服于提供这种信息?
或者,如果没有,那么有人可以建议一个算法(或一组算法)来阅读吗?如果我正在实施自己,我需要的东西不是非常复杂,我只能解决这个问题,如果它在大约一个星期内易于处理。现在,我在简单但有效的方面找到的最好的是TF-IDF。
更新:我上传了使用TF-IDF的结果,从真实数据集中选择前5个关键字:http://jsbin.com/oxanoc/2/edit#preview
结果平庸,但并非完全没用......也许加上检测多字短语,这就足够了。
答案 0 :(得分:2)
几周前我用Java实现了Java中的关键字提取算法。项目,并使用tf-idf模型。
<强>算法:强>
首先,我们在段落中查找了所有bigrams,并提取了有意义的段落。 (*)
接下来,我们采取了一组unigrams和bigrams,并分别评估各自的tf-idf得分。每个术语的idf分数是Bing API检索到的“文件数”。
(*)确定哪个二元组有意义:
我们使用各种启发式方法来找出哪些二元组被认为是有意义的。最后,通过“询问”维基百科获得了最好的结果:我们搜索了二元组。如果有一篇文章包含这个二元组,我们认为它有意义。
<强>评价为:强>
我们在随机文章的一组50个摘要中评估了算法,并提取了这些算法的precision and recall。
结果是约40%的召回率和~35%的精度,这也不算太差。