учитывая мои входные данные в идентификаторе пользователя, в формате itemid:
raw: {userid: bytearray,itemid: bytearray}
dump raw;
(A,1)
(A,2)
(A,4)
(A,5)
(B,2)
(B,3)
(B,5)
(C,1)
(C,5)
grpd = GROUP raw BY userid;
dump grpd;
(A,{(A,1),(A,2),(A,4),(A,5)})
(B,{(B,2),(B,3),(B,5)})
(C,{(C,1),(C,5)})
Я хотел бы создать все комбинации (порядок не важен) предметов в каждой группе. В конце концов я намереваюсь выполнить сходство с jaccard для предметов в моей группе.
в идеале мои биграммы будут сгенерированы, и тогда я бы ПЛАВИЛА вывод, чтобы выглядеть так:
(A, (1,2))
(A, (1,3))
(A, (1,4))
(A, (2,3))
(A, (2,4))
(A, (3,4))
(B, (1,2))
(B, (2,3))
(B, (3,5))
(C, (1,5))
Буквы ABC, которые представляют ИД пользователя, на самом деле не нужны для вывода, я просто показываю их в иллюстративных целях. Оттуда я бы посчитал количество вхождений каждой биграммы, чтобы вычислить jaccard. Я хотел бы знать, использует ли кто-нибудь еще свинью для подобных схожих кальков (извините!) И уже сталкивался с этим.
Я посмотрел на NGramGenerator, который поставляется с учебными пособиями по свиньям, но он не совсем соответствует тому, что я пытаюсь выполнить. Я задаюсь вопросом, может быть, пойдет потоковая UDF на Python.