CountVectorizer в R не помещает все слова в сумку - PullRequest
0 голосов
/ 18 марта 2019

У меня есть такой фрейм данных:

    id                 words
 1:  1          capuccin,mok
 2:  2 bimboll,ext,sajonjoli
 3:  3          burrit,sincr
 4:  4  div,tir,mini,doradit
 5:  5   pan,multigran,linaz
 6:  6         tost,integral
 7:  7             pan,blanc
 8:  8  sup,pan,bco,ajonjoli
 9:  9                  wond
10: 10                  wond

Я использую следующие коды:

bag_of_words <- CountVectorizer$new()
result_df <- cbind(df$id, bag_of_words$fit_transform(df$words))

Я хотел бы получить что-то подобное:

   tab_1$id capuccin mok bimboll ext sajonjoli...
1         1        1   1       0   0         0...
2         2        0   0       1   1         1...
3         3        0   0       0   0         0...
4       ...      ... ...     ... ...       ...

Но вместо этого он возвращает матрицу с количеством вхождений каждого слова, он просто возвращает со словом wond :

   df$id wond
1         1    0
2         2    0
3         3    0
4         4    0
5         5    0
6         6    0
7         7    0
8         8    0
9         9    1
10       10    1

Что не так с моим кодом

1 Ответ

0 голосов
/ 18 марта 2019

Я понял это, используя метод silimar, чем предложенный tmfmnk в комментариях.

tab_1 <- tab_1 %>%
  unnest(words) %>%
  mutate(words = strsplit(words, ','), occ = 1) %>%
  dcast(id ~ unlist(words), fill = 0)

Теперь он работает как положено.

id ajonjoli bco bimboll ...
1         0   0       0 ...
2         0   0       1 ...
3         0   0       0 ...
...     ... ...     ...
...