今天参照“数字平台系统的二次开发体验(一)——数据导入批查重方案”试验了一边倒入一边查重。
{
方案照做之后,有的人(我就是)可能出现“找不到cfgs/dup”错误,解决办法如下:
1.打开dp2内核管理——dp2manager;
2.右键单击服务器节点,在弹出菜单中选择“在下级创建目录或文件”,创建目录名为cfgs;
3.右键单击cfgs目录,在弹出菜单中选择“在下级创建目录或文件”,创建文件名为dup;
4.右键单击dup,在弹出菜单中选择“编辑配置文件”;
5.输入内容如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
<project name="编目查重" comment="编目查重">
<database name="你的书目库名" threshold="100">
<accessPoint name="责任者" weight="50" searchStyle="" />
<accessPoint name="ISBN" weight="80" searchStyle="" />
<accessPoint name="题名" weight="20" searchStyle="" />
</database>
</project>
<default origin="你的书目库名" project="编目查重" />
</root>
}
试验导入了一些数据,功能看起来是正常的,但是仔细检查之后,发现有些书目被“误杀”了,没有重复的却被当成重复书目舍弃了。如下图(右边是查重导入后的)。
如上图左边的1-5,责任者相同,而题名、ISBN不同,被当成重复的,2-5全被舍弃了。
6,7,题名、责任者相同,ISBN不同,200$h不同,被当成重复的,7被舍弃了。
如上两条书目是一套丛书中的不同单册,题名、ISBN均不相同,仅责任者相同,得分也不过50,怎么会被判重了呢,查重过程中我发现有的得分会有200多,而dup中责任者+题名+ISBN才150分,所以可能除了dup文件中设置的查重点,系统内还会有其他查重点,其他重复点得分值加上责任者的分值,可能就超过阀值了。
如上两条书目,题名、责任者相同,ISBN不同,200$h不同,被判重(判断错误),看到这里,我觉得算法中忽略了200$h的权重。
以上两条书目:题名、责任者相同,ISBN,200$h不同,被判不重(判断正确),这下我糊涂了,到底是忽略了200$h的权重还是没有呢?
谢老师,以上的结果让我产生了两点怀疑:
1.是不是我的软件配置有问题,我觉得应该不是,如果没配置好,软件应该不能正常查重。软件查重功能正常,而且大部分结果正确。
2.加权查重算法有问题。
如果是查重算法的问题,那它很难通过重新分配权值来解决,而是加权查重这种算法本身的问题了。就拿200$h来说,该分配给他多重的权值呢,可能一套书题名、责任者、ISBN完全相同,就是分卷不同,他们不能被判重,200$h这一项就超过了题名+责任者+ISBN,而如果给200$h分配了很高的权值,那么两套不同书而200$h相同的书,就有可能被判重了。
加权查重极有可能产生“人多势众”的结果,多个弱权重的加在一起超过了那个掌握真理的少数“人”;
加权查重也有可能产生“以权谋私”的结果,过大的单一掌权者说了算,就损害整体利益了。
拿第一组例子来说,题名不同的书有可能是重吗?应该不算是重吧!但是加权就可能给他判重。
ISBN相同,一定就相同吗?一套书的不同册共用ISBN,就不能判重,一个ISBN给80分,随便加上根稻草,就超过阀值了。
如此组合起来,恐怕结果是n多种,通过预设权值能解决吗?很难吧。是否可以通过多重机制判重呢,可能您已经做了,就是我不知道罢了。
如果不是我的问题的话,这样的查重结果很难令人接受。
如果是我的问题,造成了查重结果出错,麻烦老师指正。
我用的ISO文件一并传上来。
测试.iso
另外,重复数据我选择了保存成gb2312格式,可是打开一看却是UTF8的。