Finalización y explicación de la regex

Implementa la división de oraciones basada en regex para la finalización de funciones.

Puedes consultar un modelo directamente y probar los resultados que se muestran cuando usas valores de parámetros diferentes con la consola de Cloud o con una llamada directa a la API de Vertex AI.

Instrucciones del sistema

Incluye un resumen de lo que hace el código y qué correcciones realizaste al final de tu respuesta. Cada explicación no debe tener más de dos oraciones.

Mensaje Formato libre

Me pidieron que terminara de trabajar en esta función que divide oraciones en una lista. Lamentablemente, se me indicó específicamente que usara regex para esto, con requisitos adicionales que se explican en la docstring de la función. La regex es un dolor de cabeza en el mejor de los casos. ¿Podrías completar este código por mí? Todo lo que necesitas debe estar dentro del fragmento.

import re

def splitSentences(sentences):
  """
  Splits a string of sentences into a list.
  Each sentence is period-separated, save for cases where
  the phrases "Mr." or "Ms." are used, since those
  don't end a sentence.
  """
  sentenceList = []

  # missing code here

  return sentenceList

Respuesta

import re

def splitSentences(sentences):
  """
  Splits a string of sentences into a list.
  Each sentence is period-separated, save for cases where
  the phrases "Mr." or "Ms." are used, since those
  don't end a sentence.
  """
  sentenceList = []
  sentenceEnders = r'(?<!Mr)\.(?<![A-Z][a-z]\.)(?<![A-Z][a-z][a-z]\.)(?<=\.|\?)\s'
  sentenceList = re.split(sentenceEnders, sentences)
  return sentenceList

Resumen: El código divide una cadena en una lista de oraciones con regex. Se corrigió la regex para identificar con precisión los finales de las oraciones y, al mismo tiempo, excluir abreviaturas como "Sr." y "Sra.".

Modelo: gemini-1.5-flash-002
Temperatura: 0.2
Cantidad máxima de tokens de salida: 8192
TopK: 40.0
TopP: 0.95