Як згенерувати внутрішню перелінковку на 100тис сторінок by Dejan
Замість традиційних методів TF-IDF, LDA, n-grams та частоти ключових слів було використане машинне навчання:
-
Ембедінги (вбудовування). Зроблені з використанням Sentence BERT.
-
Сторінка > Сторінка. Сумарні та усереднені вектори речень для кожного URL використовуються для створення матриці подібності сторінок в numpy, яка потім використовується для створення списку семантично пов'язаних сторінок через косинусну подібність.
-
Речення > Сторінка. Перебираючи всі вектори речень, які знаходяться на кожній визначеній сторінці-кандидаті на посилання, знову шукаємо той, у якого найкоротша косинусна відстань відносно вбудовування сторінки цільового URL в цілому. Після визначення найбільш підходящого вбудовування речень, можна знову відтворити це речення, відображаючи ID речення та URL, які зберігаються як сировинний текстовий ключовий стовпець в кінці значень вектора.
-
Слово > Сторінка. Відновлений сировинний текстовий контент використовується для створення ID слів + вбудовувань на рівні слів. Знову шукаємо найкоротшу косинусну відстань між вибраними векторами слів вихідної сторінки та векторами сторінки цільової сторінки. Тепер можна відновити текст ключового слова (що інакше втрачено в даних вектора), відображаючи ключі ID слів, збережені в пам'яті програми під час цього тимчасового циклу, так само, як ми робили раніше з реченнями.
-
Слово = Анкор. Усі визначені ключові слова потім записуються в колонку "anchor_text" csv рекомендацій посилань (source, target, anchor_text) в порядку зменшення релевантності.
Причина, чому вбудовування векторів на рівні слів генеруються динамічно, а не під час вбудовування на рівні речень, полягає в тому, що це обчислювально вимогливо і вимагає сотень гігабайт пам'яті для dataframe з 100 000 проаналізованих сторінок.
Технологічний стек Для вбудовування слів використані SentenceTransformers, LaBSE, PyTorch та CUDA від Nvidia на GPU Tesla T4 16GB. LaBSE - гарний вибір для веб-сайтів з багатьма сіло hreflang, оскільки вона повністю незалежна від мови. Ви, звичайно, можете використовувати стандартний BERT, але Dejan рекомендує BERT-large-cased.
Професійні поради:
- Тести Dejan показали значно кращі результати при використанні L2 нормалізованих вбудовувань LaBSE. 🟢 Не видаляйте крапки під час процесу токенізації, інакше ви втратите дані меж речень.
Дякую Олексію за наводку. Може, ще й кодом поділиться 😇