- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
![Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ](https://d.searchengines.guru/20/95/seo-2024-stock_600x314__3274f588.jpg)
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Цель данного расчета понятна - чем ближе слова из запроса пользователя тем выше вес страницы..
Вопрос как это лучше реализовать?
Сейчас есть что-то подобное:
1) берем минимальную координату из списка слов
2) устанавливаем ее в следующую
3) считаем вес данного сочетания координат слов
4) Если вес пороговый - выход (все слова идут один за другим как в запросе пользователя)
5) Если вес больше текущего меняем текущий и на пункт 1
привел бы ты лучше пример расчета ... для конкретных тегов указал примерый "вес" ... а так же ввел бы зависимость веса от расстояния от "начала" (правда можно считать что начал может быть несколько) ...
Привожу пример как работает сейчас:
Например запрос 3 слова:
Для всех страниц, где встречаются 3 слова:
1) формируем начальный массив (из координатного индекса каждого слова)
первое слово - координата 1
второе слово - координата 4
третье слово - координата 5
Считаем вес...
2) Первое слово минимум
смотрим следующую координату например 2 (ну в индексе +1)
первое слово - координата 2
второе слово - координата 4
третье слово - координата 5
Считаем вес
И т.д.
PS: Перефразирую вопрос: Как найти наиболее близко лежащие слова используя координатный индекс?
Читать форум. Этот вопрос уже
обсуждался и не раз.
Читать форум. Этот вопрос уже
обсуждался и не раз.
Указанные вами ссылки я читал и до того... но вопрос в другом (не в том как выбрать пересечение 2 ссылка, и не в том как подсветить слова с учетом словоформы)
а как найти оптимально слова находящиеся рядом анализируя только координатный индекс:
например слова из запроса "работа в киеве"
работа на странице встречается на 2 5 10 11 22 33 позиции
а киеве на 3 12 ....
и нужно как можно более оптимально найти место работа 11 - киев 12 - что указывает на то что в документе слова рядом..
как найти оптимально слова находящиеся рядом анализируя только координатный индекс: например слова из запроса "работа в киеве"
работа на странице встречается на 2 5 10 11 22 33 позиции
а киеве на 3 12 ....
Если я правильно понял вопрос (поиска близких позиций n объектов), то есть простое решение методом последовательного спуска.
Заводится массив из n первых позиций всех объектов. Находим объект с минимальной позицией, переводим его к следующей позиции. Снова находим минимум. Повторяем. Все.
Таким образом можно решить все задачи со взаимным положением внутри какого-то интервала.
Именно так я эту проблему и решил (это описано в начале топика - наверно не совсем понятно :D )
А может есть какие-то специализированные алгоритмы для решения данной задачи?
Увы, не вижу, как можно улучшить этот алгоритм принципиально, т.е. сделать лучше, чем O(суммы позиций). Мелкие улучшизмы, конечно, возможны: оптимизировать работу с редкими позициями, например.
Увы, не вижу, как можно улучшить этот алгоритм принципиально, т.е. сделать лучше, чем O(суммы позиций).
Точнее O(число_позиций)*log(число_слов), если выбирать очередную минимальную позицию не полным перебором по всем словам, а при помощи пирамиды (pop_heap/push_heap или priority_queue в STL).
Когда слов больше 3-4, это актуально.
если выбирать очередную минимальную позицию не полным перебором по всем словам
Согласен, на эти грабли тоже можно наступить. Вопрос к Илье: можешь ли сообщить свою статистику по одно-, двух-, трех- и т.д.-словным запросам?
На самом деле у вас все немного в кучу. Ваш алгоритм - так называемое "скользящее окно", дает достаточно неплохие результаты и широко применяется. Не вижу только ни в вашей формуле, ни в формуле Ильи нормализации по длине документа. Если подходить к этому вопросу несколько шире, то возможны две ситуации:
1. Взаимное положение используется для учета словосочетаний. Т.е. пользователь задал одно или несколько словочетаний ("цифровая камера", "еврейские анекдоты" и т.п.). Описанный алгоритм хорошо для этого подходит (это частный случай выделения словосочетаний путем учета расстояний), но можно использовать любой статистический/синтаксический алгоритм выделения словосочетаний и взвешивать их как слова (любой известный алгоритм). Литературы по этому поводу - море... Т.к. большинство запросов в и-нете это просто одно словосочетание, то результат неплохой. Если в запросе словосочетаний несколько, то возможны разные эффекты, в т.ч. и не очень приятные.
2. Пользователь ищет по цитате, т.е. берет фразу из документа, возможно с искажениями. Ситуация достаточно редкая для и-нета, но очень вероятная для библиотечных, патентных, правовых баз и т.д. В этом случае описанный подход обычно выкидывает наверх совсем не то, что ожидает пользователь. В этом случае нужно считать что-нибудь типа метрики Левинштейна между запросом и скользящим окном, где под символами рассматривать слова.
В реальной системе, которая должна поддерживать обе ситуации, ищется и так и так, а потом пользователю выдается "комбинированный" результат, где на основании некоторой эвристики решается что все-таки хотел пользователь.