exponenta event banner

textrankKeywords

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

    Описание

    пример

    tbl = textrankKeywords(documents) извлекает ключевые слова и соответствующие оценки с помощью TextRank. Функция поддерживает английский, японский, немецкий и корейский тексты. Для других языков попробуйте использовать rakeKeywords вместо этого функция.

    пример

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

    Примеры

    свернуть все

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

    textData = [
        "MATLAB provides really useful tools for engineers. Scientists use many useful tools in MATLAB."
        "MATLAB and Simulink have many features. Use MATLAB and Simulink for engineering workflows."
        "Analyze text and images in MATLAB. Analyze text, images, and videos in MATLAB."];
    documents = tokenizedDocument(textData);

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

    tbl = textrankKeywords(documents)
    tbl=7×3 table
                     Keyword                 DocumentNumber    Score 
        _________________________________    ______________    ______
    
        "many"      "useful"      "tools"          1           5.2174
        "useful"    "tools"       ""               1           3.8778
        "many"      "features"    ""               2           4.0815
        "text"      ""            ""               3                1
        "images"    ""            ""               3                1
        "MATLAB"    ""            ""               3                1
        "videos"    ""            ""               3                1
    
    

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

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

    if size(tbl.Keyword,2) > 1
        tbl.Keyword = strip(join(tbl.Keyword));
    end
    tbl
    tbl=7×3 table
              Keyword          DocumentNumber    Score 
        ___________________    ______________    ______
    
        "many useful tools"          1           5.2174
        "useful tools"               1           3.8778
        "many features"              2           4.0815
        "text"                       3                1
        "images"                     3                1
        "MATLAB"                     3                1
        "videos"                     3                1
    
    

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

    textData = [
        "MATLAB provides really useful tools for engineers. Scientists use many useful MATLAB toolboxes."
        "MATLAB and Simulink have many features. Use MATLAB and Simulink for engineering workflows."
        "Analyze text and images in MATLAB. Analyze text, images, and videos in MATLAB."];
    documents = tokenizedDocument(textData);

    Извлеките два верхних ключевых слова с помощью textrankKeywords и установка '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.0815
        "text"      ""            ""                   3                1
        "images"    ""            ""                   3                1
    
    

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

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

    if size(tbl.Keyword,2) > 1
        tbl.Keyword = strip(join(tbl.Keyword));
    end
    tbl
    tbl=5×3 table
                 Keyword             DocumentNumber    Score 
        _________________________    ______________    ______
    
        "useful MATLAB toolboxes"          1           4.8695
        "useful"                           1           2.3612
        "many features"                    2           4.0815
        "text"                             3                1
        "images"                           3                1
    
    

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

    свернуть все

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

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

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

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

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

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

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

    Размер окна совместного вхождения, заданного как разделенная запятыми пара, состоящая из 'Window' и положительное целое число или Inf.

    Если размер окна равен 2, функция рассматривает совпадение между двумя ключевыми словами-кандидатами только тогда, когда они последовательно появляются в документе. Если размер окна равен Inf, то функция рассматривает совпадение между двумя ключевыми словами-кандидатами, когда они оба появляются в одном документе.

    Увеличение размера окна позволяет функции находить больше совпадений между ключевыми словами, что увеличивает показатели важности ключевых слов. Это может привести к нахождению более релевантных ключевых слов за счет потенциально завышенной оценки менее релевантных ключевых слов.

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

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

    Теги части речи, используемые для извлечения ключевых слов-кандидатов, указанные как пара, разделенная запятыми, состоящая из 'PartOfSpeech' и строковый массив, массив ячеек символьных векторов или категориальный массив, содержащий одно или несколько из следующих имен классов:

    • "adjective" - Прилагательное

    • "adposition" - Адпозиция

    • "adverb" - Наречие

    • "auxiliary-verb" - Вспомогательный глагол

    • "coord-conjunction" - Координация взаимодействия

    • "determiner" - Определитель

    • "interjection" - Междометие

    • "noun" - Существительное

    • "numeral" - Цифра

    • "particle" - Частица

    • "pronoun" - Местоимение

    • "proper-noun" - Собственное существительное

    • "punctuation" - Пунктуация

    • "subord-conjunction" - Подчиняющее сопряжение

    • "symbol" - Символ

    • "verb" - Глагол

    • "other" Другое

    Если PartOfSpeech является символьным вектором, то он должен соответствовать одной части речевого тега.

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

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

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

    свернуть все

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

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

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

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

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

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

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

    Подробнее

    свернуть все

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

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

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

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

    Совет

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

    Алгоритмы

    свернуть все

    Извлечение ключевого слова TextRank

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

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

      • Извлечь маркеры с частью речи, указанной 'PartOfSpeech' вариант.

    2. Рассчитайте баллы для каждого кандидата:

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

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

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

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

      • Выберите верхнюю треть ключевых слов-кандидатов в соответствии с их оценками.

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

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

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

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

    Ссылки

    [1] Михальцея, Рада и Поль Тарау. «Textrank: Приведение порядка в текст». В Трудах 2004 конференции по эмпирическим методам обработки естественного языка, стр. 404-411. 2004.

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