一种文本数据的聚类方法、装置和系统与流程

文档序号:11774596阅读:166来源:国知局
一种文本数据的聚类方法、装置和系统与流程

本发明涉及计算机领域,具体地,涉及一种文本数据的聚类方法、装置和系统。



背景技术:

spark分布式框架是ucberkeleyamplab(加州大学伯克利分校的amp实验室)所开源的通用分布式框架,是一种与hadoop相似的开源集群计算环境,相比较于hadoop使用硬盘存储中间数据,spark分布式框架启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。

目前常用的对文本进行划分的方法是聚类方法,例如k-means算法,由于k-means算法中种子节点的选取具有随机性,所以对相同的文本数据分别进行数次聚类,每次聚类的结果不一定一致,因此k-means算法针对文本数据的聚类结果具有随机性和不可控性。此外,k-means算法对海量文本数据进行聚类的效果不是很理想。



技术实现要素:

本发明的实施例提供一种文本数据的聚类方法、装置和系统,以有效解决如何对海量文本数据进行聚类的问题。

为达到上述目的,本发明的实施例提供一种文本数据的聚类方法。所述方法包括:子节点接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合;所述子节点将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合;所述子节点将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

可选地,所述子节点将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合,包括:针对所述待聚类的文本子集合中的每个文本,所述子节点分别向所有子节点发送文本相似度的比对请求,以使得每个子节点将所述比对请求中包含的比对文本分别与自身的文本子集合中的每个文本进行比对。

可选地,所述每个子节点将所述比对请求中包含的比对文本分别与自身的文本子集合中的每个文本进行比对,包括:所述每个子节点对所述比对文本进行处理,得到与所述比对文本对应的第一句子集合;所述每个子节点对自身的文本子集合中的每个文本进行处理,得到与所述每个文本对应的第二句子集合;所述每个子节点将所述第一句子集合中的每个句子分别所述第二句子集合中的每个句子进行比对,得到每对句子具有相同词语的个数;所述每个子节点根据每对句子具有相同词语的个数确定得到所述比对文本与所述第二句子集合对应的文本具有相同词语的个数最多的结果;所述每个子节点根据所述结果确定相同词语的个数在两个文本中所占的比例,从而得到两个文本的文本相似度。

可选地,在得到两个文本的文本相似度之后,所述方法还包括:所述每个子节点将所述两个文本的文本相似度与预设阈值进行比较,得到比较结果;所述每个子节点在根据所述比较结果判断所述两个文本的文本相似度大于所述预设阈值时,向发送所述比对请求的子节点返回相似的文本对。

可选地,所述每个子节点对所述比对文本进行处理,得到与所述比对文本对应的第一句子集合,包括:所述每个子节点对所述比对文本进行分句,得到分句后的比对文本;所述每个子节点对分句后的比对文本中的每个句子进行分词,得到所述比对文本对应的第一句子集合。

可选地,所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,包括:所述主节点根据所有子节点发送的所述相似关系集合构建基于文本相似关系的拓扑图;所述主节点对所述拓扑图进行连通图聚类,得到所述海量文本数据的聚类结果。

可选地,所述主节点根据所有子节点发送的所述相似关系集合构建基于文本相似关系的拓扑图,包括:所述主节点将每个所述相似关系集合中每个文本对的两个文本分别作为节点,并将所述两个文本的文本相似度作为连接两个节点的边的边长,构建基于文本相似关系的拓扑图。

可选地,在得到所述海量文本数据的聚类结果之后,所述方法还包括:所述主节点根据每个类簇对应的连通图的节点数量和边的数量计算得到每个类簇的聚合度;当存在聚合度小于第一预设值的类簇时,所述主节点去除每个所述相似关系集合中文本相似度小于第二预设值的文本对,并根据去除后的每个相似关系集合对所述海量文本数据重新进行连通图聚类,得到所述海量文本数据的聚类结果。

相应地,本发明实施例还提供一种文本数据的聚类装置。所述装置包括:接收模块,用于接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合;比对模块,用于将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合;发送模块,用于将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

相应地,本发明实施例还提供一种文本数据的聚类系统。所述系统包括:主节点以及与所述主节点连接的至少一个子节点;所述主节点,用于将海量文本数据进行拆分,得到至少一个待聚类的文本子集合,并将所述至少一个待聚类的文本子集合分别分发至所述至少一个子节点;所述至少一个子节点,分别用于执行文本数据的聚类方法;所述主节点,还用于接收所述至少一个子节点分别发送的相似关系集合,并根据所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

本发明实施例的文本数据的聚类方法、装置和系统,子节点接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合,并将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合,再将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,能够对海量文本数据进行分布式聚类,从而获得对海量文本数据进行聚类的能力。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1是本发明一实施例提供的文本数据的聚类方法的流程图;

