【发布时间】:2021-03-26 10:35:24
【问题描述】:
我有许多词分为不同的类别。每个单词都分配了 0 到 100 之间的排名。如果某个单词出现在文本中,我正在检查文本,我想找到特定类别的总分。
例如,让我们考虑一下,我有一般类别,而我有几个词属于同一类别
| word | weight | count |
|---|---|---|
| x | 90 | 5 |
| y | 84 | 4 |
| z | 52 | 2 |
计数是单词在文本中出现的次数
目前,我正在使用 LOG-SUM-EXP(https://en.wikipedia.org/wiki/LogSumExp) 方法来计算类别的分数。
对于上表,得分为 91.61
SELECT LOG(EXP(90) + EXP(90) + EXP(90) + EXP(90) + EXP(90) + EXP(84) + EXP(84) + EXP(84) + EXP(84) + EXP(52) + EXP(52));
评分时要考虑的事项
- 字数和权重
我面临的问题是,如果只有一个单词存在一个计数,那么分数会非常高。
例如,以下查询的得分为 91
SELECT LOG(EXP(91))
| word | weight | count |
|---|---|---|
| x | 91 | 1 |
如果计数低我不想要高分,有没有替代算法可以解决问题?
最终得分应该在 0 到 100 之间。
【问题讨论】:
-
在您提到的只有 1 个单词的示例中,您认为可以接受的分数是多少?
-
您在问题中提到的“0 到 1 之间的排名”是否对应于 0 到 100 之间的权重?另外,这个问题与 Java 或 MySQL 有什么关系?这似乎是一个纯粹的数学或算法问题。