fix: tighten french cv heuristics
Reject au sein prose continuations and recognize dotted MSc/BSc degree variants in education parsing.
This commit is contained in:
parent
a4c1ff3c0b
commit
77d2f0f5c6
@ -223,7 +223,7 @@ def _parse_education_entry(line: str) -> dict[str, str] | None:
|
||||
|
||||
|
||||
def _looks_like_education_credential(text: str) -> bool:
|
||||
lowered = text.lower()
|
||||
lowered = text.lower().replace(".", "")
|
||||
return any(
|
||||
re.search(rf"\b{re.escape(keyword)}\b", lowered)
|
||||
for keyword in EDUCATION_TITLE_KEYWORDS
|
||||
@ -236,6 +236,9 @@ def _looks_like_institution(text: str) -> bool:
|
||||
|
||||
|
||||
def _parse_experience_entry(line: str) -> dict[str, str] | None:
|
||||
if " au sein " in line.lower():
|
||||
return None
|
||||
|
||||
for connector in EXPERIENCE_LINE_CONNECTORS:
|
||||
if line.count(connector) != 1:
|
||||
continue
|
||||
|
||||
@ -125,6 +125,20 @@ def test_extract_cv_signals_parses_french_experience_connectors() -> None:
|
||||
]
|
||||
|
||||
|
||||
def test_extract_cv_signals_ignores_french_prose_continuations() -> None:
|
||||
text = dedent(
|
||||
"""
|
||||
Tonio
|
||||
Location: France
|
||||
Ingénieur au sein de BNP Paribas
|
||||
"""
|
||||
).strip()
|
||||
|
||||
extracted = extract_cv_signals(text)
|
||||
|
||||
assert extracted["experience_entries"] == []
|
||||
|
||||
|
||||
def test_extract_cv_signals_ignores_in_paris_prose_tail() -> None:
|
||||
text = dedent(
|
||||
"""
|
||||
@ -189,6 +203,28 @@ def test_extract_cv_signals_extracts_common_french_education_entries() -> None:
|
||||
]
|
||||
|
||||
|
||||
def test_extract_cv_signals_extracts_dotted_degree_variants() -> None:
|
||||
text = dedent(
|
||||
"""
|
||||
Tonio
|
||||
Location: France
|
||||
Education:
|
||||
M.Sc. in Data Engineering at EPITA
|
||||
B.Sc. in Computer Science at University X
|
||||
"""
|
||||
).strip()
|
||||
|
||||
extracted = extract_cv_signals(text)
|
||||
|
||||
assert extracted["education_entries"] == [
|
||||
{"credential": "M.Sc. in Data Engineering", "institution": "EPITA"},
|
||||
{
|
||||
"credential": "B.Sc. in Computer Science",
|
||||
"institution": "University X",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def test_extract_cv_signals_ignores_before_moving_prose_tail() -> None:
|
||||
text = dedent(
|
||||
"""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user