一种面向用户个人文件的聚类方法及系统与流程

文档序号:15159476发布日期:2018-08-14 10:03阅读:245来源:国知局

本发明涉及用户个人文件管理领域,可以实现对用户文件依据内容进行聚类,尤其涉及基于用户使用习惯的文件聚类。



背景技术:

随着电脑办公应用的普及,用户在工作中编辑生成了大量的文件(如word/wps/pdf等)。根据现有文件系统的设计,这些文件在计算机中是按树形结构进行保存的,这种保存方式与人对文件的保存(记忆)方式存在显著不同。人对文件的记忆往往是按任务(或者主题)组织的。这种差异导致的一个问题是用户后续对文件进行查找和管理时需要投入大量精力,尤其当用户同一主题的多个版本被存放在不同位置时,后续的查找变得更加困难。

目前,个人信息管理(personalinformationmanagement)研究如何对用户生成的信息进行检索,不同公司也开发了针对用户文件的检索系统,比如谷歌桌面搜索、百度桌面搜索等,但这些工具都是基于关键词的文件检索,没有解决将“基于树结构的文件组织”转换为“基于主题结构的文件组织”。

按主题对文件进行组织可以使用基于内容的聚类,将所有文件直接输入到聚类算法,聚类得到的每个簇(文件集合)作为一个文件主题。直接对文件进行处理忽略了用户对相似文件的保存习惯(如同一目录下的文件属于同一类簇的可能性更高),同时会显著增加不必要的计算量。



技术实现要素:

本发明提出一种面向用户个人文件的聚类方法及系统,该方法通过利用用户保存和浏览文件的习惯,对用户个人文件进行聚类,聚类效率高。

为达到上述目的,本发明采用如下技术方案:

一种面向用户个人文件的聚类方法,步骤包括:

(1)文件分组:利用用户对相似文件的保存习惯对用户文件进行分组,得到多个文件组;

(2)局部簇生成:对文件组内的文件进行聚类,得到一个或多个局部簇,每个局部簇内的文件内容相似;

(3)全聚簇生成:将每个局部簇视为一个文件,对所有局部簇进行聚类,生成全局簇。

进一步地,按照文件树形目录结构、文件类型、文件名等对用户文件进行分组。

进一步地,按照文件树形目录结构对用户文件进行分组的方法为:假设nodeset表示文件目录树中的所有目录节点,xi表示目录节点i到根节点的距离,设置距离阈值参数δx,将符合条件xi>δx的目录节点所包含的直接文件作为一个单独文件组。

进一步地,按照文件树形目录结构对用户文件进行分组的方法为:假设nodeset表示文件目录树中的所有目录节点,yi表示目录节点i到最远的叶子节点的距离,设置距离阈值参数δy,方法步骤包括:

(1)基于目录节点的y值,选择出一个y值大于δy且与δy值最接近的目录节点;

(2)将选择出来的目录节点包含的直接文件作为一个单独文件组;

(3)将选择出来的目录节点对应的子树从整个目录树中删除;

(4)更新目录树中所有目录节点的y值;

(5)重复步骤(1)-(4),直到没有目录节点的y值大于δy;

(6)将剩下目录节点所包括的所有文件作为一个单独的文件组。

进一步地,所述直接文件是指目录节点下的文件,且该文件在目录树中的深度与该目录节点深度相差为1。

进一步地,按照文件类型、文件名对用户文件进行分组的方法为:如果文件聚类目标要求类簇中的文件类型相同,可先按照文件类型进行分组,再在每个组内基于文件名进行聚类,将生成的每个类簇作为一个文件组;如果文件聚类目标不要求类簇文件类型相同,可直接对文件基于文件名进行聚类,将生成的每个类簇作为一个文件组。

进一步地,基于文件名的聚类方法为:计算文件名字符串的编辑距离,将编辑距离小于设定阈值的文件分成一个文件组。

进一步地,基于文件名的聚类方法为:对文件名进行分词,将文件名表示为词条向量,计算文件名之间的文本距离,将文本距离大于设定阈值的文件分成一个文件组,该文本距离为jaccard距离或cosine距离。

进一步地,对文件进行聚类的方法步骤包括先文件表示,再文件相似度计算,最后运行聚类算法。

进一步地,所述全聚簇生成阶段的文件表示将每个局部簇视为一个文件,使用唯一文件表示:既可选择局部簇中单个文件进行表示(如选择局部簇中长度最长的文件的表示作为局部簇文件表示),也可使用局部簇中所有文件表示计算得到表示(如将局部簇中所有文件的表示进行拼接后作为局部簇文件表示)。

进一步地,所述文件表示的方法为:对文件进行向量化,向量的每一维特征对应文件的一部分,其中文本文件可使用向量空间模型表示,图像文件可使用图像特征或基于神经网络特征的抽取方法。

进一步地,所述文件表示的方法为:使用模糊哈希方法计算文件哈希值,用哈希值表示。

进一步地,所述文件相似度计算方法为:计算文件之间的jaccard距离或者cosine距离。

进一步地,所述文件相似度计算方法为:比对两个文件的哈希值,将哈希值转换为相似度。

