in recommenders/models/newsrec/io/mind_all_iterator.py [0:0]
def parser_one_line(self, line):
"""Parse one string line into feature values.
Args:
line (str): a string indicating one instance.
Yields:
list: Parsed results including label, impression id , user id,
candidate_title_index, clicked_title_index,
candidate_ab_index, clicked_ab_index,
candidate_vert_index, clicked_vert_index,
candidate_subvert_index, clicked_subvert_index,
"""
if self.npratio > 0:
impr_label = self.labels[line]
impr = self.imprs[line]
poss = []
negs = []
for news, click in zip(impr, impr_label):
if click == 1:
poss.append(news)
else:
negs.append(news)
for p in poss:
candidate_title_index = []
impr_index = []
user_index = []
label = [1] + [0] * self.npratio
n = newsample(negs, self.npratio)
candidate_title_index = self.news_title_index[[p] + n]
candidate_ab_index = self.news_ab_index[[p] + n]
candidate_vert_index = self.news_vert_index[[p] + n]
candidate_subvert_index = self.news_subvert_index[[p] + n]
click_title_index = self.news_title_index[self.histories[line]]
click_ab_index = self.news_ab_index[self.histories[line]]
click_vert_index = self.news_vert_index[self.histories[line]]
click_subvert_index = self.news_subvert_index[self.histories[line]]
impr_index.append(self.impr_indexes[line])
user_index.append(self.uindexes[line])
yield (
label,
impr_index,
user_index,
candidate_title_index,
candidate_ab_index,
candidate_vert_index,
candidate_subvert_index,
click_title_index,
click_ab_index,
click_vert_index,
click_subvert_index,
)
else:
impr_label = self.labels[line]
impr = self.imprs[line]
for news, label in zip(impr, impr_label):
candidate_title_index = []
impr_index = []
user_index = []
label = [label]
candidate_title_index.append(self.news_title_index[news])
click_title_index = self.news_title_index[self.histories[line]]
candidate_title_index = self.news_title_index[news]
candidate_ab_index = self.news_ab_index[news]
candidate_vert_index = self.news_vert_index[news]
candidate_subvert_index = self.news_subvert_index[news]
click_title_index = self.news_title_index[self.histories[line]]
click_ab_index = self.news_ab_index[self.histories[line]]
click_vert_index = self.news_vert_index[self.histories[line]]
click_subvert_index = self.news_subvert_index[self.histories[line]]
impr_index.append(self.impr_indexes[line])
user_index.append(self.uindexes[line])
yield (
label,
impr_index,
user_index,
candidate_title_index,
candidate_ab_index,
candidate_vert_index,
candidate_subvert_index,
click_title_index,
click_ab_index,
click_vert_index,
click_subvert_index,
)