垃圾短信识别的主要步骤如下所示:
1.数据获取,获取所需数据集;
2.数据预处理,对数据进行文本中文分词、停用词过滤处理等;
3.建模准备,将分词结果分别转换成文档-词条矩阵,并划分测试集与训练集;
4.模型构建与评价,构建随机森林模型,并建立评价指标精确率、召回率、F1值对模型分类效果进行评价。
5.分析结果,总结和建议。
目前,某运营商已经积累了大量的垃圾短信数据。本案例收集了295755条短信文本数据,字段说明如下:
字段名称 | 类型 | 字段说明 |
---|---|---|
_c1 | 整型 | 0表示正常短信,1表示垃圾短信 |
_c2 | 字符串 | 短信内容 |
经过加工处理数据如图所示:
为了方便识别字段含义,这里接入一个 元数据编辑 节点取别名,如图:
1、分词
中文分词是指将一整段文字切分为具有最小语义的词条信息,即以词作为基本单元,使用计算机自动对中文文本进行词语的切分,将文本数据转化为机器可识别的形式。英文单词之间是由空格作为分界符的,中文则是由字为基本书写单位,词语之间没有明显的区分符,因此,中文分词是中文信息处理的基础与关键。分词结果的准确性,对后续文本挖掘有着重要影响。如在进行特征的选择时,不同的分词效果将影响词语在文本中的重要性,从而影响特征的选择。
这里接入一个 分词 节点将text列进行分词,_c2_seg为分词后的字符串型结果,_c2_seg_words为分词后的WrappedArray类型结果,分词输出结果如图:
2、停用词处理
中文表达中常常包含许多功能性词语,相比于其它词汇,功能性词语并没有太多的实际含义。最常用的功能性词语是限定词,如“的”、“一个”、“这”、“那”等。这些词语的使用较大的作用仅仅是协助一些文本的名词描述和概念表达。在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为停用词。
我们选择_c2_seg_words列,接入一个 停用词处理 节点,自定义停用词列表如图:
输出结果如图:
3、TF-IDF
由于文本数据无法直接用于建模,因此需要将文本表示成计算机能够直接处理的形式,即文本数字化。TF-IDF算法即将文本数据进行数值化。TF意思是词频,IDF意思是逆文本频率指数,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF值越高,说明该词越重要。
我们接入 TF-IDF 算法进行抽取变换,输出结果如图:
整个的数据预处理流程图如下:
本案例采用 随机森林 算法模型,通过特征选择_c2_seg_words_filtered_idf列,目标标签为target,整体模型训练预测如图:
随机森林参数配置如图:
通过 评估 节点接入,如构建模型的整体模型训练预测图所示。评估结果如图:
分析结果得出F1分数达到0.91,说明该模型效果比较不错的。
该模型能较好地识别出垃圾短信,有效进行垃圾短信过滤,解决运营商及用户的困扰。并且由上述分析提出以下建议:
本案例运用短信数据,对垃圾短信进行识别。重点介绍了文本数据的处理及转换过程,以及随机森林文本分类算法在实际案例中的应用。主要实现了垃圾短信的精确识别,通过获得以上挖掘结果,为相关运营商提供一种解决垃圾短信过滤问题的方案。