Spaces:
Sleeping
Sleeping
| from typing import Dict, List, Any | |
| import logic | |
| def preprocess_text(text: str, lang: str) -> List[Dict[str, Any]]: | |
| """ | |
| Разбирает текст на предложения и токены. | |
| Сохраняет: | |
| - исходный текст токена (text) | |
| - пробел после токена (whitespace) | |
| - лемму (lemma) | |
| - флаг значимости (is_significant) | |
| """ | |
| if not text or not text.strip(): | |
| return [] | |
| doc = logic.get_doc(text, lang) | |
| result: List[Dict[str, Any]] = [] | |
| for idx, sent in enumerate(doc.sents): | |
| tokens: List[Dict[str, Any]] = [] | |
| lemmas_clean: List[str] = [] | |
| for t in sent: | |
| lemma = t.lemma_.lower().strip() if t.lemma_ else t.text.lower().strip() | |
| is_significant = bool(logic.is_valid_token(t)) | |
| token_data = { | |
| "text": t.text, | |
| "whitespace": t.whitespace_, | |
| "lemma": lemma, | |
| "is_significant": is_significant, | |
| "is_punct": bool(t.is_punct), | |
| "is_space": bool(t.is_space), | |
| } | |
| tokens.append(token_data) | |
| if is_significant and lemma: | |
| lemmas_clean.append(lemma) | |
| result.append( | |
| { | |
| "index": idx, | |
| "raw_text": sent.text, | |
| "tokens": tokens, | |
| "lemmas_clean": lemmas_clean, | |
| } | |
| ) | |
| return result | |