WenyanLiu / CCFrank4dblp

Displays the China Computer Federation (CCF) recommended rank of international conferences and journals in the dblp, Google Scholar, Connected Papers and and Web of Science search results.
MIT License
612 stars 46 forks source link

部分会议显示不正常 #34

Open liyewen521 opened 2 years ago

liyewen521 commented 2 years ago

首先感谢您做出如此有趣而实用的工作!

  1. 我的研究是体系结构领域,所以对#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/ 。

  2. 我在semantic scholar上面发现有部分顶会显示不正常,如下图所示: (1)MICRO: (2)ISCA: (3)HPCA: (4)TC:

由于我对js代码并不是很了解,所以没有去直接看源码,只从现象上进行猜测。 (1)(2)(3)是同一个问题,都是带有全名和缩写,因为会议一年召开一次,所以全名里面会带上年份或者届数的字段,例如2019,53rd等。我猜测是不是因为全名采用的完全匹配,所以会导致无法正常检测,可以对全名的进行模糊匹配。 (4)的问题是只给出了全名,没有给出缩写(实际上缩写是有的,可能是这个文章没写),由于没有缩写,所以没匹配上。 综上匹配策略可以是:1. 如果同时有全名和缩写,则模糊全名+精确缩写;2. 如果只有全名或缩写,则精确匹配。

  1. 如果您能对代码结构进行介绍一下,那就更好啦~
WenyanLiu commented 2 years ago

感谢您的使用!

  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) 中出现的问题。

  1. 代码结构:文件夹 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 多多!

liyewen521 commented 2 years ago

感谢您耐心的回复,现在我对软件的执行流程有了初步了解,感谢~ 以及您的夸奖,也祝您Paper多多,哈哈~

  1. 首先,去除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。

  2. 我想了个办法,你看看行不行,如下:

    • 考虑最复杂的情况: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足够了。