n-грамм из текста в PostgreSQL - PullRequest
4 голосов
/ 15 июня 2010

Я хочу создать n-грамм из текстового столбца в PostgreSQL. В настоящее время я разделяю (на пробел) данные (предложения) в текстовом столбце в массив.

enter code here выберите regexp_split_to_array (круглые данные, E '\ s +') из tableName

Как только я получу этот массив, как мне поступить:

  • Создание цикла для поиска n-граммов и записи каждого в строку в другой таблице

Используя unnest, я могу получить все элементы всех массивов в отдельных строках, и, возможно, тогда я смогу придумать, как получить n-грамм из одного столбца, но я бы потерял границы предложений, которые мне бы хотелось сохранение.

Пример кода SQL для PostgreSQL для эмуляции вышеуказанного сценария

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;

1 Ответ

3 голосов
/ 15 июня 2010

Check pg_trgm : "Модуль pg_trgm предоставляет функции и операторы для определения сходства текста на основе сопоставления триграмм, а также классы операторов индексов, которые поддерживают быстрый поиск похожих строк."

...