文章按关键词评分算法

时间:2014-10-09 12:06:39

标签: algorithm text keyword scoring

我正在寻找一种算法,可以根据加权关键字为文章提供分数。

假设我有以下文章:

  石油和天然气行业日益减少的经济焦虑正在引发对未来的疑难问题。它也正在塑造一场参议院竞选,民主党人正在寻求在一个长期由共和党统治的州内再次当选。

我有以下具有给定重量(-100到100)重要性的关键字:

  • 经济(50)
  • 参议院(70)
  • 共和党人(-100)
  • 民主党人(100人)

这意味着我想要一篇关于经济,参议院和民主党的文章得到一个高分,但只有一篇关于Repulicans获得低分的文章。 一个简单的解决方案似乎只是添加文章中出现的关键字的值。但实际上,一篇文章的民主党人数是民主党人的5倍,而共和党人在文本中出现的这个词的1倍应该仍然排名较低。

我的问题是:针对此问题是否有高效有效算法?

1 个答案:

答案 0 :(得分:0)

如果我理解你,你可以通过注释你已经在一组中得分的单词来做到这一点。 Python中的示例:

article = """Economic anxiety amid a dwindling oil and gas industry is raising
             difficult questions about the future. It is also shaping a Senate
             race in which a Democrat is seeking re-election in a state long
             dominated by Republicans."""
keyword_score = {'economic': 50,
                 'senate': 70,
                 'republicans': -100,
                 'democrats': 100}
seen_keywords = set()
score = 0
for word in article.split():
    word = word.lower()
    if word in keyword_score and word not in seen_keywords:
        score += keyword_score[word]
        seen_keywords.add(word)

print(score)

这样的话就不会被评分两次。