首页> 中国专利> 一种基于主题模型和用户行为数据的文本写作实时推荐方法

一种基于主题模型和用户行为数据的文本写作实时推荐方法

摘要

本发明公开了一种基于主题模型和用户行为数据的文本写作实时推荐方法,包括:对历史文档进行LDA主题模型建模,得到历史文档的主题特征;获取当前写作文档的文本数据,通过计算TextRank算法得到当前文档的topK关键词及词频信息;对文档关键词和各主题的topK关键词取并集;对求取并集后的文档向量与各主题主题词向量计算余弦相似度生成该文档的主题向量,对文档主题向量和各历史文档的主题向量计算余弦相似度并排序,得到相似度矩阵且归一化处理;获取历史文档写作的用户行为数据并建模,计算得到历史文档的个性化评分并归一化处理,结合主题相似度对所有文档综合评分,得到按综合评分进行排序的推荐列表并递减排序,取TOP‑N文档进行推荐。

著录项

  • 公开/公告号CN112989025A

    专利类型发明专利

  • 公开/公告日2021-06-18

    原文格式PDF

  • 申请/专利权人 山东科技大学;

    申请/专利号CN202110396214.5

  • 发明设计人 黎德锟;

    申请日2021-04-13

  • 分类号G06F16/335(20190101);G06F16/33(20190101);

  • 代理机构37276 济南知来知识产权代理事务所(普通合伙);

  • 代理人张峰

  • 地址 266590 山东省青岛市黄岛区前湾港路579号

  • 入库时间 2023-06-19 11:29:13

说明书

技术领域

本发明涉及信息技术领域,具体来说数据挖掘和文本推荐领域,更具体地说涉及一种基于主题模型和用户行为数据的文本写作实时推荐方法。

背景技术

在进行公文等文本写作时,写作者在写作过程中会产生大量的历史写作文本,这些历史文本会在写作思路,写作内容上对创作者的写作产生帮助。但是,如何从海量的历史文本中找到符合当前写作文本的数据并进行推荐,是一个需要解决的问题。

目前业界的文本推荐主流方案是使用LDA主题模型进行模型的训练与预测来计算当前写作文本与历史文档向量之间的相似度,然后取相似度TOP-N文档来进行文本推荐。但是该方案存在对短文本预测效果差及模型预测时间长,无法在较短时间内完成文本的实时推荐工作的问题。同时,对于不同的使用者,由于没有获取和分析使用者在写作过程中产生的行为数据,针对相同文本的推荐文档都是相同的,没有针对不同的使用者产生个性化推荐结果。

经过研究发现,若是在文档写作时,通过某种算法计算出该文档的关键词和词频,然后和训练好的主题模型的主题词和词频计算主题相似度而不是直接将该文档作为预测文档进行向量预测,既可以解决短文档由于词数过少在词袋模型中向量稀疏导致预测准确度差的问题,又可以极大提高文本推荐速度,实现根据写作进度进行实时推荐。

同时,个性化推荐系统可以通过收集使用者的历史行为数据,通过对每篇文档的作者的行为数据进行建模,之后再通过计算为每篇文档结合主题评分生成该文档的推荐排序并推送出来,这样推荐的结果为既实现了主题相关,又实现了兼顾写作者行为的个性化推荐。

发明内容:

本发明的目的是解决上述现有技术下的短文本推荐效果差、模型预测时间长及没有针对不同写作者进行个性化推荐的问题,提出了一种基于主题模型和用户行为数据的文本写作实时推荐方法。

本发明提供了一种基于主题模型和用户行为数据的文本写作实时推荐方法,包括:

S1.对历史文档进行LDA主题模型建模,得到历史文档的主题特征。

S2.获取当前写作文档的文本数据,通过计算TextRank算法得到当前文档的topK关键词及词频信息。

S3.对当前文档通过TextRank算法计算出的topK关键词和各主题的topK关键词取并集。

S4.对求取并集后的文档向量与各主题主题词向量计算余弦相似度,生成该文档和各个主题的相似度向量。对文档主题向量和各历史文档的主题向量计算余弦相似度,按照相似度递减排序,得到各文档主题相似度矩阵且归一化处理。

S5.获取历史文档的查看和引用文档数据。同时对这些文档数据进行建模,结合主题相似度评分对所有文档综合评分,得到按综合评分进行排序的推荐列表,按照由高到低的顺序取TOP-N文档进行推荐。

优选地,对历史文档进行LDA主题模型建模,得到历史文档的主题特征通过如下步骤实现:

(1).利用python第三方库读取docx格式文档数据。

(2).对数据进行数据清理,包括去除停用词、分词及统计词频。

