Ключевое слово Cluster: Использование коэффициента Dice & Gephi • Антуан Бриссет
- 1-й шаг: получить ключевые слова и их объем поиска
- 2-й шаг: вычислить сходство между каждым ключевым словом
- Рассчитать коэффициент кости
- 3-й шаг: визуализация данных в Gephi
- Игра с настройками Gephi
- Экспортная визуализация
SEO блог / семантика
Понятие кластеризации снова рассматривается в блоге, но под другим углом. Я решил изучить особенности Gephi для создания отображения семантической вселенной. Цель состоит в том, чтобы визуализировать как интерес к ключевому слову (объем поиска), так и его связь с другими ключевыми словами (семантическое сходство)
В предыдущем посте Я представил метод, основанный на алгоритме K-Means, для разделения набора ключевых слов. Хотя этот метод очень прост в обращении, его недостатком является необходимость заранее знать количество кластеров, которые вы хотите создать. Не отлично
Поэтому я продолжил свои исследования: сначала я приобрел работы Масси-Резы Амини и Эрика Гауссуера, Поиск информации - Приложения, модели и алгоритмы. Интеллектуальный анализ данных, принятие решений и большие данные которая посвящает очень интересную главу разделению данных, и параллельно я стал больше интересоваться Gephi. Я придумал конкретную методологию для визуализации набора ключевых слов, основанную на коэффициенте Dice , а также на Gephi и его встроенных алгоритмах кластеризации.
1-й шаг: получить ключевые слова и их объем поиска
Конечно, первый шаг будет состоять в том, чтобы получить как можно больше ключевых слов в теме, которую вы хотите изучить. Для этого я не буду вдаваться в подробности, использую планировщик ключевых слов, SemRush или любой другой инструмент, который может дать вам соответствие между ключевым словом и ежемесячным объемом поиска.
Отформатируйте файл следующим образом: 1-й столбец с меткой «Id», 2-й столбец с надписью «Label» и последний столбец с надписью «Weight». В первом столбце появятся ваши ключевые слова, во втором столбце снова ваши ключевые слова (простое копирование / вставка), а в третьем столбце - объемы поиска. Сохраните ваш файл в формате CSV как node.csv . Ваш файл "узлов" готов к импорту в Gephi. Мы вернемся к этому позже.
2-й шаг: вычислить сходство между каждым ключевым словом
Нормализовать ключевые слова
Прежде чем приступить к вычислению сходства, мы сначала перейдем к набору предварительных обработок в Ruby, который позволит нам лучше сгруппировать наши ключевые слова. Давайте возьмем тот же набор данных, что и в предыдущей статье, который мы будем хранить в таблице.
ключевые слова = ["seo consultant", "естественные ссылки", "seo expert", "естественные ссылки", "консультант по ссылкам", "SEO консультант", "SEO агентство", "SEO агентство", "SEO консультант", "SEO-эксперт", "SEO-агентство", "SEO-консультант", "SEO-агентство", "SEO-консультант", "SEO-агентство", "Seo SEO", "Эксперты по ссылкам", "Внештатный SEO", "Консультант" Интернет-ссылки "," эксперт по ссылкам "," консультант по естественным ссылкам "," консультант по естественным SEO "," SEO-консалтинг "," внештатный SEO "," специалист по SEO "," поисковая оптимизация для чайников "," SEO-ссылки " , "консультант по естественным ссылкам", "цитата по ссылкам", "лучшая SEO компания", "эксперт по естественным SEO"]
Первый шаг - превратить каждую ключевую фразу в токены. Вот как я это делаю: я вырезаю каждую строку символов, как только нахожу пробел.
def get_tokens_from (string) tokens = string. конец разделенных ('') токенов
Как только токенизация будет завершена, я буду искать в базе данных лемм (см. Мою статью по семантическому анализу ) соответствие между каждым токеном и его леммой. Я также использую структуру Treat для определения морфосинтаксической категории каждого слова и, таким образом, устраняю неоднозначность, когда для одного токена возможны несколько лемм.
Приведенный ниже метод находит в базе данных для каждого токена связанную с ним лемму, затем сохраняет все в таблице и удаляет акценты и стоп-слова (для этих операций используются две очень простые функции: remove_accents_from и delete_stop_words_from, которые я не буду здесь подробно описывать).
def get_lemmatised_words_from (tokens) Keywords = Array. новые (0) токены. каждый делает | ш | begin word_str = $ client. escape (w) rows = $ client. запрос («ВЫБЕРИТЕ лемму, слово, категорию ИЗ лемм, ГДЕ слово = = # # word_str}» СОБИРАЙТЕ utf8_bin AND category = '# {w. category}' LIMIT 1 "), если строки. размер> 0 ключевых слов << remove_accents_from (rows.map {| row | row ["lemma"]} first) else ключевые слова << remove_accents_from (word_str) end rescue => e ставит "# {w} => # {e} «конец следующего конца delete_stop_words_from (ключевые слова) конец
Рассчитать коэффициент кости
Теперь мы можем перейти к первому этапу разбиения. Как объяснил в книге Масси-Реза Амини и Эрика Гауссуера В любой работе с разделами первым шагом является выбор «меры сходства» между документами. В этой книге представлено несколько показателей сходства, в том числе коэффициент Костей , который я сохранил для анализа. Он довольно близок к индексу Жакара и рассчитывается путем деления двойного пересечения двух множеств на объединение этих двух множеств.
Приведенный ниже метод проверяет каждое ключевое слово, вычисляет их сходство по одному через коэффициент Dice и сохраняет результаты в таблице.
def get_results_from (data) results = Array. новые (0) данные. каждый делает | k, v | данные. DUP. каждый делает | кб, вб | кости = 2 * (v & vb). сосчитать. to_f / (v. count + vb. count) dice = dice. раунд (2) результаты << [k, kb, dice] конец конец результаты конец
Осталось только создать файл edge.csv , который укажет Gephi степень «притяжения» между каждым узлом.
def make_edges_csv_file_from (массив) CSV. open ("./edges.csv", "wb", {: col_sep => ";"}) do | CSV | csv << ["source", "target", "weight"] массив. каждый делает | ряд | csv << [строка [0], строка [1], строка [2]] конец конец конец
И теперь у нас теперь есть все необходимые данные, давайте перейдем к использованию Gephi! Для тех, кто заинтересован, полный код здесь: https://gist.github.com/ABrisset/661a87fb11a16807cf4ae984e7df8c13 ,
3-й шаг: визуализация данных в Gephi
Импортировать данные
Откройте Gephi, нажмите «Файл> Новый проект», затем перейдите в «Лабораторию данных» и нажмите «Импортировать электронную таблицу».
Иди ищи свой файл edge.csv . Именно он скажет Гефи, какова степень притяжения между каждой парой слов. Выберите «Как таблицу ссылок», выберите правильный разделитель и нажмите «Далее». В следующем окне выберите «Создать отсутствующие узлы» и нажмите «Готово».
Затем повторите ту же операцию, но на этот раз для узлов. Вы должны выбрать «Как таблицу узлов», затем в следующем окне ввести «Целое число» в качестве типа данных для поля «Вес» и не снимать флажок «Принудительные узлы должны быть новыми узлами». ,
Благодаря столбцу «Id» файла вашего узла Gephi может определить, какие узлы находятся в ссылках «Источник» и «Цель».
Игра с настройками Gephi
Последний шаг - настроить узлы и ссылки в соответствии с нашей целью кластеризации. Увидимся в «Обзор».
Сначала запустите алгоритм «Модульность» через правую панель. Этот позволяет идентифицировать сообщества в структуре графа. Больше информации здесь , Затем на панели слева нажмите «Раздел», затем «Узлы» и выберите «Класс модульности». Было найдено три разных кластера: узлы окрашены в соответствии с их «сообществом» привязанности.
Перейдите на вкладку «Рейтинг», выберите «Узлы», а в разделе «Размер / вес» выберите «Вес»: узлы теперь пропорциональны объему поиска. Вы можете продолжить таким же образом для размера меток.
Осталось только добавить немного пространственности. Для этого воспользуемся Force Atlas 2 с параметрами ниже.
Экспортная визуализация
Пусть сила Атласа повернется на несколько мгновений. Направление теперь вкладка «Визуализация». Вы должны получить визуализацию ниже, с 3 кластерами:
- ключевые слова вокруг "SEO" + "сайт"
- ключевые слова вокруг "SEO"
- ключевые слова вокруг "SEO" + "агентство", "натуральный" и т. д.
Совет: откройте изображение в новой вкладке и загрузите расширение Chrome SVG Navigator для увеличения;)
Что вы думаете об этой визуализации? Со своей стороны, я считаю, что это хороший способ разобраться с темой и быстро определить приоритетные проекты SEO, то есть семантические территории, на которых можно сконцентрировать свои усилия.
Я думаю, однако, что мы могли бы получить более детальную детализацию, сравнивая n-граммы между ними, а не только слова. Следовать;)
комментарии предоставлены