Algorithm 基于关键词的文章评分算法

Algorithm 基于关键词的文章评分算法,algorithm,text,keyword,scoring,Algorithm,Text,Keyword,Scoring,我正在寻找一种算法,可以给一个基于加权关键字的文章评分 因此,假设我有以下文章: 在石油和天然气行业萎缩的背景下,经济焦虑正在引发有关未来的难题。这也正在形成一场参议院竞选,在这场竞选中,一名民主党人正在寻求在一个长期由共和党人主导的州连任 我有以下具有给定权重(-100到100)重要性的关键字: 经济(50) 参议院(70) 共和党人(-100) 民主党人(100人) 这意味着我希望一篇关于经济、参议院和民主党的文章得分高,但一篇只关于共和党的文章得分低。 一个简单的解决方案似乎就是简单地

我正在寻找一种算法,可以给一个基于加权关键字的文章评分

因此,假设我有以下文章:

在石油和天然气行业萎缩的背景下,经济焦虑正在引发有关未来的难题。这也正在形成一场参议院竞选,在这场竞选中,一名民主党人正在寻求在一个长期由共和党人主导的州连任

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

  • 经济(50)
  • 参议院(70)
  • 共和党人(-100)
  • 民主党人(100人)
这意味着我希望一篇关于经济、参议院和民主党的文章得分高,但一篇只关于共和党的文章得分低。 一个简单的解决方案似乎就是简单地添加文章中出现的关键字的值。但事实上,如果一篇文章中出现了5倍于“民主党人”和1倍于“共和党人”的字眼,那么它的排名应该仍然很低


我的问题是:这个问题是否有有效的有效的算法?

如果我理解正确,你可以通过注释你已经在一组单词中得分来完成。Python中的示例:

article=”““石油和天然气行业萎缩带来的经济焦虑正在加剧
关于未来的难题。它也在塑造一个参议院
民主党人在一个州寻求连任的竞选
由共和党人主导
关键词_得分={'economic':50,
“参议院”:70,
“共和党人”:-100,
“民主党”:100}
seen_keywords=set()
分数=0
对于article.split()中的单词:
word=word.lower()
如果单词出现在关键字中,而单词不出现在关键字中:
分数+=关键字分数[单词]
查看关键字。添加(word)
打印(分数)

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

“但是(…)一篇文章中的单词是民主党的5倍,共和党的1倍(…)应该仍然排名较低。”为什么?这让我不清楚这个问题。有人可能会建议:只需给“共和党人”分配一个较低的权重(例如-350)。