serverless在标签系统的应用

2020-12-29 11:11:23 浏览数 (1)

背景

  大部分业务系统,都有丰富的数据,比如商品,用户信息,物流信息等等。这里以电商为例,一个电商系统都有品类丰富的商品,用户数据,,如何对这些商品归门别类,如何去发掘这些商品的特性都是一个难题。难点在于商品种类多,以国内某电商为例,spu维度商品多达三百多万,size维度商品更是有两千万。这些商品被录入资料的时候信息往往是不准确的,一是因为商家为了搜索流量,会给商品加上各种不存在的属性,比如冬天的衣服,可能商家会加上夏天的标签,这样用户搜索夏装也能搜索出来。还有一点是资料维护不全,很多商品资料就简单几句描述,这些商品很可能就会淹没在海量商品中。除此之外,如何发掘商品的动态特征也不是人工能发现的,比如商品的限量趋势,动销率,口碑等等。那么就需要有一个手段,去挖掘商品的特征。

方案设计

  接下来会通过Python的jieba和snownlp惊醒关键词提取和摘要。

首先初始化项目:

代码语言:txt复制
li@HAIMINGLI-MB0 scf-tag % scf init --name nlp_demo
      _____  ______ ______ ______ __     ____
     / ___/ / ____// ____// ____// /    /  _/
     __  / /    / /_   / /    / /     / /  
    ___/ // /___ / __/  / /___ / /___ _/ /   
   /____/ ____//_/     ____//_____//___/ 
[ ] Initializing project...
[>] Template: /Users/li/.pyenv/versions/3.6.5/lib/python3.6/site-packages/tcfcli/cmds/init/templates/tcf-demo-python
[>] Output-Dir: .
[>] Project-Name: nlp_demo
[>] Type: Event
[>] Runtime: python3.6
[*] Project initialization is complete

然后安装所需要依赖:

代码语言:txt复制
li@HAIMINGLI-MB0 nlp_demo % pip3 install --target=./ jieba snownlp
Collecting jieba
  Downloading http://pypi.doubanio.com/packages/c6/cb/18eeb235f833b726522d7ebed54f2278ce28ba9438e3135ab0278d9792a2/jieba-0.42.1.tar.gz (19.2MB)
    100% |████████████████████████████████| 19.2MB 1.1MB/s 
Collecting snownlp
  Downloading http://pypi.doubanio.com/packages/3d/b3/37567686662100d3bce62d3b0f2adec18ab4b9ff2b61abd7a61c39343c1d/snownlp-0.12.3.tar.gz (37.6MB)
    100% |████████████████████████████████| 37.6MB 96.5MB/s 
Installing collected packages: jieba, snownlp
  Running setup.py install for jieba ... done
  Running setup.py install for snownlp ... done
Successfully installed jieba-0.42.1 snownlp-0.12.3

然后编辑index.py加入关键词提取逻辑:

代码语言:txt复制
import logging
import jieba.analyse
from snownlp import SnowNLP

logging.basicConfig(level=logging.NOTSET)

def FromSnowNlp(text, summary_num):
    s = SnowNLp(text)
    return s.summary(summary_num)

def FromJieba(text, keywords_type, keywords_num):
    if keywords_type == "tfidf":
        return jieba.analyse.extract_tags(text, topK=keywords_num)
    elif keywords_type == "textrank":
        return jieba.analyse.textrank(text, topK=keywords_num)
    else:~
        return None

def main_handler(event, context):
    text = event["text"]
    summary_num = event["summary_num"]
    keywords_num = event["keywords_num"]
    keywords_type = event['keywords_type']
    return {"keywords": FromJieba(text, keywords_type, keywords_num), "summary": FromSnowNlp(text, summary_num)}

最后人工把代码上传到云函数控制台。即可实现关键词提取和文本摘要提取,为商品打标签准备好基础数据。

0 人点赞