UserToItemAnnRecommender

class rectools.tools.ann.UserToItemAnnRecommender(user_vectors: np.ndarray, item_vectors: np.ndarray, user_id_map: tp.Union[IdMap, tp.Dict[ExternalId, InternalId]], item_id_map: tp.Union[IdMap, tp.Dict[ExternalId, InternalId]], index_top_k: int = 0, index_init_params: tp.Optional[tp.Dict[str, str]] = None, index_query_time_params: tp.Optional[tp.Dict[str, int]] = None, create_index_params: tp.Optional[tp.Dict[str, int]] = None, index: tp.Optional[nmslib.FloatIndex] = None)[source]

Bases: BaseNmslibRecommender

Class implements user to item ANN recommender.

Parameters
  • user_vectors (ndarray) – Ndarray of user latent features of size (M, K), where M is the number of items and K is the number of features.

  • item_vectors (ndarray) – Ndarray of item latent features of size (N, K), where N is the number of items and K is the number of features.

  • user_id_map (dict(hashable, int) | rectools.dataset.IdMap) – Mappings from external user ids to internal user ids used by recommender. Values must be positive integers.

  • item_id_map (dict(hashable, int) | rectools.dataset.IdMap) – Mappings from external item ids to internal item ids used by recommender. Values must be positive integers.

  • index_top_k (int, default 0) – Number of items to return per knn query (in addition to top_n passed to get_item_list_for_user, get_item_list_for_user_batch, get_item_list_for_item or get_item_list_for_item_batch). This might be important in order to account for filters. See self.index.knnQueryBatch in `_compute_sorted_similar’

  • index_init_params (optional(dict(str, str)), default None) – NMSLIB initialization parameters. See nmslib documentation. In case of None defaults to reasonable parameters.

  • index_query_time_params (optional(dict(str, int)), default None) – NMSLIB query time parameters. See nmslib documentation. In case of None defaults to reasonable parameters.

  • create_index_params (optional(dict(str, int)), default None) – NMSLIB index creation parameters. See nmslib documentation. In case of None defaults to reasonable parameters.

  • index (FloatIndex, optional) – Optional instance of FloatIndex. Exists for outside initialization.

get_item_list_for_user()[source]

Part of public API. Given user id and item ids, calculates recommendations via index query.

Parameters
  • user_id (Hashable) –

  • top_n (int) –

  • item_ids (Optional[Union[Sequence[Hashable], ndarray]]) –

Return type

Union[Sequence[Hashable], ndarray]

get_item_list_for_user_batch()[source]

Part of public API. Does what get_item_list_for_user, except it takes a batch of user ids and a batch of item sets.

Parameters
  • user_ids (Union[Sequence[Hashable], ndarray]) –

  • top_n (int) –

  • item_ids (Optional[Sequence[Union[Sequence[Hashable], ndarray]]]) –

Return type

Sequence[Union[Sequence[Hashable], ndarray]]

Inherited-members

Parameters
  • user_vectors (np.ndarray) –

  • item_vectors (np.ndarray) –

  • user_id_map (tp.Union[IdMap, tp.Dict[ExternalId, InternalId]]) –

  • item_id_map (tp.Union[IdMap, tp.Dict[ExternalId, InternalId]]) –

  • index_top_k (int) –

  • index_init_params (tp.Optional[tp.Dict[str, str]]) –

  • index_query_time_params (tp.Optional[tp.Dict[str, int]]) –

  • create_index_params (tp.Optional[tp.Dict[str, int]]) –

  • index (tp.Optional[nmslib.FloatIndex]) –

Methods

fit([verbose])

Create and fit nmslib index.

get_item_list_for_user(user_id, top_n[, ...])

Calculate top n recommendations for a given user id.

get_item_list_for_user_batch(user_ids, top_n)

Calculate top-n recommendations for given user ids and item lists.

get_item_list_for_user(user_id: Hashable, top_n: int, item_ids: Optional[Union[Sequence[Hashable], ndarray]] = None) Union[Sequence[Hashable], ndarray][source]

Calculate top n recommendations for a given user id.

Parameters
  • user_id (hashable) – User id used by external systems.

  • top_n (int) – How many items to return.

  • item_ids (optional(sequence(hashable)), default None) – A set of item ids from which to recommend. In case of None this function recommends without constraints.

Returns

Sorted sequence of external ids

Return type

sequence(hashable)

get_item_list_for_user_batch(user_ids: Union[Sequence[Hashable], ndarray], top_n: int, item_ids: Optional[Sequence[Union[Sequence[Hashable], ndarray]]] = None) Sequence[Union[Sequence[Hashable], ndarray]][source]

Calculate top-n recommendations for given user ids and item lists. Item lists define which items are allowed to be recommended.

Parameters
  • user_ids (sequence(hashable)) – List of user ids used by external systems.

  • top_n (int) – How many items to return.

  • item_ids (optional(sequence(sequence(hashable))), default None) – List of lists of allowed items for each user id from user_ids in that exact order. In case of None this function recommends without constraints.

Returns

Sequence of sorted sequences of external ids.

Return type

sequence(sequence(hashable))