rakeKeywords

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

    Описание

    пример

    tbl = rakeKeywords(documents) извлекает ключевые слова и соответствующие счета с помощью алгоритма быстрого автоматического извлечения ключевых слов (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. Извлеките ключевые слова из кандидатов:

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

      • Верните ключевые k верхнего уровня, где k задается 'MaxNumKeywords' опция.

    Подробная информация о языке

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

    Ссылки

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

    Введенный в R2020b