1.用户兴趣建模系统
对于每个微博用户,通过对用户发布内容以及社交关系挖掘,得到有益数据,具体而言,每个微博用户得兴趣描述包含以下几个方面:用户兴趣标签、用户兴趣词和用户兴趣分类
细粒度:
用户兴趣标签:通过微博用户的社交关系推导出的用户可能感兴趣的语义标签
用户兴趣词:用户发布微博或者转发微博等内容属性来挖掘用户潜在兴趣
粗粒度:
用户兴趣分类:定义好的三级分类体系中,将用户的各种数据映射到分类体系结构中
2.架构
发微博---Feed流(Round Robin)------实时Master/Slave
-------离线Hadoop
3.实时抽取系统
用户发布微博-------信息进入原始Feed流------语义处理单元针对微博进行语义计算(分词、焦点词抽取、微博分类计算)----微博ID和用户ID并将微博插入“Feed语义表示Redis数据库”-----当“Feed语义表示Redis数据库”数据规模在一定范围外,将微博数根据UID进行合并进入“User语义表示Redis数据库”-----“User语义表示Redis数据库”与Mysql用户历史兴趣信息进行合并,需要考虑时间衰减因素
语义计算:1.TF.IDF框架
基于向量空间模型的表示方法是指用关键词和关键词的权重的向量来表示用户兴趣模型。向量空间模型(是由等人在世纪年代提出的,它是文档表示中最常见的方法。通常当我们获取了表示用户兴趣的浏览文档内容后,系统可以自动地从这些文档中提取关键词,以及与关键词相关联的权重,用来对文档进行向量化表示。这样每个文档可以表示为{(ti,w1)(t2,w2)…(ti,wi)}其中ti为文档中的第i项,它可以是字、词、短语或词组等。wi为ti项在该文档中的重要程度,及ti项的权重。t1…ti可以是文档中出现的所有项,也可以是一个经过筛选处理后的子集。对于的算法有多种可选,最常用到的有词频法和tf-idf法
2.焦点次抽取(单词在词中出现的位置、词性、是否命名实体、是否标题等)
4.离线挖掘系统
过滤噪音(一个用户具有某个兴趣点,那么他不会只发布一条与此相关的微博,一般会发布多条语义相近的微博)
问题:如何知道两条微博是否语义相近?
通过实时抽取系统累积的用户兴趣已经以若干兴趣词的表示方式存在:如何知道两个单词语义相近?如何将语义相近的兴趣词进行聚类?如何判别聚类后的兴趣词可以保留需要过滤?
---------------->图挖掘算法(建边---PageRank)