您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

score.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const cosineSimilarity = require('compute-cosine-similarity')
  2. const config = require('./config')
  3. const preComputedScores = {
  4. 100: {
  5. 100: 1000,
  6. 140: 872,
  7. 180: 675,
  8. 220: 518,
  9. 260: 406,
  10. 400: 215,
  11. },
  12. 140: {
  13. 100: 872,
  14. 140: 1000,
  15. 180: 938,
  16. 220: 828,
  17. 260: 723,
  18. 400: 486,
  19. },
  20. 180: {
  21. 100: 675,
  22. 140: 938,
  23. 180: 1000,
  24. 220: 968,
  25. 260: 906,
  26. 400: 706,
  27. },
  28. 220: {
  29. 100: 518,
  30. 140: 828,
  31. 180: 968,
  32. 220: 1000,
  33. 260: 982,
  34. 400: 847,
  35. },
  36. 260: {
  37. 100: 406,
  38. 140: 723,
  39. 180: 906,
  40. 220: 982,
  41. 260: 1000,
  42. 400: 928,
  43. },
  44. 400: {
  45. 100: 215,
  46. 140: 486,
  47. 180: 706,
  48. 220: 847,
  49. 260: 928,
  50. 400: 1000,
  51. },
  52. }
  53. const score2d = (a, b) => {
  54. const aScorePlusBase = [100]
  55. const bScorePlusBase = [100]
  56. aScorePlusBase.push(a)
  57. bScorePlusBase.push(b)
  58. return Math.round(
  59. Math.pow(cosineSimilarity(aScorePlusBase, bScorePlusBase), 10) *
  60. config.magic,
  61. )
  62. }
  63. // Uncomment to rerun precompute
  64. // config.scoreVals.forEach(val => {
  65. // config.scoreVals.forEach(v => {
  66. // preComputedScores[val][v] = score2d(val, v)
  67. // })
  68. // })
  69. module.exports = {
  70. precomputed: preComputedScores,
  71. }