Як зробити групування ключових слів з AI контенту для пошукової системи?

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Наразі я розробляю пошукову систему, орієнтовану на контент (картинки, відео), створений за допомогою штучного інтелекту, і зіткнувся з викликом у організації мого датасету. Датасет складається з 1,5 мільйона ключових слів і фраз, отриманих з великої кількості генеративних AI-промптів. Ці ківорди значно відрізняються, особливо імена, і їх потрібно групувати в уніфіковані категорії для покращення функціональності пошуку та UX.

Прикладом варіацій, з якими я стикаюся, є кілька представлень «Miley Cyrus», такі як:

  • Miley Cyrus
  • MileyCyrusPopStar
  • lora:Miley_Cyrus_2024:1
  • Miley as Hannah Montana
  • miley_cyrus_live
  • MileyCyrus_HD

Мета полягає в очищенні, стандартизації, вилученні значущих ключових слів, а потім групуванні цих термінів для виявлення взаємозв’язків та шаблонів, все це має бути масштабованим і автоматизованим способом.

Враховуючи величезний розмір набору даних, ручне сортування або рев’ю неможливе. Я шукаю поради щодо кращих практик, інструментів, бібліотек або алгоритмів, які могли б сприяти такому аналізу тексту та організації даних у великому масштабі.

Буду вдячний за будь які поради.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ну попробуй використати той самий АІ.
Бери фразу типу "

Miley Cyrus

" і шукай по всіх інших фразах які якось подібні. Тобі знайде те що треба і щось лишнє.
Потім весь список закидай в ШІ і питай «які з цих фраз дійсно відносяться до моєї а які ні». А ШІ тобі щось поверне
А так щоб без ШІ то ти задовбешся щось робити. Бо ти не гугл :) . Вони це робити роками і сотнями людей.
хіба якщо тобі це виключно для досвіду то можеш погратися в категоризацію і кластеризацію. Знайди бібліотеки і пробуй застосовувати

З опису не дуже ясно які категорії бажано отримати. Це шось типу тегів (яких багато), чи менша кількість широких категорій типу «співачка». Чи взагалі деяка їєрархія — «Співачки» -> «Miley Cyrus». Якщо це відкрите питання, то як ці категорії будуть допомогати користувачам. Або іншими словами яке UX планується з використанням цих категорій. Якщо і це відкрите питання, то потрібно визначитись з прикладами UX, які підійдуть для ваших цілей.

В будь-якому разі багато існуючих класифікацій можна витягнути з існуючих датасетів, починаючи від Вікіпедії і закінчуючи самописними парсерами спеціалізованих сайтів.

Далі постане питання знаходження відповідності між канонічною формою поняття і її записами довільною мовою, наприклад «Miley Cyrus» і «MileyCyrusPopStar». Думаю, тут потрібно буде дивитися в сторону різноманітних tokenizers, хоча швидше за все прийдеться писати свій, або як мінімум допилювати існуючий. Далі маючи розбивку «miley_cyrus_live» на («miley», «cyrus», «live») бажано згрупувати токени у поняття «miley cyrus» та «live». Для цього можна використати щось типу models.phrases з бібліотеки Gensim.

Ці групи та одиночні токени вже можна використовувати як теги, хоча бажано буде продивитися найчастіші, деякі з них будуть загальними словами, марними з точки зору пошуку за ключовим словом.

Для побудови деякої ієрархії чи просто фільтрування цих недотегів можна побудувати відповідності між тегами і наприклад назвами статей з Вікіпедії чи інших датасетів.

P.S. Не претендую на ідеальний підхід до цієї задачі, просто мої прикидки.

Іерархія не потрбіна. На виході потрібен плоський список тегів. Можливо пізніше ми зробимо вручну списки типу Celebrities і будемо туди вручну або автоматично додавати теги. Але зараз не критично.

Стокові датасети не підходять теж, так як я бачу постійно з’являються нові ківорди і селебріті.

Значить можна:

1) шукати, дороблювати або писати tokenizer, який розіб’є «MileyCyrusPopStar» у («Miley», «Cyrus», «Pop», «Star») або ще дрібніше — можна глянути на gensim.utils.tokenize, почитати наприклад тут — huggingface.co/...​/nlp-course/en/chapter6/1

2) об’єднати токени, які є однією сутністю («Miley», «Cyrus») у «MileyCyrus». Можна глянути тут — radimrehurek.com/...​ensim/models/phrases.html. Не знаю, чи це зараз найкращий варіант, давно за цим не слідкував

3) якщо цього недостатьно, наприклад ви хочете об’єднати синоніми або описки, то на натренувати ембеддінги на ваших документах (генеративних AI-промптах) після кроків 1) і 2)

4) далі отримані фрази(n-грами) і токени з дуже близькими ембеддінгами злити в єдиний обʼєкт. Тут виникне питання, яку форму зробити канонічною «MileyCyrus», «miley_cyrus» чи «Miley», потрібно буде придумати якісь правила

Також варто було б пошукати user generated сайти які часто оновлюються і розмічаються користувачами, можливо звідти можна було б витягнути канонічні форми.

Підписатись на коментарі