fccoelho commited on
Commit
0d322e4
·
1 Parent(s): 0e7ecc2

consertei saída dos LLMs

Browse files
Files changed (1) hide show
  1. app.py +29 -4
app.py CHANGED
@@ -37,7 +37,31 @@ REFERENCE_PATTERNS = [
37
  r'^([A-Z][A-Za-z\s,&.-]+?&[A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
38
 
39
  # Padrão 7: Referências numeradas [número] Autor: Título, Editora (ano)
40
- r'^\[\d+\]\s*([A-Z][A-Za-z\s,&.-]+?):\s*([^,]+?),\s*([^(]+?)\s*\((\d{4})\)'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  ]
42
 
43
  class Reference(BaseModel):
@@ -102,7 +126,7 @@ def extract_references_with_llm(text, model_name):
102
  model_settings=ModelSettings(
103
  timeout=30,
104
  ),
105
- result_type=ReferencesResponse,
106
  system_prompt="""
107
  Você é um especialista em análise de artigos científicos.
108
  Sua tarefa é identificar e extrair APENAS a seção de referências bibliográficas do texto fornecido.
@@ -131,7 +155,7 @@ def extract_references_with_llm(text, model_name):
131
 
132
  # Converter para lista de dicionários para compatibilidade com DataFrame
133
  references_list = []
134
- for ref in result.data.references:
135
  references_list.append({
136
  "authors": ", ".join(ref.authors) if ref.authors else "",
137
  "title": ref.title,
@@ -214,7 +238,8 @@ def extract_references_with_regex(text):
214
  }
215
 
216
  references.append(reference)
217
-
 
218
  return references
219
 
220
  except Exception as e:
 
37
  r'^([A-Z][A-Za-z\s,&.-]+?&[A-Za-z\s,&.-]+?)\.\s*\((\d{4}[a-z]?)\)\.\s*([^.]+?)\.\s*([^.]+?)\.?\s*$',
38
 
39
  # Padrão 7: Referências numeradas [número] Autor: Título, Editora (ano)
40
+ r'^\[\d+\]\s*([A-Z][A-Za-z\s,&.-]+?):\s*([^,]+?),\s*([^(]+?)\s*\((\d{4})\)',
41
+
42
+ # Padrão 8: Referências numeradas com DOI opcional
43
+ r"""
44
+ ^ # início de linha (após possível marcador de ordem)
45
+ (?:\d+\.\s*)? # número da referência (opcional), seguido de ponto e espaço
46
+ (?P<autores> # grupo 'autores'
47
+ [^\.]+? # tudo antes do primeiro ponto final (não guloso)
48
+ )\.\s+
49
+ (?P<titulo> # grupo 'titulo'
50
+ [^\n\.]+ # até o próximo ponto final ou quebra de linha
51
+ )\.
52
+ \s*
53
+ (?P<journal> # grupo 'journal'
54
+ [^\n;]+ # até o próximo ponto e vírgula (ou quebra de linha)
55
+ )
56
+ [;,]?\s*
57
+ (?P<ano> # grupo 'ano'
58
+ \d{4} # 4 dígitos (ano)
59
+ )
60
+ (?:;[^\n]*?)? # volume, issue, páginas (opcional, não capturado)
61
+ (?:\n+ # nova linha(s), captura DOI opcional
62
+ (?P<doi> https?://doi\.org/[^\s]+ )
63
+ )? # DOI pode estar na linha de baixo ou ausente
64
+ """
65
  ]
66
 
67
  class Reference(BaseModel):
 
126
  model_settings=ModelSettings(
127
  timeout=30,
128
  ),
129
+ output_type=ReferencesResponse,
130
  system_prompt="""
131
  Você é um especialista em análise de artigos científicos.
132
  Sua tarefa é identificar e extrair APENAS a seção de referências bibliográficas do texto fornecido.
 
155
 
156
  # Converter para lista de dicionários para compatibilidade com DataFrame
157
  references_list = []
158
+ for ref in result.output.references:
159
  references_list.append({
160
  "authors": ", ".join(ref.authors) if ref.authors else "",
161
  "title": ref.title,
 
238
  }
239
 
240
  references.append(reference)
241
+
242
+
243
  return references
244
 
245
  except Exception as e: