""" @author: luojunhui """ def get_account_interest_by_top(account_nickname, min_time, max_time, rate): return 1, 2 def get_account_interest_by_avg(account_nickname, min_time, max_time, rate): return 1, 2 def get_sim_score_cross_mean(a, b, c): return {"1": "2"} def get_sim_score_cross_avg(a, b, c): return {"1": "2"} class AccountServer(object): """ 获取标题和公众号文章的相关性 """ def __init__(self, params): self.account_name_list = None self.sim_type = None self.interest_type = None self.min_time = None self.max_time = None self.rate = None self.title_list = None self.params = params def checkParams(self): """ 校验传参 :return: """ try: self.title_list = self.params['text_list'] self.account_name_list = self.params.get("account_nickname_list", []) self.rate = self.params.get("rate", 0.1) self.max_time = self.params.get("max_time", 0.1) self.min_time = self.params.get("min_time", 0.1) self.interest_type = self.params.get("interest_type", "by_top") self.sim_type = self.params.get("sim_type", "mean") return None except Exception as e: response = { "error": "Params error", "detail": str(e) } return response def getEachAccountScoreList(self, account_name): """ 获取和单个账号的相关性分数 :return: """ try: account_interest, account_weight = ( get_account_interest_by_top( account_nickname=account_name, min_time=self.min_time, max_time=self.max_time, rate=self.rate, ) if self.interest_type == "by_top" else get_account_interest_by_avg( account_nickname=account_name, min_time=self.min_time, max_time=self.max_time, rate=self.rate, ) ) res = ( get_sim_score_cross_mean(self.title_list, account_interest, account_weight) if self.sim_type == "mean" else get_sim_score_cross_avg(self.title_list, account_interest, account_weight) ) sim_key = "score_list_mean" if self.sim_type == "mean" else "score_list_avg" return { "score_list": res[sim_key], "text_list_max": res["text_list_max"], } except Exception as e: print(e) return { "score_list": [0] * len(self.title_list), "text_list_max": self.title_list } def getAccountListScoreList(self): """ 获取AccountList中每一个账号的相关性分数 :return: """ response = {} for accountName in self.account_name_list: if response.get(accountName): continue else: response[accountName] = self.getEachAccountScoreList(account_name=accountName) return response def deal(self): """ Deal Function :return: """ return self.checkParams() if self.checkParams() else self.getAccountListScoreList()