В этом примере показано извлечение ключевых слов из текстовых данных с помощью TextRank.
Алгоритм извлечения ключевых слов TextRank извлекает ключевые слова, используя подход, основанный на тегах части речи, для идентификации ключевых слов-кандидатов и оценивает их с помощью совместных вхождений слов, определенных скользящим окном. Ключевые слова могут содержать несколько маркеров. Кроме того, алгоритм извлечения ключевых слов TextRank также объединяет ключевые слова при их последовательном отображении в документе.
Создайте массив маркированных документов, содержащих текстовые данные.
textData = [
"MATLAB provides really useful tools for engineers. Scientists use many useful MATLAB toolboxes."
"MATLAB and Simulink have many features. MATLAB and Simulink makes it easy to develop models."
"You can easily import data in MATLAB. In particular, you can easily import text data."];
documents = tokenizedDocument(textData);Извлеките ключевые слова с помощью textrankKeywords функция.
tbl = textrankKeywords(documents)
tbl=6×3 table
Keyword DocumentNumber Score
_____________________________________ ______________ ______
"useful" "MATLAB" "toolboxes" 1 4.8695
"useful" "" "" 1 2.3612
"MATLAB" "" "" 1 1.6212
"many" "features" "" 2 4.6152
"text" "data" "" 3 3.4781
"data" "" "" 3 1.7391
Если ключевое слово содержит несколько слов, то i-й элемент строкового массива соответствует i-му слову ключевого слова. Если ключевое слово имеет меньше слов, чем самое длинное ключевое слово, то остальные записи массива строк являются пустой строкой "".
Для удобочитаемости преобразуйте многословные ключевые слова в одно жало с помощью join и strip функции.
if size(tbl.Keyword,2) > 1 tbl.Keyword = strip(join(tbl.Keyword)); end head(tbl)
ans=6×3 table
Keyword DocumentNumber Score
_________________________ ______________ ______
"useful MATLAB toolboxes" 1 4.8695
"useful" 1 2.3612
"MATLAB" 1 1.6212
"many features" 2 4.6152
"text data" 3 3.4781
"data" 3 1.7391
textrankKeywords функция по умолчанию возвращает все идентифицированные ключевые слова. Чтобы уменьшить количество ключевых слов, используйте 'MaxNumKeywords' вариант.
Извлеките первые два ключевых слова для каждого документа, установив '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.6152
"text" "data" "" 3 3.4781
"data" "" "" 3 1.7391
Обратите внимание, что в извлеченных выше ключевых словах функция не рассматривает слово «import» в качестве ключевого слова. Это происходит потому, что алгоритм извлечения ключевых слов TextRank по умолчанию использует маркеры с тегами части речи «существительное», «собственное существительное» и «прилагательное» в качестве ключевых слов-кандидатов. Поскольку слово «import» является глаголом, алгоритм не рассматривает это как ключевое слово-кандидат. Аналогично, алгоритм не рассматривает наречие «легко» как ключевое слово-кандидат.
Чтобы указать, какие теги части речи следует использовать для идентификации ключевых слов-кандидатов, используйте 'PartOfSpeech' вариант.
Извлеките ключевые слова из того же текста, что и раньше, а также укажите теги части речи "adverb" и "verb".
newTags = ["adverb" "verb"]; tags = ["noun" "proper-noun" "adjective" newTags]; tbl = textrankKeywords(documents,'PartOfSpeech', tags)
tbl=7×3 table
Keyword DocumentNumber Score
____________________________________________ ______________ ______
"use" "many" "useful" "MATLAB" 1 5.8839
"useful" "" "" "" 1 2.0169
"MATLAB" "" "" "" 1 1.5478
"Simulink" "have" "many" "" 2 4.5058
"Simulink" "" "" "" 2 1.5161
"import" "text" "data" "" 3 4.7921
"import" "data" "" "" 3 3.4195
Обратите внимание, что функция рассматривает маркер «import» как ключевое слово-кандидат и объединяет его в многословные ключевые слова «import data» и «import text data».
Обратите внимание, что в извлеченных выше ключевых словах функция не извлекает наречие «легко» в качестве ключевого слова. Это происходит из-за близости этих слов в тексте к другим ключевым словам-кандидатам.
Алгоритм извлечения ключевых слов TextRank оценивает ключевые слова-кандидаты, используя число попарных совпадений в скользящем окне. Для увеличения размера окна используйте 'Window' вариант. Увеличение размера окна позволяет функции находить больше совпадений между ключевыми словами, что увеличивает показатели важности ключевых слов. Это может привести к нахождению более релевантных ключевых слов за счет потенциально завышенной оценки менее релевантных ключевых слов.
Извлеките ключевые слова из того же текста, что и раньше, а также укажите размер окна 3.
tbl = textrankKeywords(documents, ... 'PartOfSpeech', tags, ... 'Window',3)
tbl=8×3 table
Keyword DocumentNumber Score
____________________________________________ ______________ ______
"many" "useful" "MATLAB" "" 1 4.2185
"really" "useful" "" "" 1 2.8851
"MATLAB" "" "" "" 1 1.3154
"Simulink" "" "" "" 2 1.4526
"develop" "" "" "" 2 1.0912
"features" "" "" "" 2 1.0794
"easily" "import" "text" "data" 3 5.2989
"easily" "import" "data" "" 3 4.0842
Обратите внимание, что функция рассматривает маркеры «легко» как ключевые слова и объединяет их в многословные ключевые слова «легко импортировать текстовые данные» и «легко импортировать данные».
Дополнительные сведения об алгоритме извлечения ключевых слов TextRank см. в разделе Извлечение ключевых слов TextRank.
Можно экспериментировать с различными алгоритмами извлечения ключевых слов, чтобы увидеть, что лучше всего работает с данными. Поскольку алгоритм ключевых слов TextRank использует подход на основе тегов части речи для извлечения ключевых слов-кандидатов, извлеченные ключевые слова могут быть короткими. Можно также попытаться извлечь ключевые слова с помощью алгоритма RAKE, который извлекает последовательности маркеров, появляющихся между разделителями, в качестве ключевых слов-кандидатов. Чтобы извлечь ключевые слова с помощью RAKE, используйте rakeKeywords функция. Дополнительные сведения см. в разделе Извлечение ключевых слов из текстовых данных с помощью команды RAKE.
[1] Михальцея, Рада и Поль Тарау. «Textrank: Приведение порядка в текст». В Трудах 2004 конференции по эмпирическим методам обработки естественного языка, стр. 404-411. 2004.
extractSummary | rakeKeywords | textrankKeywords | tokenizedDocument