最近,我在记录链接方面变得非常有趣,并遇到了Duke项目,该项目提供了一些工具来帮助解决此问题。 我以为可以尝试一下。

进行记录链接时的典型问题是,我们有两个来自不同数据集的记录,它们代表同一实体,但是没有可用于将它们合并在一起的公共键。 因此,我们需要提出一种启发方法,使我们能够这样做。

杜克大学(Duke)有一些实例表明了它的实际作用,我决定与联系国一道去。 在这里,我们有来自Dbpedia和Mondial数据库的国家,我们希望将它们链接在一起。

我们需要做的第一件事是构建项目:

export JAVA_HOME=`/usr/libexec/java_home`
mvn clean package -DskipTests

在撰写本文时,这将使zip失败,其中包含我们需要的所有内容,位于duke-dist / target / 。 让我们打开包装:

unzip duke-dist/target/duke-dist-1.3-SNAPSHOT-bin.zip

接下来,我们需要下载数据文件和Duke配置文件:

wget https://raw.githubusercontent.com/larsga/Duke/master/doc/example-data/countries-dbpedia.csv
wget https://raw.githubusercontent.com/larsga/Duke/master/doc/example-data/countries.xml
wget https://raw.githubusercontent.com/larsga/Duke/master/doc/example-data/countries-mondial.csv
wget https://raw.githubusercontent.com/larsga/Duke/master/doc/example-data/countries-test.txt

现在我们准备好尝试了:

java -cp "duke-dist-1.3-SNAPSHOT/lib/*" no.priv.garshol.duke.Duke --testfile=countries-test.txt --testdebug --showmatches countries.xml...NO MATCH FOR:
ID: '7706', NAME: 'guatemala', AREA: '108890', CAPITAL: 'guatemala city',MATCH 0.9825124555160142
ID: '10052', NAME: 'pitcairn islands', AREA: '47', CAPITAL: 'adamstown',
ID: 'http://dbpedia.org/resource/Pitcairn_Islands', NAME: 'pitcairn islands', AREA: '47', CAPITAL: 'adamstown',Correct links found: 200 / 218 (91.7%)
Wrong links found: 0 / 24 (0.0%)
Unknown links found: 0
Percent of links correct 100.0%, wrong 0.0%, unknown 0.0%
Records with no link: 18
Precision 100.0%, recall 91.74311926605505%, f-number 0.9569377990430622

我们可以查看countries.xml ,看看如何计算记录之间的相似度:

<schema><threshold>0.7</threshold>
...<property><name>NAME</name><comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator><low>0.09</low><high>0.93</high></property><property><name>AREA</name><comparator>no.priv.garshol.duke.comparators.NumericComparator</comparator><low>0.04</low><high>0.73</high></property><property><name>CAPITAL</name><comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator><low>0.12</low><high>0.61</high></property></schema>

因此,我们通过计算首都和国家的Levenshtein距离(即将一个单词转换为另一个单词所需的最小单字符编辑次数)来计算出首府城市和国家/地区的相似性

如果其中一个数据集的拼写有误或有差异,这将非常有效。 但是,我很好奇,如果该国有两个完全不同的名称,例如科特迪瓦有时被称为象牙海岸,那会发生什么。 让我们尝试在以下文件之一中更改国家/地区名称:

"19147","Cote dIvoire","Yamoussoukro","322460"
java -cp "duke-dist-1.3-SNAPSHOT/lib/*" no.priv.garshol.duke.Duke --testfile=countries-test.txt --testdebug --showmatches countries.xmlNO MATCH FOR:
ID: '19147', NAME: 'ivory coast', AREA: '322460', CAPITAL: 'yamoussoukro',

我还通过曼联对托特纳姆热刺的BBC和ESPN比赛报告来进行了尝试-BBC按姓氏引用球员,而ESPN有其全名。

当我使用Levenshtein比较器将全名与姓氏进行比较时,没有您所期望的匹配。 我必须将ESPN名称分解为名字和姓氏才能使链接正常工作。

同样,当我将球队名称更改为“曼联”而不是“曼联”和“热刺”而不是“托特纳姆热刺”时,两者也不起作用。

我想我可能需要编写一个特定于域的比较器,但是我也很好奇是否可以提出一些训练示例,然后训练一个模型来检测什么使两条记录相似。 它的确定性较差,但可能更健壮。

翻译自: https://www.javacodegeeks.com/2015/08/record-linkage-playing-around-with-duke.html

