发明内容
本发明要解决的技术问题是:机器理解骂人文本的情感,并能用相应的文本自动回骂。目前还没有发现通过机器与人对骂的方法和系统来发泄情绪。针对上述问题,本发明提供一种基于机器文本对骂的情感发泄方法及系统。
一种基于机器文本对骂的情感发泄方法的主要技术步骤包括:
[1]采集用户的骂人文本
[2]利用文本情感分类模型完成文本情感分类,以判断用户的情感是否健康
[3]若文本情感不健康,则利用对骂文本知识库实现对骂文本知识推理,生成合适的对骂文本,否则转[5]
[4]推送对骂文本给用户
[5]从幽默笑话文本知识库中选择幽默笑话文本,然后推送选择的幽默笑话文本给用户。
其中文本情感分类模型的获取过程包含以下步骤:
(a)采集N个文本及其对应的情感类别
(b)构造每个人文本的特征向量
(c)构造训练数据,以文本特征向量为输入,其对应的情感类别为输出,构成训练样本集合
(d)采用训练样本集合,学习文本情感分类模型
(e)以M倍交叉验证方式选择文本情感分类模型的合适参数,进而获得对应参数的文本情感分类模型。
一种基于机器文本对骂的情感发泄系统,其特征在于其使用了本发明所述的方法,所述的系统包括:一个文本情感学习样本库,一个幽默笑话文本知识库,一个对骂文本知识库。系统还包括:骂人文本采集模块;骂人文本特征向量构造模块;文本情感分类模型学习模块;文本情感分类模块;幽默笑话文本推送模块;对骂文本知识推理模块;回骂文本推送模块。其中骂人文本采集模块的输出与骂人文本特征向量构造模块的输入连接;骂人文本特征向量构造模块的输出与文本情感分类模块的输入连接;文本情感分类模型学习模块的输出与文本情感分类模块的输入连接;文本情感分类模块的输出与幽默笑话文本推送模块的输入连接;文本情感分类模块的输出与对骂文本知识推理模块的输入连接;对骂文本知识推理模块的输出与回骂文本推送模块的输入连接。
有益效果
与现有技术相比,本发明的一种基于机器文本对骂的情感发泄方法及系统具有以下优点:
[1]与机器对骂,能骂任何难听的话而不用难为情,这样与用户的对骂更自然,更激烈,用户发泄效果更好。
[2]机器只对情感不健康的用户对骂,使得对骂更准确,发泄效果更好。
[3]机器对情感健康的用户不回骂,而是推送幽默笑话,这样情感健康的用户也能使用,应用更广泛。
[4]因为采用机器实现文本对骂,使得用户能在安静的环境用文本大骂发泄情绪,使用方便。
具体实施方式
本发明提出一种基于机器文本对骂的情感发泄方法及系统,结合附图和实施例说明如下。
如图1所示,为一种基于机器文本对骂的情感发泄方法的流程图,该方法包括以下步骤:
第一步:采集用户的骂人文本。
第二步:提取骂人文本的情感特征,形成一个文本特征向量,然后完成情感分类。这个过程的步骤如图2所示,由于骂人文本属于短文本,短文本的情感分类问题面临短文本的特征稀疏,短文本的相似性难以度量等问题,本发明采用情感词典解决。
(一)首先预处理骂人文本,包括去除停用词和中文分词。中文分词将一个汉字序列切分成一个一个单独的词,中文分词工具采用中国科学院计算所的ICTCLAS。
(二)中文分词后采用向量空间模型(VSM)提取特征,将文本转化为原始的特征向量di={(ti1,wi1),(ti2,wi2),...,(tin,win)},其中tin为特征项,它可以是字、词或短语;win为特征项的权重,表示tin在文本中的重要程度。本实施案例采用如下的TFIDF公式计算权重:
其中,为特征项t在文本中的权重,而为特征项t在文本的频率,N为训练文本的总数,nt为训练文本集中出现t的文本数,分母为归一化因子。该数值越大,特征项t反映的能力越好;该数值越小,特征项t反映的能力越差。
(三)根据VSM模型特征提取的文本向量的维数太高,本实施案例采用情感词典和互信息方法完成特征选择。情感词典包括各类情感中常出现的一些词、短语、语法结构等。基于情感词典的特征选择过程就是读取切分后的文本中的每个词语,扫描词典,选择具有情感色彩的词语或结构。互信息特征选择用来选择常规的特征,其步骤包括1)初始条件下,特征项集合中包含类别Ci
中出现的所有特征词2)对于每个词t,计算它与类别Ci的互信息 3)对于类别Ci中的所有特征词,按它们的互信息数值大小进行排序;4)选取一个特征向量维数的阀值,进行向量维数的压缩。最后将选择的两类特征合并得到最后的特征集,从而得到骂人文本的特征向量。
(四)采用支持向量机作为文本情感分类器,用其分类模型对骂人文本的特征向量分类,判断的情感类别为2类:健康(高兴、惊讶和平静),不健康(愤怒、悲伤、厌恶、恐惧)。本实施案例的支持向量机采用SVM light实现,核函数选择线性核函数。支持向量机文本情感分类器需要训练获取分类模型,训练过程如图3所示,包括步骤:获取大量的情感文本训练集,然后按分类过程中的方法对每个情感文本预处理,完成特征抽取,完成特征选择,形成情感文本集的特征向量空间,最后在此特征向量空间上训练支持向量机分类器,获得分类模型,并以10倍交叉验证方式选择文本情感分类模型的合适参数,进而获得对应参数的文本情感分类模型并保存,在利用支持向量机完成骂人文本的情感分类时使用。
第三步:若骂人文本的情感类别被分为健康类别,则从幽默笑话文本知识库中选择幽默笑话文本,并推送给骂人用户。
本实施案例采用的幽默笑话文本知识库的格式如下
序号 |
字段名称 |
字段语义解释 |
1 |
splang |
文本的语言类别 |
2 |
spvector |
文本特征向量 |
3 |
spwords |
文本内容 |
本实施案例采用简单的方法选择幽默笑话文本,它从幽默笑话文本知识库中随机抽取记录推送给骂人用户。
第四步:若骂人文本的情感类别分为不健康类别,则利用对骂文本知识库实现对骂文本知识推理,生成合适的对骂文本。对骂文本知识库是根据领域专家的建议预先建立的,建立骂人文本与回骂文本之间的对应关系。
本实施案例采用的对骂文本知识库格式如下
序号 |
字段名称 |
字段语义解释 |
1 |
culang |
骂人文本的语言类别 |
2 |
cuemotion |
骂人文本的情感类别 |
3 |
cuwords |
骂人文本 |
4 |
cuvector |
骂人文本的特征向量 |
5 |
bclang |
回骂文本的语言类别 |
6 |
bcemotion |
回骂文本的情感类别 |
7 |
bcwords |
回骂文本 |
8 |
bcvector |
回骂文本的特征向量 |
本实施案例采用如下方法实现对骂文本知识推理,具体步骤为:
[1]计算骂人文本的特征向量X
[2]采用欧氏距离在对骂文本知识库中搜索K个与X距离最相近的骂人文本特征向量,这里K取5。
[3]从K个最相近的骂人文本中随机选择一个骂人文本,以增加回骂的多样性。
[4]读取选择的骂人文本对应的回骂文本,并将其作为对骂文本知识推理的结果,即选择为此次的回骂文本。
第五步:推送选择的回骂文本给骂人用户。
如图4所示,为一种基于机器文本对骂的情感发泄系统,其特征在于其使用了本发明所述的方法,所述的系统包括:一个文本情感学习样本库410,一个幽默笑话文本知识库411,一个对骂文本知识库412。系统还包括:骂人文本采集模块400;骂人文本特征向量构造模块401;文本情感分类模型学习模块402;文本情感分类模块403;幽默笑话文本推送模块404;对骂文本知识推理模块405;回骂文本推送模块406,其中骂人文本采集模块400的输出与骂人文本特征向量构造模块401的输入连接;骂人文本特征向量构造模块401的输出与文本情感分类模块403的输入连接;文本情感分类模型学习模块402的输出与文本情感分类模块403的输入连接;文本情感分类模块403的输出与幽默笑话文本推送模块404的输入连接;文本情感分类模块403的输出与对骂文本知识推理模块405的输入连接;对骂文本知识推理模块405的输出与回骂文本推送模块406的输入连接。
1)骂人文本采集模块400,获取用户提交的骂人文本。
2)骂人文本特征向量构造模块401,处理采集的骂人文本,包括去除停用词,完成中文分词,抽取特征,选择特征,将骂人文本转化为特征向量表示。
3)文本情感分类模型学习模块402,以文本情感学习样本库410为训练集,训练支持向量机文本情感分类器,获得支持向量机文本情感分类模型。
4)文本情感分类模块403,采用支持向量机文本情感分类模型对骂人文本的特征向量进行情感分类,进而判断情感是否健康。
5)幽默笑话文本推送模块404,在骂人文本的情感判定为健康类别时,从幽默笑话文本知识库411中选择幽默笑话文本,并推送给用户。
6)对骂文本知识推理模块405,在骂人文本的情感判定为不健康类别时,利用对骂文本知识库412实现对骂文本知识推理,生成合适的对骂文本。
7)回骂文本推送模块406,将步骤6)生成的对骂文本推送给用户。
本实施案例采用客户端/服务器结构实现,用户通过客户端与服务对骂。基于机器文本对骂的情感发泄系统运行在服务器平台上并作为服务器与用户对骂。服务器平台的实现采用J2EE和Struts2+Spring+Hibemate框架,用MYSQL数据库实现数据库管理。支持向量机采用SVM light实现,选择线性核函数,并以预测性能为准则,以10倍交叉验证方式选择SVM的合适参数,进而获得对应的支持向量机分类模型。客户端与服务器之间的文本通讯采用开源项目Spark+Smack+Openfire实现,其中Openfire是服务器,Spark是客户端,Smack是XMPP传输协议的实现,本实施案例采用基于插件方式在此开源项目上实现新增功能。
本领域的普通技术人员应当理解,本发明的技术方案可以进行修改,变形或等同变换,而不脱离本发明技术方案的本质和范围,均覆盖在本发明的权利要求范围之中。