Это огромная область для начала изучения.
Я бы настоятельно рекомендовал взглянуть на книгу и пакет материалов по tidytextmining, а также на личные блоги авторов (https://juliasilge.com, http://varianceexplained.org) Существует огромное количество отличной работы, которая поможет вам начать, и она действительно хорошо написана для новичков в NLP.
Также очень полезны для вас библиотеки библиотек widyr и udpipe.
Вот пара примеров: используя widyr, мы можем посмотреть попарно pmi между словом, скажем, финансирование и всеми другими словами, с которыми оно имеет какое-либо отношение. Для получения информации о PMI проверьте: https://stackoverflow.com/a/13492808/2862791
library(tidytext)
library(tidyverse)
texts <- tibble(text = c('This funding would help us create a new website and hire talented people',
'this random funding function talented people',
'hire hire hire new website funding',
'fun fun fun for all'))
tidy_texts %>%
pairwise_pmi(word, id) %>%
filter(item1 == 'funding') %>%
top_n(5, wt = pmi) %>%
arrange(desc(pmi))
item1 item2 pmi
<chr> <chr> <dbl>
1 funding this -0.0205
2 funding would -0.0205
3 funding help -0.0205
4 funding us -0.0205
Итак, чтобы ввести прилагательные и фразы, вы можете посмотреть на udpipe, как подсказал Боски. Я собираюсь воспроизвести вышеупомянутое и для расчета PMI, поскольку это действительно интуитивно понятный и быстрый способ вычисления метрики
library(udpipe)
english <- udpipe_download_model(language = "english")
ud_english <- udpipe_load_model(english$file_model)
tagged <- udpipe_annotate(ud_english, x = texts$text)
tagged_df <- as.data.frame(tagged)
tagged_df %>%
filter(upos == 'ADJ' |
token == 'funding') %>%
pairwise_pmi(token, doc_id) %>%
filter(item1 == 'funding')
item1 item2 pmi
<chr> <chr> <dbl>
1 funding new 0.170
2 funding talented 0.170
Вы упомянули cleanNLP, которая является отличной библиотекой для такого рода работы. Она упрощает доступ к udpipe, spacyr и нескольким другим методам.которые делают вид токенизации и тегирования, необходимых для этого прилагательного.
Если вы можете пройти мимо настроек, spacyr - мой предпочтительный вариант только потому, что он самый быстрый, но если скорость не проблема, я бы простоиспользуйте udpipe, поскольку он очень прост в использовании.
Нужно ли мне токенизировать все слова?Если да, то не возникнут ли у меня проблемы с группировкой фраз?
Так что у udpipe и других текстовых аннотаторов есть решение для этого.В UDPIPE вы можете использовать "Keywords_collocation ()", который идентифицирует слова, которые встречаются вместе чаще, чем ожидалось, случайным образом.
Нам нужен текстовый набор данных больше, чем три ненужных предложения, которые я написал выше, чтобы получить воспроизводимый пример.
Но вы можете многое узнать через этот блог: https://bnosac.github.io/udpipe/docs/doc7.html
Извините, этот ответ является своего рода набором ссылок ... но, как я уже сказал, это огромная область изучения.