背景
大部分业务系统,都有丰富的数据,比如商品,用户信息,物流信息等等。这里以电商为例,一个电商系统都有品类丰富的商品,用户数据,,如何对这些商品归门别类,如何去发掘这些商品的特性都是一个难题。难点在于商品种类多,以国内某电商为例,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)}
最后人工把代码上传到云函数控制台。即可实现关键词提取和文本摘要提取,为商品打标签准备好基础数据。