| 393 | |
| 394 | @dataclass |
| 395 | class UserCitationState: |
| 396 | profile_text: str |
| 397 | profile_vector: Dict[str, float] = field(default_factory=dict) |
| 398 | selected_sum: Dict[str, float] = field(default_factory=dict) |
| 399 | selected_texts: List[str] = field(default_factory=list) |
| 400 | selected_identities: set[str] = field(default_factory=set) |
| 401 | selected_reference_sets: List[set[str]] = field(default_factory=list) |
| 402 | selected_count: int = 0 |
| 403 | |
| 404 | def selected_centroid(self) -> Dict[str, float]: |
| 405 | return normalize_vector(self.selected_sum) |
| 406 | |
| 407 | def feedback_texts(self) -> List[str]: |
| 408 | return list(self.selected_texts) |
| 409 | |
| 410 | def prepare_vectors(self, idf: Dict[str, float]) -> None: |
| 411 | self.profile_vector = vectorize_text(self.profile_text, idf) |
| 412 | self.selected_sum = {} |
| 413 | for text in self.selected_texts: |
| 414 | add_weighted_vector(self.selected_sum, vectorize_text(text, idf), 1.0) |
| 415 | |
| 416 | def update_selected(self, row: Dict[str, Any]) -> None: |
| 417 | self.selected_texts.append(paper_text(row)) |
| 418 | self.selected_identities.update(identity_aliases(row)) |
| 419 | self.selected_reference_sets.append(extract_id_set(row, REFERENCE_FIELDS)) |
| 420 | self.selected_count += 1 |
| 421 | |
| 422 | |
| 423 | def content_score(row_vector: Dict[str, float], state: UserCitationState) -> float: |
no outgoing calls
no test coverage detected