Анализ, категоризация и индексация метаданных - PullRequest
1 голос
/ 10 февраля 2009

У меня есть большая (~ 2.5M записей) база данных метаданных изображений. Каждая запись представляет изображение и имеет уникальный идентификатор, поле описания, разделенный запятыми список ключевых слов (скажем, 20-30 ключевых слов на изображение) и некоторые другие поля. Реальной схемы базы данных не существует, и у меня нет способа узнать, какие ключевые слова существуют в базе данных, без перебора каждого изображения и их подсчета. Кроме того, метаданные поступают от нескольких разных поставщиков, у каждого из которых есть свои идеи о том, как заполнять различные поля.

Есть некоторые вещи, которые я хотел бы сделать с этими метаданными, но, поскольку я совершенно новичок в такого рода алгоритмах, я даже не знаю, с чего начать.

  1. Некоторые из этих изображений имеют определенные ограничения на использование (приведенные в тексте), но каждый поставщик формулирует их по-своему, и нет способа гарантировать согласованность. Я хотел бы провести простой тест, который я мог бы применить к изображению, которое показывает, является ли это изображение свободным от ограничений или нет. Это не должно быть идеально, просто «достаточно хорошо». Я подозреваю, что мог бы использовать какой-то байесовский фильтр для этого, верно? Я мог бы обучить фильтр с набором изображений, которые, как я знаю, либо ограничены, либо без ограничений, и тогда фильтр сможет делать прогнозы для остальных изображений? Или есть лучшие способы?
  2. Я также хотел бы иметь возможность индексировать эти изображения в соответствии с «сходством ключевых слов», чтобы, если у меня было одно изображение, я мог быстро определить, с какими другими изображениями оно разделяет большинство ключевых слов. В идеале алгоритм также должен учитывать, что некоторые ключевые слова более значимы, чем другие, и оценивать их по-разному. Я даже не знаю, с чего начать, и буду очень рад любым указателям:)

Я работаю в основном на Java, но выбор языка здесь не имеет значения. Я больше заинтересован в том, чтобы узнать, какие подходы лучше всего начать читать. Заранее спасибо:)

Ответы [ 2 ]

2 голосов
/ 10 февраля 2009

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

Байесовский фильтр для обнаружения фраз ограничения, интересен. Я бы сказал, пойти на это, если у вас нет времени. в этом случае несколько простых сопоставлений с образцом должны охватывать более 90-95% случаев, а остальные могут быть быстро завершены вручную несколькими операторами.

1 голос
/ 11 февраля 2009

(1) Похоже на проблему классификации со словами в вашем тексте как элементами, а также «Ограничено» и «Не ограничено» как ваши ярлыки. Байесовская фильтрация или любой алгоритм классификации должны помочь.

(2) Похоже на проблему кластеризации. Сначала вы хотите создать хорошую функцию сходства, которая возвращает оценку сходства для двух изображений на основе их ключевых слов. Косинусное сходство может быть хорошей отправной точкой, так как вы сравниваете ключевые слова. Оттуда вы можете вычислить матрицу сходства и просто запомнить список «ближайших соседей» для каждого изображения в вашем наборе данных, или вы можете пойти дальше и использовать алгоритм кластеризации, чтобы получить реальные кластеры изображений.

Поскольку у вас так много записей, вы можете пропустить вычисление всей матрицы подобия и просто вычислить кластеры для небольшой случайной выборки вашего набора данных. Затем вы можете добавить другие точки данных в соответствующие кластеры. Если вы хотите сохранить больше информации о сходстве, вы можете посмотреть на мягкую кластеризацию.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...