Job-Application-Assistant / utils /langextractor.py
Noo88ear's picture
πŸš€ Initial deployment of Multi-Agent Job Application Assistant
7498f2c
from __future__ import annotations
from typing import List
import re
from .text import extract_keywords_from_text
def _fallback_distill(text: str, max_sentences: int = 10) -> List[str]:
# Very simple sentence ranking by keyword hits
sentences = re.split(r"(?<=[.!?])\s+", text.strip())
if not sentences:
return []
joined = " ".join(sentences)
kws = set(extract_keywords_from_text(joined, top_k=50))
scored = []
for s in sentences:
score = sum(1 for k in kws if k.lower() in s.lower())
if len(s) > 20:
scored.append((score, s))
scored.sort(key=lambda x: x[0], reverse=True)
return [s for _, s in scored[:max_sentences]]
def distill_text(text: str, max_points: int = 10) -> List[str]:
if not text or not text.strip():
return []
try:
# Optional dependency
import langextract # type: ignore
# Basic usage: extract key sentences/phrases
# The API may differ; attempt a generic call, fallback otherwise
try:
result = langextract.extract(text) # type: ignore
if isinstance(result, list):
bullets = [str(x) for x in result][:max_points]
if bullets:
return bullets
except Exception:
pass
except Exception:
pass
# Fallback heuristic
return _fallback_distill(text, max_sentences=max_points)