Pregunta

Busco para crear n-gramas de la columna de texto en PostgreSQL. Actualmente división (en espacio en blanco) de datos (frases) en una columna de texto a una matriz.

enter code hereselect regexp_split_to_array (sentenceData, E '\ s +') de nombreTabla

Una vez que tengo esta matriz, ¿cómo hago para:

  • Creación de un bucle de encontrar n-gramas, y escribir cada uno a una fila de otra tabla

El uso de UNNEST puedo obtener todos los elementos de todas las matrices en filas separadas, y tal vez entonces puedo pensar en una manera de obtener los n-gramas de una sola columna, pero me gustaría perder los límites de la frase que he prudente preservar.

código SQL de ejemplo para PostgreSQL para emular el escenario anterior

create table tableName(sentenceData  text);

INSERT INTO tableName(sentenceData) VALUES('This is a long sentence');

INSERT INTO tableName(sentenceData) VALUES('I am currently doing grammar, hitting this monster book btw!');

INSERT INTO tableName(sentenceData) VALUES('Just tonnes of grammar, problem is I bought it in TAIWAN, and so there aint any englihs, just chinese and japanese');

select regexp_split_to_array(sentenceData,E'\\s+')   from tableName;

select unnest(regexp_split_to_array(sentenceData,E'\\s+')) from tableName;
¿Fue útil?

Solución

pg_trgm : "El módulo proporciona funciones y pg_trgm operadores para determinar la similitud de texto basado en la coincidencia trigrama, así como clases de operador índice que apoyan la búsqueda rápida para cadenas similares ".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top