一种基于Simhash算法的旅游网络社区划分方法

文档序号:9417479阅读:368来源:国知局
一种基于Simhash算法的旅游网络社区划分方法
【技术领域】
[0001] 本发明属于数据挖掘领域,具体是一种将Simhash去重算法作为聚类算法应用于 旅游复杂网络社区划分。
【背景技术】
[0002] 近年来,复杂网络成为信息科学、社会学、物理学、乃至生命科学等学科研究的热 点。自然界中的很多系统都可以表示为复杂网络的形式,例如社会关系网、通信网、互联网 等。论坛、BBS、微博、旅游网站等社交平台因其速度快、成本小、方便使用等特点而被广大旅 游爱好者广泛使用,因此用这些社交平台进行交流,逐渐形成了一个复杂的旅游网络。
[0003] 目前对于复杂网络社区划分有不同种类的算法,一类是分图的策略,如谱二分法、 K - L算法;它们存在的缺点是必须事先确定两个社区的大小,由于多数情况下网络中社区 的个数未知,因而也就无法确定该算法重复划分社区的次数。另一类是聚类的方式,G-N(Girvan and Newman)是典型的层次聚类算法。G-N算法思想简单,但该方法计算量较 大,计算时间复杂度也相对较高。划分聚类典型的是K - Means和K - Medoids,这两个算法 虽然运行时间快,但缺点是初始中心簇选取会影响到聚类结果,容易受到孤立点的影响等。 层次聚类的代表性算法有BIRCHXURE、Chamel e〇n,它的缺点是在进程之中一旦结束就无法 修正,例如在合并或者分裂的步骤中完成就不能更正导致即使划分错误也无法弥补。网格 聚类的缺点是对于大规模数据的处理不是很得心应手。因此,目前的网络社区划分方法均 存在不同的缺陷,以致其在推广应用时受限。

【发明内容】

[0004] 针对目前网络社区划分方法存在的问题和不足,本发明从用户旅游文本信息出 发,提供了一种基于Simhash算法的简单、运算速度快、空间存储小的旅游网络社区划分方 法,能够提高复杂网络社区的划分效率。
[0005] 本发明实现上述目的所采用的技术方案是由以下步骤实现:
[0006] (1)爬取旅游网络上的用户ID以及文本数据,并存入数据库;
[0007] (2)对数据库中所存放的文本数据进行分词处理,对照停用词表去掉停用词,得到 文本的特征值,并确定特征值对应的权重;
[0008] (3)根据步骤(2)所得的文本特征值及其对应的权重,用Simhash算法进行处理, 得到该文本的语义指纹,并将其存入数据库中;
[0009] (4)用海明距离算法将步骤(3)所得到的一个文本的语义指纹与预先划分类别中 的中心文本进行对比,若两者之间的海明距离小于等于3,则将该文本归类至该中心文本所 对应的类别中,并将其对应类别存入数据库中对应的用户信息中;否则,将其与预先划分类 别中的其他中心文本进行对比;若不存在满足条件的中心文本,则将该文本作为新类别的 中心文本;
[0010] (5)重复步骤(4),完成数据库中的其它文本的类别划分,完成了旅游网络社区划 分。
[0011] 上述步骤(1)具体是由以下步骤实现:
[0012] (I. 1)申请旅游网络爬取数据的权限;
[0013] (1. 2)根据旅游网络接口查看用户的注册住址addressl、用户文本信息内容text 以及用户发表文本信息内容时所在地址address2 ;
[0014] (1. 3)判断用户的注册住址addressl与用户发表文本信息内容时所在地址 addreSS2是否相同,若不相同,则确定文本信息内容与旅游相关,将其用户ID以及文本数 据存入数据库;否则,返回步骤(2)查看下一个用户。
[0015] 上述步骤(2)中的分词处理可以采用正向最大匹配算法或者也可以采用逆向最 大匹配算法或双向最大匹配算法。
[0016] 上述步骤(3)中的Simhash算法具体由以下步骤实现:
[0017] (3. 1)用hash编码算法对步骤(2)所得的每个文本特征值进行处理,将其转化为 64位的编码,得到hash编码;
[0018] (3. 2)对hash编码的每一位进行处理,若对应位置处的编码为1,则将其相应位数 变为正权重;否则为负权重,得到相应的权重编码;
[0019] (3. 3)将所有文本特征的权重编码对应位求和,得到求和后的编码,若求和后的编 码中的位数为正,则将其标记为1 ;否则,标记为0,得到Simhash编码值,即为语义指纹。
[0020] 本发明提供的基于Simhash算法的旅游网络社区划分方法是利用Simhash算法对 文本进行处理计算文本的语义指纹,用海明距离来比较文本的语义指纹之间的距离,推算 文本相似度,从而达到对相似用户进行聚类的目的。该方法将短文本高维度的特征向量进 行降维处理,大大减少了其所占用的存储空间,而且本发明的算法简单方便、运算时间少, 对文本的处理速度快,进而提高了复杂网络社区的划分效率,这对预测旅游活动的趋势与 动向,提供旅游服务信息,推荐旅游线路乃至预测旅游高峰都有重大意义。
【附图说明】
[0021] 图1为新浪微博短文本网络社区划分的流程图。
[0022] 图2为Simhash算法过程图。
【具体实施方式】
[0023] 实施例1
[0024] 现以新浪微博为例,本发明的基于Simhash算法的旅游网络社区划分方法参见图 1,由以下步骤实现:
[0025] (1)爬取旅游网络上的用户ID以及文本数据,并存入数据库,具体包括以下步骤:
[0026] (I. 1)申请新浪 APP key ;
[0027] (1. 2)根据新浪提供的API接口查看所需接口的URUHTTP请求方式、参数请求爬 取用户ID、用户注册住址addressl、用户微博信息内容text、用户发表微博地址address2, 接口返回json格式的数据;
[0028] (1. 3)用java程序,对微博返回的json数据进行处理,判断第一个用户的注册住 址addressl与用户发表文本信息内容的地址address2是否相同,若不相同,则确定文本信 息内容与旅游相关,将旅游数据的用户ID、用户微博信息text安爬取顺序放入数据库中, 如下表1 ;否则,查看下一个用户。
[0029] 表1为数据库中的存储格式
[0030]
[0031] (2)对数据库中所存放的文本数据进行分词处理,对照停用词表去掉停用词,得到 文本的特征值,并确定特征值对应的权重;
[0032] (2. 1)采用正向最大匹配算法对数据库中所存放的文本数据进行分词处理,如:
[0033] (2. I. I) st = "我们是旅游爱好者",maxlen (最大词长)=10〇
[0034] (2. 1. 2)取w = "我们是旅游";
[0035] (2. 1. 3)查词典判断w中的字符串不是词;
[0036] (2. L 4)从w右边减掉一个字后w = "我们是旅";
[0037] (2. 1. 5)判断w中的字串不是词;
[0038] (2. L 6)从w右边减掉一个字后w = "我们是";
[0039] (2. 1. 7)判断w中的字串不是词;
[0040] (2. L 8)从w右边减掉一个字后w = "我们";
[0041] (2. 1. 9)判断w中的字符串是一个词,则输出到st中,st = "我们/"。
[0042] (2. 1. 10)重复(2. 1. 2) (2. 1. 3) (2. 1. 4) (2. 1. 5) (2.
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1