1

У меня есть 20 000 текстовых файлов, загружаемых в базу данных PostgreSQL, один файл в одной строке, все хранятся в таблице с именем docs с колонками doc_id и doc_content.Кластерные текстовые документы в базе данных

Я знаю, что существует приблизительно 8 типов документов. Вот мои вопросы:

  • Как найти эти группы?
  • Есть ли какое-то сходство, меры несходства, которые я могу использовать?
  • Есть ли какая-либо реализация самой длинной общей подстроки в PostgreSQL?
  • Существуют ли расширения для текстовой обработки в PostgreSQL? (Я нашел только Tsearch, но это, кажется, последнее обновление в 2007 году)

я, вероятно, может использовать некоторые like '%%' или SIMILAR TO, но может быть более эффективным подходом.

ответ

1

Вы должны использовать full text search, который является частью ядра PostgreSQL 9.x (aka Tsearch2).

Для какой-либо меры наибольшей общей подстроки (или сходства, если хотите), вы можете использовать функцию levenshtein() - часть расширения fuzzystrmatch.

0
  1. Вы можете использовать технику кластеризации, такую ​​как K-Means или иерархическое кластеризация.

  2. Да, вы можете использовать сходство косинусов между документами, глядя на счет двоичного термина, подсчет термина, временные частоты или частоты TF-IDF.

  3. Я не знаю об этом.

  4. Не уверен, но вы можете использовать R или RapidMiner для выполнения интеллектуального анализа данных в базе данных.