nicolasmarques commited on
Commit
8bcd145
·
verified ·
1 Parent(s): 2d31838

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -14
app.py CHANGED
@@ -1,3 +1,4 @@
 
1
  import re
2
  from langdetect import detect, DetectorFactory
3
  from transformers import pipeline
@@ -6,19 +7,19 @@ import gradio as gr
6
  # Garante resultados determinísticos em detect()
7
  DetectorFactory.seed = 0
8
 
9
- # Carrega o modelo PT-Falcon pequeno (620M params) em CPU
10
  generator = pipeline(
11
  "text-generation",
12
- model="cachya/pt-falcon-small",
13
  device=-1
14
  )
15
 
16
- # Mapeia comandos e palavras-chave em pt/en/fr
17
  COMMANDS = {
18
- "resumo": ["resuma", "resumo", "resumir"],
19
- "reescrever": ["reescreva", "reformule", "reformular"],
20
- "expandir": ["expanda", "expansão", "expandir", "detalhe"],
21
- "corrigir": ["corrija", "corrigir", "melhore", "revise"]
22
  }
23
 
24
  HUMANIZE_PROMPT = {
@@ -34,7 +35,7 @@ def detect_language(text: str) -> str:
34
  except:
35
  return "pt"
36
 
37
- def find_command(text: str, lang: str) -> str:
38
  low = text.lower()
39
  for cmd, kws in COMMANDS.items():
40
  for kw in kws:
@@ -43,7 +44,6 @@ def find_command(text: str, lang: str) -> str:
43
  return "gerar"
44
 
45
  def clean_text(text: str) -> str:
46
- # remove múltiplos espaços e palavras-chave
47
  txt = re.sub(r"\s+", " ", text)
48
  for kws in COMMANDS.values():
49
  for kw in kws:
@@ -81,23 +81,19 @@ def build_prompt(core: str, cmd: str, lang: str) -> str:
81
 
82
  def gerar_resposta(texto: str) -> str:
83
  lang = detect_language(texto)
84
- cmd = find_command(texto, lang)
85
  core = clean_text(texto)
86
 
87
- # 1) Geração principal
88
  prompt1 = build_prompt(core, cmd, lang)
89
  out1 = generator(prompt1, max_new_tokens=200, temperature=0.7, top_p=0.9)[0]["generated_text"]
90
- # retira o próprio prompt
91
  res1 = out1.replace(prompt1, "").strip()
92
 
93
- # 2) Humanização final
94
  prompt2 = HUMANIZE_PROMPT[lang] + res1 + "\n\n"
95
  out2 = generator(prompt2, max_new_tokens=100, temperature=0.6, top_p=0.8)[0]["generated_text"]
96
  res2 = out2.replace(prompt2, "").strip()
97
 
98
  return res2
99
 
100
- # Interface Gradio
101
  demo = gr.Interface(
102
  fn=gerar_resposta,
103
  inputs=gr.Textbox(lines=6, placeholder="Digite seu texto com 'resuma', 'expanda', etc...", label="Entrada"),
 
1
+
2
  import re
3
  from langdetect import detect, DetectorFactory
4
  from transformers import pipeline
 
7
  # Garante resultados determinísticos em detect()
8
  DetectorFactory.seed = 0
9
 
10
+ # Carregando o modelo GPT2 pequeno em português (CPU)
11
  generator = pipeline(
12
  "text-generation",
13
+ model="pierreguillou/gpt2-small-portuguese",
14
  device=-1
15
  )
16
 
17
+ # Comandos e palavras-chave em pt/en/fr
18
  COMMANDS = {
19
+ "resumo": ["resuma", "resumo", "resumir", "summarize", "résumé", "résumer"],
20
+ "reescrever": ["reescreva", "reformule", "reformular", "rewrite", "réécrire"],
21
+ "expandir": ["expanda", "expansão", "expandir", "detalhe", "expand", "développez"],
22
+ "corrigir": ["corrija", "corrigir", "melhore", "revise", "correct", "corriger"]
23
  }
24
 
25
  HUMANIZE_PROMPT = {
 
35
  except:
36
  return "pt"
37
 
38
+ def find_command(text: str) -> str:
39
  low = text.lower()
40
  for cmd, kws in COMMANDS.items():
41
  for kw in kws:
 
44
  return "gerar"
45
 
46
  def clean_text(text: str) -> str:
 
47
  txt = re.sub(r"\s+", " ", text)
48
  for kws in COMMANDS.values():
49
  for kw in kws:
 
81
 
82
  def gerar_resposta(texto: str) -> str:
83
  lang = detect_language(texto)
84
+ cmd = find_command(texto)
85
  core = clean_text(texto)
86
 
 
87
  prompt1 = build_prompt(core, cmd, lang)
88
  out1 = generator(prompt1, max_new_tokens=200, temperature=0.7, top_p=0.9)[0]["generated_text"]
 
89
  res1 = out1.replace(prompt1, "").strip()
90
 
 
91
  prompt2 = HUMANIZE_PROMPT[lang] + res1 + "\n\n"
92
  out2 = generator(prompt2, max_new_tokens=100, temperature=0.6, top_p=0.8)[0]["generated_text"]
93
  res2 = out2.replace(prompt2, "").strip()
94
 
95
  return res2
96
 
 
97
  demo = gr.Interface(
98
  fn=gerar_resposta,
99
  inputs=gr.Textbox(lines=6, placeholder="Digite seu texto com 'resuma', 'expanda', etc...", label="Entrada"),