快速过滤微博信息的方法

文档序号:6443704阅读:174来源:国知局
专利名称:快速过滤微博信息的方法
技术领域
本发明涉及快速过滤微博信息的方法。
背景技术
伴随着微博用户爆炸式增加,一些规避各种责任的商业微博已经出现了泥沙俱下的乱象,虚假恶搞信息多,网民传播草根牛博实为企业团体的隐形推销,买卖粉丝网络水军突起,微博名人扎堆难辨真假等等乱象丛生,严重威胁着社会的稳定和安全,近来,网络的安全引起了网络安全监督部门的重视。而如何对网络微博进行监测,是摆在国家政府及网络监管部门面前的一个大课题。由于互联网上的微博信息数量十分庞大,在对微博信息进行过滤、分析时,仅仅靠人工进行搜集和浏览,浪费过多的人力、物力不说,要想及时、准确、 全面把握微博舆论的敏感内容和传播趋势也是难以实现的。现有的微博信息过滤方式之一主要是通过直接循环比对,S卩,在关键词字典中比对某一微博信息是否存在指定的关键词如果存在,则对该微博信息进行相应的处理。由于关键词字典通常包含有大量的词条(至少100万条以上),如果每条微博信息都需要比对 100万次,则需要花费不可估量的时间来处理数量庞大的微博信息。现有的另一种微博信息过滤方式是先对微博信息进行分词(例如使用正向最大匹配、逆向最大匹配等分词方式),然后再将每个词与关键词字典进行比对。这种方式虽然能在一定程度上加快微博信息的过滤速度,但如果其中的分词结果不准确,将会直接影响微博信息过滤的命中率。

发明内容
有鉴于此,本发明的主要目的在于提供一种快速过滤微博信息的方法,以实现快速、准确的微博信息过滤。本发明提供的一种快速过滤微博信息的方法,包括以下步骤A、初始化关键词字典;B、对微博信息进行分段,并在正向上从微博信息段的起始字符开始,对微博信息段进行分词;C、进行哈希比对所述分词与所述关键词字典中的关键词,并筛选出命中关键词的微博信息。由上可以看出,根据断句标点将微博信息分段,并依次对各个微博信息段分词,可获得高准确度的分词结果,由此依据高准确度的分词结果可以提高分词在关键词字典中的命中率,从而提高微博信息过滤的命中率,实现了快速、准确的微博信息过滤。在上述方法中,所述步骤A包括以下子步骤Al、将关键词映像到地址区间上;A2、比较并记录下所述关键词字典中关键词条目的最小长度和最大长度。在上述方法中,所述步骤A还包括
记录下关键词字典中存在的关键词条目长度。在上述方法,子步骤Al所述将关键词映像到地址区间为利用哈希算法将关键词映像到地址区间上。由上可以看出,可使用哈希表快速查找利用哈希算法映像的关键词。在上述方法中,步骤B所述对微博信息段进行分词包括依次从该信息段的每个字符处取一特定长度的字符串作为分词;该特定长度的范围不小于关键词条目的最小长度且不大于最大长度。在上述方法中,步骤B所述对微博信息进行分段包括将所述微博信息中的标点符号替换成空格,再从空格位处将微博信息分段。由上可以看出,在实际的分段过程中,将微博信息中的各种标点符号统一替换成空格,节省了对于各种繁杂标点符号的判断时间,提高了分段效率。在上述方法中,所述步骤B还包括判断上述分词中是否存在相同分词若是,则删除多余的相同分词。由上可以看出,通过删除冗余的分词,降低分词在关键词字典中的比对强度,由此进一步提闻微博 目息过滤的速度。在上述方法中,在所述步骤B还包括删除长度与关键词字典中关键词长度不同的分词。由上可以看出,分词长度以关键词字典中的关键词长度为基准,可以减少对于长度与关键词不同的分词的多余判断,进一步提升查询速度。


