将群消息归类到群话题的方法及装置
技术领域
本说明书一个或多个实施例涉及机器学习领域,尤其涉及利用机器学习将社交应用软件中的群消息归类到群话题的方法和装置。
背景技术
通讯类社交应用或软件,例如钉钉,微信,QQ,Line等等,已经成为人们生活聊天,兴趣讨论以及工作交流的重要工具。许多社交应用支持用户群的功能,例如钉钉群,微信群,QQ群等。一个用户群中包含多个用户,群中的用户又称为群成员。群成员在群中发布的消息称为群消息,群消息会发布给群中的所有用户。
随着用户加入的群越来越多,用户常常在社交应用中收到大量群聊天消息。相比于单人聊天的消息,群消息数量众多,参与人员广泛,而且往往与用户自身的相关程度较低。这些特点导致用户往往难以高效地浏览和处理这些群消息。逐条浏览群消息将会导致大量的时间浪费,完全忽视又容易错过一些重要的或者感兴趣的讨论内容。
因此,希望能有改进的方案,可以帮助用户更好地浏览和处理群消息。
发明内容
本说明书一个或多个实施例描述了将社交应用中用户群的群消息归类到群话题的方法和装置,从而帮助用户有效地浏览和处理群消息。
根据第一方面,提供了一种将群消息归类到群话题的方法,包括:
获取第一用户群中的第一群消息的消息数据;
基于所述消息数据获取该第一群消息对应的消息特征,所述消息特征至少包括与所述第一群消息的内容相关的消息内容特征,以及,反映该第一群消息的回复关系的消息关系特征;
获取所述第一用户群中已形成的N个话题的话题特征,所述N个话题基于对所述第一群消息之前的在先消息进行归类而形成,每个话题对应于已归类到该话题的在先消息的消息集合,每个话题的话题特征包括,基于对应消息集合中各个在先消息的消息内容得到的话题内容特征,以及基于对应消息集合中各个在先消息的回复关系得到的话题关系特征;
使用预先训练的预测模型,基于所述消息特征和所述N个话题的话题特征,得到N+1个预测概率,所述N+1个预测概率分别指示所述第一群消息属于所述N个话题和新话题构成的N+1个备选话题的概率;
根据所述N+1个预测概率,将所述第一群消息归类到第一话题,所述第一话题为所述N+1个备选话题之一;
更新所述第一话题的话题特征。
在一个实施例中,获取第一用户群中的第一群消息的消息数据包括:从针对所述第一用户群设置的消息缓存中读取所述第一群消息的消息数据,所述消息缓存中包含预定数量的群消息,或者预定时间内从客户端接收到的群消息。
根据一种实施方式,所述消息数据包括消息明文;在这样的情况下,可以基于所述消息明文提取其文本特征作为消息内容特征的至少一部分,所述文本特征包括以下中的一项或多项:词向量,句向量,文本长度,词数目,句子数目。
在一个实施例中,还可以获取以下中的一项或多项作为所述消息内容特征:消息中的表情符号的特征,图片大小,图片形状。
根据另一种实施方式,所述消息数据包括文本加密数据,所述文本加密数据包括用于表示所述第一群消息文本信息的特征向量;在这样的情况下,可以将所述特征向量作为所述消息内容特征的至少一部分。
在一个实施例中,所述消息关系特征包括以下中的一项或多项:消息的发送者,消息引用的用户,消息引用的在先消息,消息引用的在先消息的发送者。
相应的,在一个实施例,所述话题关系特征包括以下中的一项或多项:各个在先消息的消息发送者集合,各个在先消息引用的用户集合,各个在先消息所引用消息的发送者集合。
根据一种实施方式,所述消息特征还包括,基于所述第一群消息的发布时间确定的消息时间特征;所述话题特征还包括,基于对应消息集合中各个在先消息的发布时间得到的话题时间特征。
进一步地,在一个实施例中,所述话题时间特征包括以下中一项或多项:各个在先消息的最早发布时间,各个在先消息的最晚发布时间,最早发布的在先消息的消息序号,最晚发布的在先消息的消息序号。
根据一种实施方式,所述话题内容特征通过将所述各个在先消息的消息内容特征进行加权组合而得到,所述加权组合的权重基于所述各个在先消息的发布时间而确定。
在一种实施方式中,在获取所述第一用户群中已形成的N个话题的话题特征之前,还包括:
获取针对所述第一用户群形成的已有话题;
对于各个已有话题,确定其最后更新时间距离当前时刻的时长;
将所述时长小于预设时长阈值的话题,作为所述N个话题。
根据一种实施方式,所述预测模型包括第一子模型和第二子模型;
所述第一子模型根据所述消息内容特征和所述N个话题的话题内容特征,确定所述第一群消息分别与所述N+1个备选话题的第一匹配得分;
所述第二子模型根据所述消息关系特征和所述N个话题的话题关系特征,确定所述第一群消息分别与所述N+1个备选话题的第二匹配得分;
所述N+1个预测概率基于所述第一匹配得分和第二匹配得分综合确定。
进一步地,在一个实施例中,第一子模型为深度学习的自然语言处理模型。
在一种实施方式中,所述预测模型还包括第三子模型,用于根据所述消息时间特征和所述话题时间特征,确定所述第一群消息分别与所述N+1个备选话题的第三匹配得分;在这样的情况下,所述N+1个预测概率基于所述第一匹配得分、第二匹配得分和第三匹配得分综合确定。
根据一个实施例,所述预测模型基于训练样本预先训练,所述训练样本包括同一用户群中的多条群消息,每条群消息具有话题标签。
根据一种实施方式,通过以下方式更新所述第一话题的话题特征:
将所述第一群消息添加到所述第一话题对应的第一消息集合中,以更新该第一消息集合;
根据更新后的第一消息集合,更新所述第一话题的话题特征。
进一步地,可以根据更新后的第一消息集合中各条消息的消息内容,重新确定所述第一话题的话题内容特征;根据更新后的第一消息集合中各条消息的回复关系,重新确定所述第一话题的话题关系特征,如此以更新第一话题的话题特征。
根据另一实施方式,通过以下方式更新第一话题的话题特征:根据所述第一群消息的消息内容特征,更新所述第一话题的话题内容特征;根据所述第一群消息的消息关系特征,更新所述第一话题的话题关系特征。
根据第二方面,提供一种将群消息归类到群话题的装置,包括:
消息获取单元,配置为获取第一用户群中的第一群消息的消息数据;
特征获取单元,配置为基于所述消息数据获取该第一群消息对应的消息特征,所述消息特征至少包括与所述第一群消息的内容相关的消息内容特征,以及,反映该第一群消息的回复关系的消息关系特征;
话题获取单元,配置为获取所述第一用户群中已形成的N个话题的话题特征,所述N个话题基于对所述第一群消息之前的在先消息进行归类而形成,每个话题对应于已归类到该话题的在先消息的消息集合,每个话题的话题特征包括,基于对应消息集合中各个在先消息的消息内容得到的话题内容特征,以及基于对应消息集合中各个在先消息的回复关系得到的话题关系特征;
概率预测单元,配置为使用预先训练的预测模型,基于所述消息特征和所述N个话题的话题特征,得到N+1个预测概率,所述N+1个预测概率分别指示所述第一群消息属于所述N个话题和新话题构成的N+1个备选话题的概率;
话题归类单元,配置为根据所述N+1个预测概率,将所述第一群消息归类到第一话题,所述第一话题为所述N+1个备选话题之一;
话题更新单元,更新所述第一话题的话题特征。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
根据本说明书实施例提供的方法和装置,总体上采用增量处理的方式进行话题归类,也就是,对用户群中新发布的群消息,将其归类到已经形成的若干话题中,或创建一个新话题,同时,更新各个话题的话题特征,用于进行下一条群消息的归类。并且,在进行话题归类时,不仅考虑群消息的内容方面的特征,还考虑群聊场景特有的消息之间的关系特征,如此形成全面的消息特征。采用训练的预测模型,基于全面的消息特征,和各个已有话题的话题特征,将新增的群消息与各个已有话题进行匹配,从而将其归类到某个话题。通过以上方式,针对群聊场景的消息特点,有效而准确地将各条群消息归类到群话题中,便于用户浏览和响应。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为用户群中的群聊消息的一个例子;
图2示出根据一个实施例的将群消息归类到群话题的方法流程图;
图3示出在一个实施例中使用预测模型将第一群消息归入各个话题的示意图;
图4示出根据一个实施例的消息归类装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
在群聊场景下,群消息数量众多,信息庞杂,参与人员广泛,使得用户难以快速获得群中讨论内容的有效信息,难以进行高效地浏览和响应。为了帮助用户有效浏览和响应用户群中的消息,根据本说明书实施例的构思,提出将各条群消息归类到群话题,当用户进入某个已加入的用户群时,可以通过呈现当前群中讨论的群话题,帮助用户快速获知群中讨论的内容,进而帮助用户进行高效地浏览和响应。
将一条消息归类到话题,属于广义的文本归类问题。在文本归类这一问题下,常用的解决思路有聚类算法和基于自然语言处理的文本分类。
传统的聚类算法有很多,包括,基于层次化聚类算法(例如BIRCH,HAC),划分式式聚类算法(如经典的k-means),基于密度的聚类算法(例如DBSCAN),基于网格结构的聚类(例如CLIQUE等),等等。在聚类算法中,一般会先定义样本之间所谓的“距离”或“密度”来判断样本间的相似程度。算法的基本形式几乎都是迭代算法,在整个聚类过程中会对全部样本空间做多次扫描,最终达到某个收敛标准或迭代次数。聚类算法针对的是静态的数据,当有新的数据输入,就把输入的新数据和原有数据的全集当做另一份全量数据,重新执行整个聚类过程。
基于自然语言处理的文本分类,通常是利用训练的自然语言处理模型,对文本进行分析,例如,关键词提取,词频统计,tf-idf等,基于这些分析对输入文本进行语义分类。这样的方式对于长文本比较有效,对于微博、twitter等短文本也取得一定效果。
然而,以上这些传统方式对于群消息这一特殊场景,均不能适用。
图1为用户群中的群聊消息的一个例子。这个例子中包含来自5个用户的8条消息。通过这个例子可以看到,在群聊的场景下,群消息具有以下典型的特点。
首先,群消息的消息长度极短,形式上极度不规范。例如,根据统计,多数用户群中,消息长度不足10个字的消息占比70%以上,其中完全没有字(只有表情符号和贴图)又占比38%。由于文本极短,常规的用于长文本语义分类的分析方式,包括词频统计,计算tf-idf等,完全无法适用。并且,群消息用语非常不规范,其中包含大量的口语、短语、网络用语、照片或表情符号,甚至有可能是由机器人而非真实用户发表的。而这些不规范的用词,在传统的文本分类中,通常会被认为是无用的信息或噪音而被过滤掉。因此,传统的基于自然语言处理的文本分类方式,无法适用于极短且极不规范的群消息场景。
其次,群消息是动态持续变化的数据,一个用户群中不断地有新的群消息发布出来。然而,如前所述,常规聚类算法只能针对静态的数据,当有新的数据输入,就需要形成新的全量数据,重新进行聚类。而在群聊场景下,如果每发布一条群消息,都将该群中所有消息的全集重新做一次聚类,这样的计算成本显然是难以接受的。因此,常规的静态聚类方式也不能适用于用户群中的群聊场景。
此外,群消息之间具有一定的交互关系,而非孤立的单个文本。这是由群聊这一场景决定的。在用户群中,群消息往往是几个人交互的对话,每条消息并不是孤立的,上下文的含义具有重要影响。例如一条群消息的内容是“点赞”,那么这条消息所赞的内容需要由上下文的其他消息来决定。另外,许多社交应用中支持引用的功能,例如可以通过“@”符号,来引用特定用户,又例如也可以通过消息回复功能指定本消息所回复的特定消息。如此,更直接地表明消息之间的交互关系。例如,图1中第6条消息“@孙七3”,如果不考虑其引用关系上下文,仅凭其文本内容“3”,则无法理解该消息的含义。然而,常规的方式,不管是聚类算法还是常规文本分类方法,都是将各个待归类的文本作为彼此独立的样本进行处理的,无法考虑群聊场景下各个群消息的交互性这一特点。这也是常规方式无法应用于群消息归类的另一原因。
例如,在图1中群聊的例子中,通过人为阅读可以理解,该群聊中有两个话题在穿插进行,群消息(1,5,6,8)属于一个话题(送电影票),群消息(2,3,4,7)属于另一个话题(关于电影的笑话)。然而,对于图1这样典型的群聊的例子,常规技术中的聚类和文本分析方式,都无法有效地对各个群消息进行话题归类。
为此,根据本说明书的实施例,总体上采用增量处理的方式进行话题归类,也就是,对用户群中新发布的群消息,将其归类到已经形成的若干话题中,或创建一个新话题,同时,更新各个话题的话题特征,用于进行下一条群消息的归类。如此,避免每次针对消息全集进行全量聚类。并且,在进行话题归类时,不仅考虑群消息的内容方面的特征,还考虑群聊场景特有的消息之间的关系特征,如此形成全面的消息特征。采用训练的预测模型,基于全面的消息特征,和各个已有话题的话题特征,将新增的群消息与各个已有话题进行匹配,从而将其归类到某个话题。通过以上方式,针对群聊场景的消息特点,有效而准确地将各条群消息归类到群话题中,便于用户浏览和响应。
下面描述以上构思的具体实现过程。
图2示出根据一个实施例的将群消息归类到群话题的方法流程图。可以理解,该方法通过社交应用的服务端执行,其中服务端可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来实现。如图2所示,群消息归类的过程至少包括以下步骤:步骤21,获取第一用户群中的第一群消息的消息数据;步骤22,基于消息数据获取该第一群消息对应的消息特征,包括与内容相关的消息内容特征,以及,反映回复关系的消息关系特征;步骤23,获取第一用户群中已形成的N个话题的话题特征,每个话题的话题特征包括话题内容特征,以及话题关系特征;步骤24,使用预先训练的预测模型,基于所述消息特征和所述N个话题的话题特征,得到N+1个预测概率,所述N+1个预测概率分别指示所述第一群消息属于所述N个话题和新话题构成的N+1个备选话题的概率;步骤25,根据N+1个预测概率,将第一群消息归类到所述N+1个备选话题之中的第一话题;步骤26,更新第一话题的话题特征。下面描述以上各个步骤的执行方式。
首先,在步骤21,获取第一用户群中的第一群消息的消息数据。可以理解,第一用户群可以是通过社交应用构建的任意用户群,第一群消息是有待归类的任意一条群消息。
在一个实施例中,应用服务端每接收到来自客户端的一条群消息,就执行后续归类到话题的步骤。此时,步骤21中获取第一群消息的消息数据具体为,从客户端接收第一群消息的消息数据。
在另一实施例中,应用服务端可以针对一个用户群构建一个消息缓存,将从客户端接收到的新的群消息存入该消息缓存中。每当消息缓存中的消息数目达到预设数目(例如,20条),或者每隔预定时间(例如,每隔5分钟),依次处理消息缓存中的各条群消息。此时,步骤21中获取第一群消息的消息数据具体为,从针对第一用户群设置的消息缓存中读取该第一群消息的消息数据。
接着,在步骤22,基于第一群消息的消息数据,获取该第一群消息对应的消息特征,消息特征包括与内容相关的消息内容特征,以及,反映该第一群消息的回复关系的消息关系特征。
需要说明的是,不同的社交应用对于消息数据的隐私管理方式并不相同。在一个实施例中,社交应用的客户端直接将群消息的明文发送至服务端。相应的,服务端获取的消息数据中包括第一群消息的消息明文。在这样的情况下,在步骤22,可以基于消息明文,提取消息的文本特征作为消息内容特征。
具体的,在步骤22,可以对消息文本进行分词,通过多种方式得到各个词的词向量,例如查找词向量映射表,利用诸如word2vec的词向量转换模型或工具,等等。还可以进一步地基于各个词的词向量,得到消息中句子的句向量。如此,可以将词向量和/或句子向量作为消息的文本特征。在一个例子中,还可以统计消息中的词数目,句子数目,文本长度等信息,作为消息的文本特征。
在第一群消息中包括表情符号或图片的情况下,还从消息数据中获取表情符号的特征、图片的特征作为消息内容特征。
具体的,社交应用中会提供常规表情符号库,其中各个表情符号除了具有表情图标之外,还对应具有文字解释,并且会在消息体中用特定标识符标识出该文字解释,例如图1中的第7条消息中的“[偷笑]”。在这样的情况下,可以从消息明文的文本中识别出该特定标识符“[]”,进而识别出对应的表情符号,作为表情符号特征。
在群消息中包含图片的情况下,通常来说,服务端会将该图片进行存储,并根据存储位置和图片本身的特点为该图片分配一个图片标识,例如url地址。其他用户通过该图片标识,读取图片的内容。在一个实施例中,在进行消息内容特征的提取时,基于上述图片标识提取图片的基本特征。具体的,在一些例子中,图片标识本身可以反映图片的大小和形状。此时,可以将图片大小,图片形状作为消息内容特征。图片的大小和形状,可以用于区分该图片是一般的图片,还是自定义的表情符号。在另一实施例中,也可以直接获取图片内容,并对其进行文字识别,例如OCR识别。如果从中提取到文字,则将文字的文本特征也作为消息内容特征。
此外,还有一些社交应用具有更强的用户隐私保护功能,这样的社交应用的客户端会将消息文本进行加密或编码,再发给服务端。上述加密或编码的过程可以包括,将文本中的词转化为词向量,进而将整个文本转化为文本的特征向量。相应的,服务端获取的消息数据包括文本加密数据,该文本加密数据即包含上述特征向量。服务端无法从该特征向量还原出原始明文,但是可以将该特征向量视为群消息的文本信息的抽象表达。因此,在步骤22,可以将客户端发送的第一群消息的特征向量包含在第一群消息的消息内容特征中。
除了如上所述获取第一群消息的消息内容特征,在步骤22,还获取其消息关系特征,用于反映该第一群消息的回复关系。
具体的,在一个实施例中,可以获取以下信息中的一部分或全部作为消息关系特征:消息的发送者,消息引用的用户,消息引用的在先消息,消息引用的在先消息的发送者。
一般地,上述信息可以从第一群消息的元数据中获得,该元数据也包含在上述消息数据中。因此,即使客户端对消息文本进行了加密或编码,仍然可以从元数据中获取上述消息关系特征。在消息数据中包含消息明文的情况下,也可以基于消息明文获取上述消息关系特征。具体的,可以通过识别预定的引用符号,例如“@”符号,确定消息引用的用户,等等。在此种情况下,还可以进一步确定出引用的位置,例如,在消息开端,消息中部,消息末尾,等等。
除了以上的消息内容特征和消息关系特征,在一个实施例中,还获取第一群消息的消息时间特征,其中包括第一群消息的发布时间。该特征可以从第一群消息的元数据中获得。
在其他实施例中,还可以提取第一群消息的更多特征,或者基于以上特征确定出更多特征,例如,句子类型特征(问句还是陈述句),消息类型特征(一般消息或是回复消息),等等,将这些特征均包含在消息特征中,以对群消息进行全面的分析。
另一方面,还获取在第一群消息之前,第一用户群中已经形成的N个话题,这N个话题是通过将该第一用户群中第一群消息之前的在先消息进行归类而得到的。初始的归类话题可以是,基于一定量群消息进行聚类得到的话题,也可以是将每条群消息作为一个话题,将后续群消息进行添加和迭代形成的话题。
可以理解,每个话题对应于一个在先消息的消息集合,该消息集合中记录已经归类到该话题的各个在先消息的消息id。消息id用于唯一地标识一条消息,在一些社交应用服务端中,根据预定算法为每条消息生成id标识。在一个典型例子中,消息id为12位的id标识。
对于上述已经形成的N个话题,在步骤23,获取各个话题的话题特征。与消息特征相对应的,话题特征包括话题内容特征,以及话题关系特征;其中,话题内容特征基于已归类到该话题的各个在先消息的消息内容而确定,话题关系特征基于已归类到该话题的各个在先消息的回复关系而确定。
具体地,对于某个话题Ci,可以获取该话题对应的消息集合Si中的各条在先消息,根据各个在先消息的消息内容,确定该话题Ci的话题内容特征。
在一个实施例中,各个在先消息以明文提供。在这样的情况下,根据一个具体例子,可以获取各个在先消息的文本内容,得到整个消息集合Si中各条在先消息的文本总集,进而可以基于文本总集提取话题的关键词,确定关键词的词向量。还可以统计各条在先消息的平均词数目,平均文本长度,平均句子数目,等等。可以将以上这些项目的全部或一部分,作为话题内容特征。根据另一具体例子,也可以直接将消息集合Si中各条在先消息对应的消息内容特征进行综合,得到话题Ci的话题内容特征。
在另一实施例中,各个在先消息被加密或编码,提供为特征向量的形式。相应的,各条消息的消息内容特征即包含该特征向量。在这样的情况下,可以将消息集合Si中各条在先消息对应的消息内容特征进行综合,得到话题Ci的话题内容特征。
根据一个实施例,在对各条在先消息的消息内容特征进行综合以得到话题内容特征时,可以参考各条在先消息的发布时间为其赋予不同权重因子。具体的,发布时间越早的在先消息,其权重因子越低;发布时间越晚的在先消息,权重因子越高。换而言之,发布时间越接近于当前时刻,该在先消息对话题主题的影响越大。于是,基于这样的权重因子,对各条在先消息的消息内容特征进行综合,得到话题内容特征。
此外,对于某个话题Ci,还获取该话题对应的消息集合Si中的各条在先消息的回复关系,根据各个在先消息的回复关系,确定该话题Ci的话题关系特征。具体的,在一个实施例中,话题关系特征可以包括,各个在先消息的消息发送者集合,各个在先消息引用的用户集合,各个在先消息所引用消息的发送者集合,等等。
如前所述,第一群消息的消息特征还可以包括,基于第一群消息的发布时间确定的消息时间特征。相应地,在一个实施例,对于某个话题Ci,还可以基于该话题Ci对应的消息集合Si中各个在先消息的发布时间,得到该话题Ci的话题时间特征。
在一个具体实施例中,可以从各个在先消息的发布时间中确定出最早发布时间,和最晚发布时间,作为话题时间特征。此外,在一个具体例子中,可以按照该用户群中所有消息的发布时间的先后,为该用户群中的各条消息顺序编号。在这样的情况下,还可以确定出消息集合Si中最早发布的在先消息的消息序号,最晚发布的在先消息的消息序号,将该消息序号作为话题时间特征。
在其他实施例中,还可以基于话题中在先消息的更多特征,确定出更丰富的话题特征,在此不一一举例。
可以理解,用户群中的话题数量会随着时间而累积增多,但是用户对太久之前的话题一般是不感兴趣的。为了避免用户群中的话题无限制累积,同时增加后续群消息归类的针对性和计算效率,可以设置一个时长阈值作为过期时长。对于已经形成的话题,可以将该话题对应的消息集合中最新消息的发布时间作为该话题的最后更新时间。当该最后更新时间距离当前时刻的时长超过所设置的过期时长时,则认为该话题为过期话题,将其从备选话题中删除。相应的,在一个实施例中,步骤23获取的N个话题,均为最后更新时间距离当前时刻不超过过期时长的话题。
如上所述,在步骤22获取了第一群消息的消息特征,在步骤23获取了N个话题的话题特征,接着,在步骤24,使用预先训练的预测模型,基于所述消息特征和所述N个话题的话题特征,得到N+1个预测概率,分别指示第一群消息属于所述N个话题和新话题构成的N+1个备选话题的概率。
图3示出在一个实施例中使用预测模型将第一群消息归入各个话题的示意图。如图3所示,第一群消息表示为消息m,F表示第一群消息m的消息特征,V1,V2…,VN表示已经形成的N个话题C1,C2,…,CN分别对应的话题特征。此外,用C0表示开启的新话题,如此形成N+1个备选话题。新话题C0对应的话题特征V0可以为空,或者为默认的缺省值。
将第一群消息m的消息特征F,N个话题的各自的话题特征V1,V2…,VN,输入到预先训练的预测模型。由于新话题C0的话题特征V0为固定的缺省值,可以认为属于模型参数的一部分,而不必在每次预测时输入给模型。图3中示出输入到模型的话题特征V0是为了更清晰地示出话题和输出概率之间的对应关系。如图3所示,基于输入的各项特征,预测模型会输出第一群消息m分别属于上述N+1个备选话题的概率P0,P1,…,PN,其中P0为属于新话题的概率,P1,…,PN分别为属于已有话题C1,…,CN的概率。
于是,在步骤25,可以根据上述N+1个预测概率,将第一群消息m归类到N+1个备选话题之一。具体的,可以将消息m归类到N+1个预测概率中概率值最大的话题,该话题称为第一话题。可以理解,第一话题可能是N个已有话题之一,也可以是新话题。
如此,通过预测模型,将新产生的第一群消息m进行话题归类。
在一个实施例中,上述预测模型通过深度神经网络DNN来实现。
在一种实施方式中,上述预测模型可以分解为若干子模型,通过这些子模型综合实现。
具体地,在一个实施例中,预测模型可以包括第一子模型和第二子模型,其中,第一子模型根据消息m的消息内容特征和N个话题的话题内容特征,确定第一群消息m与N+1个备选话题各自的第一匹配得分;第二子模型根据消息m的消息关系特征和N个话题的话题关系特征,确定第一群消息与N+1个备选话题各自的第二匹配得分;预测模型输出的N+1个预测概率,基于所述第一匹配得分和第二匹配得分综合确定。
具体而言,第一子模型侧重于消息内容的比较,将第一群消息m的消息内容,与各个话题的话题内容进行相关性分析,根据相关程度得出上述第一匹配得分。第一匹配得分可以是反映相关程度的分数,也可以是基于相关程度确定的消息m属于对应话题的概率。
在群消息以明文提供的情况下,第一子模型可以是深度学习的自然语言处理模型,例如包括BERT模型,GPT模型,等等。这些模型可以基于第一群消息m的文本特征,和各个话题对应的文本总集进行自然语言的分析处理,确定出该消息m与各个话题的文本相关性,根据该文本相关性得到消息m与各个话题的第一匹配得分。
在群消息以特征向量的加密形式提供的情况下,第一子模型可以是简单的匹配模型,对于第一群消息m对应的消息内容特征向量,分别计算该向量与各个话题Ci的话题内容特征向量之间的相关度。该相关度可以基于欧式距离、余弦夹角等方式确定。然后,基于上述相关度,得到第一群消息m与各个话题的第一匹配得分。
第二子模型侧重于消息回复关系的比较分析,基于第一群消息m的回复关系特征和各个话题的话题关系特征,确定第一群消息m与各个话题的回复关联度,进而确定该消息m与N+1个备选话题的第二匹配得分。第二匹配得分可以表现为反映关联程度的分数,也可以是基于关联程度确定的消息m属于对应话题的概率。
更具体的,对于某个话题Ci,第二子模型可以根据多个因素确定第一群消息m与该话题Ci的回复关联度,这些因素可以包括,例如,消息m的发送者是否落入话题Ci对应的发送者集合,消息m所引用的用户是否落入话题Ci对应的发送者集合,消息m所回复的在先消息是否落入话题Ci对应的消息集合,消息m是否与话题Ci中某个在先消息引用同一用户(即消息m所引用的用户是否落入话题Ci对应的引用用户集合),等等。根据以上因素中的一项或多项,可以确定第一群消息m与话题Ci的回复关联度,进而确定该消息m与该话题Ci的第二匹配得分。
在一个实施例中,预测模型将上述第一匹配得分和第二匹配得分进行综合,例如求和,加权求和,求均值,求加权均值等,根据综合结果确定消息m分别属于N+1个备选话题的N+1个预测概率。
如前所述,在一种实施方式中,记录各条群消息的发布时间。此时,第一群消息m的消息特征还包括,基于该消息的发布时间确定的消息时间特征。相应的,各个话题的话题特征还包括,基于已归类到该话题的各个在先消息的发布时间得到的话题时间特征。在这样的情况下,预测模型还可以包括第三子模型,用于根据消息时间特征和话题时间特征,确定第一群消息与N+1个备选话题各自的第三匹配得分。第三匹配得分可以是反映时间关联程度的分数,也可以是基于时间关联度得到的消息m属于对应话题的概率。
具体的,某个话题Ci的话题时间特征可以包括,该话题Ci对应的消息集合Si中各条消息的最早发布时间,最晚发布时间;以及最早发布的消息序号,最晚发布的消息序号。于是,第三子模型可以根据一些时间因素确定第一群消息m与该话题Ci的时间关联度,这些时间因素可以包括,例如,消息m的发布时间距离上述最早发布时间的第一时间差,距离上述最晚发布时间的第二时间差,消息m的序号距离所述最早发布的消息序号的第一序号差,以及距离所述最晚发布的消息序号的第二序号差,等等。
在以上指标中,第一序号差可以表征,当前消息m与话题Ci中最早消息之间相隔了多少条消息,第二序号差可以表征当前消息m与最晚消息之间相隔了多少条消息。与绝对时间差不同的,序号差可以反映消息之间的相对连续性,在消息相对于时间不平均的情况下,这更有利于衡量消息的相关性。例如,在有些用户群中,各个用户分布在不同时区,比如一个用户在中国,一个用户在美国。如此,一条消息与上一条消息尽管相隔了10个小时,但是如果其序号相连,那么仍然可能属于同一话题。又例如,对于一些工作群,晚上或周末期间,消息一般比较稀疏。此时,考虑序号差更有利于衡量消息的连续性。此外,上述序号差也可以与统计的各个话题的平均话题长度(即包含的消息条数)相结合,作为消息m与话题Ci的时间关联度的一种参考。
如此,基于以上时间因素中的一项或多项,第三子模型确定第一群消息m与各个备选话题的第三匹配得分。在这样的情况下,预测模型将上述第一匹配得分、第二匹配得分和第三匹配得分进行综合,根据综合结果确定消息m分别属于N+1个备选话题的N+1个预测概率。
可以理解,为了得到准确的预测概率,需要采集一定量的训练样本对上述预测模型进行训练。这里的训练样本可以包括,同一用户群中的多条群消息,其中各条群消息具有人工标注的话题标签。例如,如果希望将图1的多条群消息作为训练样本,可以将其中的消息1,5,6,8标注为属于一个话题T1,将消息2,3,4,7标注为属于另一话题T2。基于大量的训练样本,可以训练得到上述预测模型。在上述预测模型可拆解为多个子模型的情况下,可以对多个子模型联合训练,统一调参,得到最终的预测模型。
如上,利用训练的预测模型将当前的第一群消息m归类到第一话题,其中第一话题可能是已有的N个话题之一,也可能是新话题。在这之后,在步骤26,还需要更新该第一话题的话题特征,用于后续群消息的归类。
具体的,由于将第一群消息m归类到第一话题中,于是,可以将该第一群消息的消息id添加到第一话题对应的消息集合中,作为更新后的消息集合。
在一个实施例中,基于更新后的消息集合,重新确定该第一话题的话题特征。具体的,可以基于更新后的消息集合中各条消息的消息内容,重新计算得到第一话题的话题内容特征。例如,可以重新确定消息集合对应的文本总集中的关键词,重新统计文本总集中的平均词数目,平均文本长度,平均句子数目,等等。在加密文本的情况下,可以基于更新后的消息集合中各条消息的内容特征向量,重新计算话题内容特征。类似的,可以基于更新后的消息集合中各条消息的回复关系,重新计算得到第一话题的话题关系特征。如此,更新第一话题的话题特征。
在另一实施例中,采用增量方式进行更新。具体的,根据第一群消息的消息内容特征,更新第一话题的话题内容特征;根据第一群消息的消息关系特征,更新第一话题的话题关系特征。例如,可以将第一群消息的消息关系特征中的消息发送者和引用用户分别添加到,第一话题的话题关系特征中的发送者集合和引用用户集合中,以更新话题关系特征。
通过以上方式,对第一话题及其话题特征进行了更新,进而更新了第一用户群中已形成的话题集合。
当第一群消息之后又有新的群消息(第二群消息)发布时,对于第二群消息,同样地再次执行图2中的方法流程,只是步骤23中要获取的是基于第一群消息更新后的话题集合中各个话题的话题特征。
如此,对于每条新增的群消息,采用以上增量归类的方式,将其归到已有的话题或为其创建一个新话题。并且,在进行增量归类时,不仅考虑消息的内容特征,还考虑其回复关系,甚至发布时间关系,从而针对用户群中群聊的特点,更加准确地将群消息归类到对应话题中。
根据另一方面的实施例,提供了一种将群消息归类到群话题的装置,该装置可以部署在社交应用服务端中,该服务端可以通过任何具有计算、处理能力的设备、平台或设备集群实现。图4示出根据一个实施例的消息归类装置的示意性框图。如图4所示,该消息归类装置400包括:
消息获取单元41,配置为获取第一用户群中的第一群消息的消息数据;
特征获取单元42,配置为基于所述消息数据获取该第一群消息对应的消息特征,所述消息特征至少包括与所述第一群消息的内容相关的消息内容特征,以及,反映该第一群消息的回复关系的消息关系特征;
话题获取单元43,配置为获取所述第一用户群中已形成的N个话题的话题特征,所述N个话题基于对所述第一群消息之前的在先消息进行归类而形成,每个话题对应于已归类到该话题的在先消息的消息集合,每个话题的话题特征包括,基于对应消息集合中各个在先消息的消息内容得到的话题内容特征,以及基于对应消息集合中各个在先消息的回复关系得到的话题关系特征;
概率预测单元44,配置为使用预先训练的预测模型,基于所述消息特征和所述N个话题的话题特征,得到N+1个预测概率,所述N+1个预测概率分别指示所述第一群消息属于所述N个话题和新话题构成的N+1个备选话题的概率;
话题归类单元45,配置为根据所述N+1个预测概率,将所述第一群消息归类到第一话题,所述第一话题为所述N+1个备选话题之一;
话题更新单元46,更新所述第一话题的话题特征。
在一个实施例中,上述消息获取单元41从客户端接收所述第一群消息的消息数据。
在另一实施例中,上述消息获取单元41从针对所述第一用户群设置的消息缓存中读取所述第一群消息的消息数据,所述消息缓存中包含预定数量的群消息,或者预定时间内从客户端接收到的群消息。
根据一种实施方式,所述消息数据包括消息明文;在这样的情况下,所述特征获取单元42配置为,基于所述消息明文提取其文本特征作为消息内容特征的至少一部分,所述文本特征包括以下中的一项或多项:词向量,句向量,文本长度,词数目,句子数目。
进一步地,在一个实施例中,特征获取单元42还获取以下中的一项或多项特征作为消息内容特征:消息中的表情符号的特征,图片大小,图片形状。
根据另一种实施方式,所述消息数据包括文本加密数据,所述文本加密数据包括用于表示所述第一群消息文本信息的特征向量;在这样的情况下,所述特征获取单元42配置为,将所述特征向量作为所述消息内容特征的至少一部分。
根据一个实施例,特征获取单元42获取的消息关系特征包括以下中的一项或多项:消息的发送者,消息引用的用户,消息引用的在先消息,消息引用的在先消息的发送者。
根据一个实施例,话题获取单元43获取以下中的一项或多项作为话题关系特征:各个在先消息的消息发送者集合,各个在先消息引用的用户集合,各个在先消息所引用消息的发送者集合。
在一个实施例中,特征获取单元42获取的消息特征还包括,基于所述第一群消息的发布时间确定的消息时间特征;话题获取单元43获取的话题特征还包括,基于对应消息集合中各个在先消息的发布时间得到的话题时间特征。
进一步的,上述所述话题时间特征可以包括以下中一项或多项:各个在先消息的最早发布时间,各个在先消息的最晚发布时间,最早发布的在先消息的消息序号,最晚发布的在先消息的消息序号。
根据一种实施方式,话题获取单元43通过将各个在先消息的消息内容特征进行加权组合而得到所述话题内容特征,所述加权组合的权重基于所述各个在先消息的发布时间而确定。
在一个实施例中,话题获取单元43还配置为:获取针对所述第一用户群形成的已有话题;对于各个已有话题,确定其最后更新时间距离当前时刻的时长;将所述时长小于预设时长阈值的话题,作为所述N个话题。
根据一种实施方式,概率预测单元44所使用的预测模型包括第一子模型和第二子模型;
所述第一子模型根据所述消息内容特征和所述N个话题的话题内容特征,确定所述第一群消息分别与所述N+1个备选话题的第一匹配得分;
所述第二子模型根据所述消息关系特征和所述N个话题的话题关系特征,确定所述第一群消息分别与所述N+1个备选话题的第二匹配得分;
所述N+1个预测概率基于所述第一匹配得分和第二匹配得分综合确定。
在一个实施例中,上述第一子模型为深度学习的自然语言处理模型。
根据一种实施方式,上述预测模型还包括第三子模型,用于根据所述消息时间特征和所述话题时间特征,确定所述第一群消息分别与所述N+1个备选话题的第三匹配得分;在这样的情况下,所述N+1个预测概率基于所述第一匹配得分、第二匹配得分和第三匹配得分综合确定。
在一个实施例中,上述预测模型基于训练样本预先训练,所述训练样本包括同一用户群中的多条群消息,每条群消息具有话题标签。
根据一种实施方式,上述话题更新单元46配置为:
将所述第一群消息添加到所述第一话题对应的第一消息集合中,以更新该第一消息集合;
根据更新后的第一消息集合,更新所述第一话题的话题特征。
进一步的,话题更新单元46可以根据更新后的第一消息集合中各条消息的消息内容,重新确定所述第一话题的话题内容特征;根据更新后的第一消息集合中各条消息的回复关系,重新确定所述第一话题的话题关系特征,以此更新第一话题的话题特征。
根据另一种实施方式,话题更新单元46配置为:根据所述第一群消息的消息内容特征,更新所述第一话题的话题内容特征;根据所述第一群消息的消息关系特征,更新所述第一话题的话题关系特征。
通过以上装置,采用增量归类的方式,将各个群消息归类到话题中。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。