构建程序
本例提供了实现中文信息过滤功能的程序包,用户可以下载(fss_examples_message_filtering.zip)、学习使用。
创建程序包
本例使用Python语言实现中文信息过滤的功能,有关函数开发的过程请参考Python函数开发。本例不再介绍业务功能实现的代码,样例代码目录如图1所示。
文件目录里的sensitivewords.txt文件存储了本代码的敏感词库,可以自定义敏感词,每个敏感词单独为一行。
因为项目用到了jieba分词包和敏感词库,所以需要将分词包和词库文件同样放在fss_examples_message_filtering文件下面。
index.py为函数执行的入口文件,代码片段如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # -*- coding:utf-8 -*-
import json
import jieba
import os
import sys
reload(sys)
sys.setdefaultencoding(´utf-8´)
def is_ok_publish(body, over = 0.1):
´´´
body中敏感词数量超过10%,此消息不能发出
´´´
words = list(jieba.cut(body)) #使用jieba分词包,对传入消息进行分词。example: body:我爱中国 words: ["我","爱","中国"]
filename = os.environ.get(´RUNTIME_CODE_ROOT´) + ´/sensitivewords.txt´ # 读取敏感信息库的内容,注意文件路径,sensitivewords是用户上传的敏感词列表,随代码一起上传
with open(filename)as file:
sensitive_words = file.read().decode(´gbk´).split(´\r\n´) #注意系统不同,可能换行符也不同,(windows下面亲测有效)
num = 0 #计算消息中包含的敏感词和词库中敏感词重合的数目
for each in (set(words) & set(sensitive_words)):
num = num + 1
length = len(set(words))
rate = float(num)/length
if(rate >= over): #敏感词数量超过词数的10%,判定该消息敏感,拒绝发布
return False
return True #可以发布
def handler (event, context):
msg = event[´Messages´] # 从dms队列中拉取消息
body = msg[0]["body"] # 读取消息的正文部分
flag = is_ok_publish(body) #判断该正文是否敏感
|
上传代码至OBS桶
登录对象存储服务控制台,进入obs-mycode桶的对象界面中,上传样例程序包至OBS桶,如图2所示。
进入fss_examples_message_filtering文件详情页,查看文件链接:https://obs-mycode.obs.myhuaweicloud.com/fss_examples_message_filtering.zip。
创建函数
创建函数的时候,必须选择委托包含DMS访问权限的委托,否则不能使用DMS服务。
- 登录函数工作流控制台,在左侧导航栏选择“函数 > 函数列表”,进入函数列表界面。
- 单击“创建函数”,进入创建函数流程。
- 填写函数配置信息
- 输入基础配置信息,如图3所示。
函数名称输入:“fss_examples_message_filtering”
所属应用选择默认的“default”。
描述输入:“中文过滤”
委托名称选择创建委托中创建的“serverless_dms”
- 输入代码信息,如图4所示。
运行时语言选择:“Python2.7”
函数执行入口输入:“index.handler”
代码选择“从OBS上传文件”,OBS链接URL输入上传代码至OBS桶中的地址:https://obs-mycode.obs.myhuaweicloud.com/fss_examples_message_filtering.zip
- 单击右侧“创建函数”,完成函数创建。
- 输入基础配置信息,如图3所示。
- 进入fss_examples_message_filtering函数详情页,在“配置”页签,输入环境信息,如图5所示。
内存选择:“512”
超时时间输入:“40”
- 单击页面右上角“保存”,保存配置信息。