图2是本发明另一实施例提供的文本数据的聚类方法的流程图;

图3是本发明另一实施例提供的文本数据的聚类方法的示意图;

图4是本发明一实施例提供的文本数据的聚类装置的结构示意图;

图5是本发明一实施例提供的文本数据的聚类系统的结构示意图。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

图1是本发明一实施例提供的文本数据的聚类方法的流程图。如图1所示,本发明一实施例提供的文本数据的聚类方法包括:

在步骤s101中,子节点接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合。

在对海量文本数据执行分布式聚类任务时,主节点先对海量文本数据中每个文本进行编号,使得每个文本对应唯一的标识信息,这样便可得到待聚类的文本集合。然后,主节点将待聚类的文本集合拆分为多个待聚类的文本子集合,并将每个待聚类的文本子集合分发至每个子节点。其中,待聚类的文本子集合包括多个文本以及多个文本中每个文本的编号。

在步骤s102中,所述子节点将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合。

在具体的实施方式中,子节点不仅需要将自身的文本子集合中的文本与自身的文本子集合中的其它文本进行比对,而且还需要将自身的文本子集合中的文本与其它子节点的文本子集合中的每个文本进行比对。其中,文本对的相似关系集合包括多个文本对、每个文本对中每个文本的编号以及每个文本对的文本相似度。

在步骤s103中,所述子节点将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

在具体的实施方式中,所述主节点接收所有子节点分别发送的所述相似关系集合,并根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

在本实施例中,子节点接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合,并将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合,再将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,能够对海量文本数据进行分布式聚类,从而获得对海量文本数据进行聚类的能力。

图2是本发明另一实施例提供的文本数据的聚类方法的流程图。如图2所示,本发明另一实施例提供的文本数据的聚类方法包括:

在步骤s201中,子节点接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合。

由于该步骤s201与上述步骤s101相同,在此不再赘述。

在步骤s202中,针对所述待聚类的文本子集合中的每个文本,所述子节点分别向所有子节点发送文本相似度的比对请求,以使得每个子节点将所述比对请求中包含的比对文本分别与自身的文本子集合中的每个文本进行比对。

在具体的实施方式中,对于某个待聚类的文本子集合中的每个文本而言,与该文本子集合对应的子节点分别向每个子节点发送文本相似度的比对请求,以使得每个子节点将所述比对请求中包含的比对文本分别与自身的文本子集合中的每个文本进行比对。其中,所述比对请求包含相应的比对文本。

其中,所述每个子节点将所述比对请求中包含的比对文本分别与自身的文本子集合中的每个文本进行比对,包括:所述每个子节点对所述比对文本进行处理,得到与所述比对文本对应的第一句子集合;所述每个子节点对自身的文本子集合中的每个文本进行处理,得到与所述每个文本对应的第二句子集合;所述每个子节点将所述第一句子集合中的每个句子分别所述第二句子集合中的每个句子进行比对,得到每对句子具有相同词语的个数;所述每个子节点根据每对句子具有相同词语的个数确定得到所述比对文本与所述第二句子集合对应的文本具有相同词语的个数最多的结果;所述每个子节点根据所述结果确定相同词语的个数在两个文本中所占的比例,从而得到两个文本的文本相似度。

具体地,所述每个子节点对所述比对文本进行处理,得到与所述比对文本对应的第一句子集合,包括:所述每个子节点对所述比对文本进行分句,得到分句后的比对文本;所述每个子节点对分句后的比对文本中的每个句子进行分词,得到所述比对文本对应的第一句子集合。所述每个子节点对自身的文本子集合中的每个文本进行处理,得到与所述每个文本对应的第二句子集合,包括:所述每个子节点对自身的文本子集合中的每个文本进行分句,得到每个分句后的文本;所述每个子节点对每个分句后的文本中的每个句子进行分词,得到与所述每个文本对应的第二句子集合。所述每个子节点根据每对句子具有相同词语的个数确定得到所述比对文本与所述第二句子集合对应的文本具有相同词语的个数最多的结果,包括:所述每个子节点根据每对句子具有相同词语的个数确定所述比对文本与所述第二句子集合对应的文本的每对句子具有相同词语的个数最多;根据所述比对文本与所述第二句子集合对应的文本的每对句子具有相同词语的个数最多的结果得到所述比对文本与所述第二句子集合对应的文本具有相同词语的个数最多的结果。所述每个子节点根据所述结果确定相同词语的个数在两个文本中所占的比例,从而得到两个文本的文本相似度,包括:所述每个子节点根据所述结果确定相同词语的个数在比对文本中所占的第一比例以及相同词语的个数在被比对文本中所占的第二比例;计算第一比例和第二比例的平均值,从而得到两个文本的文本相似度。所述每个子节点根据所述结果确定相同词语的个数在两个文本中所占的比例,从而得到两个文本的文本相似度,包括:所述每个子节点根据所述结果确定相同词语的个数在比对文本和被比对文本中所占的比例,从而得到两个文本的文本相似度。

