В этом примере показано, как извлечь ключевые слова из текстовых данных с помощью Rapid Automatic Keyword Extraction (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
The 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 использует лексемы, появляющиеся между разделителями, в качестве ключевых слов-кандидатов, и алгоритм только объединяет ключевые слова с разделителями, когда объединенная фраза появляется несколько раз.
В этом случае образцы маркера «text» появляются внутри двух различных многословных кандидатов ключевых слов «Analyze text» и «import text». Поскольку в этом случае функция не извлекает «текст» как отдельное ключевое слово кандидата, алгоритм не рассматривает слияние кандидатов с разделителем «и» и ключевым словом кандидата « изображений».
Можно задать разделители, используемые для извлечения ключевых слов с помощью 'Delimiters'
и 'MergingDelimiters'
опции. Чтобы задать разделители, которые не должны появляться в извлеченных ключевых словах, используйте 'Delimiters'
опция. Чтобы задать разделители, которые могут появиться в извлеченных ключевых словах, используйте 'MergingDelimiters'
опция.
Извлеките ключевые слова из того же текста, что и ранее, а также укажите слова «Analyze» и «import» в качестве объединяющих разделителей.
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
Заметьте здесь, что функция обрабатывает лексемы «text» и «image» как ключевые слова, а также извлекает объединенное ключевое слово «text and image». Дополнительные сведения об алгоритме RAKE см. в разделе Быстрая автоматическая экстракция ключевых слов.
Можно экспериментировать с различными алгоритмами извлечения ключевых слов, чтобы увидеть, что лучше всего работает с вашими данными. Поскольку алгоритм RAKE использует основанный на разделителе подход для извлечения ключевых слов кандидата, извлеченные ключевые слова могут быть очень длинными. Также можно попробовать извлечь ключевые слова с помощью алгоритма TextRank, который начинается с отдельных лексем в качестве ключевых слов кандидата и затем объединяет их, когда это необходимо. Чтобы извлечь ключевые слова с помощью TextRank, используйте textrankKeywords
функция. Дополнительные сведения см. в разделе Извлечение ключевых слов из текстовых данных с помощью TextRank.
[1] Роуз, Стюарт, Дэйв Энгел, Ник Крамер и Венди Коули. «Автоматическое извлечение ключевых слов из отдельных документов». Майнинг текста: приложения и теория 1 (2010): 1-20.
extractSummary
| rakeKeywords
| textrankKeywords
| tokenizedDocument