В этом примере показано, как извлечь ключевые слова из текстовых данных с помощью Быстрой автоматической экстракции ключевого слова (RAKE).
Алгоритм RAKE извлекает ключевые слова с помощью основанного на разделителе подхода, чтобы идентифицировать ключевые слова кандидата и баллы их использующий совместные встречаемости слова, которые появляются в ключевых словах кандидата. Ключевые слова могут содержать несколько лексем. Кроме того, алгоритм RAKE также объединяет ключевые слова, когда они кажутся многократно, разделенными тем же разделителем слияния.
Создайте массив маркируемого документа, содержащего текстовые данные.
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 head(tbl)
ans=8×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
rakeKeywords
функция, по умолчанию, возвращает все идентифицированные ключевые слова. Чтобы сократить количество ключевых слов, используйте 'MaxNumKeywords'
опция.
Извлеките лучшие три ключевых слова для каждого документа путем установки 'MaxNumKeywords'
опция к 3.
tbl = rakeKeywords(documents,'MaxNumKeywords',3)
tbl=9×3 table
Keyword DocumentNumber Score
_________________________________________ ______________ _____
"MATLAB" "provides" "tools" 1 8
"MATLAB" "" "" 1 2
"scientists" "and" "engineers" 1 2
"Analyze" "text" "" 2 4
"import" "text" "" 2 4
"images" "" "" 2 1
"Analyze" "text" "" 3 4
"MATLAB" "" "" 3 1
"images" "" "" 3 1
Заметьте, что в извлеченных ключевых словах выше, функция извлекает ключевое слово многословное "ученые и инженеры" из первого документа, но не извлекает ключевое слово многословное "текст и отображает" из второго документа. Это вызвано тем, что алгоритм RAKE использует лексемы, появляющиеся между разделителями как ключевые слова кандидата, и алгоритм только объединяет ключевые слова с разделителями, когда объединенная фраза появляется многократно.
В этом случае, экземпляры маркерного "текста" появляется в двух различных кандидатах ключевого слова многословных, "Анализируют текст", и "импортируют текст". Поскольку в этом случае функция не извлекает "текст" как отдельное ключевое слово кандидата, алгоритм не рассматривает кандидатов слияния с разделителем "и" и ключевое слово кандидата "изображения".
Можно задать разделители, используемые для извлечения ключевых слов с помощью 'Delimiters'
и 'MergingDelimiters'
опции. Чтобы задать разделители, которые не должны появляться в извлеченных ключевых словах, используйте 'Delimiters'
опция. Чтобы задать разделители, которые могут появиться в извлеченных ключевых словах, используйте 'MergingDelimiters'
опция.
Извлеките ключевые слова из того же текста как прежде и также задайте слова "Analyze" и "импорт" как слияние разделителей.
newDelimiters = ["Analyze" "import"]; mergingDelimiters = [stopWords newDelimiters]; tbl = rakeKeywords(documents,'MergingDelimiters', mergingDelimiters)
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
"text" "and" "images" 2 2
"images" "" "" 2 1
"text" "" "" 2 1
"MATLAB" "" "" 3 1
"images" "" "" 3 1
"text" "" "" 3 1
"videos" "" "" 3 1
Заметьте здесь, что функция обрабатывает лексемы "текст" и "отображает" как ключевые слова и также извлекает объединенное ключевое слово "текст и изображения". Чтобы узнать больше об алгоритме RAKE, смотрите Быструю Автоматическую Экстракцию Ключевого слова.
Можно экспериментировать с различными алгоритмами экстракции ключевого слова, чтобы видеть то, что работает лучше всего с данными. Поскольку алгоритм RAKE использует основанный на разделителе подход, чтобы извлечь ключевые слова кандидата, извлеченные ключевые слова могут быть очень длинными. В качестве альтернативы можно попытаться извлечь использование ключевых слов алгоритм TextRank, который запускается с отдельных лексем как ключевые слова кандидата и затем объединяет их в надлежащих случаях. Чтобы извлечь использование ключевых слов TextRank, используйте textrankKeywords
функция. Чтобы узнать больше, смотрите Ключевые слова Извлечения из текстовых Данных Используя TextRank.
[1] Повысился, Стюарт, Дэйв Энгель, Ник Крамер и Венди Коули. "Автоматическая экстракция ключевого слова из отдельных документов". Анализ текста: приложения и теория 1 (2010): 1-20.
tokenizedDocument
| rakeKeywords
| textrankKeywords
| extractSummary