| 151 | } |
| 152 | |
| 153 | void ParseSeqTo(const std::vector<vec_int_t>& seqs, int window, |
| 154 | uint16_t user_group, vec_int_t* src_nodes, |
| 155 | vec_int_t* dst_nodes) { |
| 156 | // src_nodes: users |
| 157 | // dst_nodes: items |
| 158 | src_nodes->clear(); |
| 159 | dst_nodes->clear(); |
| 160 | |
| 161 | vec_int_t ctx_nodes; |
| 162 | for (const auto& seq : seqs) { |
| 163 | for (size_t i = 0; i < seq.size(); ++i) { |
| 164 | GenerateIthContext((int)i, window, window, seq, &ctx_nodes); |
| 165 | auto tgt_node = seq[i]; |
| 166 | auto tgt_group = io_util::GetNodeType(tgt_node); |
| 167 | for (auto ctx_node : ctx_nodes) { |
| 168 | auto ctx_group = io_util::GetNodeType(ctx_node); |
| 169 | if (tgt_group != ctx_group) { |
| 170 | if (tgt_group == user_group) { |
| 171 | src_nodes->emplace_back(tgt_node); |
| 172 | dst_nodes->emplace_back(ctx_node); |
| 173 | } else { |
| 174 | src_nodes->emplace_back(ctx_node); |
| 175 | dst_nodes->emplace_back(tgt_node); |
| 176 | } |
| 177 | } |
| 178 | } |
| 179 | } |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | } // namespace inst_util |
| 184 | } // namespace embedx |
no test coverage detected