1 引言
随着计算机硬盘存储的文件越来越多,想要搜索相关文档变得越来越困难。一种方法是使用桌面搜索软件查询,但是这些软件仅能给出含有查询关键字的结果,并不能确定出结果的优先顺序。本文自制了一种方法,首先把硬盘内的文件名保存成一个列表,然后对这个列表中的每个名称进行相似度计算,最后得出与查询最相关的文档。
2 建立目录列表
试验例子是“E:\电影”目录下文件,这个文件夹内保存着电影数据集MovieSet,目前有共12411部电影的详细介绍和字幕。我们想输入一部电影的名称来查询其中与之最为相似的电影。为此需要生成一个目录文件,使用如下所示的代码:
不过,后来觉得这种方法需要文件的输出(write)和输入(open),代码不简洁,于是使用列表list来存储电影名。改进的代码如下:
3 相似性查询
余弦相似计算,采用了《利用文本相似度聚类产生能够再学习的新文档》一文的方法,判断语句if (round(each[1],2)) >= 0.3 用来缩小查询结果的范围。
4. 试验结果
这个试验的目的是想在我们的数据集12411部电影中查询与'London has fallen'【伦敦陷落】相关的电影,运行代码,得出最相似的10部电影如下:
其中'Angel Has Fallen'【天使陷落】和'Olympus Has Fallen'【白宫陷落】与查询的电影是同一个系列,都有“has fallen”关键字,因而是最相关的两部电影。但接下来的电影名虽然带有Fallen或Angel, 不过这些电影与查询的电影没有太大关联,这意味着只有对这些电影加上更多的参考信息,才能准确地找出相关的电影。本文没有这样作,而是合并了在线得相似电影查询,下面描述这种方法。
5. 合并在线的相似查询
在这个试验中,试图合并在线的相似查询来弥补上述结果的不足。本文通过输入imdbpy模块来增加在线相似查询得功能。代码如下所示。
首先,根据查询语句确定出这部电影得ID, 然后使用两种不同得方法进行相似查询,最后结果如下所示。(7)以后的结果仅是合并,并没有按照相似度排序。当对每部电影增加更多的相关信息后,排序结果更有意义。
6. 结束语
本文试验了一种基于文件名称的相似查询方法,这种方法能够快速在本机内查询相似文件名称,作为一个例子,在电影数据集中进行了试验。此外,一个附加的在线相似查询方法增强了结果的可靠性。如果对每部电影附加多的信息,那么这种查询结果更准确。接下来我们将要对上述代码进行改造。
本文相似的文档: