diff --git a/apps/worker/worker_app/tasks/viral_video.py b/apps/worker/worker_app/tasks/viral_video.py index 2f8f8b82a..58272d7eb 100644 --- a/apps/worker/worker_app/tasks/viral_video.py +++ b/apps/worker/worker_app/tasks/viral_video.py @@ -458,19 +458,54 @@ def _analyze_single_image( _pf = (_ppn.get("attrs") or {}).get("features", "") or "" _ptxt = _pn + " " + _pf # 服装关键词识别(常见上装/下装/裙装/套装) - _cloth_kws = ["衬衫","T恤","毛衣","针织衫","卫衣","外套","西装","夹克","风衣", - "大衣","羽绒服","马甲","背心","连衣裙","半身裙","短裙","长裙", - "牛仔裤","休闲裤","西裤","运动裤","短裤","旗袍","汉服","制服", - "polo衫","POLO衫","针织","毛衫","开衫","帽衫","皮夹克","皮衣"] + _cloth_kws = [ + "衬衫", + "T恤", + "毛衣", + "针织衫", + "卫衣", + "外套", + "西装", + "夹克", + "风衣", + "大衣", + "羽绒服", + "马甲", + "背心", + "连衣裙", + "半身裙", + "短裙", + "长裙", + "牛仔裤", + "休闲裤", + "西裤", + "运动裤", + "短裤", + "旗袍", + "汉服", + "制服", + "polo衫", + "POLO衫", + "针织", + "毛衫", + "开衫", + "帽衫", + "皮夹克", + "皮衣", + ] for _ckw in _cloth_kws: if _ckw in _ptxt: # 提取含关键词的短语(关键词前后4字) _ci = _ptxt.find(_ckw) - _start = max(0, _ci-6) - _end = min(len(_ptxt), _ci+len(_ckw)+2) + _start = max(0, _ci - 6) + _end = min(len(_ptxt), _ci + len(_ckw) + 2) _outfit_extract = _ptxt[_start:_end].strip(" ,,。.、") # 清理掉品牌名/产品名词的干扰(只取服装描述部分) - _outfit_extract = re.sub(r"^[\w一-龥]{0,2}(牌|品牌|的|款|女|男|新|装|大|小|长|短|厚|薄)", "", _outfit_extract) + _outfit_extract = re.sub( + r"^[\w一-龥]{0,2}(牌|品牌|的|款|女|男|新|装|大|小|长|短|厚|薄)", + "", + _outfit_extract, + ) if len(_outfit_extract) >= 2: _outfit = _outfit_extract break @@ -480,14 +515,24 @@ def _analyze_single_image( if _hair in ("自然发型", "无法判断"): _hair_color = "" _color_nodes = [n for n in nodes if n["tag"] == "color"] - _hair_kws_map = {"黑":"黑色","棕":"棕色","金":"金色","栗":"栗色","红":"红色", - "白":"白色","灰":"灰色","蓝":"蓝色","黄":"黄色","紫":"紫色"} + _hair_kws_map = { + "黑": "黑色", + "棕": "棕色", + "金": "金色", + "栗": "栗色", + "红": "红色", + "白": "白色", + "灰": "灰色", + "蓝": "蓝色", + "黄": "黄色", + "紫": "紫色", + } for _cn in _color_nodes: - _cname = (_cn.get("attrs") or {}).get("name","") or "" + _cname = (_cn.get("attrs") or {}).get("name", "") or "" # 小占比颜色更可能是发色(非主色的小面积色),且名称含头发/黑/棕/金等 _ccov = 0.0 try: - _ccov = float((_cn.get("attrs") or {}).get("coverage","0") or 0) + _ccov = float((_cn.get("attrs") or {}).get("coverage", "0") or 0) except Exception: pass for _hk, _hv in _hair_kws_map.items():