Я использую dplyr для разбора столбца, содержащего предложения, и вычисления количества nграмм для каждого из них. Вот пример, демонстрирующий проблему, с которой я столкнулся.Использование mutate для получения числа ngrams
Как вы видите, ожидается, что ngram_cnt будет 3 и 4, но результат будет равен столбцу 3,3. Проблема в том, что код возвращает число ngrams для первого предложения, игнорируя остальные. Вы можете попытаться добавить дополнительные предложения, имеющие тот же эффект. Что я делаю не так?
library(NLP)
library(dplyr)
library(stringr)
phrases <- c("this is the first", "and then comes the second")
df <- data.frame(phrase = phrases, id = c(1, 2))
df %>% mutate(ngram_cnt = length(ngrams(str_split(phrase, "\\s")[[1]], 2)))
Если я скажу,
phrases <- c("this is the first", "and then comes the second",
"and the third which is even longer")
df <- data.frame(phrase = phrases, id = c(1, 2, 3))
df %>% mutate(ngram_cnt = str_length(phrase))
тогда я получаю ожидаемые результаты (а именно, длина каждого предложения).