From d1911fce8b9aa4006659d55740c22d3e8a40dbb5 Mon Sep 17 00:00:00 2001 From: J08nY Date: Wed, 7 Feb 2024 10:09:54 +0100 Subject: Fix cert_id canonicalization. --- src/sec_certs/rules.yaml | 4 ++-- src/sec_certs/sample/cc.py | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/sec_certs/rules.yaml b/src/sec_certs/rules.yaml index 4305b8cd..250c45b9 100644 --- a/src/sec_certs/rules.yaml +++ b/src/sec_certs/rules.yaml @@ -70,7 +70,7 @@ cc_cert_id: # KECS-CISS-1210-2023 JP: - "(?:CRP|ACR)-C(?P[0-9]+)-(?P[0-9]+)" - - "JISEC-CC-CRP-C(?P[0-9]+)-(?P[0-9]+)-(?P[0-9]{4})" + - "JISEC-CC-CRP-C(?P[0-9]+)(?:-(?P[0-9]{2}))?(?:-(?P[0-9]{4}))?" - "Certification No. [cC](?P[0-9]+)" # Examples: # CRP-C0595-01 @@ -144,7 +144,7 @@ cc_filename_cert_id: ES: - "(?P[0-9]{4})[-‐](?P[0-9]+)[-‐]INF[-‐](?P[0-9]+)[ -‐_]{1,2}[vV](?P[0-9])" KR: - - "(?PISIS|NISS|CISS)[-‐](?P[0-9]{2,4})(?:[-‐](?P[0-9]{4}))?" + - "(?PISIS|NISS|CISS)[-‐](?P[0-9]{2,4})[-‐](?P[0-9]{4})" JP: - "[cC](?P[0-9]+)" MY: diff --git a/src/sec_certs/sample/cc.py b/src/sec_certs/sample/cc.py index ef1ff984..904c794d 100644 --- a/src/sec_certs/sample/cc.py +++ b/src/sec_certs/sample/cc.py @@ -417,14 +417,28 @@ class CCCertificate( candidates: dict[str, float] = defaultdict(lambda: 0.0) # TODO: Add heuristic based on ordering of ids (and extracted year + increment) # TODO: Add heuristic based on length + # TODO: Add heuristic based on id "richness", we want to prefer IDs that have more components. + # If we cannot canonicalize, just skip that ID. for candidate, count in frontpage_id.items(): - candidates[canonicalize(candidate, scheme)] += count * 1.5 + try: + candidates[canonicalize(candidate, scheme)] += count * 1.5 + except Exception: + continue for candidate, count in metadata_id.items(): - candidates[canonicalize(candidate, scheme)] += count * 1.2 + try: + candidates[canonicalize(candidate, scheme)] += count * 1.2 + except Exception: + continue for candidate, count in keywords_id.items(): - candidates[canonicalize(candidate, scheme)] += count * 1.0 + try: + candidates[canonicalize(candidate, scheme)] += count * 1.0 + except Exception: + continue for candidate, count in filename_id.items(): - candidates[canonicalize(candidate, scheme)] += count * 1.0 + try: + candidates[canonicalize(candidate, scheme)] += count * 1.0 + except Exception: + continue return candidates @dataclass -- cgit v1.3.1