Обновить

Как я сделал глобальный семантический поиск для Telegram

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели6.4K
Всего голосов 3: ↑2 и ↓1+1
Комментарии13

Комментарии 13

Качество поиска топ

Мне полезно для поиска каналов под рекламу. Возможно, я бы даже заплатил за это, если бы в выдаче сразу были базовые метрики вовлеченности и юзернейм автора (обычно надо заходить в канал и в описании искать)

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

Мой бот не находит вообще никак:) Чат тоже.

Видимо, это сервис для рекламщиков, ведь в Телеграме так мало рекламы (сарказм).

Там есть кнопка добавления юзернейма в каталог, исходно в базе то на что были ссылки в Интернете и их подобрал Common Crawl, либо то что репостили каналы из этой же базы

"Там есть кнопка добавления юзернейма в каталог " - и где же она?

Скажите, ваш бот ищет только русскоязычные ресурсы?

В БД примерно половина русскоязычных каналов. На втором месте английский.

Скрытый текст
postgres=# select lang, count(*) from profiles p join usernames u on p.uuid = u.uuid where kind = 'channel' group by lang order by count desc;

lang | count  
------+--------
 ru   | 647060
      | 282159 <-- Не получилось определить язык (нет текста и т. п.)
 en   |  79610
 fa   |  33229
 uk   |  25737
 zh   |  14014
 ar   |  13730
 de   |   7878
 it   |   7270
 es   |   6808
 pt   |   3775
 az   |   2871
 fr   |   2228
 id   |   2015
 tr   |   1879
 kk   |   1479
 ko   |   1461
 bg   |   1328
 he   |   1019
 vi   |    899
 hi   |    770
 ca   |    730
 be   |    718
 ms   |    702
 ro   |    552
 la   |    522
 yo   |    480
 hy   |    480
 bn   |    416
 pl   |    380
 nl   |    369
 ja   |    309
 th   |    288
 sk   |    286
 so   |    273
 eo   |    234
 mn   |    231
 mr   |    214
 cs   |    210
 sr   |    163
 sq   |    158
 fi   |    156
 hu   |    150
 tl   |    142
 gu   |    132
 lv   |    125
 xh   |    122
 ts   |    121
 eu   |    120
 cy   |    119
 el   |    113
 sw   |    108
 st   |    105
 ur   |    101
 ta   |     99
 lt   |     93
 hr   |     85
 da   |     84
 sv   |     71
 ka   |     54
 te   |     47
 tn   |     41
 mi   |     41
 bs   |     38
 sn   |     36
 sl   |     34
 mk   |     32
 nb   |     30
 et   |     25
 nn   |     23
 af   |     16
 zu   |     14
 pa   |      9
 lg   |      7
 ga   |      5
 is   |      4
(76 rows)

А как искать англоязычные? Вводим "fishing", ничего не поменялось:)

По поиску через API тот же вопрос:)

Возможность задавать фильтр по языку в ближайших планах, пока не реализована, спасибо за подчёркивание важности этой фичи)

Ну, раз Вы так дружелюбны:) , то скажу ещё: было бы неплохо иметь возможность получать отдельные результаты запросов по ботам, по каналам и по чатам, а также по их сочетанию. То есть кнопками в веб версии и ключами в API.

Семантический поиск хорошо обрабатывает запросы типа "бот для оформления esim", "канал с мемами" и т. д. (так как при расчёте эмбеддинга во входном тексте присутствовало указание типа сущности). Добавил инструкцию по поиску на страницу.

Обрабатывает-то, может быть, и хорошо, но вываливает всё вперемешку. Поэтому я и говорю про однозначную фильтрацию, например, чекбоксами.

Добавил поддержку фильтрации по языку. При веб-поиске добавить специальную директиву "lang:en", "lang:ru" и т. п. в запрос (можно фильтровать только по одному языку за раз, используются коды ISO 639-1). В API для агентов добавлен отдельный query-параметр (указывать "lang:XX" в самом запросе не надо).

При этом запрос может быть не на том языке, по которому фильтруем - семантический поиск всё равно найдёт (для матчинга по ключевым словам, конечно, язык должен совпадать).

Также увеличил максимальное количество результатов через API до 1000.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации