TextRank – это алгоритм, основанный на графах, который используется для ранжирования важности элементов в тексте. С его помощью можно извлечь ключевые слова и определить, какие слова являются наиболее важными для передачи смысла текста.
Предварительная обработка: текст разбивается на предложения, каждое предложение – на слова. Производится токенизация, лемматизация или стемминг, удаляются стоп-слова (предлоги, союзы и т.д.).
Построение графа: создаётся граф, где вершины – это слова (или фразы), а рёбра соединяют слова, которые встречаются в одном предложении. Вес ребра может быть одинаковым для всех пар слов или определяться, например, расстоянием между словами в предложении.
Вычисление весов вершин. Каждой вершине (слову) присваивается начальный вес. Затем алгоритм итеративно пересчитывает веса вершин, основываясь на весах их соседей. Формула расчёта веса вершины i выглядит следующим образом:
W(i) = (1-d) + d * Σ [ W(j) / OutDegree(j) ]
где:
* W(i) - вес вершины *i*;
* d - коэффициент затухания (обычно устанавливается равным 0.85);
* Σ - сумма по всем вершинам *j*, которые связаны с вершиной *i*;
* OutDegree(j) - исходящая степень вершины *j* (количество связей, исходящих из вершины *j*).
Ранжирование. После достижения сходимости (когда веса вершин перестают изменяться), вершины (слова) ранжируются по убыванию их весов. Слова с наибольшими весами считаются ключевыми.
Пример
Возьмем текст: “Алгоритм TextRank основан на теории графов. Он используется для определения важности слов в тексте. TextRank может применяться для извлечения ключевых слов.”
Предварительная обработка. После удаления стоп-слов и лемматизации получаем следующие слова: “алгоритм”, “textrank”, “основанный”, “теория”, “граф”, “использовать”, “определение”, “важность”, “слово”, “текст”, “textrank”, “применять”, “извлечение”, “ключевой”, “слово”.
Создаем граф, где вершины – это слова, а ребра соединяют слова, встречающиеся в одном предложении.
Итеративно вычисляем веса вершин по формуле, приведённой выше.
После сходимости получаем ранжированный список слов. Первые слова в списке будут являться ключевыми, например: “textrank”, “алгоритм”, “слово”, “важность”, “граф”.
Применение TextRank для извлечения ключевых слов с помощью Python
В Python реализация алгоритма TextRank доступна в нескольких библиотеках, например,rake-nltkиgensim.
Пример использования библиотеки rake-nltk
from rake_nltk import Rake
# Пример текста
text = """
TextRank - это алгоритм ранжирования, основанный на графах.
Он используется для определения важности слов в тексте.
"""
# Создание объекта Rake
rake = Rake(language="russian")
# Извлечение ключевых слов
rake.extract_keywords_from_text(text)
# Получение ранжированного списка ключевых слов
keywords = rake.get_ranked_phrases()
# Вывод результата
print(keywords)
В этом примере:
Импортируется классRakeиз библиотекиrake_nltk.
Создаётся объектRakeс указанием языка текста (language="russian").
Методextract_keywords_from_text()применяет алгоритм TextRank к тексту.
Методget_ranked_phrases()возвращает список ключевых слов, отсортированных по убыванию важности.
Пример использования библиотеки gensim
from gensim.summarization import keywords
# Пример текста
text = """
TextRank - это алгоритм ранжирования, основанный на графах.
Он используется для определения важности слов в тексте.
"""
# Извлечение ключевых слов
extracted_keywords = keywords(text, ratio=0.2, language="russian")
# Вывод результата
print(extracted_keywords)
Функцияkeywords()применяет алгоритм TextRank к тексту с заданным соотношением количества ключевых слов к общему числу слов (ratio=0.2) и языком (language="russian").
Обе библиотеки предоставляют гибкие настройки параметров алгоритма TextRank:
Длина фразы –максимальное количество слов в ключевой фразе.
Список стоп-слов:список слов, которые будут игнорироваться при построении графа.
Коэффициент затухания:параметр, который влияет на вес “перехода” по ребрам графа.
Выбор библиотеки и настройка параметров зависят от конкретной задачи и требований к результату.
Достоинства TextRank
Не требует обучающей выборки. TextRank не нуждается в предварительном обучении на размеченных данных, что делает его удобным для анализа текстов на различных языках и в различных предметных областях.
Учитывается семантическую связь слов: алгоритм анализирует контекст, в котором встречаются слова, и учитывает их семантическую близость.
Автоматически определяет количество ключевых слов: в отличие от некоторых других методов, TextRank не требует задания количества ключевых слов, которые нужно извлечь.
Недостатки
Чувствительность к качеству предобработки: результат работы алгоритма сильно зависит от качества предварительной обработки текста (лемматизации, удаления стоп-слов и т.д.).
Сложность в обработке больших текстов. Построение графа и вычисление весов вершин для очень больших текстов может занимать значительное время.
Использует список стоп-слов и набор фраз для разделения текста на кандидатов в ключевые слова.
Не учитывает контекст и семантическую связь слов.
Прост в реализации, но менее точен, чем TextRank.
Практическое применение в SEO
Для SEO предпочтительнее использоватьTextRank, так как он:
Глубже анализирует текст: учитывается семантическую связь слов, что позволяет получать более точные и релевантные ключевые слова.
Помогает в создании контента. Выявленные ключевые слова помогают оптимизировать контент для поисковых систем, делая его более релевантным запросам пользователей.
TextRank – это мощный алгоритм для извлечения ключевых слов, который учитывает семантическую связь между словами. Он превосходит TF-IDF и RAKE по точности и релевантности результатов, что делает его особенно полезным для SEO-оптимизации контента.