如何对短信日志数据记录做数据分类?
感谢邀请:
机器学习按性质来看,可以分为三大类:分类(监督)回归(监督)聚类(半监督)垃圾短信通常用已标记的短信数据,对未知的短信进行判断,其属于机器学习中的分类性质。在Python中有很多机器学习的模块,比如Sklearn、Tensorflow、Caffe等,可以很方便地调用一些机器学习的算法。垃圾短信识别从技术方法上可以使用朴素贝叶斯机器学习模型对短信进行分类:
数据集用的常见的80w条带标签的中文短信,下载链接https://github.com/hrwhisper/SpamMessage/blob/master/data/%E5%B8%A6%E6%A0%87%E7%AD%BE%E7%9F%AD%E4%BF%A1.txt
1:数据处理先看看数据的样子:
import pandas as pd data = pd.read_csv(r"H:\RubbishMessage\data\80w.txt",encoding='utf-8',sep=' ',header=None) data.head()
最后一列为短信的内容,倒数第二列则是短信的类型,0表示正常短信,1表示垃圾短信。然后,我们对短信内容按照不同的类型(正常短信和垃圾短信)进行分割和分词:
# 垃圾短信
import jieba
spam = data[data[1] == 1]
spam[2] = spam[2].map(lambda x:' '.join(jieba.cut(x)))
spam.head()
# 正常短信
normal = data[data[1] == 0]
normal[2] = normal[2].map(lambda x:' '.join(jieba.cut(x)))
normal.head()
分别将不同类型分词后的短信保存为不同的文件:
spam.to_csv('soam.csv',encoding='utf-8',header=False,index=False,columns=[2]) normal.to_csv('normal.csv',encoding='utf-8',header=False,index=False,columns=[2])
模型选择和训练
在此我们没有选择Sklearn或是其他的深度学习库,而是选用NLTK自然语言处理库来进行贝叶斯分类。导入模块:
import nltk.classify.util from nltk.classify import NaiveBayesClassifier from nltk.corpus import PlaintextCorpusReader import random
加载刚刚导出的短信文件:
加载短信语料库 message_corpus = PlaintextCorpusReader('./',['soam.csv','normal.csv']) all_message = message_corpus.words()
定义一个特征函数,用于生成特征:
def massage_feature(word,num_letter=1): return {'feature':word[-num_letter:]}
对短信特征进行标记提取:
labels_name = ([(massage,'垃圾') for massage in message_corpus.words('soam.csv')]+[(massage,'正常') for massage in message_corpus.words('normal.csv')]) random.seed(7) random.shuffle(labels_name)
训练并预测模型
from nltk.classify import accuracy as nltk_accuracy featuresets = [(massage_feature(n),massage) for (n,massage) in labels_name] train_set,test_set = featuresets[2000:],featuresets[:2000] classifier = NaiveBayesClassifier.train(train_set)
最后,咱们看看预测的准确率怎么样:
print('结果准确率:',str(100*nltk_accuracy(classifier,test_set))+str('%'))
在没有调整优化参数的情况下,有百分之八十几的准确率,后续调节参数,进行优化即可。
第二个方法你可以使用NLPIR大数据语义智能分析平台对短信数据的分析挖掘,具体功能如下:
1. 精准采集:对境内外互联网海量信息实时精准采集,有主题采集(按照信息需求的主题采集)与站点采集两种模式(给定网址列表的站内定点采集)。可帮助用户快速获取海量信息,尤其是境外信息与情报的挖掘。
2.文档转换:对doc、excel、pdf与ppt等多种主流文档格式,进行文本信息格式转换,信息抽取准确率极高,效率达到大数据处理的要求。
3. 新词发现(新词发现+关键词提取):新词发现能从文本中挖掘出具有内涵新词、新概念,用户可以用于专业词典的编撰,还可以进一步编辑标注,导入分词词典中,提高分词系统的准确度,并适应新的语言变化;关键词提取能够对单篇文章或文章集合,提取出若干个代表文章中心思想的词汇或短语,可用于精化阅读、语义查询和快速匹配等。
2. 批量分词:对原始语料进行分词、自动识别人名地名机构名等未登录词、新词标注以及词性标注。可在分析过程中,导入用户定义的词典。
5. 语言统计:针对切分标注结果,系统可以自动地进行一元词频统计、二元词语转移概率统计(统计两个词左右连接的频次即概率)。针对常用的术语,会自动给出相应的英文解释。
6. 文本聚类:能够从大规模数据中自动分析出热点事件,并提供事件话题的关键特征描述。同时适用于长文本和短信、微博等短文本的热点分析。
7. 文本分类:包括专家规则类与机器训练分类,针对事先指定的规则和示例样本,系统自动从海量文档中识别并训练分类。NLPIR深度文本分类,可以用于新闻分类、简历分类、邮件分类、办公文档分类、评论数据分类等诸多方面。
8. 摘要实体(自动摘要+实体抽取):自动摘要能够对单篇或多篇文章,自动提炼出内容的精华,方便用户快速浏览文本内容。实体提取能够对单篇或多篇文章,自动提炼出内容摘要,抽取人名、地名、机构名、时间及主题关键词;方便用户快速浏览文本内容。
9.智能过滤:对文本内容的语义智能过滤审查,内置国内最全词库,智能识别多种变种:形变、音变、繁简等多种变形,语义精准排歧。
10.情感分析:针对事先指定的分析对象,自动分析海量文档的情感倾向:情感极性及情感值测量,并在原文中给出正负面的得分和句子样例。
11. 文档去重:能够快速准确地判断文件集合或数据库中是否存在相同或相似内容的记录,同时找出所有的重复记录。
12全文检索:JZSearch全文精准检索支持文本、数字、日期、字符串等各种数据类型,多字段的高效搜索,支持AND/OR/NOT以及NEAR邻近等查询语法,支持维语、藏语、蒙语、阿拉伯、韩语等多种少数民族语言的检索。
13. 编码转换:自动识别文档内容的编码,并进行自动转换,目前支持Unicode/BIG5/UTF-8等编码自动转换为简体的GBK,同时将繁体BIG5和繁体GBK进行繁简转化。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有