accountServer.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. """
  2. @author: luojunhui
  3. """
  4. def get_account_interest_by_top(account_nickname, min_time, max_time, rate):
  5. return 1, 2
  6. def get_account_interest_by_avg(account_nickname, min_time, max_time, rate):
  7. return 1, 2
  8. def get_sim_score_cross_mean(a, b, c):
  9. return {"1": "2"}
  10. def get_sim_score_cross_avg(a, b, c):
  11. return {"1": "2"}
  12. class AccountServer(object):
  13. """
  14. 获取标题和公众号文章的相关性
  15. """
  16. def __init__(self, params):
  17. self.account_name_list = None
  18. self.sim_type = None
  19. self.interest_type = None
  20. self.min_time = None
  21. self.max_time = None
  22. self.rate = None
  23. self.title_list = None
  24. self.params = params
  25. def checkParams(self):
  26. """
  27. 校验传参
  28. :return:
  29. """
  30. try:
  31. self.title_list = self.params['text_list']
  32. self.account_name_list = self.params.get("account_nickname_list", [])
  33. self.rate = self.params.get("rate", 0.1)
  34. self.max_time = self.params.get("max_time", 0.1)
  35. self.min_time = self.params.get("min_time", 0.1)
  36. self.interest_type = self.params.get("interest_type", "by_top")
  37. self.sim_type = self.params.get("sim_type", "mean")
  38. return None
  39. except Exception as e:
  40. response = {
  41. "error": "Params error",
  42. "detail": str(e)
  43. }
  44. return response
  45. def getEachAccountScoreList(self, account_name):
  46. """
  47. 获取和单个账号的相关性分数
  48. :return:
  49. """
  50. try:
  51. account_interest, account_weight = (
  52. get_account_interest_by_top(
  53. account_nickname=account_name,
  54. min_time=self.min_time,
  55. max_time=self.max_time,
  56. rate=self.rate,
  57. )
  58. if self.interest_type == "by_top"
  59. else get_account_interest_by_avg(
  60. account_nickname=account_name,
  61. min_time=self.min_time,
  62. max_time=self.max_time,
  63. rate=self.rate,
  64. )
  65. )
  66. res = (
  67. get_sim_score_cross_mean(self.title_list, account_interest, account_weight)
  68. if self.sim_type == "mean"
  69. else get_sim_score_cross_avg(self.title_list, account_interest, account_weight)
  70. )
  71. sim_key = "score_list_mean" if self.sim_type == "mean" else "score_list_avg"
  72. return {
  73. "score_list": res[sim_key],
  74. "text_list_max": res["text_list_max"],
  75. }
  76. except Exception as e:
  77. print(e)
  78. return {
  79. "score_list": [0] * len(self.title_list),
  80. "text_list_max": self.title_list
  81. }
  82. def getAccountListScoreList(self):
  83. """
  84. 获取AccountList中每一个账号的相关性分数
  85. :return:
  86. """
  87. response = {}
  88. for accountName in self.account_name_list:
  89. if response.get(accountName):
  90. continue
  91. else:
  92. response[accountName] = self.getEachAccountScoreList(account_name=accountName)
  93. return response
  94. def deal(self):
  95. """
  96. Deal Function
  97. :return:
  98. """
  99. return self.checkParams() if self.checkParams() else self.getAccountListScoreList()