将星级评论转化为赞成票的好方法

数据挖掘 算法
2022-03-01 19:53:38

我想将最多 5 星的评论和评论数量变成赞成票。这样做的好算法是什么?

一个总共有 10 条评论且平均评分为 5 星的场所显然应该比一个总共有 10 条评论且平均评分为 3 星的场所获得更多的支持。此外,一个拥有 60 条评论和 4 星评级的场地可能会比拥有 10 条评论和 5 星评级的场地获得更多的支持。

我需要此评分基于评论总数和平均星级评分,但我也希望该数字保持在可变数字以下(例如,说赞成票保持在 100 以下,但我也可以插入 200并将保持在 200 以下)。

2个回答

我的建议是探索一些统计方法来表示评论/评分对的重要性。例如,将 [#reviews, rating] 翻译成一些测试统计类型模型,例如Student's t for starters。

考虑到您的示例数字,一些方法可以是:

1)

>>> 5/(1/sqrt(10))
15.811388300841896
>>> 3/(1/sqrt(10))
9.4868329805051381
>>> 
>>> 
>>> 4/(1/sqrt(60))
30.98386676965934
>>> 5/(1/sqrt(10))
15.811388300841896

2)或者,深入研究统计数据:

>>> (5-3)/(sqrt(1/10+1/10))
4.4721359549995796
>>> (4-5)/(sqrt(1/60+1/10))
-2.9277002188455996

(you will need to do some work on the alpha level to get at the significance in ex 2 above)

你可以看到这些如何为你工作;如果太基本/太多不准确的假设/其他一些您需要在模型/等中更高分辨率的过滤,您可以探索更好地表示的方法:

  • 样本标准差(在我上面的示例中假设为 1),或
  • 分布(在上面的示例中假设为高斯分布),或
  • 适当的统计测试(浏览维基百科),或
  • ETC

关键是您可以不断完善您的模型,具体取决于您需要多少分辨率。只有你可以打那个电话。希望这可以帮助!

这是一个老问题,但我想提出一种与其他答案不同的方法。

对评论使用情绪分析

假设我们拥有的数据是:

  • 5 星评级(零到五)
  • 每个条目的 N 个评论数

我们使用情绪分析模型来计算每条评论的“情绪”。根据评论的内容,结果将是“负面”、“中立”和“正面”。

你可以阅读更多关于情绪分析的内容并在这个Quora 的问题中找到一些 API 。

然后,您将为每种心情使用一个乘数。

  • 0:负面情绪
  • 0.5:中性情绪
  • 1:积极的情绪

因此,您可以multiplier*5为数据集中的每条评论添加评论分数。例如在伪代码中,

var current_5_star;
for each review in this_entry:
    multiplier = calc_sentiment(review)
    current_5_star += multiplier * 5

如果您想进一步改进模型,您可以使用数据集上的评论总数来规范化乘数。

总而言之,您不仅使用评论本身的数量,还使用评论的内容来评估它对评分的确切影响。