exponenta event banner

Извлечь ключевые слова из текстовых данных с помощью 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 использует маркеры, появляющиеся между разделителями, в качестве ключевых слов-кандидатов, а алгоритм объединяет ключевые слова с разделителями только в том случае, когда объединенная фраза появляется несколько раз.

В этом случае экземпляры маркера «text» появляются внутри двух различных многословных ключевых слов-кандидатов «Analyze text» и «import text». Поскольку в этом случае функция не извлекает «text» как отдельное ключевое слово-кандидат, алгоритм не рассматривает объединение кандидатов с разделителем «and» и ключевым словом-кандидатом «images».

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

Извлеките ключевые слова из того же текста, что и раньше, а также укажите слова «Analyze» и «import» в качестве разделителей слияния.

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  

Обратите внимание, что функция обрабатывает маркеры «text» и «images» как ключевые слова, а также извлекает объединенное ключевое слово «text and images». Дополнительные сведения об алгоритме RAKE см. в разделе Быстрое автоматическое извлечение ключевых слов.

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

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

Ссылки

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

См. также

| | |

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