exponenta event banner

rakeKeywords

Извлечь ключевые слова с помощью RAKE

    Описание

    пример

    tbl = rakeKeywords(documents) извлекает ключевые слова и соответствующие оценки с помощью алгоритма Rapid Automatic Keyword Extraction (RAKE). Функция поддерживает английский, японский, немецкий и корейский тексты. Как использовать rakeKeywords для других языков см. Языковые рекомендации.

    пример

    tbl = rakeKeywords(documents,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение.

    Совет

    rakeKeywords функция по умолчанию извлекает ключевые слова, используя стоп-слова и знаки препинания. При использовании значений по умолчанию для 'Delimiters' и 'MergingDelimiters' не удаляйте стоп-слова или знаки препинания из входного текста.

    Примеры

    свернуть все

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

    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
    tbl
    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  
    
    

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

    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 и установка 'MaxNumKeywords' опция для 2.

    tbl = rakeKeywords(documents,'MaxNumKeywords',2)
    tbl=6×3 table
                     Keyword                  DocumentNumber    Score
        __________________________________    ______________    _____
    
        "MATLAB"     "provides"    "tools"          1             8  
        "MATLAB"     ""            ""               1             2  
        "Analyze"    "text"        ""               2             4  
        "import"     "text"        ""               2             4  
        "Analyze"    "text"        ""               3             4  
        "MATLAB"     ""            ""               3             1  
    
    

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

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

    if size(tbl.Keyword,2) > 1
        tbl.Keyword = strip(join(tbl.Keyword));
    end
    tbl
    tbl=6×3 table
                Keyword            DocumentNumber    Score
        _______________________    ______________    _____
    
        "MATLAB provides tools"          1             8  
        "MATLAB"                         1             2  
        "Analyze text"                   2             4  
        "import text"                    2             4  
        "Analyze text"                   3             4  
        "MATLAB"                         3             1  
    
    

    Входные аргументы

    свернуть все

    Исходные документы, указанные как tokenizedDocument массив, строковый массив слов или массив ячеек символьных векторов. Если documents не является tokenizedDocument массив, то это должен быть вектор строки, представляющий один документ, где каждый элемент является словом. Чтобы указать несколько документов, используйте tokenizedDocument массив.

    Аргументы пары «имя-значение»

    Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

    Пример: rakeKeywords(documents,'MaxNumKeywords',20) возвращает не более 20 ключевых слов на документ.

    Максимальное количество ключевых слов, возвращаемых в документе, указанное как пара, разделенная запятыми, состоящая из 'MaxNumKeywords' и положительное целое число или Inf.

    Если MaxNumKeywords является Inf, то функция возвращает все идентифицированные ключевые слова.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

    Список разделителей по умолчанию - это список знаков препинания.

    Если в документе присутствует несколько ключевых слов-кандидатов, разделенных только объединением разделителей, то функция объединяет эти ключевые слова и разделители объединения в одно ключевое слово.

    Чтобы задать разделители для объединения, используйте 'MergingDelimiters' вариант.

    Сопоставление разделителей не учитывает регистр.

    Типы данных: char | string | cell

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

    Список разделителей слияния по умолчанию - это список стоп-слов, заданный stopWords функция.

    Если в документе присутствует несколько ключевых слов-кандидатов, разделенных только объединением разделителей, то функция объединяет эти ключевые слова и разделители объединения в одно ключевое слово.

    Чтобы указать разделители, которые не должны использоваться для объединения, используйте 'Delimiters' вариант.

    Сопоставление разделителей не учитывает регистр.

    Типы данных: char | string | cell

    Выходные аргументы

    свернуть все

    Извлеченные ключевые слова и баллы, возвращенные в виде таблицы со следующими переменными:

    • Keyword - Извлеченное ключевое слово, указанное как 1-by-maxNgramLength строковый массив, где maxNgramLength - количество слов в самом длинном ключевом слове.

    • DocumentNumber - номер документа, содержащий соответствующее ключевое слово.

    • Score - Оценка ключевого слова.

    Если в документе присутствует несколько ключевых слов-кандидатов, разделенных только объединением разделителей, то функция объединяет эти ключевые слова и разделители объединения в одно ключевое слово.

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

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

    Подробнее

    свернуть все

    Языковые соображения

    rakeKeywords поддерживает только английский, японский, немецкий и корейский тексты.

    rakeKeywords функция извлекает ключевые слова, используя подход, основанный на разделителях, для идентификации ключевых слов-кандидатов. Функция по умолчанию использует знаки препинания и стоп-слова, заданные stopWords с языком, указанным языковыми деталями входных документов в качестве разделителей.

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

    Совет

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

    Алгоритмы

    свернуть все

    Быстрое автоматическое извлечение ключевых слов

    Для каждого документа rakeKeywords функция извлекает ключевые слова независимо, используя следующие шаги на основе [1]:

    1. Определение ключевых слов-кандидатов:

      • Извлекать последовательности маркеров между разделителями, указанными 'Delimiters' и 'MergingDelimiters' варианты. Функция обрабатывает каждую последовательность как одно ключевое слово-кандидат.

    2. Вычислите баллы для ключевых слов-кандидатов:

      • Создайте неориентированный невзвешенный граф с узлами, соответствующими отдельным маркерам в ключевых словах-кандидатах.

      • Добавьте края между узлами, где маркеры одновременно встречаются в ключевом слове-кандидате, включая собственные совпадения, взвешенные по количеству ключевых слов-кандидатов, содержащих это совпадение.

      • Оцените каждый маркер с помощью формулы deg(token) / freq(token), где deg(token) - количество ребер для указанного маркера и freq(token) - количество раз, когда указанный маркер встречается в документе.

      • Для каждого ключевого слова-кандидата назначьте оценку, заданную суммой оценок содержащихся маркеров.

    3. Извлечь ключевые слова из кандидатов:

      • Если существует несколько экземпляров одной и той же пары ключевых слов-кандидатов, разделенных одним и тем же разделителем слияния, то объедините ключевые слова-кандидаты и разделитель в одно ключевое слово и суммируйте соответствующие баллы.

      • Возвращает ключевые слова top k, где k задается значением 'MaxNumKeywords' вариант.

    Сведения о языке

    tokenizedDocument объекты содержат сведения о маркерах, включая сведения о языке. Сведения о языке входных документов определяют поведение rakeKeywords. tokenizedDocument функция по умолчанию автоматически определяет язык входного текста. Чтобы указать сведения о языке вручную, используйте 'Language' аргумент пары имя-значение tokenizedDocument. Для просмотра сведений о маркере используйте tokenDetails функция.

    Ссылки

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

    Представлен в R2020b