Extraer palabras de un texto ó párrafo

--El siguiente procedimiento permite extraer las palabras desde un texto largo ó un párrafo utilizando como fin de cada palabra el carácter de espacio en blanco, puede guardar estas palabras en una tabla para realizar diferentes aplicaciones.
--Puede reescribir el procedimiento como una función para realizar diferentes implementaciones según la necesidad. 

Utilidad:

--Muchos casos requieren analizar automáticamente las palabras que se encuentran en un texto largo, por ejemplo el texto digitado por un agente de call-center que ingresa quejas ó reclamaciones sobre un artículo, con un registro de palabras claves se puede analizar el producto con más problemas, la queja más repetida, las respuestas dadas etc.

Notas:

--Se utiliza un cursor para cargar todas las líneas de un campo memo tipo CLOB que almacena texto de gran tamaño.
-- REGEXP_SUBSTR: Función Oracle para extraer de una cadena una subcadena de caracteres que coincidan con un patrón especificado en una expresión regular Oracle en este caso extrae únicamente palabras con caracteres alfabéticos: [a-z]* 


create or replace procedure pr_docword(p_document_id in number)
as
  cursor c_documento
  is
    select text
    from docdet
    where document_id=p_document_id;
  v_cantidad number;
  v_palabra  varchar2(80);
  v_inicio   number:=1;
  v_final    number:=1;
begin
  --limpiar tabla
  delete from doctemp;
  for doc in c_documento
  loop
    v_cantidad:=length(doc.text)-length(replace(doc.text,' '));
    for x in 1..v_cantidad
    loop
      v_final:=instr(doc.text,' ',1,x);
      v_palabra:=substr(doc.text,v_inicio,(v_final-v_inicio));
      v_inicio:=v_final+1;
      insert into doctemp values (v_palabra);
    end loop;
    --insertar la ultima palabra
    v_palabra:=substr(doc.text,v_inicio,(length(doc.text)-v_inicio)+1);
      insert into doctemp values (v_palabra);
  end loop;
  --limpiar caracteres no alfabéticos
  update doctemp
  set word=initcap(REGEXP_SUBSTR(word,'[a-z]*'));
  delete from doctemp where word is null;
  commit;
end pr_docword;



Comentarios

Entradas populares de este blog

Buenas Practicas Diseño/Modelado Base de Datos

Instalación y Configuración de APEX 5.0.4 - Completo -

Visitas.