km1lo commited on
Commit
69a3eef
verified
1 Parent(s): c5c4068

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -8
app.py CHANGED
@@ -40,24 +40,69 @@ model = AutoModelForCausalLM.from_pretrained(
40
 
41
  # === Frases prototipo para verificador sem谩ntico ===
42
  frases_fisica = [
43
- "Me golpe贸 con el pu帽o cerrado", "Me pate贸", "Me lanz贸 contra la pared",
44
- "Me estrangul贸", "Me fractur贸 una costilla", "Me tir贸 al piso violentamente"
 
 
 
 
45
  ]
 
46
  frases_sexual = [
47
- "Me oblig贸 a tener relaciones sexuales", "Me toc贸 sin consentimiento",
48
- "Me viol贸", "Me forz贸 a tener sexo", "Me agredi贸 sexualmente"
 
 
 
 
 
 
 
 
 
 
 
49
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  embeds_fisica = modelo_vector.encode(frases_fisica)
51
  embeds_sexual = modelo_vector.encode(frases_sexual)
 
 
 
52
 
53
- # === Verificador sem谩ntico ===
54
  def verificar_semantico(descripcion):
55
  emb_desc = modelo_vector.encode(descripcion)
56
  tipos_detectados = []
57
- if max(util.cos_sim(emb_desc, embeds_fisica)[0]) > 0.7:
 
58
  tipos_detectados.append("f铆sica")
59
  if max(util.cos_sim(emb_desc, embeds_sexual)[0]) > 0.9:
60
  tipos_detectados.append("sexual")
 
 
 
 
 
 
 
61
  return tipos_detectados
62
 
63
  # === FUNCI脫N PRINCIPAL ===
@@ -115,9 +160,24 @@ def predecir_con_recomendacion(edad, genero, hijos, convivencia_agresor, consumo
115
  "- Justificaci贸n breve de cada medida, indicando los literales aplicables del Art铆culo 5 de la Ley 575 de 2000 (identificados por letra).\n\n"
116
  "RESUELVE:\n"
117
  "PRIMERO: Admitir la solicitud.\n"
118
- "SEGUNDO, TERCERO, CUARTO, QUINTO, etc.: Ordenar cada medida en un p谩rrafo separado, numerando de forma secuencial.\n"
119
  "脷LTIMO: C煤mplase y notif铆quese.\n\n"
120
- "No incluyas ejemplos en tu respuesta.\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  "No menciones violencia econ贸mica ni sexual salvo que se describa expresamente en los hechos.\n"
122
  "Redacta cada justificaci贸n en una sola frase 煤nica, sin repetir fundamentos.\n"
123
  "Limita todo el texto a un m谩ximo de 300 palabras.\n"
@@ -125,6 +185,7 @@ def predecir_con_recomendacion(edad, genero, hijos, convivencia_agresor, consumo
125
  )
126
  }
127
  ]
 
128
 
129
  # Aplicar chat template
130
  encoded = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
 
40
 
41
  # === Frases prototipo para verificador sem谩ntico ===
42
  frases_fisica = [
43
+ "Me golpe贸 con el pu帽o cerrado",
44
+ "Me pate贸",
45
+ "Me lanz贸 contra la pared",
46
+ "Me estrangul贸",
47
+ "Me fractur贸 una costilla",
48
+ "Me tir贸 al piso violentamente"
49
  ]
50
+
51
  frases_sexual = [
52
+ "Me oblig贸 a tener relaciones sexuales",
53
+ "Me toc贸 sin consentimiento",
54
+ "Me viol贸",
55
+ "Me forz贸 a tener sexo",
56
+ "Me agredi贸 sexualmente"
57
+ ]
58
+
59
+ frases_economica = [
60
+ "No me da dinero",
61
+ "Me quita mi salario",
62
+ "Me retiene los recursos econ贸micos",
63
+ "No me deja trabajar",
64
+ "Me obliga a depender econ贸micamente"
65
  ]
66
+
67
+ frases_psicologica = [
68
+ "Me insulta todo el tiempo",
69
+ "Me amenaza constantemente",
70
+ "Me humilla frente a los ni帽os",
71
+ "Me hace sentir in煤til",
72
+ "Me controla emocionalmente"
73
+ ]
74
+
75
+ frases_negligencia = [
76
+ "No me brinda atenci贸n m茅dica",
77
+ "No cuida a los hijos",
78
+ "Me deja sin alimentos",
79
+ "No se preocupa por mi salud",
80
+ "Ignora mis necesidades b谩sicas"
81
+ ]
82
+
83
+ # === Embeddings de referencia ===
84
  embeds_fisica = modelo_vector.encode(frases_fisica)
85
  embeds_sexual = modelo_vector.encode(frases_sexual)
86
+ embeds_economica = modelo_vector.encode(frases_economica)
87
+ embeds_psicologica = modelo_vector.encode(frases_psicologica)
88
+ embeds_negligencia = modelo_vector.encode(frases_negligencia)
89
 
90
+ # === Verificador sem谩ntico completo ===
91
  def verificar_semantico(descripcion):
92
  emb_desc = modelo_vector.encode(descripcion)
93
  tipos_detectados = []
94
+
95
+ if max(util.cos_sim(emb_desc, embeds_fisica)[0]) > 0.8:
96
  tipos_detectados.append("f铆sica")
97
  if max(util.cos_sim(emb_desc, embeds_sexual)[0]) > 0.9:
98
  tipos_detectados.append("sexual")
99
+ if max(util.cos_sim(emb_desc, embeds_economica)[0]) > 0.85:
100
+ tipos_detectados.append("econ贸mica")
101
+ if max(util.cos_sim(emb_desc, embeds_psicologica)[0]) > 0.85:
102
+ tipos_detectados.append("psicol贸gica")
103
+ if max(util.cos_sim(emb_desc, embeds_negligencia)[0]) > 0.85:
104
+ tipos_detectados.append("negligencia")
105
+
106
  return tipos_detectados
107
 
108
  # === FUNCI脫N PRINCIPAL ===
 
160
  "- Justificaci贸n breve de cada medida, indicando los literales aplicables del Art铆culo 5 de la Ley 575 de 2000 (identificados por letra).\n\n"
161
  "RESUELVE:\n"
162
  "PRIMERO: Admitir la solicitud.\n"
163
+ "II, III, IV, V, etc.: Ordenar cada medida en un p谩rrafo separado, numerando en n煤meros romanos.\n"
164
  "脷LTIMO: C煤mplase y notif铆quese.\n\n"
165
+ "Utiliza 煤nicamente las siguientes expresiones para nombrar las medidas si corresponden al caso:\n"
166
+ "- Prohibici贸n de acercamiento.\n"
167
+ "- Prohibici贸n de contacto.\n"
168
+ "- Protecci贸n de la residencia.\n"
169
+ "- Acompa帽amiento policial.\n"
170
+ "- Prohibici贸n de consumo de alcohol.\n"
171
+ "No uses t茅rminos como 'nominar' o 'nombrar medidas'.\n\n"
172
+ "Ejemplo de redacci贸n de medidas (no lo copies literalmente, solo 煤salo como gu铆a de estilo):\n"
173
+ "II: Ordenar la prohibici贸n al agresor de acercarse a la v铆ctima en un radio de 200 metros.\n"
174
+ "III: Ordenar la prohibici贸n de todo contacto con la v铆ctima por cualquier medio.\n"
175
+ "IV: Ordenar la protecci贸n de la residencia mediante acompa帽amiento policial.\n"
176
+ "V: Ordenar la prohibici贸n de consumo de bebidas alcoh贸licas.\n\n"
177
+ "Ejemplo de justificaci贸n (solo como gu铆a):\n"
178
+ "a) Prohibici贸n de acercamiento: conforme al literal b) del Art铆culo 5 de la Ley 575 de 2000.\n"
179
+ "b) Prohibici贸n de contacto: conforme al literal c) del Art铆culo 5.\n\n"
180
+ "No incluyas estos ejemplos en la respuesta final.\n"
181
  "No menciones violencia econ贸mica ni sexual salvo que se describa expresamente en los hechos.\n"
182
  "Redacta cada justificaci贸n en una sola frase 煤nica, sin repetir fundamentos.\n"
183
  "Limita todo el texto a un m谩ximo de 300 palabras.\n"
 
185
  )
186
  }
187
  ]
188
+ ]
189
 
190
  # Aplicar chat template
191
  encoded = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)