记录链接:与杜克一起玩相关推荐

  1. 杜克大学_记录链接:与杜克一起玩

    杜克大学 最近,我在记录链接方面变得非常有趣,并遇到了Duke项目,该项目提供了一些工具来帮助解决此问题. 我以为我会尝试一下. 进行记录链接时的典型问题是,我们有两个来自不同数据集的记录,它们代表同 ...

  2. 如何录制记录自己在PC上玩英雄联盟 (LoL)视频游戏

    英雄联盟 (LoL) 是多人在线战斗竞技场视频游戏.在英雄联盟中,玩家扮演一个看不见的"召唤者"的角色,他控制着具有独特能力的"冠军",如何录制记录自己在PC上 ...

  3. 决斗小游戏代码html,《游戏王:决斗链接》的基础玩法介绍

    <游戏王:决斗链接>是konami于2016年发行的<YU-GI-OH Duel Links>的国服,同时也是在手机应用市场下载量位于卡牌游戏榜首,是全世界最火的游戏王网络游戏 ...

  4. 刷题记录:牛客NC21841牛牛玩平板

    传送门:牛客 题目描述: 牛牛和牛妹喜欢玩平板游戏,游戏一开始屏幕上会出现很多个图形,玩家在每一轮可以合并两个图形,当只有一 个图形的时候游戏结束,每个图形都有一个大小,合并完成后的图形的大小为x+y ...

  5. 用AI玩55款经典游戏是什么体验?

    本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有技术干货文章,整理的学习资料,一线大厂面试经验分享等,欢迎 Star 和 完善. 大 ...

  6. 多玩LOL盒子下载|多玩LOL盒子下载

    英雄联盟盒子是多玩受官方认证发布的游戏辅助工具,英雄联盟盒子提供多种多样的游戏辅助功能,英雄联盟盒子让你的游戏生活更加惬意,英雄联盟盒子完全免费 多玩LOL盒子下载链接 软件介绍 多玩LOL盒子又被称 ...

  7. python填写excel-Python玩转Excel的读写改实例

    摘要: 利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel 利用xlrd读取excel 先需要在命令行中pip install xlrd:读取xls文件的流程为: ...

  8. w怎么接显示 树莓派zero_纯干货!一根线玩转树莓派ZeroW(图文教程,亲测有效)...

    #一.写在前面本文旨在介绍如何用最少的外设(成本)完成树莓派Zero W最基础最重要的功能.注意:本文原始发表时官方镜像版本是2017-04-10的,在2019年5月10日有网友提出本方案已经不完全适 ...

  9. 【转】带你玩转Visual Studio——01.开篇介绍

    开篇之前,先唠叨几句 本人从事C++开发工作一年半,总想就C++开发方面写点东西.写什么呢?想了一下还是写点跟开发密切相关的吧,要说跟开发最密切相关的那莫过于就是开发工具了,也就是常常说的集成开发环境 ...

最新文章

  1. java8学习:用流收集数据
  2. 为什么servlet-nameaction/servlet-name要这么写
  3. C语言中冒泡排序及优化
  4. 数据结构实验之查找七:线性之哈希表
  5. 无线通信AI大赛正式开放评测,50万大奖等你霸榜!
  6. 【Greenplum异常】数据库报错 could not create temporary file No space left on device(求解决)
  7. C/C++函数调用的几种方式总结
  8. Android studio之NDK integration is deprecated in the current plugin解决办法
  9. Android之二维码生成和识别
  10. python 微服务 etcd_python etcd api
  11. 战争学院服务器不稳定,英雄联盟服务器突然崩溃坑玩家!战争学院玩家全被强制下线...
  12. python自动答题助手_头脑王者python答题助手
  13. pcm系统设计及matlab仿真实现,DOC:25页毕业设计PCM系统设计及MATLAB仿真实现.doc文档优秀范文...
  14. 计算机类毕业设计评语导师评语,毕业设计导师评语
  15. 指数解读:沪深300(CSI300)[000300](续)
  16. Oracle R12采购接收流程 PR PO RCV AP Payment
  17. ISO三体系,招投标企业认证最多的资质
  18. A-MPDU与A-MSDU各是什么意思
  19. 客户分级管理的意义和方法?如何高效的对客户进行分级?
  20. 认识研发数字化管理(数字化研发管理)

热门文章

  1. 《给教师的阅读建议》经典语录
  2. sql server中创建数据库和表的语法
  3. Python缩进的几个原则
  4. Spark SQL 中UDF的讲解
  5. 不安装cudnn可不可以_Linux非root用户如何优雅的安装cuda和cudnn
  6. vue 字典_【开源】基于Vue的前端组件库HeyUI
  7. DFS——深度优先搜索基础
  8. 不相交集的求并算法(按集合大小求并+按高度求并)
  9. (实模式+保护模式)模式切换的过程步骤(代码+文字解析)
  10. HDU2068(错列排序)