在得到两个文本的文本相似度之后,所述方法还包括:所述每个子节点将所述两个文本的文本相似度与预设阈值进行比较,得到比较结果;所述每个子节点在根据所述比较结果判断所述两个文本的文本相似度大于所述预设阈值时,向发送所述比对请求的子节点返回相似的文本对。其中,本领域技术人员可根据实际需求测试得到所述预设阈值。

在步骤s203中,所述子节点将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

在具体的实施方式中,所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,包括:所述主节点根据所有子节点发送的所述相似关系集合构建基于文本相似关系的拓扑图;所述主节点对所述拓扑图进行连通图聚类,得到所述海量文本数据的聚类结果。籍此,能够获得海量文本数据的稳定的聚类结果。

其中,所述主节点根据所有子节点发送的所述相似关系集合构建基于文本相似关系的拓扑图,包括:所述主节点将每个所述相似关系集合中每个文本对的两个文本分别作为节点,并将所述两个文本的文本相似度作为连接两个节点的边的边长,构建基于文本相似关系的拓扑图。连通图聚类指的是拓扑图中的每个连通图可作为一个类簇。

优选地,在得到所述海量文本数据的聚类结果之后,所述方法还包括:所述主节点根据每个类簇对应的连通图的节点数量和边的数量计算得到每个类簇的聚合度;当存在聚合度小于第一预设值的类簇时,所述主节点去除每个所述相似关系集合中文本相似度小于第二预设值的文本对,并根据去除后的每个相似关系集合对所述海量文本数据重新进行连通图聚类,得到所述海量文本数据的聚类结果。籍此,在基于连通图聚类的基础上做了聚合度检验的优化,提高了海量文本数据的聚类的准确度。

其中,将每个类簇对应的连通图的边的数量除以每个类簇对应的连通图的节点数量,便可得到每个类簇的聚合度。本领域技术人员可根据实际需求测试得到所述第一预设值和所述第二预设值。

在本实施例中,子节点接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合,并针对所述待聚类的文本子集合中的每个文本,所述子节点分别向所有子节点发送文本相似度的比对请求,以使得每个子节点将所述比对请求中包含的比对文本分别与自身的文本子集合中的每个文本进行比对,得到相似关系集合,再将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,能够对海量文本数据进行分布式聚类,能够实现对单节点无法处理的海量文本数据进行聚类处理。

图3是本发明另一实施例提供的文本数据的聚类方法的示意图。如图3所示,spark分布式集群由一个主节点和数个子节点组成。在执行分布式聚类任务时,主节点先将进行聚类的海量文本数据进行编号,每篇文本对应一个唯一的标识,这里将得到的待聚类的文本集合记为t。主节点将待聚类的文本集合t拆分为数块,并平均分发至每个子节点。每个子节点上的文本子集合记为ti,其中,i为子节点的序号。在每个子节点部署了用来比对文本相似程度的比对库,每个子节点在接收到文本子集合ti后先将ti中的所有文本和其标识上传至比对库中,作为后续比对的样例文本。子节点的工作原理如下:将上传到比对库里的样例文本进行预处理,先将每篇文本以句子为单位进行分句,再对每个句子进行分词处理,获得该篇文本的句子集合aj,其中j为样例文本的编号。当子节点接收到比对请求后,对传入的比对文本进行预处理获得句子集合b。将b与所有的样例文本进行依次比对,具体的比对方法为:先对两个集合做笛卡尔积,将两个集合中的句子元素进行两两比对,确定每对句子元素之间具有相同词语的个数最多;在所有的比对结果中选择重合度最高的结果来确定两个集合中哪些词语是重合的;根据重合的词语在两篇文本中的所占比例,确定两篇文本的文本相似度。根据传入的参数阈值p,子节点返回与比对文本相似度大于p的样例文本的标识。每个子节点将ti中的每篇文本作为比对文本,向所有的子节点发送相似比对请求,获得与该文本相似的所有文本的标识的集合,并将根据相似文本对的标识生成文本相似关系集合{(a,b)},其中(a,b)表示标识为a的文本和标识为b的文本具有相似关系。以文本的标识作为节点,文本对的文本相似度作为边的边长,构建基于文本相似关系的拓扑图。对该拓扑图进行连通图聚类,将拓扑图中的每一个连通图作为一个类簇,连通图中节点的标识即为该类中所属文本的标识。对聚类结果进行分析,计算每个类簇的聚合度,对那些聚合度不高的类,去除相似关系集合中相似度较低的文本对并重新进行连通图聚类。聚合度计算方法如下:由聚类方法已经知道每一个类簇对应有一个连通图,我们根据连通图中所包含的边的数量比上连通图中包含的节点数,获得该类簇的聚合度。

