Extract meaningful keywords from a Chinese title.
(title: str)
| 495 | |
| 496 | |
| 497 | def _title_keywords(title: str) -> set[str]: |
| 498 | """Extract meaningful keywords from a Chinese title.""" |
| 499 | title_core = re.sub(r'[(())\[\]【】()//]', '', title) |
| 500 | title_core = re.sub(r'\d{4}年.*?修订版', '', title_core) |
| 501 | title_core = re.sub(r'第\d+号', '', title_core) |
| 502 | generic_terms = { |
| 503 | '指导原则', '注册', '审查', '技术', '医疗器械', '体外诊断', |
| 504 | '试剂', '产品', '临床', '研究', '评价', '评估', '注册审查', |
| 505 | '技术审查', '注册技术审查', |
| 506 | } |
| 507 | keywords = set() |
| 508 | for seg in re.split(r'[、,,\s]+', title_core): |
| 509 | seg = seg.strip() |
| 510 | if not seg: |
| 511 | continue |
| 512 | if seg in generic_terms: |
| 513 | continue |
| 514 | if len(seg) >= 2: |
| 515 | keywords.add(seg) |
| 516 | if len(seg) > 6: |
| 517 | for sub_term in generic_terms: |
| 518 | if sub_term in seg: |
| 519 | parts = seg.split(sub_term) |
| 520 | for p in parts: |
| 521 | p = p.strip() |
| 522 | if len(p) >= 2 and p not in generic_terms: |
| 523 | keywords.add(p) |
| 524 | return keywords |
| 525 | |
| 526 | |
| 527 | def _normalize_title(title: str) -> str: |
no outgoing calls
no test coverage detected