Извлеките ключевые слова из текстовых данных Используя RAKE

В этом примере показано, как извлечь ключевые слова из текстовых данных с помощью Быстрой автоматической экстракции ключевого слова (RAKE).

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

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

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

textData = [
    "MATLAB provides tools for scientists and engineers. MATLAB is used by scientists and engineers."
    "Analyze text and images. You can import text and images."
    "Analyze text and images. Analyze text, images, and videos in MATLAB."];
documents = tokenizedDocument(textData);

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

tbl = rakeKeywords(documents)
tbl=12×3 table
                     Keyword                     DocumentNumber    Score
    _________________________________________    ______________    _____

    "MATLAB"        "provides"    "tools"              1             8  
    "MATLAB"        ""            ""                   1             2  
    "scientists"    "and"         "engineers"          1             2  
    "engineers"     ""            ""                   1             1  
    "scientists"    ""            ""                   1             1  
    "Analyze"       "text"        ""                   2             4  
    "import"        "text"        ""                   2             4  
    "images"        ""            ""                   2             1  
    "Analyze"       "text"        ""                   3             4  
    "MATLAB"        ""            ""                   3             1  
    "images"        ""            ""                   3             1  
    "videos"        ""            ""                   3             1  

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

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

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

    "MATLAB provides tools"             1             8  
    "MATLAB"                            1             2  
    "scientists and engineers"          1             2  
    "engineers"                         1             1  
    "scientists"                        1             1  
    "Analyze text"                      2             4  
    "import text"                       2             4  
    "images"                            2             1  

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

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

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

tbl = rakeKeywords(documents,'MaxNumKeywords',3)
tbl=9×3 table
                     Keyword                     DocumentNumber    Score
    _________________________________________    ______________    _____

    "MATLAB"        "provides"    "tools"              1             8  
    "MATLAB"        ""            ""                   1             2  
    "scientists"    "and"         "engineers"          1             2  
    "Analyze"       "text"        ""                   2             4  
    "import"        "text"        ""                   2             4  
    "images"        ""            ""                   2             1  
    "Analyze"       "text"        ""                   3             4  
    "MATLAB"        ""            ""                   3             1  
    "images"        ""            ""                   3             1  

Задайте разделители

Заметьте, что в извлеченных ключевых словах выше, функция извлекает ключевое слово многословное "ученые и инженеры" из первого документа, но не извлекает ключевое слово многословное "текст и отображает" из второго документа. Это вызвано тем, что алгоритм RAKE использует лексемы, появляющиеся между разделителями как ключевые слова кандидата, и алгоритм только объединяет ключевые слова с разделителями, когда объединенная фраза появляется многократно.

В этом случае, экземпляры маркерного "текста" появляется в двух различных кандидатах ключевого слова многословных, "Анализируют текст", и "импортируют текст". Поскольку в этом случае функция не извлекает "текст" как отдельное ключевое слово кандидата, алгоритм не рассматривает кандидатов слияния с разделителем "и" и ключевое слово кандидата "изображения".

Можно задать разделители, используемые для извлечения ключевых слов с помощью 'Delimiters' и 'MergingDelimiters'опции. Чтобы задать разделители, которые не должны появляться в извлеченных ключевых словах, используйте 'Delimiters' опция. Чтобы задать разделители, которые могут появиться в извлеченных ключевых словах, используйте 'MergingDelimiters' опция.

Извлеките ключевые слова из того же текста как прежде и также задайте слова "Analyze" и "импорт" как слияние разделителей.

newDelimiters = ["Analyze" "import"];
mergingDelimiters = [stopWords newDelimiters];

tbl = rakeKeywords(documents,'MergingDelimiters', mergingDelimiters)
tbl=12×3 table
                     Keyword                     DocumentNumber    Score
    _________________________________________    ______________    _____

    "MATLAB"        "provides"    "tools"              1             8  
    "MATLAB"        ""            ""                   1             2  
    "scientists"    "and"         "engineers"          1             2  
    "engineers"     ""            ""                   1             1  
    "scientists"    ""            ""                   1             1  
    "text"          "and"         "images"             2             2  
    "images"        ""            ""                   2             1  
    "text"          ""            ""                   2             1  
    "MATLAB"        ""            ""                   3             1  
    "images"        ""            ""                   3             1  
    "text"          ""            ""                   3             1  
    "videos"        ""            ""                   3             1  

Заметьте здесь, что функция обрабатывает лексемы "текст" и "отображает" как ключевые слова и также извлекает объединенное ключевое слово "текст и изображения". Чтобы узнать больше об алгоритме RAKE, смотрите Быструю Автоматическую Экстракцию Ключевого слова.

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

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

Ссылки

[1] Повысился, Стюарт, Дэйв Энгель, Ник Крамер и Венди Коули. "Автоматическая экстракция ключевого слова из отдельных документов". Анализ текста: приложения и теория 1 (2010): 1-20.

Смотрите также

| | |

Похожие темы