在具体的实施方式中,首先部署spark分布式环境,本发明实施例是基于spark分布式架构实现的,在实施本发明实施例前,需要先在集群中部署spark环境。本发明实施例是用scala语言编写的,应用介质为编译后的jar包。部署本发明实施例时。需要将jar包提交至集群中的主节点所在服务器上。其中,本发明实施例涉及两种调用方式,分别如下:

1)通过在主节点用命令行进行调用,或者通过其他方式运行shell命令进行调用。命令格式如下:

(spark的安装路径)/spark-submit--master(spark主节点的端口地址)--classcn.com.trs.clustering.graphx.simclusterdriver(jar包所在位置)(调用参数)

该调用方式的作用是使得安装有spark分布式架构的主节点调用本发明实施例提供的文本数据的聚类方法。

2)通过在工程中引入jar包,通过scala代码或者java代码以调用功能接口的方式进行调用。聚类接口如下:

simcluster.cluster(sc:sparkcontext,rdd_rec:rdd[array[string]],ckmhost:string,ckmusername:string,ckmpassword:string,cluclassnum:integer,clumembernum:integer,threshold:float):rdd[(array[string],array[array[string]])]

其中,参数说明如下:sc表示spark上下文;rdd_rec表示需要聚类的数据rdd,每条数据为一个array[string],此array中第一个元素为id字段值,第二个元素为正文字段值,第三个元素为标题字段值,后续元素为需要展示的其他字段值;ckmhost表示所有子节点地址,用分号隔开;ckmusername表示比对库的登录用户名;ckmpassword表示比对库登录密码;cluclassnum表示最大聚类数,设为0时返回所有类;clumembernum表示最少成员数,只返回成员数大于等于该值的类;threshold表示相似度值,该值为1到0之间的一个值,该值越大则类成员之间的相似度越大。聚类接口会将互相之间文本相似度大于该值的文本聚为一类。返回值说明如下:返回值为(array[string],array[array[string]])的rdd结构,每条数据作为一个类,其中key为作为类代表的成员,value为该类的所有成员。每个成员为一个array[string],该数组的数据排序与传入时数据的字段值排序相同。

该调用方式的作用是使得计算机上的工程项目能够调用本发明实施例提供的文本数据的聚类方法。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

图4是本发明一实施例提供的文本数据的聚类装置的结构示意图。如图4所示,本发明一实施例提供的文本数据的聚类装置包括:接收模块301,用于接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合;比对模块302,用于将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合;发送模块303,用于将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

在本发明实施例中,接收模块301接收主节点针对海量文本数据进行拆分得到的待聚类的文本子集合,比对模块302将所述文本子集合中的每个文本分别与所有子节点的文本子集合中的每个文本进行文本相似度的比对,得到文本对的相似关系集合,发送模块303将所述相似关系集合发送至所述主节点,以使得所述主节点根据所有子节点发送的所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,能够对海量文本数据进行分布式聚类,能够实现对单节点无法处理的海量文本数据进行聚类处理。

需要说明的是,对于本发明实施例提供的文本数据的聚类装置还涉及的具体细节已在本发明实施例提供的文本数据的聚类方法中作了详细的说明,在此不在赘述。

图5是本发明一实施例提供的文本数据的聚类系统的结构示意图。如图5所示,本发明一实施例提供的文本数据的聚类系统包括:主节点402以及与所述主节点连接的至少一个子节点401;所述主节点402,用于将海量文本数据进行拆分,得到至少一个待聚类的文本子集合,并将所述至少一个待聚类的文本子集合分别分发至所述至少一个子节点;所述至少一个子节点401,分别用于执行上述实施例提供的文本数据的聚类方法;所述主节点402,还用于接收所述至少一个子节点分别发送的相似关系集合,并根据所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果。

在本实施例中,主节点将海量文本数据进行拆分,得到至少一个待聚类的文本子集合,并将所述至少一个待聚类的文本子集合分别分发至至少一个子节点,至少一个子节点分别用于执行上述实施例提供的文本数据的聚类方法,得到至少一个相似关系集合,主节点接收所述至少一个子节点分别发送的相似关系集合,并根据所述相似关系集合对所述海量文本数据进行聚类,得到所述海量文本数据的聚类结果,能够对海量文本数据进行分布式聚类,能够实现对单节点无法处理的海量文本数据进行聚类处理。

需要说明的是,对于本发明实施例提供的文本数据的聚类系统还涉及的具体细节已在本发明实施例提供的文本数据的聚类方法中作了详细的说明,在此不在赘述。

应当注意的是,在本发明的系统的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上实施方式仅适于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1