微博用户标签自动生成算法

转载 2015年07月06日 17:47:25

文章来源:http://www.itongji.cn/article/04031ZR013.html


1. 问题描述

现有每个用户发送、评论、转发的微博内容, 要求从这些微博中为每个用户抽取适合的标签。 例如我的微博中经常提到“SVM”,“文本分类”,“协同过滤”等, 则给我打上标签“数据挖掘”。 要求算法尽量自动化, 不需要或需要很少人工干预。

2. 解决方案

有三种计算方法可尝试, 个人由于工作原因暂时不能一一实现,有兴趣的读者可进行实现比较

2.1 借助百度百科的开放分类

百度百科有个比较好的特性是在词条释义下面会列出该词条隶属的开放分类, 如词条“SVM”隶属的开放分类有数据挖掘, 机器学习等。

可以利用这个特性, 为用户相关微博中含有的词,抓取开放分类当做用户的标签。 具体流程:

1)维护一个词条->相关百度百科开放分类列表的缓存池

2)将用户相关微博分词,统计词频,过滤停用词,取较高频的有效词

3)取分词后的每个有效词条

4)若该词条在百度百科开放分类缓存池中,从缓存中取得该词条相关分类

5)若该词条不在百度百科开放分类缓存池中,以该词条为检索词抓取百度百科,得到相关开放分类列表返回,同时将结果放进缓存

6)重复3-5直到为用户的相关词条都生成开放分类列表

7)合并分类列表,取开放分类中较高频的K个分类作为该用户标签

2.2 利用概念层次结构图计算

假设把人的知识结构分成概念层次,越高的层次上概念越宽泛,如“计算机”,“汽车”,“电视剧”等, 越低的层次概念越细化,如“贝叶斯信任网络”,“奔驰600商务型”,“潜伏”等。  本算法的核心在于抽取出概念层次“不高不低”的词作为标签, 也就是说抽取的词概念既不要太宽泛,也不要太细化, 例如上述例子中,“计算机”,“汽车”,“电视剧”等词过于宽泛; 而“贝叶斯信任网络”,“奔驰600商务型”,“潜伏”又过于细化, 理想情况下, 抽取出“数据挖掘”,“奔驰”,“谍战剧”是最合适的。那么如何做到这一点呢?

可以利用词和词之间的相关性, 构建由词到词的关联图, 图中每个节点代表一个词, 每条边代表由词A到词B的一个关联,说明词A和词B在概念上有一定相关性。 具体构建方法可应用类似于apriori的关联规则挖掘算法, 利用不同词在同一用户微博中的共现频率,结合置信度、支持度、提升度等限制条件计算出这样的图。

当上述关联图计算完成后, 会有如下规律: 对于概念层次较高的词, 该词在图中节点的出度会很大(即该词会和很多词相关联),如“电视剧”可能关联到众多电视剧名, 电视剧类型; 对于概念层次较低的词,该词在图中节点的出度会很小(即该词会和很少词相关联),如“潜伏”可能只关联到几个相似的电视剧名和“谍战片”等少数电视剧类型。

于是可以按照所有词节点的出度进行排序统计, 结合人工review, 选出出度不高不低的词节点,作为合法标签存储。

有了合法标签, 根据用户相关微博计算他的标签就容易了, 第一步分词统计词频, 第二步遍历用户微博中的原始词,如果是合法标签,则为用户打上标签。 如果遍历过后发现为这个用户打的标签太少, 则搜索词条相关图中和用户相关原始词相关,并且是合法标签的词作为标签。

2.3 利用协同过滤思想进行计算

如果系统中已有较多用户打上了一些标签, 则可以根据他们的标签相似性、相关微博相似性进行协同过滤计算标签,具体流程如下:

根据用户已有标签和相关微博生成代表这个用户的关键词向量

计算和该用户有相似向量的有标签用户

统计该用户的相似用户都打了什么标签,按照频率高低排序,选择K个高频标签


相关文章推荐

标签传播算法(Label Propagation)及Python实现

标签传播算法(Label Propagation)及Python实现zouxy09@qq.comhttp://blog.csdn.net/zouxy09 一、半监督学习       半监督学习(Sem...
  • zouxy09
  • zouxy09
  • 2015年10月13日 22:03
  • 36936

TextRank算法为文本生成关键字和摘要

TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts...

带文本的标签自动生成font标签

某天测试自己写的网站的时候突然发现一些按钮的点击功能失效,在控制台发现该a链接中的文本,被两个font标签包裹着,导致不能处罚到a链接。 后来发现是因为html在申明的时候是这样写的,导致浏览器自动...
  • Eliosa
  • Eliosa
  • 2017年03月24日 17:26
  • 415

lpa 半监督学习 之--标签传播算法

众所周知,机器学习可以大体分为三大类:监督学习、非监督学习和半监督学习。监督学习可以认为是我们有非常多的labeled标注数据来train一个模型,期待这个模型能学习到数据的分布,以期对未来没有见到的...

计算两组标签/关键词 相似度算法

写作背景标签在互联网行业有大量的应用,给博客打标签,给商品打标签,给新闻打标签。通常每篇文章会打上多个标签,好的标签系统给后期的数据分析可以带来巨大的利处。最近想做一个基于内容的新闻简单推荐系统,其中...

《推荐系统》基于标签的用户推荐系统

1:联系用户兴趣和物品的方式 2:标签系统的典型代表 3:用户如何打标签 4:基于标签的推荐系统 5:算法的改进 源代码查看地址:github查看 一:联系用户兴趣和物品的方式     ...

在高并发分布式情况下生成唯一标识id

最近看了一个清华博士写的代码,把代码研究了一番,在一些方面深度受益。在这里与大家分享下我对其中一点的分析。 在做项目的时候经常会用id作为唯一标识。 但是当有这样一个需求出现的时候:工程分布式部署,要...

dedecms自动生成tag方法

织梦dedecms可以自动生成keywords,但是却没有办法自动生成tag,系统后台的TAG标签管理生成的标签实际上就是复制了keywords,让后插入tag中。 所以要自动生成tag的话,只需要...

文本深度表示模型—word2vec&doc2vec词向量模型

来源:http://www.dataguru.cn/article-9478-1.html 深度学习掀开了机器学习的新篇章,目前深度学习应用于图像和语音已经产生了突破性的研究进展。深度学习一...

斯坦福机器学习: 网易公开课系列笔记(四)——牛顿法、广义线性模型

牛顿法      给定一个函数图像,如何求得使f(x)=0的x?       首先初始化一个点X0,过f(X0)做函数切线,得到与X轴的交点X1,再过f(X1)做函数切线,得到与X轴的交点X2,以此...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微博用户标签自动生成算法
举报原因:
原因补充:

(最多只允许输入30个字)