(3).初始化LDA主题模型训练超参数α、β、迭代次数,设置主题训练范围及主题增加步长。

(4).计算各主题的困惑度,将困惑度最小的模型选为最佳模型并保存相关数据到本地。

优选地,对当前文档通过TextRank算法计算出当前文档的主题词和词频通过以下步骤实现:

(1).获取当前编辑文档全文信息,

(2).利用python第三方库jieba对文档预处理,包括分词,去除停用词。

(3).利用python第三方库jieba内置的TextRank算法获取当前文档的关键词和词频。

优选地,生成当前文档和各历史文档的相似度矩阵通过以下步骤实现:

(1).对求取并集后的文档主题词向量和各主题关键词向量计算余弦相似度,计算公式为:

其中,A为当前文档主题词向量,B

(2).对当前文档的主题向量和各历史文档的主题向量计算余弦相似度,计算公式为:

其中,P为该文档和各个主题的相似度向量,Q

(3).对求取的结果归一化处理,公式为:

其中,S

优选地,对历史文档进行个性化评分应包含以下步骤:

(1).获取历史文档在各文档下的的查看和引用数据,并统计各历史文档的查看和引用次数。

(2).计算历史文档在各历史文档下的查看得分,公式为:

W

其中,W

(3).计算所有历史文档的查看得分,进行累加求和,公式为:

(4).计算历史文档在各历史文档下的引用得分,公式为:

W

其中,W

(5).计算所有历史文档的引用得分,进行累加求和,公式为:

(6).综合计算各历史文档的查看得分和引用得分,得到各文档个性化得分:

(7).对所有个性化得分进行归一化处理,公式为

其中,

优选地,计算所有文档的最终得分,公式为:

其中,

优选地,对所有历史文档根据最终得分进行递减排序,取TOP-N文档进行推荐。

本发明的有益效果如下:

本发明提出的计算写作文档的关键词和词频和各主题关键词计算余弦相似度,即解决了短文本在LDA模型中预测效果较差导致推荐不准确的问题,又显著提升了推荐效率,推荐时间大为降低,保证了推荐的实时性。本发明提出的统计所有历史文档的查看和引用数据,并将主题相似度作为权重,对所有历史文档个性化得分和主题相似度评分进行综合评分,针对相同的写作文本,考虑了写作者的写作习惯,不同的写作者会推荐出不同的文档,综合了个性化行为数据分析的文本推荐会更有益于帮助写作者进行文档写作。

附图说明

图1位本发明方法的示意图。

具体实施方式

下面通过实施例的方式对本发明内容进行说明,提供该实施例仅是为了能够更透彻的理解该发明的内容,而不应该将该发明限制在该实施例阐述的范围之内。

如图1所示,本发明提供了一种基于TextRank概率图模型和LDA主题模型,同时结合用户行为数据进行个性化推荐的实时文本写作推荐方法。包括:

S1.对历史文档进行LDA主题模型建模,得到历史文档的主题特征。

S2.获取当前写作文档的文本数据,通过计算TextRank算法得到当前文档的topK关键词及词频信息。

S3.对当前文档通过TextRank算法计算出的topK关键词和各主题的topK关键词取并集,对于不共现的词语,词频设为0。

S4.对求取并集后的文档向量与主题主题词向量计算余弦相似度,生成该文档和各个主题的相似度向量。然后和各个历史文档的主题向量求取余弦相似度,按照相似度递减排序,得到历史文档的相似度矩阵且归一化处理。

S5.获取历史文档的查看和引用文档数据。同时对这些文档数据进行建模,结合主题相似度评分对所有文档综合评分,得到按综合评分进行排序的推荐列表,按照由高到低的顺序取TOP-N文档进行推荐。

在本实施例中,所采用的文档集包括股票、教育、科技、体育四个方面,每个类别文档2400篇,共9600篇文档,其中每类的前2000篇文档共8000篇文档组成LDA训练集,剩余的1600篇文档为测试集。

本实施例具体步骤如下所示:

(1)进行LDA主题建模,得到历史文档信息。

利用python语言第三方库docx将所有文档内容读取到内存中,然后采用机器学习库sklearn实现对历史文档的主题建模,同时根据收集的停用词表去除停用词。在训练之前,根据业界习惯,将超LDA训练模型参数设置为α=1/m,β=0.01,其中m为当前主题数,迭代次数为200次。

其中,根据多次实验发现,迭代次数为200次在指定主题范围内模型收敛,过多的迭代次数会大为增加机器的负担,导致在时间阈值内模型不能训练完毕。过少的迭代次数会导致模型不能收敛,拟合效果过差。

其中,主题范围指定为(m,2m),步长为1,m为主题的数目,在本实施例中,由于主题数目为4,故主题范围取值范围为(4,8),步长为1。若对主题分布没有先验知识,则主题分布取值范围为(10,50),步长为5。

进一步的,在模型训练之后,会得到多个训练模型,通过困惑度求取最佳模型作为最终训练模型。

困惑度:用来计算LDA主题模型的程度,困惑度越低,证明模型拟合度越高,困惑度在某一主题下最低,则可认定为该主题模型为最优模型。

其次,获取各个主题topK关键词和关键词词频,并存储到本地磁盘以便后续步骤使用。在本实施例中,K设为50,获取的关键词信息如下表所示:

(2)获取文档编辑内容,通过TextRank算法计算主题词及词频

首先,获取当前编辑文档的全文内容(仅文字),然后通过python第三方库jieba进行分词,去除停用词操作,然后通过jieba库内置的texrank算法实现函数进行关键词的提取,同时得到关键词的词频。在本实施例中,我们分别处理得到1600篇测试文档的关键词和词频,各主题下部分文档的关键词和词频信息如下表所示:

(3)对步骤(1)(2)得到的主题词和词频求取并集。步骤如下:

读取步骤(1)中计算并存储的关键词和词频信息和步骤(2)中计算得到的关键词和词频信息求并集。

对于两集合不重叠出现的词语,词频设为0,求得只包含共现词语的文档主题词词频向量A和各主题的topK主题词词频向量B

(4)对步骤(3)求取的结果计算余弦相似度并归一化

对求取并集后的文档主题词向量A和各个主题的高词频主题词向量B

然后将求取的每一项相似度的结果放到向量P中,P为该文档和各个主题的相似度向量,再读取存在本地的json格式的各历史文本的主题向量Qi,i=1,2,3,…,n。

其中,n为历史文档的数量,再次分别计算P,Qi的相似度,计算公式为:

计算出当前写作文档和每一篇历史文档的相似度后作为文档排序函数的特征之一,并进行归一化处理,处理方法为所有相似度除以最高相似度。公式为:

其中,S

(5)获取历史文档的查看和引用赋值结果并归一化处理

首先,建立文档-“查看”和“引用”数据表,由于在推荐时文本内容显示的是存储在数据库中的文档摘要,“查看”为系统查看推荐出文档的全文功能,“引用”功能为将历史文档的摘要直接插入到当前所编辑的文档中。

其中,在编辑文本时,若写作者查看了推荐出的文本全文内容,则可以认为该文档和当前编辑文档的人工判定主题契合度较高,则将写作文档的ID和查看文档的ID保存到数据库中,同时在数据库中标记为查看。

其中,在编辑文本时,若写作者将推荐的历史文本的摘要直接插入到写作文本中,则可以认为该文档和当前编辑文档的人工判定主题契合度极高,将写作文档的ID和引用文档的ID存储到数据库中,同时在数据库中标记为引用。

在编辑一篇文档时,如果查看了某一篇推荐文档,则将当前文档ID、历史文档ID存储到数据库中。同样地,如果引用了某一篇推荐文档,则将当前文档ID,历史文档ID存储到数据库中。

在本实施例中,采用MySQL数据库,在MySQL数据库中新建查看引用数据表,该表设三个字段:编辑文档ID,查看或引用文档ID,查看或引用标志位。

获得历史文档和当前编辑文档同主题文档的名称,按照名称获取文档ID,然后从数据库中读取这些文档的查看和引用数据。

按照设计的赋分标准对这些数据进行赋分包含以下步骤:

读取查看-引用数据表,获取表中所有存储文档的查看和引用文档ID,并将各个文档的查看或引用文档数据进行个数统计。

在本实施例中,如文档ID为100的文档,经查询查看文档ID为15,36,41,50,74,74,89。则统计为15,36,41,50,89各一次,74两次。各历史文档相对于当前编辑文档查看得分赋值公式为:

W

其中,W

然后,统计所有历史文档的查看得分,进行累加求和,公式为:

如上所述,

同理,在本实施例中,如文档ID为100的文档,经查询引用文档ID为20,40,70,89。则统计20,40,70,89各一次。各历史文档相对于当前编辑文档查看得分赋值公式为:

W

其中,W

然后,计算所有历史文档的引用得分,进行累加求和,公式为:

如上所述,

然后,综合各个历史文档的查看得分和引用得分,得到各文档个性化得分:

对所有个性化得分进行归一化处理,处理方法为各文档得分除以文档最高得分。公式为:

其中,

(6)综合步骤(4)和(5)所得结果并按权值递减排序,取TOP-N推荐

经过步骤(4)得到各历史文档的相似度评分,经过步骤(5得到各历史文档的个性化评分,进行综合:

其中,

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号