进一步地,所述聚类算法包括kmeans聚类算法、基于密度的聚类算法。

一种面向用户个人文件的聚类系统,包括:

聚类计算单元,用于对用户文件进行聚类;

聚类结果存储单元,用于存储聚类结果,保留文件与类簇的映射关系;

聚类结果查找单元,用于实现根据类簇返回文件以及根据文件返回类簇的功能。

进一步地,所述聚类计算单元包括:

批量文件聚类计算单元,用于首次对用于个人文件进行聚类;

增量文件聚类计算单元,用于对后续增量文件进行聚类,将增量聚类结果与已有聚类结果进行合并。

进一步地,将增量聚类结果与已有的聚类结果的合并,是指利用生成全聚簇的聚类过程,将增量得到的类簇与已有的类簇进行一次聚类,得到合并结果。

本发明方法的输入为树结构的文件目录,输出为按主题组织的文件簇列表,每个文件簇内的文件内容相似,如图1所示。

本发明利用文件树形目录结构、文件类型、文件名对文件进行分组,先在文件组内做聚类,而后进行全局聚类,与直接在所有文件上应用聚类算法相比,可以显著提高聚类的计算效率。假设总的文件数为n,分成的文件组数为d,平均每个文件组内的文件数为n/d,每个文件组生成的局部簇的个数为k,最终聚类的类簇数为m。假设使用的聚类算法的时间复杂度为f(x),其中x为聚类输入的文件数,那么使用本发明方法进行文件聚类的时间复杂度的上限为df(n/d)+f(dk)。其中,df(n/d)是局部簇生成的时间复杂度;f(dk)是全局簇生成的时间复杂度的上限,之所以称为上限是因为进行全聚簇生成时,每个文件组得到的k个局部簇不进行相似度计算(一定不属于同一簇)。而使用传统方法直接对所有文件进行聚类的时间复杂度则为f(n)。在实际应用当中,通过合理设置文件分组策略,可使得k<<n/d,k<<m,从而达到聚类加速的效果。例如使用kmeans聚类算法,该算法的时间复杂度为f(x)=λtxm,其中,x为聚类输入的文件数,t为kmeans的迭代次数,λ为文件比对时间;那么直接对所有文件进行聚类的时间复杂度为λtnm,使用本发明方法的时间复杂度为λtnk+λtdkm,在满足1>k/m+dk/n的条件下,λtnm>λtnk+λtdkm,从而达到对文件聚类的加速效果,效率提升率为1-(k/m+dk/n)。

文件聚类完成后,用户可以利用本方法生成的文件簇(即全局簇)来进行文件浏览,有两种浏览方式:一种是提供基于主题目录结构的文件组织,用户先浏览文件簇,然后选定一文件簇来浏览簇中相关文件;另一种是提供文件的联想功能,用户使用传统的树结构目录进行文件浏览,点击文件展示该文件所在簇的相关文件,实现文件推荐。在以上述两种浏览方式进行簇文件展示时,用户可以按照文件大小、文件创建时间、文件修改时间来对文件进行排序,实现优先浏览。

附图说明

图1是基于树结构的文件组织利用本发明方法得到的基于主题结构的文件组织示意图。

图2是实施例的一种面向用户个人文件的聚类方法流程图。

图3是一个文件树形目录结构样例图。

图4是实施例的一种面向用户个人文件的聚类系统结构图。

具体实施方式

为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。

本实施例提供一种面向用户个人文件的聚类方法,如图2所示,包括以下3个步骤:

1.文件分组

利用用户对相似文件的保存习惯对文件进行分组,目标是确保每个文件组内的文件尽可能归到较少的几个类簇,文件组之间不存在重复文件。

可以使用如下的分组策略:

1)使用文件树形目录结构进行分组:

用nodeset表示树中的所有目录节点,计算每个目录节点“到根节点的距离”和“到最远的叶子节点的距离”,分别使用符号x、y来表示,那么对于每个目录节点i,两个距离可以表示为<xi,yi>。

以下利用x、y进行文件分组:

方法1:使用x进行文件分组。用户设置距离参数δx,将符合条件xi>δx,i∈nodeset的目录节点所包含的文件作为文件组,完成分组。

以图3为例,假设距离参数δx设为2,则得到的文件组为{a0}、{a1.1}、{a2.1,a3.1,a3.2}、{b1.1}、{c1.1,c1.2}。

方法2:使用y进行文件分组。用户设置距离参数为δy。过程的伪代码如下所示:

通过上述伪代码可知该算法主要分为5步:(1)基于目录节点的y值,选择一个y值大于δy且与δy最接近的目录节点出来;(2)将选择出来的目录节点包含的直接文件作为一个文件组;(3)将选择出来的目录节点对应的子树从整个目录树中删除;(4)更新目录树中所有目录节点的y值;(5)重复步骤(1)-(4),直到没有目录节点的y值大于δy;(6)将剩下目录节点所包括的所有文件作为一个单独的文件组。

仍以图3为例,假设距离参数δy设为2,则得到的文件组为{a0,a1.1}、{a2.1,a3.1,a3.2}、{b1.1}、{c1.1,c1.2}。

