Commit 35deca1b authored by 赵威's avatar 赵威

update get portrait

parent 5982f258
......@@ -8,7 +8,7 @@ import numpy as np
from gm_rpcd.all import bind
from utils.cache import redis_client_db
from utils.message import (send_msg_to_dingtalk, send_performance_msg_to_dingtalk)
from utils.personas import get_user_portrait_tag3_from_redis
from utils.personas import get_user_portrait_tag3_business_tags
MODEL_PATH = os.path.join(os.getcwd(), "_models")
INDEX_PATH = os.path.join(MODEL_PATH, "faiss_personas_vector.index")
......@@ -22,7 +22,7 @@ def match_tractate_by_device(device_id, n=10):
try:
if device_id not in ["0", "unknown", "87654"]:
time_begin = time.time()
business_tags = get_user_portrait_tag3_from_redis(device_id, tags_num=3).get("business_tags", [])
business_tags = get_user_portrait_tag3_business_tags(device_id, tags_num=3).get("business_tags", [])
res = []
if business_tags:
vectors = []
......
......@@ -7,12 +7,13 @@ def get_user_portrait_tag3_redis_key(device_id):
return "doris:user_portrait:tag3:device_id:" + str(device_id)
def get_user_portrait_tag3_from_redis(device_id, limit_score=0, tags_num=5):
def items_gt_score(d, tags_num=tags_num):
new_d = dict(sorted(d.items(), key=lambda x: x[1], reverse=True)[:tags_num])
res = {tag: float(score) for tag, score in new_d.items() if float(score) >= limit_score}
return list(res.keys())
def items_gt_score(d, limit_score=0, tags_num=5):
new_d = dict(sorted(d.items(), key=lambda x: x[1], reverse=True))
res = {tag: float(score) for tag, score in new_d.items() if float(score) >= limit_score}
return list(res.keys())[:tags_num]
def get_user_portrait_tag3_from_redis(device_id, limit_score=0, tags_num=5):
portrait_key = get_user_portrait_tag3_redis_key(device_id)
if redis_client2.exists(portrait_key):
user_portrait = json.loads(redis_client2.get(portrait_key))
......@@ -37,3 +38,11 @@ def get_user_portrait_tag3_from_redis(device_id, limit_score=0, tags_num=5):
"business_tags": business_tags
}
return {}
def get_user_portrait_tag3_business_tags(device_id, limit_score=0, tags_num=5):
portrait_key = get_user_portrait_tag3_redis_key(device_id)
if redis_client2.exists(portrait_key):
user_portrait = json.loads(redis_client2.get(portrait_key))
business_tags = items_gt_score(user_portrait.get("business_tags", {}))
return business_tags
return []
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment