一种面向事件的微博搜索方法

文档序号:10655289阅读:332来源:国知局
一种面向事件的微博搜索方法
【专利摘要】本发明公开了一种面向事件的微博搜索方法,包括微博的索引策略和对最后搜索结果的排名。微博索引策略是指对满足什么条件的微博进行搜因和怎样对这些微博进行索引,索引策略直接影响索引和查询的效率。本发明采用部分索引策略,只对和事件相关的微博进行索引,仅仅对包含主题标签或者命名实体的微博进行索引;索引结构则是采用的是简单的单倒排索引。对搜索结果的排名是指对搜索结果按照一定的策略进行排名,从而将最符合用户需求的结果呈现给用户。本发明的排名机制将用户的重要性和微博本身的特性进行线性组合:用户的重要性是考虑到微博中用户的关注的数量和被关注的数量,微博本身的特性则涉及到某条微博的被转发次数和评论次数。
【专利说明】
-种面向事件的微博搜索方法
技术领域
[0001] 本发明属于社交网络领域,更具体地,设及一种面向事件的微博捜索方法的微博 的索引策略和排名技术。
【背景技术】
[0002] 微博捜索是对微博信息进行即时、快速捜索,实时地将用户产生的微博信息作为 查询结果返回给其他用户。微博捜索的问世使得人们在现实中获取外界信息变得更加实时 化、简单化和便捷化。相比传统捜索引擎,微博实时捜索需要具备高插入率、低查询延时、实 时数据可用性W及高并发读写的特性。一项调查研究显示,截至2012年3月,Twitter每天会 产生约3.4亿条推文,处理约16亿的网络捜索请求;而新浪微博平均每天产生超过1亿条微 博,高峰期每秒能够达到13000条,如此快速的微博产生速度给微博实时捜索平台提出了研 究更高效索引方法的要求,用W支持微博的快速索引和实时查询。
[0003] 在微博捜索方面,为提高捜索质量和效率,研究者也提出了一些索引策略,主要包 括全局索引策略和部分索引策略。全局索引是指将所有的微博都会插入到索引中去,部分 索引则会按照一定的机制去掉一些无效的微博,将有效的微博插入到索引中去。虽然现有 的方法能处理运一问题,运些方法均有它们的局限性。Twitter每天会产生约3.4亿条推文, 运么大的数据量,对于全局索引的要求是非常高的,需要复杂的索引结构的设计来处理运 些微博。运些复杂的索引结构就需要更高的维护开销和查询开销。部分索引对于无效微博 的确定也是仁者见仁智者见智的,并没有一个有效的方法,因此会带来结果的不精确性。另 外现有的捜索系统,针对最后结果的排序,基本上都是依靠微博的发表时间进行排序的,运 不能很好的满足用户的需求。
[0004] 为了减少索引的时间,索引维护和查询的开销,满足用户的需求。我们设计了一种 面向事件的微博捜索方法,包括一个部分索引即只索引和事件相关的微博和一个微博排名 函数。研究表明几乎所有的和实际事件相关的微博都会关联到一个主题标签或者命名实 体,运样索引和事件相关的微博便可W转换成索引包含主题比前或者命名实体的微博。

【发明内容】

