CCFrank4dblp
CCFrank4dblp copied to clipboard
部分会议显示不正常
首先感谢您做出如此有趣而实用的工作!
-
我的研究是体系结构领域,所以对#21提到的关于MICRO的问题很清楚。其中MICRO(称为大MICRO,是体系结构的顶级会议)的正确dblp网址为https://dblp.org/db/conf/micro/index.html 。然后IEEE Micro(称为小micro,是一个期刊)的dblp网址为http://dblp.uni-trier.de/db/journals/micro/ 。
-
我在semantic scholar上面发现有部分顶会显示不正常,如下图所示: (1)MICRO:
(2)ISCA:
(3)HPCA:
(4)TC:
由于我对js代码并不是很了解,所以没有去直接看源码,只从现象上进行猜测。 (1)(2)(3)是同一个问题,都是带有全名和缩写,因为会议一年召开一次,所以全名里面会带上年份或者届数的字段,例如2019,53rd等。我猜测是不是因为全名采用的完全匹配,所以会导致无法正常检测,可以对全名的进行模糊匹配。 (4)的问题是只给出了全名,没有给出缩写(实际上缩写是有的,可能是这个文章没写),由于没有缩写,所以没匹配上。 综上匹配策略可以是:1. 如果同时有全名和缩写,则模糊全名+精确缩写;2. 如果只有全名或缩写,则精确匹配。
- 如果您能对代码结构进行介绍一下,那就更好啦~
感谢您的使用!
-
谢谢您的说明,我可以放心地修改链接啦~我已在数据文件中更新网址,等待上传。
-
谢谢您的指正!
从您提供的具体例子来看,目前 Semantic Scholar 上的匹配还有不少问题。
您对 (1-3) 的猜测是正确的,全名采用开头匹配(即使用 n-th Annual ... Symposium on 匹配期刊的全名)。
(4) 的问题已经解决,原因是在代码上偷懒 ///v/// 在超出长度的名称后有 '…' 字符,我在匹配前不加甄别地直接删除结尾的字符,用“IEEE Transactions on Computer”查找,得到 ['IEEE Transactions on Computers', 'IEEE Transactions On Computer-Aided Design Of Integrated Circuits And System'],在无法确定的情况下,CCFrank 选择不显示。 我已在匹配逻辑中增加判断是否包含 '…' 的逻辑,解决 (4) 中出现的问题。
- 代码结构:文件夹 css 包含样式文件,如 tag 的形状、颜色等;data 存储数据文件;js 中是对各搜索页(如 dblp 、谷歌学术等)增加标记的主要逻辑。
我猜测您可能是希望了解 js 部分判断 CCF 的内容,所以我这里介绍一下大致思路:
(当然如果您希望了解其他信息,欢迎再次评论告知我)
从根目录下 script.js
出发,根据我们浏览器当前打开的页面网址不同window.location.hostname.includes(site_name)
,执行不同页面的匹配逻辑site_name.run()
;
以我们现在讨论的 Semantic Scholar 为例,执行 js/semanticscholar.js,其中 appendRanks()
函数根据前端显示,定位我们需要的信息所在的网页元素 $(".cl-paper-venue")
,获取文本如“IEEE Transactions on Computers”。
传入 js/ccf.js 的 getRankInfo()
函数,Semantic Scholar 此时的匹配方式 type
选择 'abbr'
。
观察 Semantic Scholar 上会议显示缩写,期刊显示全称。
先将“IEEE Transactions on Computers”当作缩写,在 ccf.abbrFull
字典中匹配该名称,如果匹配成功,则得到该会议的信息;
而当缩写中不存在该名称 full === undefined
时,将 “IEEE Transactions on Computers” 中可能存在的 '…' 字符删除,查找名称是否与 ccf.fullUrl
字典中 key 的开头有匹配,若有,则得到该期刊的信息。
从 (1) 和 (2) 来看,(去除“Annual”及前序字符)期刊名称的开头匹配有重名的可能性,所以最好获取鼠标悬停后 tooltip 中的完整名称。
我尝试获取 tooltip 中没有成功,因为 Semantic Scholar 显示 tooltip 的做法和通常的做法不同:
鼠标悬停后,在页面中新增 div
,该 div
包含完整名称,但并不与 $(".cl-paper-venue")
绑定;
鼠标移出后,该 div
的内容被清空;
下一次鼠标悬停后,新增另一个 div
显示信息。
我还没有找到好办法来获取这些文字。
我再尝试解决下 (1-3) 的问题。
谢谢您的反馈! 做系统的同学都特别厉害,要考虑好多方面、各种因素!祝 Paper 多多!
感谢您耐心的回复,现在我对软件的执行流程有了初步了解,感谢~ 以及您的夸奖,也祝您Paper多多,哈哈~
-
首先,去除Annual及其前序字符应该不会导致会议名称的重复(这里强调是会议,因为期刊好像都不会用那些哪一届的写法,会议会这么写),例如(1)和(2)去掉Annual还是能区分的开,即International Symposium on Microarchitecture (MICRO)和International Symposium on Computer Architecture (ISCA)。但是直接去掉Annual会导致那些名字带Annual的会议检测错误,如NeurIPS的全称为Annual Conference on Neural Information Processing Systems。
-
我想了个办法,你看看行不行,如下:
- 考虑最复杂的情况:2020 53rd Annual IEEE/ACM Internation Symposium on Microarchitecture (MICRO-53)。
- 处理左右括号,分成全称2020 53rd Annual IEEE/ACM Internation Symposium on Microarchitecture和缩写MICRO-53。
- 处理破折号,将MICRO-53变成MICRO,得到 url 为 https://dblp.org/db/conf/micro/index.html 。
- 在数据库里面查找全称,如果查找成功则返回,如果查找失败则删除最左侧字符进行查询,如:
- 2020 53rd Annual IEEE/ACM Internation Symposium on Microarchitecture,失败
- 53rd Annual IEEE/ACM Internation Symposium on Microarchitecture,失败
- Annual IEEE/ACM Internation Symposium on Microarchitecture,失败
- IEEE/ACM Internation Symposium on Microarchitecture,成功,并得到 url 为 https://dblp.org/db/conf/micro/index.html 。
- 对比全称和缩写得到的url是否相同,如果相同,则最终显示 “CCF A”;如果不相同,则最终显示“CCF A?”。
- (补充)如果只有全称或缩写,则第一步,第二步,和第五步不做,相当于只有第三步和第四步。
- (补充)CCF列表很小,计算量应该不算大。如果计算量还是太大的话,那可以先对CCF 列表存在的全称先建一个哈希表,这样可以依据哈希值做快速查找。
- (补充)还有一个计算量大的原因如果一个会议名称长度为N且不在CCF列表,那么需要做N次查找。因此,可以提前设置一下阈值,左侧删除的字符大于N/2之后,停止查找。这个N/2可以设置,一般N/2足够了。