图I为本发明提供的过滤微博信息的方法流程图。
具体实施例方式下面结合附图详细介绍本发明提供的快速过滤微博信息的方法。如图I所示,所述过滤微博信息的方法主要包括以下步骤步骤10 :初始化关键词字典。在本步骤中,首先利用哈希算法将每个关键词(可根据需要随时录入)映像到一个(内存)地址区间上。可用哈希函数H(key)来表示所述关键词在内存中的存储,其中 key为关键词。接着,比较并记录下关键词条目的最小长度和最大长度。具体过程可参见下列伪代码
Set diet = new HashSet(); //设定关键词字典对象为哈希格式对象 diet String item = null;int itemMinLength;//关键词条目的最小长度
int itemMaxLength;//关键词条目的最大长度
while((item=buf.readLine())){ //读取关键词 item = item.trim()//删除关键词两端的空白字符和其
他预定义字符 int Ien = item.length();//获取关键词长度
if (Ien==O) continue; if (itemMinLength==。&& len>0){ itemMinLength=len; itemMaxLength=len; continue;
}
/*比较已输入的关键词的条目长度,以确定关键词条目的最小长度和最大长度*/
if(len< itemMinLength) { itemMinLength = len;
}else if (len> itemMaxLength){ itemMaxLength = len;
}
dict.add( item );//将当前输入的关键词加入到关键词字
典对象diet中 }假设向关键词字典里输入三条关键词“天气”、“风速”、“气象预报”,则关键词条目的最小长度itemMinLength为2,最大长度itemMaxLength为4。此外,在本步骤中还可记录下关键词字典中存在的关键词条目长度,例如包含有关键词“天气”、“风速”、“气象预报”的关键词字典具有的关键词条目长度为2和4。步骤20 :将微博信息分段后,逐段对微博信息进行分词。在本步骤中,首先在微博信息中的标点符号处(如逗号、句号、分隔符、空格符等) 将微博信息分成若干段。例如,假设一条微博信息为“今天的天气很好,真想出去玩玩。”,则该条信息中的逗号和句号将该信息分为两段,即“今天的天气很好”和“真想出去玩玩”。
在实际的分段过程中,为了提高分段效率,可先将微博信息中的标点符号替换成空格,再从空格位处将微博信息分段。具体过程可参见下列伪代码String content = “今天的天气很好,真想出去玩玩。”;Il单条微博信息的内容content = content, replace (array ( “,”,“,”,“。”,“; ”),“ ”,content);//将该微博信息内容中的标点“,”,“,”,“。”,“;”替换成””List paragraphs = content, explode ( “,,);Η在空格处分割该微博信息,由此得到微博信息段数组然后,对在上述过程中得到的每个微博信息段进行分词。例如,在该信息段正向 (从左至右)上从起始字符开始,依次从该信息段的每个字符处取一特定长度的字符串作为分词。该特定长度的范围介于关键词字典中关键词条目的最小长度与最大长度之间且包括关键词条目的最小长度和最大长度。具体过程可参见下列伪代码
Set list = new HashSet(); //定义一个Set对象作为分词列表 foreach (paragraphs as item){ //循环各微博信息段 int len = item.length();//获取微博信息段长度
/*在微博信息段正向上以起始字符为起点,依次从该信息段的每个字符处取一特定长度的字符串作为分词,并将分词放入分词列表list中*/
for (int i = 0; i < len; i++){
for (int j = itemMinLength; j < itemMaxLength; j++){
String word = item.substring(i, i + j);
list.add(word);举例来说,由步骤20已知当前关键词条目的最小长度itemMinLength为2,最大长度itemMaxLength为4,从微博信息“今天的天气很好,真想出去玩玩。”的第一段内容“今天的天气很好”中的起始字符“今”起,由左至右依次从该信息段中的各个字符处取长度为2、
3、4的字符串作为分词,例如长度为2的分词包括“今天”、“天的”、“的天”、“天气”、“气很”、 “很好”,长度为3的分词包括“今天的”、“天的天”、“的天气”、“天气很”、“气很好”,长度为4 的分词包括“今天的天”、“天的天气”、“的天气很” “天气很好”。接着在对该微博信息的第二段内容“真想出去玩玩”进行分词,过程同上,不再赘述。最终,获得一个包含上述所有分词的分词列表。
在完成分词后,需要判断上述分词列表中是否存在相同分词若是,则删除内容重复的分词,以减少冗余。例如,如果存在两个一样的分词“今天”,则删除其中的一个,只保留一个分词“今天”。除此之外,对于长度与关键词字典中关键词长度不同的分词,可直接从上述分词列表中删除,由此可减少不必要的分词组合,例如,上述关键词字典只包含由长度为2和4 的关键词,则删除分词列表中长度为3的分词,或在建立分词列表时仅根据所述关键词长度的分词。步骤30 :依次将所述分词列表中的分词与所述关键词字典中的关键词进行比对, 并筛选出命中关键词的微博信息。在本步骤中,依次将所述分词列表中的分词与关键词字典中的关键词进行哈希比对查找,并筛选出命中所述关键词的微博信息。其中,所述哈希比对查找为公知技术,在此不再赘述。此外,还可以在对微博信息进行分词的同时,比对所述分词与所述关键词字典中关键词。即,每分出一个词,则立即与关键词进行比对,如果命中则停止继续分词。这样的好处在于能够进一步节省过滤微博信息所需的时间,提高过滤微博信息的效率。由上述内容可知,利用哈希算法将不同的关键词映像到不同的地址区间,即每个地址区间至多映射有一个关键词。因此在这种情况下对于每个关键词的查询比对操作的复杂度为0(1)。这样利用本发明过滤微博信息的方法在最糟糕的情况下需要对每个分词进行一次复杂度为0(1)的哈希查找,例如对于“今天的天气很好”这段信息共分出15个词,那么在最糟糕的情况下需要进行15次复杂度为0(1)的哈希。由此推导复杂度为0(1)的哈希查找的次数<=(itemMaxLength-itemMinLength+1)* (微博信息文本字符长度)。而在最好的情况下,只需一次复杂度为0(1)的哈希查找即可命中。本发明提供的快速过滤微博信息的方法适用于多种微博信息处理应用,例如在监控微博信息应用中,为了限制利用微薄散播不良信息,利用上述过滤微博信息的方法步骤首先初始化需要监测的微博信息的关键词字典(例如包括一些不文明用语的关键词),再利用上述微博信息过滤方法筛选出命中上述关键词的微博信息,最后屏蔽该微博信息。可参照下列伪代码
foreach(list as item){ if (diet.contains(item){ //如果微博信息命中关键词字典中的
某一关键词,则触发微博信息监测操作 对该微博信息进行相关的监控操作(例如屏蔽该微博信息);此外,上述的过滤微博信息还可应用于微博信息分析、挖掘等领域。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种快速过滤微博信息的方法,其特征在于,包括以下步骤A、初始化关键词字典;B、对微博信息进行分段,并在正向上从微博信息段的起始字符开始,对微博信息段进行分词;C、进行哈希比对所述分词与所述关键词字典中的关键词,并筛选出命中关键词的微博信息。
2.根据权利要求I所述的方法,其特征在于,所述步骤A包括以下子步骤Al、将关键词映像到地址区间上;A2、比较并记录下所述关键词字典中关键词条目的最小长度和最大长度。
3.根据权利要求2所述的方法,其特征在于,所述步骤A还包括记录下关键词字典中存在的关键词条目长度。
4.根据权利要求2所述的方法,其特征在于,子步骤Al所述将关键词映像到地址区间为利用哈希算法将关键词映像到地址区间上。
5.根据权利要求2所述的方法,其特征在于,步骤B所述对微博信息段进行分词包括 依次从该信息段的每个字符处取一特定长度的字符串作为分词;该特定长度的范围不小于关键词条目的最小长度且不大于最大长度。
6.根据权利要求I所述的方法,其特征在于,步骤B所述对微博信息进行分段包括 将所述微博信息中的标点符号替换成空格,再从空格位处将微博信息分段。
7.根据权利要求6所述的方法,其特征在于,所述步骤B还包括判断上述分词中是否存在相同分词若是,则删除多余的相同分词。
8.根据权利要求6所述的方法,其特征在于,在所述步骤B还包括删除长度与关键词字典中关键词长度不同的分词。
全文摘要
本发明提供了一种快速过滤微博信息的方法,包括以下步骤A、初始化关键词字典;B、对微博信息进行分段,并在正向上从微博信息段的起始字符开始,对微博信息段进行分词;C、进行哈希比对所述分词与所述关键词字典中的关键词,并筛选出命中关键词的微博信息。以实现快速、准确的微博信息过滤。
文档编号G06F17/30GK102591951SQ20111044730
公开日2012年7月18日 申请日期2011年12月28日 优先权日2011年12月28日
发明者吴超佳, 张天泽 申请人:信石科技(天津)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1