具体实施方式
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接相合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在二个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在二个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员应当理解,在本申请的说明书中,“首先”、“其次”、“第一”、“第二”、“第一步”、“第二步”等用语,如无特别声明并不表示对先后顺序的限制。例如,“步骤三”可以在“步骤一”之前,“第四步”可以和“第二步”同时进行。
关于垃圾文本识别的方法,业界的常规方法一般是人工收集文本垃圾库,并基于该库构建一个文本分类器。该类方法一般会采用一些定制化的文本特征,或者特有的相似度计算方式。
譬如采用simHash的相似性快速查询算法(参照公开号为CN104462062A的中国发明“一种文本反垃圾的方法”),这类方法步骤可以概括如下:先对文本分词,去除停止词,针对单个词计算hash,hash合并,得到simHash,比较待判定文本和垃圾库中文本的汉明距离,并对距离低于某阈值的文本判定为垃圾文本。
又譬如采用尝试采用加权的方式构建显著性特征,期望提高识别垃圾文本的准确性的方法(参照公开号为CN101477544的中国发明“一种识别垃圾文本的方法和系统”)。该类分类器一般是依靠静态的垃圾文本库训练出来的,学习到的规则或者模式只能应对已知的文本模式,难以快速地应对未出现在垃圾库中的新词和新模式。也就是说,当文本出现了新的未在垃圾文本库中出现的垃圾文本词,该类分类器无法有效识别,即识别算法被垃圾发布者攻破。对应的准确率出现骤降,这严重影响了业务的稳定性。针对该类方法的一些替补性工作,需要人工去维护更新垃圾文本库。人工维护成本很高,难以全面掌握各种新词和新模式,这显然不是一个有效地可扩展途径。
在业务应用中,首先要识别垃圾文本的准确率要高,覆盖率足够高,尽量把垃圾文本都识别出来,减少漏网之鱼。而且识别速度要快,最好在毫秒级内完成。进一步地,要求性能稳定,能应对新词新模式,让识别的准确率不会出现大的波动或者下降。传统的方法显然难以同时满足以上的业务需求,特别是难以同时平衡识别速度和迭代更新这两大难题。
为了解决以上的问题,本公开针对游戏玩家在聊天室中发表的文本,设计一个可实时识别判断垃圾文本的方法。相对于传统单纯依靠静态垃圾文本库的方法,本发明采用双层耦合的设计方法,由实时和离线两部分耦合构成。实时识别器能在毫秒级内做判断,准确率和覆盖率都较高;而离线部分会根据文本的数学分布状况自迭代更新实时模型,用于识别新词和新模式。在实验中,离线更新模式时间为10分钟内。简单地说,针对垃圾发布者新构建的垃圾文本,在实时识别中大部分都会被发现;对其中新词类的漏网之鱼,离线识别器会每10分钟统计聊天文本的各种数学分布,发现新词和新模式,自动更新实时模型。换句话说,模型对大多数新的垃圾文本的反应时间是10分钟内;或者说10分钟内模型就能对新垃圾形成新的免疫能力。基于这种耦合的创新设计,本公开有效解决了实时判断和迭代更新等两大业务关键难题,在判定准确率和稳定性都比传统方法有显著的显著提升。
另外,本领域技术人员应当知悉,本公开涉及的技术方案也同样可以适用于短消息(SMS)、电子邮件、即时通信(IM)等系统的垃圾信息识别和过滤。
参照图1,根据本公开的一个方面,提供了一种可迭代更新的垃圾文本识别方法,其包括以下步骤:对待测文本分词,得到一个或多个待测词;利用TF-IDF算法对待测词加权;基于加权后的待测词,建立对应的特征向量;利用垃圾文本训练集,建立用于区分垃圾文本的分类模型;将特征向量代入分类模型,判断对应的待测文本是否为垃圾文本。以实现对线上聊天室、信息或邮件等即时或非即时的文本做判定,判定速度快,而且准确率和覆盖率高。
参照图1-7,根据本公开的又一个方面,提供了一种可迭代更新的垃圾文本识别方法,该方法的实施基于两个功能单元,即实时文本识别单元和离线迭代更新单元(参照图2)。其中,实时文本识别单元负责对线上聊天室即时的聊天文本做判定,离线迭代更新单元负责基于一个时间区间的判定统计结果,发现未记录的新词和文本新模式,及时更新实时单元,形成对新垃圾词的免疫。首先,待测文本在实时文本识别单元中经过初步判定和分类模型判定,得到该待测文本是否为垃圾文本的判断结果并保存。然后,离线迭代更新单元基于一个时期内的判断结果,更新用于训练分类模型的垃圾文本训练库和初步判定的标准,从而更新实时文本识别单元。示例性地,初步判定模块为实行利用TF-IDF算法对待测词加权的步骤之前的模块,分类模型判定模块为实行利用TF-IDF算法对待测词加权的步骤至将特征向量代入分类模型,判断对应的待测文本是否为垃圾文本的步骤的模块。
实时文本识别单元
具体而言,参照图1,实时文本识别单元包括以下步骤:对待测文本分词,得到一个或多个待测词;利用TF-IDF算法对待测词加权;基于加权后的待测词,建立对应的特征向量;利用垃圾文本训练集,建立用于区分垃圾文本的分类模型;将特征向量代入分类模型,判断对应的待测文本是否为垃圾文本。以实现对线上聊天室、信息或邮件等即时或非即时的文本做判定,判定速度快,而且准确率和覆盖率高。
一个或多个实施例中,参照图3所示为基于初步判定模块的流程图。获取用户发出的待测文本,且对待测文本分词之前,基于垃圾文本训练集的文本长度统计规律,过滤待测文本,从而加快判断的速度。垃圾文本训练集即用于训练分类模型的语料库。以游戏聊天室为例,正常玩家的聊天文本长度较短;而垃圾文本则相反,一般含有各种广告信息,还有很长的联系方式,包括QQ、微信、YY、频道等,长度一般较长;其中该规则中长度的阈值主要参考两类因素,包括语素考虑,譬如店铺名称+类型+内容+价格的文本长度;以及根据过往语料考虑,譬如通过历史聊天数据,统计区分正常语句与垃圾语句的最长字数。在此,基于垃圾文本训练集的文本长度统计规律来指定过滤长度的阈值(例如,在垃圾文本训练集中95%以上的垃圾文本集中在20个字节以上,则以20个字节作为过滤待测文本的阈值),如果用户发出的待测文本的长度小于该阈值,则直接认定该待测文本为正常文本,无需进行进一步的判断;如果用户发出的待测文本的长度大于等于该阈值,则需要对该待测文本进行进一步的分词和代入分类模型分析。由于基于垃圾文本训练集通过离线迭代更新单元的半人工或自动方式而不断更新,因此过滤长度的阈值也随之动态更新,从而保证过滤的精度和效率。
另外,可选地,服务器为每个发言的玩家账户设定对应的用户信用值,用户信用值基于用户的发出文本是否为垃圾文本的判断结果而更新。在对用户发出的待测文本进行初步判定时,如果用户的信用值高于预设的阈值(即被判断为正常玩家),则其发出的所有聊天文本都默认是正常的非垃圾文本,无需再进行分词和分类模型判断了;否则,将实行进一步的分词和分类模型判断等。通过建立用户信用值的评分规则可以达到两大效果,包括降低误判概率,避免影响玩家正常交流,和对不同习惯和发文历史的用户建立有针对性的处理流程,大幅减少分类模型层的运算量。
在一个或多个实施例中,在对待测文本分词的步骤中,包括以下子步骤:基于分词词典,构建待测文本的有向无环图,其中使用HMM模型的viterbi算法对该分词词典中未收录词进行分词处理;利用动态规划寻找有向无环图的最大概率路径;输出对应最大概率路径的分词结果。其中,分词(Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在以英文为代表的拉丁语系语言的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂且困难得多。例如,对于中文文本“对随地吐痰者给予处罚”的理解,“随地吐痰者”本身划分为一个词还是多个词(例如划分为“随地”“吐痰者”或者“随地吐”、“痰者”等),因此,正确的分词对句子的理解有着至关重要的影响。
举例而言,首先基于前缀词典(分词词典)进行词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(Directed Acyclic Graph,缩写为DAG)。其中,前缀词典是指词典中的词按照前缀包含的顺序排列,例如词典中出现了“上”,之后以“上”开头的词都会出现在这一块,例如“上海”,进而会出现“上海市”,从而形成一种层级包含结构。在一个或多个实施例中,分词词典包括后述的过滤词典,由于过滤词典的内容可以通过离线迭代更新单元动态调整,因此可以提高分词词典的分词效率。另外,在一个或多个实施例中,包括了多个分词词典,各分词词典的内容有所差异。基于发出待测文本的用户的信用值,选择在对待测文本分词时的对应的分词词典。例如,当用户的信用值较高时,则选用分词的粒度较大的分词词典(例如分词至“上海市”后即停止分词,而无需进一步分为“上海”、“市”等),以简化分词过程;当用户的信用值较低时,则选用分词的粒度较小的分词词典,以实现更加精确的分词。信用值的概念将在下文进行详细地说明。然后,采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。对于分词词典中未登录词,采用了基于汉字成词能力的隐马尔可夫模型(Hidden Markov Model,缩写为HMM),使用了Viterbi算法,最终输出对应最大概率路径的分词结果,作为进一步分类模型的判断依据。
在一个或多个实施例中,该方法还包括以下步骤:在利用TF-IDF算法对待测词加权之前,利用过滤词典匹配待测词,其中,过滤词典包括黑名单和白名单;如果过滤词典的黑名单匹配待测词,则认定该对应该待测词的待测文本为垃圾文本;如果过滤词典的白名单匹配待测词,则不再识别该待测词。由于过滤词典根据识别的历史动态更新,因此可以提高识别方法的适应性。
优选地,基于发出待测文本的用户的信用值,选择利用TF-IDF算法对过滤后的待测词进行加权处理时的权重,以提高用户的针对性。
利用TF-IDF算法对待测词加权。TF-IDF(Term Frequency-Inverse DocumentFrequency,词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。词语筛选采用业界常用的TF-IDF排序筛选方法,从而把一些区分度小的词过滤掉,降低待测词的维度。特征生成采用业界常用的词语0-1表示方法,生成对应待测词的特征向量。
参照图4,利用垃圾文本训练集,建立用于区分垃圾文本的分类模型。其中,垃圾文本训练集用于训练分类模型(分类器),可由本领域技术人员适宜选择,也可以按照一定的规律在识别的同步扩充和精简。分类模型采用支持向量机(SVM)分类器,SVM是一种传统的分类模型,具有泛化性,预测速度快。SVM能找到最优超平面,即最大化间隔平面,使得训练集中的点距离分类面尽可能的远。根据训练集,寻找正常文本和垃圾文本之间最大的分割平面,使得正常文本和垃圾文本能尽可能的被区分开。
参照图5,将特征向量代入分类模型,判断对应的待测文本是否为垃圾文本。具体而言,待测文本在经过分词、筛选和特征生成等步骤后,以特征向量的形式代入分类模型,以判断待测文本是否为垃圾文本。判断的结果将发送至离线迭代更新单元,用于更新实时文本识别单元。
离线迭代更新单元
由图2可知在实时判定阶段,有三个模块是需要不断更新,用于动态地适应一些新垃圾文本,包括用户信用值、过滤词典和垃圾文本训练集。
关于用户信用值的更新。基于待测文本是否为垃圾文本的判断,更新发出该待测文本的用户的信用值。并且基于发出待测文本的用户的信用值,选择在对待测文本分词时的对应的分词词典和/或利用TF-IDF算法对过滤后的待测词进行加权处理时的权重,以降低判断的运算量,提高判断的效率。
举例而言,参照图6,服务器为每个发言的玩家账户设定对应的用户信用值,用户信用值基于用户的发出文本的判断结果而变化。当玩家发出的文本被判断为非垃圾文本时,则提高玩家的用户信用值;当玩家发出的文本被判断为垃圾文本时,则降低玩家的用户信用值。另外,也可以根据对用户一段时期内的过往发言文本的判断等,当用户信用值高于一预设的阈值时,将用户加入白名单,不再审核用户发言。此外,在一些实施例中,用户的个人装备及战力值也作为信用值的考量标准,由于购买外装且战力值得分较高的用户,通常为正常玩家,故将这部分玩家加入用户白名单,以增加白名单的玩家数,每日更替。当用户的信用值低于一预设阈值时,将用户加入用户黑名单,并采取禁止该用户发言等惩罚措施。
关于过滤词典的更新,如果待测文本被判断为非垃圾文本,则基于统计该待测文本的待测词在一定期间内的人均发言使用次数和/或在服务器发言文本中的占比,更新过滤词典。更新过滤词典既包括黑名单也包括白名单,具体而言,如果待测文本被判断为非垃圾文本,则基于统计该待测文本的待测词在用户人均发言使用次数和/或在服务器发言文本中的占比,根据词频规则找出一些漏判的黑名单词,更新过滤词典的黑名单词袋;考虑到信用值高的白名单用户的发言一般是正常语句,通过统计信用值高的白名单用户的发言词频,根据词频规则找出一些不在过滤词典的白名单词袋的词,更新过滤词典的白名单词袋。
举例而言,当用户发出的待测文本被判断为非垃圾文本后,比较对应待测文本的待测词在预设的一定期间内的人均发言使用次数和/或在服务器发言文本中的占比是否超过预设的阈值,如果超过该阈值且不再过滤词典当中,则加入至过滤词典的白名单内。反之,则从过滤词典中删除该词(例如,考虑语句在不同服务器出现的频率,低于0.04的语句不进入判断过程,减少误判语句)。考虑语句去重字数,解决类似“杀杀杀杀杀杀杀杀杀杀杀杀”的问题,去重字数少于7的语句不进入判断过程。过滤词典的更新过程可参照图7所示。
关于垃圾文本训练集的更新。在一个或多个实施例中,该识别方法还包括以下步骤:如果将人工审核为垃圾文本的待测文本判断为非垃圾文本(误判的文本),则将该待测文本加入垃圾文本训练集,并更新(重新训练或增量训练)分类模型。通过离线统计在实时识别单元中误判的文本,丰富垃圾文本训练集,用于重新训练分类器,从而更新分类模型。
其中,误判文本的界定由两方面来实现,包括半自动审核和规则审核。其中半自动审核是针对玩家的反馈信息、客服的反馈文本、以及运营人员的反馈文本,经过文本收集,聚类整合后,呈现聚类去重后的文本做人工审核,并找出一些新模式的垃圾文本样例,加入垃圾库。而规则的方法有以下的一些方案:
●考虑到不是所有交易语句都是垃圾语句,将交易语句(除出金外)是否为垃圾语句的判断交由过滤词典判断;
●考虑到大战误判比例较高,故添加大战的正常样本、漏判的广告语句;
●增加停用字袋,不考虑停用字对语句的影响,删除去除停用字后为空的语句;
●考虑到“金”字在垃圾语句的频率较高,故增加与“金”有关的正常语句,解决出蝶金、出监本、收金、接成就、代做切糕成就、出售切糕成就的样本;
●调整样本,将成就、代清、代开改为正常语句;
●增加复制党、DPS、老板包团的样本,解决复制党及近似垃圾语句的包团语句。
规则审核(自动审核)则信用值较低的黑名单用户发出的文本大多数是垃圾文本,而信用值较高的白名单用户发出的文本大多数是非垃圾文本,这可以作为标注的训练数据,用于更新训练库。具体而言,将信用值低于预设阈值的用户发出待测文本中,文本的长度和重复频率满足预设条件的待测文本作为垃圾文本加入垃圾文本训练集,并更新分类模型。其中,该信用值至少部分基于用户的垃圾文本识别的历史。用户的个人装备及战力值也可以作为信用值的考量标准之一。
另外,为了进一步让该标注数据更加准确,可以利用一些基于长度、词频率、文本的重复频率等是否高于阀值的规则过滤,获得更准确的垃圾文本的标注集。
在一些实施例中,游戏服务器将人工反馈的垃圾文本样例和/或按照上述规则筛选出的垃圾文本样例加入标识符后作为待测文本输入至实时文本识别单元,若实时文本识别单元未能将该垃圾文本样例判断为垃圾文本,则将该垃圾文本样例加入垃圾文本训练集,并更新分类模型,从而实现对新类型垃圾文本识别能力的更新迭代。优选地,选用的支持向量机为支持增量学习算法的支持向量机。
识别效果验证单元
为了验证该识别方法的技术效果,本公开采用识别效果验证单元对识别方法的识别率进行验证。该识别效果验证单元由两部分组成,包括离线验证和在线验证。
离线验证:随机筛选1万条聊天文本,通过游戏客服人工审核,标注文本是否垃圾,即对每条文本做标注,正常/垃圾。该标注数据与本发明输出的预测结果做匹配,统计准确率和覆盖率。其中准确率定义为匹对的样本数除以本发明预测的垃圾文本数;覆盖率定义为匹对的样本数除以客服人工标注的总垃圾文本数。经验实际数据匹配,本发明算法的准确率为93.2%,覆盖率为85.1%;综合考虑准确率和覆盖率的F1值(2×准确率×覆盖率/(准确率+覆盖率))为88.9%。另外,判定的速度为110条/秒,也就是判定一条文本的时间是毫秒级别。
在线验证:把本公开涉及的技术方案嵌入部署到网络游戏剑网3的聊天系统中,对垃圾文本进行拦截。通过统计一个月系统的稳定性,具体地,在一个月中随机10天,每天随机筛选2000千条聊天文本,通过游戏客服人工审核,标注文本是否垃圾。针对每个批次统计本发明预判结果的准确率和覆盖率。从实验结果发现,本发明的准确率稳定在92%附近,覆盖率稳定在为85%附近;准确率的标准方差是0.31,覆盖率的标准方差是0.29。相对地,传统方法没有自迭代更新的模块,利用常规分类模型的预判结果,准确率和覆盖率会随着时间的推移出现下降;准确率的标准方差是7.21,覆盖率的标准方差是8.34。由此可见,本公开涉及的技术方案在预判性能稳定性上显著优于传统方法。
根据本公开的又一个方面,提供了一种可迭代更新的垃圾文本识别系统,包括:第一模块,对待测文本分词,得到一个或多个待测词;第二模块,利用TF-IDF算法对待测词加权;第三模块,基于加权后的待测词,建立对应的特征向量;第四模块,利用垃圾文本训练集,建立用于区分垃圾文本的分类模型;以及第五模块,将特征向量代入分类模型,判断对应的待测文本是否为垃圾文本。
本公开设计新算法,采用实时+离线的双层耦合方式,综合考虑实时性和迭代更新速度。该算法能在毫秒级内实时地针对文本内容做识别判断,能自迭代更新模型(在实验中,10分钟会自动更新模型),有效拦截新词/新模式等垃圾文本形态。进一步地,本发明把识别的结果应用部署嵌入于游戏剑网3聊天系统中,有效拦截大量的垃圾广告,净化了聊天的环境,创造巨大的商业价值。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。