模組討論:Chemicals
外觀
本模塊依照頁面評級標準無需評級。 本模組屬於下列維基專題範疇: |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
建立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)