模块讨论:Chemicals
Wong128hk在话题“建立CAS号重定向后续讨论”中的最新留言:6年前
本模块依照页面评级标准无需评级。 本模块属于下列维基专题范畴: |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
建立CAS号重定向后续讨论
编辑前期工作
完成:已成立追踪分类Category:CAS号重定向(搭配模板 )-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月19日 (二) 15:47 (UTC)
完成,先前已完成Category:CAS不正确标志的条目的校对。(PS:已提出机器人请求:Wikipedia:机器人/作业请求)--Leiem(留言) 2017年12月19日 (二) 15:55 (UTC)
- (:)回应分类Category:无CAS号重定向的物质条目应该可以协助机器人运作。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月20日 (三) 06:39 (UTC)
- (~)补充:@Wong128hk、Leiem、乌拉跨氪、蘭斯特:已根据CAS号#格式写了一个简易的校验函式
- 例如:
{{#invoke:Chemicals|check_CAS_test|1=7732-18-5}}
→ true (水){{#invoke:Chemicals|check_CAS_test|1=773332-18-5}}
→ false{{#invoke:Chemicals|check_CAS_test|1=77-32-1-8-5}}
→ false- {{#invoke:Chemicals|check_CAS_test|1=娜娜奇}} → false[开玩笑的]
{{#invoke:Chemicals|check_CAS_test|1=abc-de-f}}
→ false{{#invoke:Chemicals|check_CAS_test|1=124-38-9}}
→ true (二氧化碳){{#invoke:Chemicals|check_CAS_test|1=125-38-9}}
→ false
- 已运用于Category:CAS号不正确的重定向。请协助复查 ,会在建立错误的CAS号重定向时将其加入
- 例如:
- -- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月19日 (二) 17:39 (UTC)
- (~)补充:由于违反CAS号#格式的重定向一定符合WP:CSD#R3,因此这笔编辑Special:Diff/47445017直接将校验失败者挂上 ,@Wong128hk:若有违规请回退这笔编辑Special:Diff/47445017。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月19日 (二) 17:42 (UTC)
关于Module:Chemicals里面校验副程式,是否有用到d:Property:P231(用于加入CAS号的属性)的属性约束的格式约束,因为d:Property:P231的属性约束的格式约束的正规表达式的格式化字串限定符是“[1-9]\d+-\d\d-\d
”,见d:Wikidata:Database reports/Constraint_violations/P231#Format的检测报告--林勇智 2017年12月21日 (四) 12:59 (UTC)
- @D2513850:不需使用正规表达式,只需要检查是否为三端由“-”分割组成的数字,以及最后一位校验码是否正确,此程式码的正确性将会高于正规表达式:“因为正规表达式不能做加法乘法与取模核对校验码”。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 13:04 (UTC)
- @D2513850:(?)异议一个CAS编号以连字符“-”分为三部分,第一部分有2到7位数字,第二部分有2位数字,第三部分有1位数字作为校验码。CAS编号以升序排列且没有任何内在含义。校验码的计算方法如下:CAS顺序号(第一、二部分数字)的最后一位乘以1,最后第二位乘以2,依此类推,然后再把所有的乘积相加,再把和除以10,其余数就是第三部分的校验码。举例来说,水(H2O)的CAS编号前两部分是7732-18,则其校验码= ( 8×1 + 1×2 + 2×3 + 3×4 + 7×5 + 7×6 ) mod 10 = 105 mod 10 = 5(mod是求余运算符)-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 13:08 (UTC)
- @D2513850:(?)异议
- 算法先检查是否由“-”分割,且为三部分,因此等价于“
[1-9]\d+-\d\d-\d
” - 接着检查是否每一位都是数字因此等价于“
[1-9]\d+-\d\d-\d
” - “此部分为该正规表达式的缺陷!!正规表达式并未检查校验码!!”,接着依照CAS顺序号(第一、二部分数字)的最后一位乘以1,最后第二位乘以2,依此类推,然后再把所有的乘积相加,再把和除以10,其余数就与第三部分的校验码比对。
- 算法先检查是否由“-”分割,且为三部分,因此等价于“
- @D2513850:(?)异议
- -- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 13:19 (UTC)
- @a2569875:根据CAS号#格式的叙述,d:Property:P231里面正规表达式的格式化字串的值有错,应该是
[1-9]\d{1,6}-\d\d-\d
,另外先做字串格式检测,若该字串能匹配[1-9]\d{1,6}-\d\d-\d
这个正规表达式才做校验码检测。--林勇智 2017年12月21日 (四) 13:54 (UTC)- @D2513850:(?)异议多此一举,只要确定其为由“-”分割的三串数字就够了。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 14:02 (UTC)
- @a2569875:只要求Module:Chemicals里面校验副程式能正确运作就好了--林勇智 2017年12月21日 (四) 14:15 (UTC)
- (:)回应@D2513850:pseudocode给你,这一定会运作好吗
- @a2569875:只要求Module:Chemicals里面校验副程式能正确运作就好了--林勇智 2017年12月21日 (四) 14:15 (UTC)
- @D2513850:(?)异议多此一举,只要确定其为由“-”分割的三串数字就够了。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 14:02 (UTC)
- @a2569875:根据CAS号#格式的叙述,d:Property:P231里面正规表达式的格式化字串的值有错,应该是
- @D2513850:(?)异议一个CAS编号以连字符“-”分为三部分,第一部分有2到7位数字,第二部分有2位数字,第三部分有1位数字作为校验码。CAS编号以升序排列且没有任何内在含义。校验码的计算方法如下:CAS顺序号(第一、二部分数字)的最后一位乘以1,最后第二位乘以2,依此类推,然后再把所有的乘积相加,再把和除以10,其余数就是第三部分的校验码。举例来说,水(H2O)的CAS编号前两部分是7732-18,则其校验码= ( 8×1 + 1×2 + 2×3 + 3×4 + 7×5 + 7×6 ) mod 10 = 105 mod 10 = 5(mod是求余运算符)-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 13:08 (UTC)
- @D2513850:不需使用正规表达式,只需要检查是否为三端由“-”分割组成的数字,以及最后一位校验码是否正确,此程式码的正确性将会高于正规表达式:“因为正规表达式不能做加法乘法与取模核对校验码”。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 13:04 (UTC)
虚拟码 检查CAS ( 参数 CAS号 : 字串) -> 布林字串 如果 (以“-”分割 CAS号 字串的分割结果)的数量 ≠ 3 回传 “否” 宣告 CAS无分割号 : 字串 = 第1个分割区 与 第2个分割区 的字串合并结果 如果 ( (第1个分割区字数 < 2) 或者 (第1个分割区字数 > 7) ) 回传 “否” 如果 第2个分割区字数 ≠ 2 回传 “否” 如果 第3个分割区字数 ≠ 1 回传 “否” 宣告 检查码 : 整数 = (第3个分割区)转成整数 如果 ((第3个分割区)转成整数 ) 失败) 回传 “否” 宣告 检查总和 : 整数 = 0 循环 足标 i = 从 1 到 CAS无分割号的长度 宣告 index : 自然数 = CAS无分割号的长度 + 1 - i 宣告 cas_symbol : 整数 = (CAS无分割号的第index个字)转成整数 如果 ((CAS无分割号的第index个字)转成整数 ) 成功) 检查总和 = 检查总和 + (cas_symbol × i) 否则 回传 “否” 如果 (检查总和 除以 10 的余数) = 检查码 回传 “是” 否则 回传 “否”
- -- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 14:44 (UTC)
- 宇帆先停停。另请@WhitePhosphorus:来看看代码是否可行。--Temp3600(留言) 2017年12月21日 (四) 15:16 (UTC)
- (:)回应@Temp3600:不认为我的算法有什么问题,完全按照CAS号#格式来Implement。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 15:22 (UTC)
- (:)回应@Temp3600:比方说氯酸钙在这个版本Special:固定链接/44678491,我的程式就有算出其检查码应为0 (手算 4×1 + 7×2 + 7×3 + 1×4 + 0×5 + 0×6 + 1×7 = 50, 50 ≡ 0 mod 10),可是条目中却写三,我的程式有顺利抓出此错误,并加入Category:CAS不正确标志的条目;三苯基膦氯化亚金的版本Special:固定链接/41034670中,也有检查出含非法字元,我的程式有顺利抓处此错误,并加入Category:CAS不正确标志的条目。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 15:37 (UTC)
- 我不会coding,所以我只能等WhitePhosphorus来判断。--Temp3600(留言) 2017年12月21日 (四) 19:40 (UTC)
- (:)回应@Temp3600:我只是觉得感觉现在好像“我讲的一切都是错的”,然后“白磷讲的一切都一定是对的”,让我觉得很难过。拜托不要这样好吗,我希望我们还能和平交流-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 20:41 (UTC)
{{#invoke:Chemicals|check_CAS_test|1=-------2147485-70-7--------}}
→ false。不过看起来也不是什么大问题。 --砜中嘌呤的白磷萃取 打谱 2017年12月23日 (六) 03:39 (UTC)
没什么问题。只不过输入字符串前后加任意个“-”函数看不出来,例如
- (:)回应@Temp3600:我只是觉得感觉现在好像“我讲的一切都是错的”,然后“白磷讲的一切都一定是对的”,让我觉得很难过。拜托不要这样好吗,我希望我们还能和平交流-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 20:41 (UTC)
- 我不会coding,所以我只能等WhitePhosphorus来判断。--Temp3600(留言) 2017年12月21日 (四) 19:40 (UTC)
- (:)回应@Temp3600:比方说氯酸钙在这个版本Special:固定链接/44678491,我的程式就有算出其检查码应为0 (手算 4×1 + 7×2 + 7×3 + 1×4 + 0×5 + 0×6 + 1×7 = 50, 50 ≡ 0 mod 10),可是条目中却写三,我的程式有顺利抓出此错误,并加入Category:CAS不正确标志的条目;三苯基膦氯化亚金的版本Special:固定链接/41034670中,也有检查出含非法字元,我的程式有顺利抓处此错误,并加入Category:CAS不正确标志的条目。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 15:37 (UTC)
- (:)回应@Temp3600:不认为我的算法有什么问题,完全按照CAS号#格式来Implement。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 15:22 (UTC)
@a2569875:檢查CAS(娜娜奇娜娜奇娜-娜奇-1)
的结果应该为“假”--林勇智 2017年12月21日 (四) 15:20 (UTC)
- (:)回应@D2513850:
{{#invoke:Chemicals|check_CAS_test|1=娜娜奇娜娜奇娜-娜奇-1}}
→ false。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 15:23 (UTC)
- (:)回应@D2513850:结果为假。不认为这里会出什么错。实际上也没有出错。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月21日 (四) 15:49 (UTC)
- 目前看来代码大致没问题,CAS号的规则应该不会有特例(这句需要专业的解惑),另外@D2513850:维基数据里面的CAS有机器人添加吗?如果是人手添加我会有担心手误的时候,如果有机器人依数据库添加那较可放心,另@A2569875:如果条目没有输入CAS码,而维基数据有可以在条目添加维基数据存在而条目内没有提供CAS码,在依人手或机器人添加(这两个任务是区分的)。--米莉娅诺朵卡 2017年12月22日 (五) 15:14 (UTC)
- (*)提醒:模块3500+引用,请不要改来改去。--Xiplus←A2093064 2017年12月22日 (五) 15:28 (UTC)
- (:)回应:@Xiplus:,所以我才需要不停地跟@D2513850、Temp3600:再三强调我的Code是对的,避免需要修改。现在我仍坚持我的Code是100%正确无误。因为是100%正确无误,因此不存在改来改去的必要,可见@D2513850:的质疑是没有必要的。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月22日 (五) 15:31 (UTC)
- 翻查历史有许多琐碎编辑,这都不应该在高引用量模板内发生。请另建沙盒,待所有语法都测试无误后再一并加入正式模块。--Xiplus←A2093064 2017年12月23日 (六) 02:37 (UTC)
- (:)回应:@Xiplus:那是在加入Template:Chembox CASNo之前发生的。在加入Template:Chembox CASNo之前没那么多引用---- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月23日 (六) 04:35 (UTC)
- 好的我了解了。--Xiplus←A2093064 2017年12月23日 (六) 04:46 (UTC)
- @蘭斯特:是d:User:KrBot:d:Special:diff/102385002--林勇智 2017年12月22日 (五) 17:03 (UTC)
- @A2569875:话说回来,d:Property talk:P231的里面根本没放{{Complex constraint}},其SPARQL的程式码内容应该像d:Property talk:P212一样可以检查CAS的校验码,有谁会SPARQL这个编程语言--林勇智 2017年12月22日 (五) 18:02 (UTC)
- (:)回应:@D2513850:中文维基不需要,而且中文维基模块都说要用Lua写了,我照规矩用都Lua写好了,也让3500+个页面完好运作了,都有一个可以有效运作的程式了,您为何就偏偏不满意,一直要求修改?,(※)注意Xiplus←A2093064君说的话,还有WP:没坏就不要修。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月22日 (五) 18:12 (UTC)
- (:)回应:@A2569875:希望能够在维基数据里面运作--林勇智 2017年12月22日 (五) 18:17 (UTC)
- (:)回应:那应该要讲清楚,从稍早发生争执都是因为我一直以为你们是在讨论中文维基的CAS号重定向通过案之后续处里。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月22日 (五) 18:20 (UTC)
- chembox中关于CAS号的参数有“CASNo”、“CASNo1”、“CASNo2”等,这些情况会出现在一个化合物存在无水物和水合物,或手性等构型的情况,例如硫酸铜,现CuSO4、CuSO4·5H2O的CAS号都重定向至CuSO4。--Leiem(留言) 2017年12月23日 (六) 05:03 (UTC)
- (?)求助 :@Leiem:分类Category:含有未校对CAS号的条目已建构,请求Leiem使用您的SciFinder账户协助校对,感激不尽。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月24日 (日) 18:14 (UTC)
- (~)补充:@Leiem:校对完成后,只需要把{{Cascite}}的第二参数从
??
或?
改成CAS
即可使其移除Category:含有未校对CAS号的条目分类,完成校对清理作业。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月24日 (日) 18:17 (UTC)
- 进度报告,由于先前的校对方式虽然说是先检查英文维基有无校对,但实际上,为了写程式方便,所以若发现“英文区校对过了”,我的做法是用正规运算式将整个英文区模板拷贝过来,覆盖中文区对应模板,但由于会造成中文区遗失内容,因此遭到IRC上多位用户反对。
- 新的做法是,
- 对所有的中文区校对状况不明的条目
- 解析 英文区 和中文区的维基代码
- 精确地定出 英文区 和 中文区 的CAS号位置
- 若发现“英文区校对过了”,中文区就在对应的CAS号位置标记已校对
- 若发现“英文区没有校对过”或“英文区条目不存在”,中文区就在对应的CAS号位置标记需要校对
- 实作进度:
- 已完成Lexical Analysis, 和 LR(1) Parsing Table,实测硫酸铜页面没有 Syntax Error
- 制作中部分:
- 展出 Parsing Tree[数据结构建置中] (做完Syntax Analysis), 从Tree中找出 ,并建出CAS List[部分完成]。
- 以上。-- 宇帆(明年二月加入维基将满十周年!留言·欢迎签到·联络) 2017年12月28日 (四) 19:12 (UTC)
- 完成,已使用WP:FLOOD从4,058个页面中,共抓出2,039个需要校对CAS号的条目,但有173个页面需要手动确认;且自动根据校对状况建立CAS号重定向机器人User:A2569875-bot已启动。-- 宇帆(今年二月加入维基将满十周年!留言·欢迎签到·联络) 2018年1月4日 (四) 02:24 (UTC)
- 报告:根据机器人User:A2569875-bot的运作纪录,截至2018年1月14日 (日) 07:25 (UTC),已建立2,081个CAS号重定向,但分类:含有未校对CAS号的条目尚有2,033个条目尚未校对CAS号。未来机器人会根据校对状况建立CAS号重定向。-- 宇帆(今年二月加入维基将满十周年!留言·欢迎签到·联络) 2018年1月14日 (日) 07:25 (UTC)