Spaces:
Sleeping
Sleeping
refactor: remover validações e filtros redundantes na extração de referências
Browse files
app.py
CHANGED
|
@@ -170,14 +170,7 @@ def extract_references_with_regex(text):
|
|
| 170 |
journal = groups[3].strip()
|
| 171 |
volume = ""
|
| 172 |
|
| 173 |
-
# Validações adicionais
|
| 174 |
-
# Verificar se tem pelo menos um autor válido
|
| 175 |
-
if not re.search(r'[A-Z][a-z]+', authors):
|
| 176 |
-
continue
|
| 177 |
|
| 178 |
-
# Verificar se o título não é muito curto
|
| 179 |
-
if len(title) < 10:
|
| 180 |
-
continue
|
| 181 |
|
| 182 |
# Verificar se não é uma linha de cabeçalho ou rodapé
|
| 183 |
if re.search(r'(page|vol|volume|number|issue)\s*\d+', journal, re.IGNORECASE):
|
|
@@ -214,22 +207,7 @@ def extract_references_with_regex(text):
|
|
| 214 |
|
| 215 |
references.append(reference)
|
| 216 |
|
| 217 |
-
|
| 218 |
-
seen_refs = set()
|
| 219 |
-
unique_references = []
|
| 220 |
-
|
| 221 |
-
for ref in references:
|
| 222 |
-
# Criar chave única baseada em título e ano
|
| 223 |
-
key = (ref["title"].lower().strip()[:50], ref["year"])
|
| 224 |
-
|
| 225 |
-
if key not in seen_refs:
|
| 226 |
-
seen_refs.add(key)
|
| 227 |
-
unique_references.append(ref)
|
| 228 |
-
|
| 229 |
-
# Ordenar por ano (mais recente primeiro)
|
| 230 |
-
unique_references.sort(key=lambda x: x.get("year", "0"), reverse=True)
|
| 231 |
-
|
| 232 |
-
return unique_references[:100] # Limitar a 100 referências
|
| 233 |
|
| 234 |
except Exception as e:
|
| 235 |
return [{"error": f"Erro na extração por regex: {str(e)}"}]
|
|
@@ -243,7 +221,7 @@ def create_highlighted_text(text, regex_references):
|
|
| 243 |
|
| 244 |
# Padrões para destacar (mesmos da extração)
|
| 245 |
patterns = [
|
| 246 |
-
r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]*?et\s+al
|
| 247 |
r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
|
| 248 |
r'^\[\d+\]\s*([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
|
| 249 |
r'^([A-Z][A-Za-z\s,&.-]+?)\s+\((\d{4}[a-z]?)\)[.,]\s*([^.]+?)[.,]\s*([^.]+?)\.?\s*$',
|
|
|
|
| 170 |
journal = groups[3].strip()
|
| 171 |
volume = ""
|
| 172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
|
|
|
|
|
|
|
|
|
|
| 174 |
|
| 175 |
# Verificar se não é uma linha de cabeçalho ou rodapé
|
| 176 |
if re.search(r'(page|vol|volume|number|issue)\s*\d+', journal, re.IGNORECASE):
|
|
|
|
| 207 |
|
| 208 |
references.append(reference)
|
| 209 |
|
| 210 |
+
return references
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 211 |
|
| 212 |
except Exception as e:
|
| 213 |
return [{"error": f"Erro na extração por regex: {str(e)}"}]
|
|
|
|
| 221 |
|
| 222 |
# Padrões para destacar (mesmos da extração)
|
| 223 |
patterns = [
|
| 224 |
+
r'^\d+\.\s*([A-Z][A-Za-z\s,&.-]*?(et\s+al\.)*?|[A-Z][A-Za-z\s,&.-:\d\?]+?\(\);)\.\s*([^.]+?)\.\s*([^.]+?)\s+(\d+),?\s*[\d–-]+\s*\((\d{4})\)\.\s*$',
|
| 225 |
r'^([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
|
| 226 |
r'^\[\d+\]\s*([A-Z][A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
|
| 227 |
r'^([A-Z][A-Za-z\s,&.-]+?)\s+\((\d{4}[a-z]?)\)[.,]\s*([^.]+?)[.,]\s*([^.]+?)\.?\s*$',
|