发明内容
本发明实施例的微博用户挖掘方法及装置,用以提高用户覆盖范围,挖掘出尽量多的微博用户。
为此,本发明实施例提供如下技术方案:
一种微博用户挖掘方法,所述方法包括:
判断用户列表中是否存在未处理用户;
如果不存在,则按照预设规则从微博网页中抓取用户数据,并判断所述用户数据对应的抓取用户是否存在于所述用户列表,如果不存在,则将该抓取用户添加至所述用户列表,并设置该抓取用户的状态为已处理;
如果存在,则判断该未处理用户是否具有下级用户:
如果具有,则获取该未处理用户的下级用户,并将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理;将所述下级用户作为未处理用户,继续执行所述判断未处理用户是否具有下级用户的步骤;
如果不具有,则设置该未处理用户的状态为已处理。
优选的,所述预设规则为最新发布的微博,则
所述按照预设规则从微博网页中抓取用户数据,包括:
按照微博发布时间对所述微博网页中的微博排序;
抓取最新发布的预设个数的微博作为用户数据,或者抓取最新发布的预设时间段内的微博作为用户数据。
优选的,所述预设规则为预设关键词,则
所述按照预设规则从微博网页中抓取用户数据,包括:
抓取所述微博网页中含有所述预设关键词的微博和/或评论内容作为用户数据。
优选的,所述预设规则为预设地理位置,则
所述按照预设规则从微博网页中抓取用户数据,包括:
抓取所述微博网页中具有所述预设地理位置的微博和/或评论内容作为用户数据。
优选的,所述获取该未处理用户的下级用户,包括:
通过所述未处理用户的用户关系网获取所述下级用户;或者,
抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。
一种微博用户挖掘装置,所述装置包括:
第一判断单元,用于判断用户列表中是否存在未处理用户;
抓取单元,用于在所述第一判断单元判断所述用户列表中不存在未处理用户时,按照预设规则从微博网页中抓取用户数据;
第二判断单元,用于判断所述用户数据对应的抓取用户是否存在于所述用户列表;
第一添加单元,用于在所述第二判断单元判断所述抓取用户不存在于所述用户列表时,将该抓取用户添加到所述用户列表,并设置该抓取用户的状态为已处理;
第三判断单元,用于在所述第一判断单元判断所述用户列表中存在未处理用户时,判断该未处理用户是否具有下级用户;
获取单元,用于在所述第三判断单元判断所述未处理用户具有下级用户时,获取该未处理用户的下级用户;
第二添加单元,用于将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理;并将所述下级用户作为未处理用户,通知所述第三判断单元继续判断未处理用户是否具有下级用户;
设置单元,用于在所述第三判断单元判断所述未处理用户不具有下级用户时,设置该未处理用户的状态为已处理。
优选的,所述预设规则为最新发布的微博,则所述抓取单元,包括:
排序单元,用于按照微博发布时间对所述微博网页中的微博排序;
抓取子单元,用于抓取最新发布的预设个数的微博作为用户数据,或者抓取最新发布的预设时间段内的微博作为用户数据。
优选的,所述预设规则为预设关键词,则
所述抓取单元,具体用于抓取所述微博网页中含有所述预设关键词的微博和/或评论内容作为用户数据。
优选的,所述预设规则为预设地理位置,则
所述抓取单元,具体用于抓取所述微博网页中具有所述预设地理位置的微博和/或评论内容作为用户数据。
优选的,所述获取单元,具体用于通过所述未处理用户的用户关系网获取所述下级用户;或者,
所述获取单元,具体用于抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。
本发明实施的微博用户挖掘方法及装置,以用户列表中是否存在未处理用户为依据,选择不同的用户挖掘方式,如果存在未处理用户,则通过逐层递归挖掘的方式,不断的挖掘获得下级用户,直至找到底层节点;如果不存在未处理用户,则可通过在微博网页中抓取微博数据的方式挖掘零散用户。如此,一方面就可降低挖掘结果对种子用户选取的依赖性;另一方面还可提高用户覆盖面,挖掘出尽量多的微博用户。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
下面先介绍下本发明的应用场景。
作为微博的核心,微博用户对信息传播、产品营销、社交网络的深入分析等方面都起着至关重要的作用,为了挖掘到更多的微博用户,一般情况下要先确定一批种子用户,以便以这批种子用户为起始点,进行逐层递归挖掘。
微博用户可大致被分为两种类型:认证用户、普通用户。为了挖掘出尽可能多的微博用户,本发明从影响力大、用户关系网复杂的认证用户中确定种子用户。作为本发明确定种子用户的一种实现方式,可在微博名人堂页面抓取,如将影响力排行或者人气排行的前100名用户作为种子用户,或者,根据营销需要,有针对性的抓取某种分类下的认证用户,如当前需要推广的是一款旅游产品,则可抓取旅游分类下的认证用户作为种子用户。本发明对从认证用户中确定种子用户的具体方式可不做限定。
确定出种子用户之后,可将这些种子用户添加到用户列表,并将其标识为未处理,即可按照本发明提供的方案进行用户挖掘。
下面对本发明挖掘微博用户的过程进行解释说明。
参见图1,示出了本发明微博用户挖掘方法的流程图,可包括:
步骤101,判断用户列表中是否存在未处理用户,如果存在则执行步骤102,如果不存在则执行步骤106。
本发明在进行微博用户挖掘时提供了两种处理方式:
第一种是,以种子用户为起始点,进行逐层递归挖掘,直至找到底层节点,这些与种子用户直接或间接相关的用户就是挖掘出的微博用户;
第二种是,找到底层节点之后,还可通过在微博网页中随机抓取的方式,获取与种子用户不具有关联关系的零散用户。
本步骤判断用户列表中是否还存在未处理用户的目的,即是为了明确当前要采用哪种具体方式进行微博用户挖掘。如果用户列表中还存在未处理用户,则说明当前可能还未查找到底层用户,仍可利用第一种方式挖掘出更多的微博用户;如果用户列表中不存在未处理用户,则说明当前已挖掘出第一种方式覆盖的所有微博用户,此时可利用第二种方式继续挖掘微博用户。如此,一方面可降低挖掘结果对种子用户选取的依赖性;另一方面还可提高用户覆盖面,挖掘出尽量多的微博用户。
需要说明的是,本发明中未处理用户指的是未查找下级用户的用户,可通过标志位来表示,例如,标志位为“1”表示已处理,标志位为“0”表示未处理。另外要说明的是,查找之后,不论未处理用户是具有下级用户还是不具有下级用户,均要将其状态设置为已处理,即将标志位从“0”变更为“1”。
步骤102,如果存在,则判断该未处理用户是否具有下级用户,如果具有则执行步骤103,如果不具有则执行步骤105。
步骤103,如果具有,则获取该未处理用户的下级用户,并将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理。
步骤104,将所述下级用户作为未处理用户,返回执行步骤102。
步骤105,如果不具有,则设置该未处理用户的状态为已处理。
如上文所述,如果步骤101判断存在未处理用户,则可查找该未处理用户的下级用户,并根据查找结果进行区别处理:
(1)如果查找结果表示该未处理用户不具有下级用户,则说明该未处理用户为底层节点,当前已挖掘出所有与种子用户直接或间接相关的所有微博用户,此时可直接将该未处理用户的状态标识为已处理即可,也就是将该用户对应的标志位从“0”变更为“1”。
(2)如果查找结果表示该未处理用户具有下级用户,则说明该未处理用户不是底层节点,还可在其下级用户的基础上进一步进行递归挖掘,此时,可做如下处理:
a.将该未处理用户的状态标识为已处理,即将其标志位从“0”变更为“1”;
b.将该未处理用户的下级用户添加到用户列表中;
c.将下级用户的标志位设置为未处理状态,即设置为“0”。
经上述3个处理动作之后,即说明用户列表中还存在未处理用户,应返回执行步骤102,判断这些下级用户作为未处理用户时,其是否存在下级用户,然后再根据判断结果进行区别处理,此处不再赘述。
需要说明的是,步骤104中除了可按上文所述,返回执行步骤102之外,还可返回执行步骤101,只不过经步骤101判断后必然存在未处理用户,所以本发明直接返回执行步骤102。
本发明提供了两种查找未处理用户的下级用户的实现方式,下面分别进行解释说明。
(1)通过所述未处理用户的用户关系网获取所述下级用户。
用户关系网指的是微博用户之间的关系,包括关注和粉丝两种关系,一般采用节点图来表示,具体可参见图2所示示例,其中节点A、B、C、D表示微博用户,两节点间的连线表示用户间的关系。在微博中,用户A可以关注、接收其感兴趣的用户B发布的微博,此时,用户A就是用户B的粉丝,相应地用户B就是用户A的关注。
作为本发明获取用户关系网的一种实现方式,可通过调用微博开放平台API的方式实现,获取某个未处理用户的关注列表和粉丝列表。因为关注列表和粉丝列表中的用户是通过该未处理用户挖掘到的,故关注列表和粉丝列表中的用户都可称为是该未处理用户的下级用户。
结合图2所示示例,步骤102~105的处理过程可简述如下:
若当前未处理用户为用户A,则调用微博开放平台API即可获得其下级用户B、D,此时可将用户A的状态标识为已处理,将用户B、D添加到用户列表,并将二者状态标识为未处理;
接着,将用户B、D作为未处理用户,分别调用获取二者的下级用户。其中,与用户B有关系的为用户A和D,因二者已存在于用户列表中,故可认为用户B不具有下级用户,用户B为底层节点,将其状态标识为已处理即可结束该分支的挖掘过程。与用户D有关系的为用户A、C,因用户A已存在于用户列表中,故可认为用户D的下级用户仅包含用户C,此时要将用户D的状态标识为已处理,同时还要将用户C添加到用户列表,并将其状态标识为未处理。
最后,将用户C作为未处理用户,调用获取其下级用户,由图示可知,与用户C有关系的为用户D,而用户D已存在于用户列表中,故可认为用户C不具有下级用户,用户C为底层节点,将其状体标识为已处理后即可结束该分支的挖掘过程。至此就完成了第一种方式下的用户挖掘过程,根据用户A挖掘出了三个用户B、C、D。
(2)抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。
在用户A与用户B之间既不是关注,也不是粉丝关系的情况下,用户A也可能会转发和/或评论用户B发布的微博,此时,我们可以认为用户A与B之间产生了关联关系,这种情况下,用户A也可视为是用户B的下级用户。因此,作为本发明获取下级用户的另一种实现方式,还可通过抓取转发和/或评论了未处理用户发布的微博的用户的方式实现。
步骤106,如果不存在,则按照预设规则从微博网页中抓取用户数据。
步骤107,判断所述用户数据对应的抓取用户是否存在于所述用户列表,如果不存在,则执行步骤108;如果存在,则丢弃该抓取用户。
步骤108,将该抓取用户添加到所述用户列表,并设置该抓取用户的状态为已处理。
如上文所述,如果步骤101判断不存在未处理用户,则说明当前已挖掘出第一种方式覆盖的所有微博用户,此时可利用第二种方式继续挖掘零散用户,以扩大本发明挖掘用户的覆盖面。
本发明中的零散用户,可以理解为两种情况:
一种情况是,用户不具有关注和粉丝,这种用户一般是刚注册成功的用户,或是活跃度极低的用户,是绝对意义的零散用户。这种用户无法利用第一种方式挖掘出来。
一种情况是,用户虽具有关注和/或粉丝,但却与种子用户以及递归挖掘出的下级用户之间不存在任何关联关系(包含关注、粉丝、转发、评论等关系),是相对意义的零散用户。这种用户也无法利用第一种方式挖掘出来。
针对零散用户的用户挖掘过程,本发明主要是每隔一定的周期,就利用预设规则从微博网页中随机抓取用户数据的方式实现。根据预设规则的不同,本发明提供了三种具体实现方式,下面一一进行解释说明。
实现方式一
如果预设规则为最新发布的微博,则参见图3,示出了从微博网页中抓取用户数据的流程图,可包括:
步骤201,按照微博发布时间对所述微博网页中的微博排序。
步骤202,抓取最新发布的预设个数的微博作为用户数据,或者抓取最新发布的预设时间段内的微博作为用户数据。
零散用户虽不具有关注、粉丝,或者与种子用户、下级用户之间不存在关联关系,但其有可能会发布微博,故本发明提供的第一种实现方式中,利用微博的发布时间对某一微博网页,如新浪微博发布的所有微博进行排序,一般情况下,微博发布的时间越晚(即最新发布的微博)其排序越靠前。需要说明的是,本发明中发布的微博可为原始发布,也可为转发发布。
对最新发布的微博排序后,即可从中抓取预设个数的微博、或者抓取预设时间段内发布的微博,抓取到的微博即为步骤106中的用户数据。作为该实现方式的一种示例,可选取前10条微博作为抓取到的用户数据,或者,也可以将最近20分钟内发布的所有微博作为抓取到的用户数据。
在抓取到用户数据后,相应地就能获知发布这些微博的用户,这种通过抓取用户数据获得的用户即被定义为抓取用户。在确定出抓取用户之后,还要判断下这些抓取用户是否已存在于用户列表中,也就是说,最新发布的微博可能是种子用户或递归挖掘出的下级用户所发布的,为了避免重复,还应判断抓取用户是否已存在于用户列表中,如果已存在,则可直接将其丢弃;如果不存在,则说明该抓取用户为零散用户,应将其添加到用户列表中,相应地,还应将其状态标识为已处理。
需要说明的是,对于绝对意义的抓取用户来说,其不具有关注、粉丝等下级用户,故直接将其标识为已处理不会影响最终挖掘出的用户的覆盖范围。但是,对于相对意义的抓取用户来说,其可能具有下级用户,此时的处理原则为:可如本发明直接将其标识为已处理,不再以其为起始点进行用户挖掘;或者,也可根据实际需求,判断其是否具有下级用户,并按照步骤103、104所示方式进行递归挖掘,只有在不具有下级用户时才将用户状态标识为已处理,结束本次用户挖掘过程。具体处理原则可根据实际情况而定,本发明对此可不做限定。
另外,需要说明的是,作为本发明抓取最新发布的微博的另一种实现方式,可通过调用微博开放平台API的方式实现,此处不再详述。
实现方式二
如果预设规则为预设关键词,则从微博网页中抓取用户数据,包括:抓取所述微博网页中含有所述预设关键词的微博和/或评论内容作为用户数据。
在挖掘零散用户时,还可根据营销需求进行针对性的抓取,故本发明提供的第二种实现方式中,还可根据需求预先设置一个或若干个关键词,并判断微博网页中的微博正文、评论内容等处是否包含这些预设关键词,如果包含,则可抓取这些微博和/或评论内容作为用户数据。
在抓取到用户数据后,相应地就能获知发布这些微博、和/或发布这些评论内容的用户,这种通过抓取用户数据获得的用户即被定义为抓取用户。确定出抓取用户之后的处理过程、处理原则与上文实现方式一处的描述相同,此处不再赘述。
实现方式三
如果预设规则为预设地理位置,则从微博网页中抓取用户数据,包括:抓取所述微博网页中具有所述预设地理位置的微博和/或评论内容作为用户数据。
有些情况下,营销可能针对的是某些地区的用户,或者需要统计分析某些地区用户的情况,故本发明提供的第三种实现方式中,还可根据需求预先设置一个或若干个地理位置,并判断发布微博、和/或发布评论的用户的位置信息是否与预设位置相符,如果相符,则可抓取这些具有预设地理位置的微博和/或评论内容作为用户数据。
在抓取到用户数据后,相应地就能获知这些具有预设地理位置的微博、和/或评论内容对应的用户,这种通过抓取用户数据获得的用户即被定义为抓取用户。确定出抓取用户之后的处理过程、处理原则与上文实现方式一处的描述相同,此处亦不再赘述。
需要说明的是,预设地理位置可以是城市名称、地区名称,也可以是经纬度坐标,本发明对此可不做限定。
相应地,本发明还提供一种微博用户挖掘装置,参见图4,示出了本发明微博用户挖掘装置的示意图,可包括:
第一判断单元301,用于判断用户列表中是否存在未处理用户;
抓取单元302,用于在所述第一判断单元判断所述用户列表中不存在未处理用户时,按照预设规则从微博网页中抓取用户数据;
第二判断单元303,用于判断所述用户数据对应的抓取用户是否存在于所述用户列表;
第一添加单元304,用于在所述第二判断单元判断所述抓取用户不存在于所述用户列表时,将该抓取用户添加到所述用户列表,并设置该抓取用户的状态为已处理;
第三判断单元305,用于在所述第一判断单元判断所述用户列表中存在未处理用户时,判断该未处理用户是否具有下级用户;
获取单元306,用于在所述第三判断单元判断所述未处理用户具有下级用户时,获取该未处理用户的下级用户;
第二添加单元307,用于将所述下级用户添加到所述用户列表,设置所述未处理用户的状态为已处理;并将所述下级用户作为未处理用户,通知所述第三判断单元305继续判断未处理用户是否具有下级用户;
设置单元308,用于在所述第三判断单元判断所述未处理用户不具有下级用户时,设置该未处理用户的状态为已处理。
本发明提供了三种抓取单元抓取微博网页中用户数据的实现方式,下面一一进行介绍。
预设规则为最新发布的微博,参见图5,示出了抓取单元的构成示意图,可包括:
排序单元401,用于按照微博发布时间对所述微博网页中的微博排序;
抓取子单元402,用于抓取最新发布的预设个数的微博作为用户数据,或者抓取最新发布的预设时间段内的微博作为用户数据。
或者,
预设规则为预设关键词,则所述抓取单元,具体用于抓取所述微博网页中含有所述预设关键词的微博和/或评论内容作为用户数据。
或者,
预设规则为预设地理位置,则所述抓取单元,具体用于抓取所述微博网页中具有所述预设地理位置的微博和/或评论内容作为用户数据。
另外,本发明还提供了两种获取单元获取未处理用户的下级用户的实现方式,下面一一进行介绍。
所述获取单元,具体用于通过所述未处理用户的用户关系网获取所述下级用户。
或者,
所述获取单元,具体用于抓取评论和/或转发所述未处理用户发布的微博的用户作为所述下级用户。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。