记录链接:与杜克一起玩
最近,我在记录链接方面变得非常有趣,并遇到了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
记录链接:与杜克一起玩相关推荐
- 杜克大学_记录链接:与杜克一起玩
杜克大学 最近,我在记录链接方面变得非常有趣,并遇到了Duke项目,该项目提供了一些工具来帮助解决此问题. 我以为我会尝试一下. 进行记录链接时的典型问题是,我们有两个来自不同数据集的记录,它们代表同 ...
- 如何录制记录自己在PC上玩英雄联盟 (LoL)视频游戏
英雄联盟 (LoL) 是多人在线战斗竞技场视频游戏.在英雄联盟中,玩家扮演一个看不见的"召唤者"的角色,他控制着具有独特能力的"冠军",如何录制记录自己在PC上 ...
- 决斗小游戏代码html,《游戏王:决斗链接》的基础玩法介绍
<游戏王:决斗链接>是konami于2016年发行的<YU-GI-OH Duel Links>的国服,同时也是在手机应用市场下载量位于卡牌游戏榜首,是全世界最火的游戏王网络游戏 ...
- 刷题记录:牛客NC21841牛牛玩平板
传送门:牛客 题目描述: 牛牛和牛妹喜欢玩平板游戏,游戏一开始屏幕上会出现很多个图形,玩家在每一轮可以合并两个图形,当只有一 个图形的时候游戏结束,每个图形都有一个大小,合并完成后的图形的大小为x+y ...
- 用AI玩55款经典游戏是什么体验?
本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有技术干货文章,整理的学习资料,一线大厂面试经验分享等,欢迎 Star 和 完善. 大 ...
- 多玩LOL盒子下载|多玩LOL盒子下载
英雄联盟盒子是多玩受官方认证发布的游戏辅助工具,英雄联盟盒子提供多种多样的游戏辅助功能,英雄联盟盒子让你的游戏生活更加惬意,英雄联盟盒子完全免费 多玩LOL盒子下载链接 软件介绍 多玩LOL盒子又被称 ...
- python填写excel-Python玩转Excel的读写改实例
摘要: 利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel 利用xlrd读取excel 先需要在命令行中pip install xlrd:读取xls文件的流程为: ...
- w怎么接显示 树莓派zero_纯干货!一根线玩转树莓派ZeroW(图文教程,亲测有效)...
#一.写在前面本文旨在介绍如何用最少的外设(成本)完成树莓派Zero W最基础最重要的功能.注意:本文原始发表时官方镜像版本是2017-04-10的,在2019年5月10日有网友提出本方案已经不完全适 ...
- 【转】带你玩转Visual Studio——01.开篇介绍
开篇之前,先唠叨几句 本人从事C++开发工作一年半,总想就C++开发方面写点东西.写什么呢?想了一下还是写点跟开发密切相关的吧,要说跟开发最密切相关的那莫过于就是开发工具了,也就是常常说的集成开发环境 ...
最新文章
- java8学习:用流收集数据
- 为什么servlet-nameaction/servlet-name要这么写
- C语言中冒泡排序及优化
- 数据结构实验之查找七:线性之哈希表
- 无线通信AI大赛正式开放评测,50万大奖等你霸榜!
- 【Greenplum异常】数据库报错 could not create temporary file No space left on device(求解决)
- C/C++函数调用的几种方式总结
- Android studio之NDK integration is deprecated in the current plugin解决办法
- Android之二维码生成和识别
- python 微服务 etcd_python etcd api
- 战争学院服务器不稳定,英雄联盟服务器突然崩溃坑玩家!战争学院玩家全被强制下线...
- python自动答题助手_头脑王者python答题助手
- pcm系统设计及matlab仿真实现,DOC:25页毕业设计PCM系统设计及MATLAB仿真实现.doc文档优秀范文...
- 计算机类毕业设计评语导师评语,毕业设计导师评语
- 指数解读:沪深300(CSI300)[000300](续)
- Oracle R12采购接收流程 PR PO RCV AP Payment
- ISO三体系,招投标企业认证最多的资质
- A-MPDU与A-MSDU各是什么意思
- 客户分级管理的意义和方法?如何高效的对客户进行分级?
- 认识研发数字化管理(数字化研发管理)