Сейчас я работаю над проектом, пытаясь извлечь ключевые слова из комментариев.
Для начала я провел опрос по извлечению ключевых слов. Есть два известных метода достижения цели:
- TF-IDF — на основе частоты
- TextRank — на основе графика
- Обучение с учителем — на основе лексических и синтаксических особенностей
Из-за отсутствия обучающих данных в моем случае я сосредоточусь на неконтролируемом методе. TextRank выглядит вполне реальным выбором! Давайте начнем!
Идея TextRank аналогична PageRank, если вы уже что-то знаете о PageRank, вам будет несложно.
Давайте взглянем на PageRank. Представьте каждую веб-страницу в виде узла, и между узлами существует связь, если на страницу ссылаются другие. Таким образом, если веб-страница тесно связана с другими, более вероятно, что эта страница является более важной, чем другие. Точно так же мы можем измерить важность слова по TextRank.
Между узлами (или вершинами) есть связи, и каждая вершина может голосовать за другие вершины.
Следуя этому уравнению, каждая вершина может, наконец, получить оценку после определенного количества итераций.
В этой статье проводится сравнение между ориентированным графом и неориентированным графом (также взвешенным графом и невзвешенным графом). Для неориентированного графа кривая сходимости будет более плавной, чем для ориентированного графа.
Итак, как нам преобразовать текст в график?
Интуитивно, если мы хотим сделать извлечение ключевых слов, то мы должны использовать слова в качестве вершин, а предложения использовать в качестве вершин в случае текстовой сводки.
Самая большая проблема заключается в том, как определить отношение (или ребра) между вершинами. Здесь в документе используется отношение, называемое отношением совпадения. Если два слова встречаются на расстоянии меньшем, чем размер окна N, мы говорим, что у них есть связи.(N может быть установлено от 2 до 10)
До сих пор мы уже разобрались с базовой концепцией TextRank. Мы используем слова как вершины графа и определяем отношение между вершинами отношением совпадения.
Чтобы было лучше, мы могли бы применять синтаксические фильтры к вершинам, например, добавлять в граф только глаголы и существительные. Согласно эксперименту, проведенному в статье, выбор только прилагательных и существительных дал лучший результат.
Давайте углубимся в эксперимент, задуманный в этой статье. Ниже приведены упрощенные этапы эксперимента.
- токенизировать текст
- аннотированный тегами части речи
- пропускать слова через синтаксический фильтр
- создавать ссылки по определению совпадения в окне размера N
- получить неориентированный и невзвешенный граф
- инициализировать каждую вершину значением 1
- итерация 20~30 раз, пока не будет ниже порога 0,0001
- Наконец, получите ключевые слова T (которое T равно трети числа вершин в графе).
PS. TextRank — это неконтролируемый алгоритм, и здесь мы рассматриваем только одно ключевое слово.