exponenta event banner

Извлечение ключевых слов из текстовых данных с помощью TextRank

В этом примере показано извлечение ключевых слов из текстовых данных с помощью TextRank.

Алгоритм извлечения ключевых слов TextRank извлекает ключевые слова, используя подход, основанный на тегах части речи, для идентификации ключевых слов-кандидатов и оценивает их с помощью совместных вхождений слов, определенных скользящим окном. Ключевые слова могут содержать несколько маркеров. Кроме того, алгоритм извлечения ключевых слов TextRank также объединяет ключевые слова при их последовательном отображении в документе.

Извлечь ключевые слова

Создайте массив маркированных документов, содержащих текстовые данные.

textData = [
    "MATLAB provides really useful tools for engineers. Scientists use many useful MATLAB toolboxes."
    "MATLAB and Simulink have many features. MATLAB and Simulink makes it easy to develop models."
    "You can easily import data in MATLAB. In particular, you can easily import text data."];
documents = tokenizedDocument(textData);

Извлеките ключевые слова с помощью textrankKeywords функция.

tbl = textrankKeywords(documents)
tbl=6×3 table
                   Keyword                   DocumentNumber    Score 
    _____________________________________    ______________    ______

    "useful"    "MATLAB"      "toolboxes"          1           4.8695
    "useful"    ""            ""                   1           2.3612
    "MATLAB"    ""            ""                   1           1.6212
    "many"      "features"    ""                   2           4.6152
    "text"      "data"        ""                   3           3.4781
    "data"      ""            ""                   3           1.7391

Если ключевое слово содержит несколько слов, то i-й элемент строкового массива соответствует i-му слову ключевого слова. Если ключевое слово имеет меньше слов, чем самое длинное ключевое слово, то остальные записи массива строк являются пустой строкой "".

Для удобочитаемости преобразуйте многословные ключевые слова в одно жало с помощью join и strip функции.

if size(tbl.Keyword,2) > 1
    tbl.Keyword = strip(join(tbl.Keyword));
end
head(tbl)
ans=6×3 table
             Keyword             DocumentNumber    Score 
    _________________________    ______________    ______

    "useful MATLAB toolboxes"          1           4.8695
    "useful"                           1           2.3612
    "MATLAB"                           1           1.6212
    "many features"                    2           4.6152
    "text data"                        3           3.4781
    "data"                             3           1.7391

Укажите максимальное количество ключевых слов в документе

textrankKeywords функция по умолчанию возвращает все идентифицированные ключевые слова. Чтобы уменьшить количество ключевых слов, используйте 'MaxNumKeywords' вариант.

Извлеките первые два ключевых слова для каждого документа, установив 'MaxNumKeywords' опция 2.

tbl = textrankKeywords(documents,'MaxNumKeywords',2)
tbl=5×3 table
                   Keyword                   DocumentNumber    Score 
    _____________________________________    ______________    ______

    "useful"    "MATLAB"      "toolboxes"          1           4.8695
    "useful"    ""            ""                   1           2.3612
    "many"      "features"    ""                   2           4.6152
    "text"      "data"        ""                   3           3.4781
    "data"      ""            ""                   3           1.7391

Указание тегов части речи

Обратите внимание, что в извлеченных выше ключевых словах функция не рассматривает слово «import» в качестве ключевого слова. Это происходит потому, что алгоритм извлечения ключевых слов TextRank по умолчанию использует маркеры с тегами части речи «существительное», «собственное существительное» и «прилагательное» в качестве ключевых слов-кандидатов. Поскольку слово «import» является глаголом, алгоритм не рассматривает это как ключевое слово-кандидат. Аналогично, алгоритм не рассматривает наречие «легко» как ключевое слово-кандидат.

Чтобы указать, какие теги части речи следует использовать для идентификации ключевых слов-кандидатов, используйте 'PartOfSpeech' вариант.

Извлеките ключевые слова из того же текста, что и раньше, а также укажите теги части речи "adverb" и "verb".

newTags = ["adverb" "verb"];
tags = ["noun" "proper-noun" "adjective" newTags];
tbl = textrankKeywords(documents,'PartOfSpeech', tags)
tbl=7×3 table
                      Keyword                       DocumentNumber    Score 
    ____________________________________________    ______________    ______

    "use"         "many"    "useful"    "MATLAB"          1           5.8839
    "useful"      ""        ""          ""                1           2.0169
    "MATLAB"      ""        ""          ""                1           1.5478
    "Simulink"    "have"    "many"      ""                2           4.5058
    "Simulink"    ""        ""          ""                2           1.5161
    "import"      "text"    "data"      ""                3           4.7921
    "import"      "data"    ""          ""                3           3.4195

Обратите внимание, что функция рассматривает маркер «import» как ключевое слово-кандидат и объединяет его в многословные ключевые слова «import data» и «import text data».

Укажите размер Windows

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

Алгоритм извлечения ключевых слов TextRank оценивает ключевые слова-кандидаты, используя число попарных совпадений в скользящем окне. Для увеличения размера окна используйте 'Window' вариант. Увеличение размера окна позволяет функции находить больше совпадений между ключевыми словами, что увеличивает показатели важности ключевых слов. Это может привести к нахождению более релевантных ключевых слов за счет потенциально завышенной оценки менее релевантных ключевых слов.

Извлеките ключевые слова из того же текста, что и раньше, а также укажите размер окна 3.

tbl = textrankKeywords(documents, ...
    'PartOfSpeech', tags, ...
    'Window',3)
tbl=8×3 table
                      Keyword                       DocumentNumber    Score 
    ____________________________________________    ______________    ______

    "many"        "useful"    "MATLAB"    ""              1           4.2185
    "really"      "useful"    ""          ""              1           2.8851
    "MATLAB"      ""          ""          ""              1           1.3154
    "Simulink"    ""          ""          ""              2           1.4526
    "develop"     ""          ""          ""              2           1.0912
    "features"    ""          ""          ""              2           1.0794
    "easily"      "import"    "text"      "data"          3           5.2989
    "easily"      "import"    "data"      ""              3           4.0842

Обратите внимание, что функция рассматривает маркеры «легко» как ключевые слова и объединяет их в многословные ключевые слова «легко импортировать текстовые данные» и «легко импортировать данные».

Дополнительные сведения об алгоритме извлечения ключевых слов TextRank см. в разделе Извлечение ключевых слов TextRank.

Альтернативы

Можно экспериментировать с различными алгоритмами извлечения ключевых слов, чтобы увидеть, что лучше всего работает с данными. Поскольку алгоритм ключевых слов TextRank использует подход на основе тегов части речи для извлечения ключевых слов-кандидатов, извлеченные ключевые слова могут быть короткими. Можно также попытаться извлечь ключевые слова с помощью алгоритма RAKE, который извлекает последовательности маркеров, появляющихся между разделителями, в качестве ключевых слов-кандидатов. Чтобы извлечь ключевые слова с помощью RAKE, используйте rakeKeywords функция. Дополнительные сведения см. в разделе Извлечение ключевых слов из текстовых данных с помощью команды RAKE.

Ссылки

[1] Михальцея, Рада и Поль Тарау. «Textrank: Приведение порядка в текст». В Трудах 2004 конференции по эмпирическим методам обработки естественного языка, стр. 404-411. 2004.

См. также

| | |

Связанные темы