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. Извлеките ключевые слова из кандидатов:

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

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

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

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

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

    Ссылки

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

    Введенный в R2020b