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

update get portrait

parent 5982f258
...@@ -8,7 +8,7 @@ import numpy as np ...@@ -8,7 +8,7 @@ import numpy as np
from gm_rpcd.all import bind from gm_rpcd.all import bind
from utils.cache import redis_client_db from utils.cache import redis_client_db
from utils.message import (send_msg_to_dingtalk, send_performance_msg_to_dingtalk) 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") MODEL_PATH = os.path.join(os.getcwd(), "_models")
INDEX_PATH = os.path.join(MODEL_PATH, "faiss_personas_vector.index") INDEX_PATH = os.path.join(MODEL_PATH, "faiss_personas_vector.index")
...@@ -22,7 +22,7 @@ def match_tractate_by_device(device_id, n=10): ...@@ -22,7 +22,7 @@ def match_tractate_by_device(device_id, n=10):
try: try:
if device_id not in ["0", "unknown", "87654"]: if device_id not in ["0", "unknown", "87654"]:
time_begin = time.time() 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 = [] res = []
if business_tags: if business_tags:
vectors = [] vectors = []
......
...@@ -7,12 +7,13 @@ def get_user_portrait_tag3_redis_key(device_id): ...@@ -7,12 +7,13 @@ def get_user_portrait_tag3_redis_key(device_id):
return "doris:user_portrait:tag3:device_id:" + str(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, 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))
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}
res = {tag: float(score) for tag, score in new_d.items() if float(score) >= limit_score} return list(res.keys())[:tags_num]
return list(res.keys())
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) portrait_key = get_user_portrait_tag3_redis_key(device_id)
if redis_client2.exists(portrait_key): if redis_client2.exists(portrait_key):
user_portrait = json.loads(redis_client2.get(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): ...@@ -37,3 +38,11 @@ def get_user_portrait_tag3_from_redis(device_id, limit_score=0, tags_num=5):
"business_tags": business_tags "business_tags": business_tags
} }
return {} 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