Извлечение ключевых слов из текстовых данных с помощью 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

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

The 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

Задайте теги части речи

Заметьте, что в извлеченных ключевых словах выше функция не рассматривает слово «импорт» как ключевое слово. Это связано с тем, что алгоритм извлечения ключевых слов 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

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

Задайте размер 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.

См. также

| | |

Похожие темы