与方法1相比,方法2可以避免一些包含文件过多的文件组。用户可以选择上述两种方法中任意一种也可以将两种结合使用来进行文件分组。

2)使用文件名、文件类型进行分组:

如果聚类目标是要求类簇中的文件类型相同,文件分组可以先按照文件类型进行分组,再在每个类别内对文件基于文件名进行聚类,生成的每个类簇作为文件组。如果聚类目标不要求类簇文件相同,可直接对文件基于文件名进行聚类。由于文件名较短,聚类速度非常快。

基于文件名的聚类有2种方法:

方法1:计算文件名的编辑距离,将编辑距离小于指定阈值的文件作为一个分组,阈值由用户根据需要设定。

方法2:对文件名进行分词,将文件名表示为词条向量,计算文件名之间的文本距离,如jaccard距离(参照https://baike.baidu.com/item/%e6%9d%b0%e5%8d%a1%e5%be%b7%e8%b7%9d%e7%a6%bb/15416212?fr=aladdin)或者cosine距离(参照https://zh.wikipedia.org/zh-cn/%e4%bd%99%e5%bc%a6%e7%9b%b8%e4%bc%bc%e6%80%a7),将相似度大于设定阈值的文件作为一个文件组,阈值由用户根据需要设定。

3)结合上述2种分组策略进行分组:

可以先使用策略1)进行分组,对于得到的每个分组再使用策略2)再分组;或者先使用策略2)进行分组,对于得到的每个分组再使用策略1)分组。

2.局部簇生成

对步骤1中每个文件组内的所有文件进行聚类,得到局部簇,局部簇内的文件内容相似。一个文件组可以生成多个局部簇。

3.全聚簇生成

将步骤2得到的每个局部簇视作一个文件,对全部局部簇进行聚类,生成全局簇。

具体地,将每个局部簇视作一个文件,使用唯一表示。局部簇文件可以使用簇中的单个文件进行表示,比如选择长度最长的文件作为簇文件表示;也可以使用簇中所有文件表示计算得到,比如将簇中所有文件的表示进行拼接。

步骤2和步骤3的聚类过程涉及到文件表示、文件相似度计算以及运行聚类算法。其中聚类算法可以选择kmeans聚类算法或者基于密度聚类算法。文件表示以及文件相似度计算根据需求来确定,常用的需求分为以下两种:

1)聚类目标是将相同话题的文件聚到一起,类簇内的文件内容差异可以较大。比如希望将“经济”类的文章汇聚到一起,类簇内的文章可以是“国际经济”的文章,也可以是“地方经济发展”的文章,虽然这两篇文章并不是讨论一件事。针对该需求,聚类使用的文件表示以及文件相似度计算方法如下:

文件表示:对文件进行向量化,每一维特征对应文件一块内容,其中,文本文件可以使用向量空间模型表示(参照https://en.wikipedia.org/wiki/vector_space_model),图像文件可以使用图像特征的抽取方法,也可以使用基于神经网络的特征抽取方法。

文件相似度计算:计算文件之间的距离,如jaccard距离或者cosine距离。

2)聚类目标是将同源文件聚到一起,同源文件是指文件通过增、删、改可以进行转换,同源文件往往是用户为了完成一个最终文件形成的多个过程稿。针对该需求,聚类使用的文件表示以及文件相似度计算方法如下:

文件表示:使用模糊哈希(参照http://dx.doi.org/10.1016/j.diin.2006.06.015)的方法计算文件哈希值,该模糊哈希是基于内容分割的分片哈希算法(contexttriggeredpiecewisehashing,ctph),通过对一个文件进行分片来判断文件相似程序。

文件相似度计算:比对两个文件的哈希值,将哈希值转换为相似度(参照模糊哈希算法http://dx.doi.org/10.1016/j.diin.2006.06.015)。

本实施例还提供一种面向用户个人文件的聚类系统,如图4所示,包括:

聚类计算单元,用于对用户文件进行聚类;该聚类计算单元包括:批量文件聚类计算单元,用于首次对用于个人文件进行聚类;以及增量文件聚类计算单元,用于对后续增量文件进行聚类,利用生成全聚簇的聚类过程,将增量得到的类簇与已有的类簇进行一次聚类,得到合并结果,实现增量聚类结果与已有聚类结果的合并;

聚类结果存储单元,用于存储聚类结果,保留文件与类簇的映射关系;

聚类结果查找单元,用于实现根据类簇返回文件以及根据文件返回类簇的功能。

通过以上步骤对用户个人文件进行聚类,文件聚类完成后,用户可以利用本方法生成的全局簇来进行文件浏览,有两种浏览方式:一种是提供基于主题目录结构的文件组织,用户先浏览文件簇,然后选定一文件簇来浏览簇中相关文件;另一种是提供文件的联想功能,用户使用传统的树结构目录进行文件浏览,点击文件展示该文件所在簇的相关文件,实现文件推荐。在以上述两种浏览方式进行簇文件展示时,用户可以按照文件大小、文件创建时间、文件修改时间来对文件进行排序,实现优先浏览。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

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