[0005] 针对现有技术的缺陷,本发明的目的在于提供一种面向事件的微博捜索方法,旨 在解决上述方法索引速度慢,维护索引结构开销大和查询开销打的问题,同时能够更好的 满足用户的需求。
[0006] 为了实现上述目的,本发明提供一种面向事件的微博捜索方法,包括W下步骤:
[0007] (1)对原始的微博数据集进行W下的预处理:首先除去微博中的一些噪音,然后利 用词袋模型将微博中的单词转化存储,W方便索引。
[000引(2)去掉微博中的一些噪音之后,便可W对微博按照部分索引策略进行单倒排索 引了,并将不相关的微博写入到日志文件
[0009] (3)用户U输入关键字K,捜索和关键字K相关的微博,并等待捜索方法返回结果。
[0010] (4)系统接受关键字并在索引结构中查找和关键字相关的微博,并保存查询到的 微博。
[0011] (5)首先对查询到的微博按照排名函数进行打分,然后将每条微博按照打分的降 序进行排名,最后将捜索结果返回给用户U。
[0012] 优选地,步骤(1)包括W下步骤:
[0013] (1-1)为了去掉数据集中的噪音,对数据集进行了一系列的处理。首先除去数据集 中的停用词和无用词,然后我们利用一个开源的化va库,将数据集中的单词转化为词根的 形式即将英文单词转化为其原形的形式。最后我们除去在整个数据集中出现频率小于5的 主题标签和出现频率小于50的单词和单词数小于3的微博。
[0014] (1-2)为了便于单词的查找,需要将单词转化存储,将单词添加到词典W及完成单 词与单词i d之间的映射过程,具体的用到JAVA中的化ShMap类。
[0015] 优选地,步骤(2)包括W下步骤:
[0016] (2-1)对于已经去掉噪音的微博,判断该条微博中是否包含主题标签或者命名实 体。
[0017] (2-2)如果该条微博中包含主题标签或者命名实体,则表明该条微博和事件是相 关的,将其加入到单倒排索引中去,否则将其加入到日志文件中去。
[0018] (2-3)周期性检测微博加入到索引中的时间,如果某条微博加入到索引的时间超 过15天,则将该条微博从索引结构中去掉,然后将其加入到日志文件中去。
[0019] 优选地,步骤(4)具体为,对于用户U给定的关键词K,利用相似度公式计算其和索 引中的微博的相似性,得到和关键词K相似的微博。
[0020] 优选地,步骤(5)包括W下步骤:
[0021] (5-1)计算每个用户的重要性,具体为考虑到每个用户的关注的数量和被关注的 数量。给定某个用户U,他关注的人的个数为fo,关注他的人数
[0022] 的个数为fe。用R(U)表示用户U的重要性,则用户U的计算公式为:
[0023]
[0024] A的取值范围是0到1,因为考虑到关注某个用户的人数fe,会比他关注的人数fo更 重要。
[0025] (5-2)除了用户的重要性会影响微博的排名之外,微博本身自带的一些属性也会 影响排名。运一步计算微博自身属性的重要性。微博本身的属性主要包括微博的评论数和 微博的被转发数。给定一条微博t,让r表示微博的被转发的次数,C表示用户的评论数,微博 本身的属性A(t)的计算公式如下所示。
[0026]
[0027] (5-3) 1^线性組合将每个用户的重要性和每条的微博的重要性联合在一起,给定 用户一个U和一条微博t,最后的排名分数的计算公式为:
[002引
[0029] 公式中T是线性组合的参数,取值在0到I之间。公式中timei表示微博t的发表时 间,而times则表示查询时间。
[0030] (5-4)计算步骤(4)的得到的微博,计算每条微博的RankScore值,按照RankScore 的值的降序将运些微博排序,然后将结果返回给用户U。
[0031] 通过本发明所构思的W上
【发明内容】
,与现有方法相比,本发明具有W下的有益效 果:
[0032] 1、索引的效率高,并不需要额外的开销用来维护复杂的索引结构:在步骤(3)中, 本发明采用部分索引策略,只是针对包含主题标签或者命名实体的微博进行索引,运样便 会使索引的微博量少,从而不需要复杂的索引结构处理大量的微博流。
[0033] 2、提高用户的用户体验:越来越多的用户在捜索微博时只想得到一些和热点事件 相关的微博而且只会查看结果的前几条,步骤(3)只索引和事件相关的微博运样去除了事 件无关微博,步骤(5)的排名函数提高了捜索结果的质量。
【附图说明】
[0034] 图1是本发明面向事件的微博捜索方法的原理图。
【具体实施方式】
[0035] 为了使本发明的目的、技术方案及优点更加清楚明白,W下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用W解释本发明,并 不用于限定本发明。
[0036] 如图1所示,本发明提供了一种面向事件的微博捜索方法:
[0037] (1)对原始的微博数据集进行W下的预处理:首先除去微博中的一些噪音,然后利 用词袋模型将微博中的单词转化存储,W方便索引,集体包含W下步骤:
[0038] (1-1)为了去掉数据集中的噪音,对数据集进行了一系列的处理。首先除去数据集 中的停用词和无用词,然后我们利用一个开源的化va库,将数据集中的单词转化为词根的 形式即将英文单词转化为其原形的形式。最后我们除去在整个数据集中出现频率小于5的 主题标签和出现频率小于50的单词和单词数小于3的微博。
[0039] (1-2)为了便于单词的查找,需要将单词转化存储,将单词添加到词典W及完成单 词与单词i d之间的映射过程,具体的用到JAVA中的化ShMap类。
[0040] (2)对去掉微博中的一些噪音之后,便可W对微博按照部分索引策略进行单倒排 索引了,并将不相关的微博写入到日志文件。
[0041] (2-1)对于已经去掉噪音的微博,判断该条微博中是否包含主题标签或者命名实 体。
[0042] (2-2)如果该条微博中包含主题标签或者命名实体则表明该条微博是和事件相关 的,将其加入到单倒排索引中去,否则将其加入到日志文件中去。
[0043] (2-3)周期性检测微博加入到索引中的时间,如果某条微博加入到索引的时间超 过15天,则将该条微博从索引结构中去掉,然后将其加入到日志文件中去。
[0044] (3)用户U输入关键字K,捜索和关键字K相关的微博,并等待捜索方法返回结果。
[0045] (4)系统接受关键字并在索引结构中查找和关键字相关的微博,具体为对于用户U 给定的关键词K,利用相似度公式计算其和索引中的微博的相似性,得到和关键词K相似的 微博,并保存在一个数据接头中。
[0046] (5)首先对查询到的微博按照排名函数进行打分,然后将每条微博按照打分的降 序进行排名,最后将捜索结果返回给用户U,包括W下步骤:
[0047] (5-1)计算每个用户的重要性,具体为考虑到每个用户的关注的数量和被关注的 数量。给定某个用户U,他关注的人的个数为fo,关注他的人数
[0048] 的个数为fe。用R(U)表示用户U的重要性,则用户U的计算公式为:
[0049]
[0050] A的取值范围是0到1,因为考虑到关注某个用户的人数fe,会比他关注的人数fo更 重要。
[0051] (5-2)除了用户的重要性会影响微博的排名之外,微博本身自带的一些属性也会 影响排名。运一步计算微博自身属性的重要性。微博本身的属性主要包括微博的评论数和 微博的被转发数。给定一条微博t,让r表示微博的被转发的次数,C表示用户的评论数,微博 本身的属性A(t)的计算公式如下所示。
[0化2]
[0053] (5-3) W线性组合将每个用户的重要性和每条的微博的重要性联合在一起,给定 用户一个U和一条微博t,最后的排名分数的计算公式为:
[0化4]
[0055]公式中T是线性组合的参数,取值在0到1之间。公式中timei表示微博t的发表时 间,而times则表示查询时间。
[0化6] (5-4)计算步骤(4)的得到的微博,计算每条微博的RankScore值,按照RankScore 的值的降序将运些微博排序,然后将结果返回给用户U。
[0057]本领域的技术人员容易理解,W上所述仅为本发明的较佳实施例而已,并不用W 限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含 在本发明的保护范围之内。
【主权项】
1. 一种面向事件的微博搜索方法,其特征在于,包括以下步骤: (1) 对原始的微博数据集进行预处理:除去微博中的噪音,利用词袋模型将微博中的单 词转化存储,以方便索引; (2) 对微博按照部分索引的策略进行单倒排索引,并将不相关的微博写入到日志文件; (3) 用户输入关键字,搜索和关键字相关的微博,并等待搜索方法返回结果; (4) 系统接受关键字并在索引结构中查找和关键字相关的微博,并保存查询到的微博; (5) 对查询到的微博按照排名函数进行打分,将每条微博按照打分的降序进行排名,将 搜索结果返回给用户。2. 根据权利要求1所述的面向事件的微博搜索方法,其特征在于,所述步骤(1)包括以 下子步骤: (1-1)首先除去数据集中的停用词和无用词;然后利用一个开源的Java库,将数据集中 的单词转化为词根的形式即将英文单词转化为其原形的形式;最后除去在整个数据集中出 现频率小于5的主题标签和出现频率小于50的单词和单词数小于3的微博; (1-2)将单词转化存储,将单词添加到词典以及完成单词与单词id之间的映射。3. 根据权利要求1或2所述的面向事件的微博搜索方法,其特征在于,所述步骤(2)包括 以下子步骤: (2-1)判断该条微博中是否包含主题标签或者命名实体; (2-2)如果该条微博中包含主题标签或者命名实体则表明该微博与事件相关,将其加 入到单倒排索引中去,否则将其加入到日志文件中去; (2-3)周期性检测微博加入到索引中的时间,如果某条微博加入到索引的时间超过15 天,则将该条微博从索引结构中去掉,然后将其加入到日志文件中去。4. 根据权利要求1或2所述的面向事件的微博搜索方法,其特征在于,所述步骤(4)的具 体为,对于用户U给定的关键词K,利用相似度公式计算其和索引中的微博的相似性,得到和 关键词K相似的微博。5. 根据权利要求1或2所述的面向事件的微博搜索方法,其特征在于,所述步骤(5)的具 体为: (5-1)计算每个用户的重要性,用户U的重要性R(U)计算公式为:其中f〇为用户U关注的人的个数,fe为关注用户U的人的个数,用R(U)表示用户U的重要 性,λ的取值范围是0到1; (5-2)计算微博自身属性的重要性,微博t本身的属性A(t)的计算公式如下所示:其中r表示微博的被转发的次数,c表示用户的评论数; (5-3)以线性组合将每个用户的重要性和每条的微博的重要性联合在一起,对于用户 一个u和一条微博t,最后的排名分数的计算公式为:其中τ是线性组合的参数,取值在O到1之间,〖加的表示微博t的发表时间,而time2则表 示查询时间; (5-4)计算步骤(4)的得到的微博的RankScor e值,按照RankScore的值的降序将这些微 博排序,然后将结果返回给用户U。
【文档编号】G06F17/30GK106021450SQ201610325193
【公开日】2016年10月12日
【申请日】2016年5月17日
【发明人】赵峰, 朱亚军, 王沛, 金海
【申请人】华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1