replay-rec 0.20.3rc0__py3-none-any.whl → 0.21.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. replay/__init__.py +1 -1
  2. replay/data/dataset.py +11 -0
  3. replay/data/nn/__init__.py +3 -0
  4. replay/data/nn/parquet/__init__.py +22 -0
  5. replay/data/nn/parquet/collate.py +29 -0
  6. replay/data/nn/parquet/constants/batches.py +8 -0
  7. replay/data/nn/parquet/constants/device.py +3 -0
  8. replay/data/nn/parquet/constants/filesystem.py +3 -0
  9. replay/data/nn/parquet/constants/metadata.py +5 -0
  10. replay/data/nn/parquet/fixed_batch_dataset.py +157 -0
  11. replay/data/nn/parquet/impl/array_1d_column.py +140 -0
  12. replay/data/nn/parquet/impl/array_2d_column.py +160 -0
  13. replay/data/nn/parquet/impl/column_protocol.py +17 -0
  14. replay/data/nn/parquet/impl/indexing.py +123 -0
  15. replay/data/nn/parquet/impl/masking.py +20 -0
  16. replay/data/nn/parquet/impl/named_columns.py +100 -0
  17. replay/data/nn/parquet/impl/numeric_column.py +110 -0
  18. replay/data/nn/parquet/impl/utils.py +17 -0
  19. replay/data/nn/parquet/info/distributed_info.py +40 -0
  20. replay/data/nn/parquet/info/partitioning.py +132 -0
  21. replay/data/nn/parquet/info/replicas.py +67 -0
  22. replay/data/nn/parquet/info/worker_info.py +43 -0
  23. replay/data/nn/parquet/iterable_dataset.py +119 -0
  24. replay/data/nn/parquet/iterator.py +61 -0
  25. replay/data/nn/parquet/metadata/__init__.py +19 -0
  26. replay/data/nn/parquet/metadata/metadata.py +116 -0
  27. replay/data/nn/parquet/parquet_dataset.py +176 -0
  28. replay/data/nn/parquet/parquet_module.py +178 -0
  29. replay/data/nn/parquet/partitioned_iterable_dataset.py +56 -0
  30. replay/data/nn/parquet/utils/compute_length.py +66 -0
  31. replay/data/nn/schema.py +12 -14
  32. replay/data/nn/sequence_tokenizer.py +5 -0
  33. replay/data/nn/sequential_dataset.py +4 -0
  34. replay/data/nn/torch_sequential_dataset.py +5 -0
  35. replay/data/utils/batching.py +69 -0
  36. replay/data/utils/typing/__init__.py +0 -0
  37. replay/data/utils/typing/dtype.py +65 -0
  38. replay/metrics/torch_metrics_builder.py +20 -14
  39. replay/models/nn/loss/sce.py +2 -7
  40. replay/models/nn/optimizer_utils/__init__.py +6 -1
  41. replay/models/nn/optimizer_utils/optimizer_factory.py +15 -0
  42. replay/models/nn/sequential/bert4rec/dataset.py +70 -29
  43. replay/models/nn/sequential/bert4rec/lightning.py +97 -36
  44. replay/models/nn/sequential/bert4rec/model.py +11 -11
  45. replay/models/nn/sequential/callbacks/prediction_callbacks.py +50 -8
  46. replay/models/nn/sequential/callbacks/validation_callback.py +23 -6
  47. replay/models/nn/sequential/compiled/base_compiled_model.py +12 -4
  48. replay/models/nn/sequential/compiled/bert4rec_compiled.py +15 -5
  49. replay/models/nn/sequential/compiled/sasrec_compiled.py +16 -7
  50. replay/models/nn/sequential/postprocessors/_base.py +5 -0
  51. replay/models/nn/sequential/postprocessors/postprocessors.py +4 -0
  52. replay/models/nn/sequential/sasrec/dataset.py +81 -26
  53. replay/models/nn/sequential/sasrec/lightning.py +86 -24
  54. replay/models/nn/sequential/sasrec/model.py +14 -9
  55. replay/nn/__init__.py +8 -0
  56. replay/nn/agg.py +109 -0
  57. replay/nn/attention.py +158 -0
  58. replay/nn/embedding.py +283 -0
  59. replay/nn/ffn.py +135 -0
  60. replay/nn/head.py +49 -0
  61. replay/nn/lightning/__init__.py +1 -0
  62. replay/nn/lightning/callback/__init__.py +9 -0
  63. replay/nn/lightning/callback/metrics_callback.py +183 -0
  64. replay/nn/lightning/callback/predictions_callback.py +314 -0
  65. replay/nn/lightning/module.py +123 -0
  66. replay/nn/lightning/optimizer.py +60 -0
  67. replay/nn/lightning/postprocessor/__init__.py +2 -0
  68. replay/nn/lightning/postprocessor/_base.py +51 -0
  69. replay/nn/lightning/postprocessor/seen_items.py +83 -0
  70. replay/nn/lightning/scheduler.py +91 -0
  71. replay/nn/loss/__init__.py +22 -0
  72. replay/nn/loss/base.py +197 -0
  73. replay/nn/loss/bce.py +216 -0
  74. replay/nn/loss/ce.py +317 -0
  75. replay/nn/loss/login_ce.py +373 -0
  76. replay/nn/loss/logout_ce.py +230 -0
  77. replay/nn/mask.py +87 -0
  78. replay/nn/normalization.py +9 -0
  79. replay/nn/output.py +37 -0
  80. replay/nn/sequential/__init__.py +9 -0
  81. replay/nn/sequential/sasrec/__init__.py +7 -0
  82. replay/nn/sequential/sasrec/agg.py +53 -0
  83. replay/nn/sequential/sasrec/diff_transformer.py +125 -0
  84. replay/nn/sequential/sasrec/model.py +377 -0
  85. replay/nn/sequential/sasrec/transformer.py +107 -0
  86. replay/nn/sequential/twotower/__init__.py +2 -0
  87. replay/nn/sequential/twotower/model.py +674 -0
  88. replay/nn/sequential/twotower/reader.py +89 -0
  89. replay/nn/transform/__init__.py +22 -0
  90. replay/nn/transform/copy.py +38 -0
  91. replay/nn/transform/grouping.py +39 -0
  92. replay/nn/transform/negative_sampling.py +182 -0
  93. replay/nn/transform/next_token.py +100 -0
  94. replay/nn/transform/rename.py +33 -0
  95. replay/nn/transform/reshape.py +41 -0
  96. replay/nn/transform/sequence_roll.py +48 -0
  97. replay/nn/transform/template/__init__.py +2 -0
  98. replay/nn/transform/template/sasrec.py +53 -0
  99. replay/nn/transform/template/twotower.py +22 -0
  100. replay/nn/transform/token_mask.py +69 -0
  101. replay/nn/transform/trim.py +51 -0
  102. replay/nn/utils.py +28 -0
  103. replay/preprocessing/filters.py +128 -0
  104. replay/preprocessing/label_encoder.py +36 -33
  105. replay/preprocessing/utils.py +209 -0
  106. replay/splitters/__init__.py +1 -0
  107. replay/splitters/random_next_n_splitter.py +224 -0
  108. replay/utils/common.py +10 -4
  109. {replay_rec-0.20.3rc0.dist-info → replay_rec-0.21.0.dist-info}/METADATA +18 -12
  110. replay_rec-0.21.0.dist-info/RECORD +223 -0
  111. replay/experimental/metrics/__init__.py +0 -62
  112. replay/experimental/metrics/base_metric.py +0 -603
  113. replay/experimental/metrics/coverage.py +0 -97
  114. replay/experimental/metrics/experiment.py +0 -175
  115. replay/experimental/metrics/hitrate.py +0 -26
  116. replay/experimental/metrics/map.py +0 -30
  117. replay/experimental/metrics/mrr.py +0 -18
  118. replay/experimental/metrics/ncis_precision.py +0 -31
  119. replay/experimental/metrics/ndcg.py +0 -49
  120. replay/experimental/metrics/precision.py +0 -22
  121. replay/experimental/metrics/recall.py +0 -25
  122. replay/experimental/metrics/rocauc.py +0 -49
  123. replay/experimental/metrics/surprisal.py +0 -90
  124. replay/experimental/metrics/unexpectedness.py +0 -76
  125. replay/experimental/models/__init__.py +0 -50
  126. replay/experimental/models/admm_slim.py +0 -257
  127. replay/experimental/models/base_neighbour_rec.py +0 -200
  128. replay/experimental/models/base_rec.py +0 -1386
  129. replay/experimental/models/base_torch_rec.py +0 -234
  130. replay/experimental/models/cql.py +0 -454
  131. replay/experimental/models/ddpg.py +0 -932
  132. replay/experimental/models/dt4rec/dt4rec.py +0 -189
  133. replay/experimental/models/dt4rec/gpt1.py +0 -401
  134. replay/experimental/models/dt4rec/trainer.py +0 -127
  135. replay/experimental/models/dt4rec/utils.py +0 -264
  136. replay/experimental/models/extensions/spark_custom_models/als_extension.py +0 -792
  137. replay/experimental/models/hierarchical_recommender.py +0 -331
  138. replay/experimental/models/implicit_wrap.py +0 -131
  139. replay/experimental/models/lightfm_wrap.py +0 -303
  140. replay/experimental/models/mult_vae.py +0 -332
  141. replay/experimental/models/neural_ts.py +0 -986
  142. replay/experimental/models/neuromf.py +0 -406
  143. replay/experimental/models/scala_als.py +0 -293
  144. replay/experimental/models/u_lin_ucb.py +0 -115
  145. replay/experimental/nn/data/__init__.py +0 -1
  146. replay/experimental/nn/data/schema_builder.py +0 -102
  147. replay/experimental/preprocessing/__init__.py +0 -3
  148. replay/experimental/preprocessing/data_preparator.py +0 -839
  149. replay/experimental/preprocessing/padder.py +0 -229
  150. replay/experimental/preprocessing/sequence_generator.py +0 -208
  151. replay/experimental/scenarios/__init__.py +0 -1
  152. replay/experimental/scenarios/obp_wrapper/__init__.py +0 -8
  153. replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py +0 -74
  154. replay/experimental/scenarios/obp_wrapper/replay_offline.py +0 -261
  155. replay/experimental/scenarios/obp_wrapper/utils.py +0 -85
  156. replay/experimental/scenarios/two_stages/reranker.py +0 -117
  157. replay/experimental/scenarios/two_stages/two_stages_scenario.py +0 -757
  158. replay/experimental/utils/logger.py +0 -24
  159. replay/experimental/utils/model_handler.py +0 -186
  160. replay/experimental/utils/session_handler.py +0 -44
  161. replay_rec-0.20.3rc0.dist-info/RECORD +0 -193
  162. /replay/{experimental → data/nn/parquet/constants}/__init__.py +0 -0
  163. /replay/{experimental/models/dt4rec → data/nn/parquet/impl}/__init__.py +0 -0
  164. /replay/{experimental/models/extensions/spark_custom_models → data/nn/parquet/info}/__init__.py +0 -0
  165. /replay/{experimental/scenarios/two_stages → data/nn/parquet/utils}/__init__.py +0 -0
  166. /replay/{experimental → data}/utils/__init__.py +0 -0
  167. {replay_rec-0.20.3rc0.dist-info → replay_rec-0.21.0.dist-info}/WHEEL +0 -0
  168. {replay_rec-0.20.3rc0.dist-info → replay_rec-0.21.0.dist-info}/licenses/LICENSE +0 -0
  169. {replay_rec-0.20.3rc0.dist-info → replay_rec-0.21.0.dist-info}/licenses/NOTICE +0 -0
@@ -1,24 +0,0 @@
1
- import logging
2
-
3
-
4
- def get_logger(
5
- name,
6
- level=logging.INFO,
7
- format_str="%(asctime)s [%(pathname)s:%(lineno)s - %(levelname)s ] %(message)s",
8
- date_format="%Y-%m-%d %H:%M:%S",
9
- file=False,
10
- ):
11
- """
12
- Get python logger instance
13
- """
14
- logger = logging.getLogger(name)
15
- logger.setLevel(level)
16
-
17
- if not logger.hasHandlers():
18
- handler = logging.StreamHandler() if not file else logging.FileHandler(name)
19
- handler.setLevel(level)
20
- formatter = logging.Formatter(fmt=format_str, datefmt=date_format)
21
- handler.setFormatter(formatter)
22
- logger.addHandler(handler)
23
-
24
- return logger
@@ -1,186 +0,0 @@
1
- import json
2
- from inspect import getfullargspec
3
- from os.path import join
4
- from pathlib import Path
5
- from typing import Union
6
-
7
- from replay.experimental.models.base_rec import BaseRecommender
8
- from replay.experimental.preprocessing import Indexer
9
- from replay.utils import PYSPARK_AVAILABLE
10
- from replay.utils.session_handler import State
11
- from replay.utils.spark_utils import load_pickled_from_parquet, save_picklable_to_parquet
12
-
13
- if PYSPARK_AVAILABLE:
14
- import pyspark.sql.types as st
15
- from pyspark.ml.feature import IndexToString, StringIndexerModel
16
- from pyspark.sql import SparkSession
17
-
18
- from replay.utils.model_handler import get_fs
19
-
20
- def get_list_of_paths(spark: SparkSession, dir_path: str):
21
- """
22
- Returns list of paths to files in the `dir_path`
23
-
24
- :param spark: spark session
25
- :param dir_path: path to dir in hdfs or local disk
26
- :return: list of paths to files
27
- """
28
- fs = get_fs(spark)
29
- statuses = fs.listStatus(spark._jvm.org.apache.hadoop.fs.Path(dir_path))
30
- return [str(f.getPath()) for f in statuses]
31
-
32
-
33
- def save(model: BaseRecommender, path: Union[str, Path], overwrite: bool = False):
34
- """
35
- Save fitted model to disk as a folder
36
-
37
- :param model: Trained recommender
38
- :param path: destination where model files will be stored
39
- :return:
40
- """
41
- if isinstance(path, Path):
42
- path = str(path)
43
-
44
- spark = State().session
45
-
46
- fs = get_fs(spark)
47
- if not overwrite:
48
- is_exists = fs.exists(spark._jvm.org.apache.hadoop.fs.Path(path))
49
- if is_exists:
50
- msg = f"Path '{path}' already exists. Mode is 'overwrite = False'."
51
- raise FileExistsError(msg)
52
-
53
- fs.mkdirs(spark._jvm.org.apache.hadoop.fs.Path(path))
54
- model._save_model(join(path, "model"))
55
-
56
- init_args = model._init_args
57
- init_args["_model_name"] = str(model)
58
- sc = spark.sparkContext
59
- df = spark.read.json(sc.parallelize([json.dumps(init_args)]))
60
- df.coalesce(1).write.mode("overwrite").option("ignoreNullFields", "false").json(join(path, "init_args.json"))
61
-
62
- dataframes = model._dataframes
63
- df_path = join(path, "dataframes")
64
- for name, df in dataframes.items():
65
- if df is not None:
66
- df.write.mode("overwrite").parquet(join(df_path, name))
67
-
68
- if hasattr(model, "fit_users"):
69
- model.fit_users.write.mode("overwrite").parquet(join(df_path, "fit_users"))
70
- if hasattr(model, "fit_items"):
71
- model.fit_items.write.mode("overwrite").parquet(join(df_path, "fit_items"))
72
- if hasattr(model, "study"):
73
- save_picklable_to_parquet(model.study, join(path, "study"))
74
-
75
-
76
- def load(path: str, model_type=None) -> BaseRecommender:
77
- """
78
- Load saved model from disk
79
-
80
- :param path: path to model folder
81
- :return: Restored trained model
82
- """
83
- spark = State().session
84
- args = spark.read.json(join(path, "init_args.json")).first().asDict(recursive=True)
85
- name = args["_model_name"]
86
- del args["_model_name"]
87
-
88
- model_class = model_type if model_type is not None else globals()[name]
89
- if name == "CQL":
90
- for a in args:
91
- if isinstance(args[a], dict) and "type" in args[a] and args[a]["type"] == "none":
92
- args[a]["params"] = {}
93
- init_args = getfullargspec(model_class.__init__).args
94
- init_args.remove("self")
95
- extra_args = set(args) - set(init_args)
96
- if len(extra_args) > 0:
97
- extra_args = {key: args[key] for key in args}
98
- init_args = {key: args[key] for key in init_args}
99
- else:
100
- init_args = args
101
- extra_args = {}
102
-
103
- model = model_class(**init_args)
104
- for arg in extra_args:
105
- model.arg = extra_args[arg]
106
-
107
- dataframes_paths = get_list_of_paths(spark, join(path, "dataframes"))
108
- for dataframe_path in dataframes_paths:
109
- df = spark.read.parquet(dataframe_path)
110
- attr_name = dataframe_path.split("/")[-1]
111
- setattr(model, attr_name, df)
112
-
113
- model._load_model(join(path, "model"))
114
- fs = get_fs(spark)
115
- model.study = (
116
- load_pickled_from_parquet(join(path, "study"))
117
- if fs.exists(spark._jvm.org.apache.hadoop.fs.Path(join(path, "study")))
118
- else None
119
- )
120
-
121
- return model
122
-
123
-
124
- def save_indexer(indexer: Indexer, path: Union[str, Path], overwrite: bool = False):
125
- """
126
- Save fitted indexer to disk as a folder
127
-
128
- :param indexer: Trained indexer
129
- :param path: destination where indexer files will be stored
130
- """
131
- if isinstance(path, Path):
132
- path = str(path)
133
-
134
- spark = State().session
135
-
136
- if not overwrite:
137
- fs = get_fs(spark)
138
- is_exists = fs.exists(spark._jvm.org.apache.hadoop.fs.Path(path))
139
- if is_exists:
140
- msg = f"Path '{path}' already exists. Mode is 'overwrite = False'."
141
- raise FileExistsError(msg)
142
-
143
- init_args = indexer._init_args
144
- init_args["user_type"] = str(indexer.user_type)
145
- init_args["item_type"] = str(indexer.item_type)
146
- sc = spark.sparkContext
147
- df = spark.read.json(sc.parallelize([json.dumps(init_args)]))
148
- df.coalesce(1).write.mode("overwrite").json(join(path, "init_args.json"))
149
-
150
- indexer.user_indexer.write().overwrite().save(join(path, "user_indexer"))
151
- indexer.item_indexer.write().overwrite().save(join(path, "item_indexer"))
152
- indexer.inv_user_indexer.write().overwrite().save(join(path, "inv_user_indexer"))
153
- indexer.inv_item_indexer.write().overwrite().save(join(path, "inv_item_indexer"))
154
-
155
-
156
- def load_indexer(path: str) -> Indexer:
157
- """
158
- Load saved indexer from disk
159
-
160
- :param path: path to folder
161
- :return: restored Indexer
162
- """
163
- spark = State().session
164
- args = spark.read.json(join(path, "init_args.json")).first().asDict()
165
-
166
- user_type = args["user_type"]
167
- del args["user_type"]
168
- item_type = args["item_type"]
169
- del args["item_type"]
170
-
171
- indexer = Indexer(**args)
172
-
173
- if user_type.endswith("()"):
174
- user_type = user_type[:-2]
175
- item_type = item_type[:-2]
176
- user_type = getattr(st, user_type)
177
- item_type = getattr(st, item_type)
178
- indexer.user_type = user_type()
179
- indexer.item_type = item_type()
180
-
181
- indexer.user_indexer = StringIndexerModel.load(join(path, "user_indexer"))
182
- indexer.item_indexer = StringIndexerModel.load(join(path, "item_indexer"))
183
- indexer.inv_user_indexer = IndexToString.load(join(path, "inv_user_indexer"))
184
- indexer.inv_item_indexer = IndexToString.load(join(path, "inv_item_indexer"))
185
-
186
- return indexer
@@ -1,44 +0,0 @@
1
- from typing import Optional
2
-
3
- import torch
4
-
5
- from replay.utils.session_handler import Borg, get_spark_session, logger_with_settings
6
- from replay.utils.types import PYSPARK_AVAILABLE, MissingImport
7
-
8
- if PYSPARK_AVAILABLE:
9
- from pyspark.sql import SparkSession
10
- else:
11
- SparkSession = MissingImport
12
-
13
-
14
- class State(Borg):
15
- """
16
- All modules look for Spark session via this class. You can put your own session here.
17
-
18
- Other parameters are stored here too: ``default device`` for ``pytorch`` (CPU/CUDA)
19
- """
20
-
21
- def __init__(
22
- self,
23
- session: Optional[SparkSession] = None,
24
- device: Optional[torch.device] = None,
25
- ):
26
- Borg.__init__(self)
27
- if not hasattr(self, "logger_set"):
28
- self.logger = logger_with_settings()
29
- self.logger_set = True
30
-
31
- if session is None:
32
- if not hasattr(self, "session"):
33
- self.session = get_spark_session()
34
- else:
35
- self.session = session
36
-
37
- if device is None:
38
- if not hasattr(self, "device"):
39
- if torch.cuda.is_available():
40
- self.device = torch.device(f"cuda:{torch.cuda.current_device()}")
41
- else:
42
- self.device = torch.device("cpu")
43
- else:
44
- self.device = device
@@ -1,193 +0,0 @@
1
- replay/__init__.py,sha256=UO9-zAzQ0Zw6zeU2AwtbXyTUIsneXgvNK-oTutQNSEc,233
2
- replay/data/__init__.py,sha256=g5bKRyF76QL_BqlED-31RnS8pBdcyj9loMsx5vAG_0E,301
3
- replay/data/dataset.py,sha256=yQDc8lfphQYfHpm_T1MhnG8_GyM4ONyxJoFc1rUgdJ8,30755
4
- replay/data/dataset_utils/__init__.py,sha256=9wUvG8ZwGUvuzLU4zQI5FDcH0WVVo5YLN2ey3DterP0,55
5
- replay/data/dataset_utils/dataset_label_encoder.py,sha256=bxuJPhShFZBok7bQZYGNMV1etCLNTJUpyKO5MIwWack,9823
6
- replay/data/nn/__init__.py,sha256=nj2Ep-tduuQkc-TnBkvN8-rDnFbcWO2oZrfcXl9M3C8,1122
7
- replay/data/nn/schema.py,sha256=h1KgaNV-hgN9Vpt24c92EmeMpm_8W0s9a2M0wLxJHYk,17101
8
- replay/data/nn/sequence_tokenizer.py,sha256=_9fBF-84jdn8Pa3pFKIr6prUjNYCc6BVzwRl9VSleKQ,37419
9
- replay/data/nn/sequential_dataset.py,sha256=JNmPjVrrBhModj-yrkExl28oCm1gbdU8z4nMfB5PQko,11565
10
- replay/data/nn/torch_sequential_dataset.py,sha256=QSh4IM2vzAF095_ZMC1gMqZj9slHXos9gfx_R_DlpGM,11545
11
- replay/data/nn/utils.py,sha256=Ic3G4yZRIzBYXLmwP1VstlZXPNR7AYGCc5EyZAERp5c,3297
12
- replay/data/schema.py,sha256=JmYLCrNgBS5oq4O_PT724Gr1pDurHEykcqV8Xaj0XTw,15922
13
- replay/data/spark_schema.py,sha256=4o0Kn_fjwz2-9dBY3q46F9PL0F3E7jdVpIlX7SG3OZI,1111
14
- replay/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- replay/experimental/metrics/__init__.py,sha256=bdQogGbEDVAeH7Ejbb6vpw7bP6CYhftTu_DQuoFRuCA,2861
16
- replay/experimental/metrics/base_metric.py,sha256=0ro9VoSnPtPAximnlcgmQaMNg9zoUN2AHAH_2WgfZiQ,22663
17
- replay/experimental/metrics/coverage.py,sha256=UqYm-WtAlBFZ3kqv8PyLo4qqKiIXmR_CQFAl6H_YdqA,3150
18
- replay/experimental/metrics/experiment.py,sha256=pD2Dyyg4PM1HjbrNrhAspZJP3B-i2So205qBChRGwwc,7337
19
- replay/experimental/metrics/hitrate.py,sha256=TfWJrUyZXabdMr4tn8zqUPGDcYy2yphVCzXmLSHCxY0,675
20
- replay/experimental/metrics/map.py,sha256=S4dKiMpYR0_pu0bqioGMT0kIC1s2aojFP4rddBqMPtM,921
21
- replay/experimental/metrics/mrr.py,sha256=q6I1Cndlwr716mMuYtTMu0lN8Rrp9khxhb49OM2IpV8,530
22
- replay/experimental/metrics/ncis_precision.py,sha256=yrErOhBZvZdNpQPx_AXyktDJatqdWRIHNMyei0QDJtQ,1088
23
- replay/experimental/metrics/ndcg.py,sha256=q3KTsyZCrfvcpEjEnR_kWVB9ZaTFRxnoNRAr2WD0TrU,1538
24
- replay/experimental/metrics/precision.py,sha256=U9pD9yRGeT8uH32BTyQ-W5qsAnbFWu-pqy4XfkcXfCM,664
25
- replay/experimental/metrics/recall.py,sha256=5xRPGxfbVoDFEI5E6dVlZpT4RvnDlWzaktyoqh3a8mc,774
26
- replay/experimental/metrics/rocauc.py,sha256=yq4vW2_bXO8HCjREBZVrHMKeZ054LYvjJmLJTXWPfQA,1675
27
- replay/experimental/metrics/surprisal.py,sha256=CK4_zed2bSMDwC7ZBCS8d8RwGEqt8bh3w3fTpjKiK6Y,3052
28
- replay/experimental/metrics/unexpectedness.py,sha256=JQQXEYHtQM8nqp7X2He4E9ZYwbpdENaK8oQG7sUQT3s,2621
29
- replay/experimental/models/__init__.py,sha256=yeu0PAkqWNqNLDnUYpg0_vpkWT8tG8KmRMybodVFkZ4,1709
30
- replay/experimental/models/admm_slim.py,sha256=dDg2c_5Lk8acykirtsv38Jg1l6kgAoBhRvPHPv5Vfis,8654
31
- replay/experimental/models/base_neighbour_rec.py,sha256=Q2C4rle9FeVIncqgMuhLV6qZbPj2Bz8W_Ao8iQu31TU,7387
32
- replay/experimental/models/base_rec.py,sha256=AmN6-PgIaNzD-sMIndMuRA3TJ0WZBbowCjaSTTgiYrY,54150
33
- replay/experimental/models/base_torch_rec.py,sha256=mwbbsR-sQuQAFC1d8X2k0zP3iJeEP-X5nAaR3IV7Sqg,8105
34
- replay/experimental/models/cql.py,sha256=ItTukqhH3V-PItVPawET9zO9tG4D8R4xKzz3tqKMjSc,19619
35
- replay/experimental/models/ddpg.py,sha256=bzX4KvkuIecYA4bkFB1BnLKE3zqteujhpvsxAXEnKoM,32266
36
- replay/experimental/models/dt4rec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- replay/experimental/models/dt4rec/dt4rec.py,sha256=zcxn2MjrJg8eYqfGwfK80UjH2-uwNDg4PBbmQZz7Le0,5895
38
- replay/experimental/models/dt4rec/gpt1.py,sha256=T3buFtYyF6Fh6sW6f9dUZFcFEnQdljItbRa22CiKb0w,14044
39
- replay/experimental/models/dt4rec/trainer.py,sha256=YeaJ8mnoYZqnPwm1P9qOYb8GzgFC5At-JeSDcvG2V2o,3859
40
- replay/experimental/models/dt4rec/utils.py,sha256=UF--cukjFB3uwzqaVHdCS3ik2qTtw97tzbSFGPkDfE8,8153
41
- replay/experimental/models/extensions/spark_custom_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- replay/experimental/models/extensions/spark_custom_models/als_extension.py,sha256=R9Xj5Yew5eH3dMJ9qfIyhBg4NeMv-wXVEISgzCwFQz0,25846
43
- replay/experimental/models/hierarchical_recommender.py,sha256=BqnEFBppKawt8Xx5lzBWk6qnmdCrZ7c2hpKj3mi1GvU,11441
44
- replay/experimental/models/implicit_wrap.py,sha256=8F-f-CaStmlNHwphu-yu8o4Aft08NKDD_SqqH0zp1Uo,4655
45
- replay/experimental/models/lightfm_wrap.py,sha256=rA9T2vGjrbt_GJV1XccYYsrs9qtgDtqVJCWBHFYrm4k,11329
46
- replay/experimental/models/mult_vae.py,sha256=l-6g-2fIs80vxBl9VGY4FrJannAXrzsQOyGNuHU8tDs,11601
47
- replay/experimental/models/neural_ts.py,sha256=oCqStgGg5CpGFAv1dC-3ODmK9nI05evzJ3XKBDQhgAo,42535
48
- replay/experimental/models/neuromf.py,sha256=acC50kxYlctriNGqyOEkq57Iu4icUvZasyWFeRUJans,14386
49
- replay/experimental/models/scala_als.py,sha256=6aMl8hUFR2J_nI5U8Z_-5BxfeATiWnC8zdj1C0AFbm4,10751
50
- replay/experimental/models/u_lin_ucb.py,sha256=-gu6meOYeSwP6N8ILtwasWYj4Mbs6EJEFQXUHE8N_lY,3750
51
- replay/experimental/nn/data/__init__.py,sha256=5EAF-FNd7xhkUpTq_5MyVcPXBD81mJCwYrcbhdGOWjE,48
52
- replay/experimental/nn/data/schema_builder.py,sha256=nfE0-bVgYUwzyhNTTcXUWhfNBAZQLHWenM6-zEglqps,3301
53
- replay/experimental/preprocessing/__init__.py,sha256=uMyeyQ_GKqjLhVGwhrEk3NLhhzS0DKi5xGo3VF4WkiA,130
54
- replay/experimental/preprocessing/data_preparator.py,sha256=-yqWZT06iEYsY7rCSGRAgLcp6o7jvlsU431HspHQ2o4,35940
55
- replay/experimental/preprocessing/padder.py,sha256=uxE6WlmYNd9kbACMEidxG1L19G5Rk0gQbvpN_TosMZ4,9558
56
- replay/experimental/preprocessing/sequence_generator.py,sha256=vFtLkq9MuLGThPsa67103qlcMLYLfnAkR_HI1FXPwjw,9047
57
- replay/experimental/scenarios/__init__.py,sha256=gWFLCkLyOmOppvbRMK7C3UMlMpcbIgiGVolSH6LPgWA,91
58
- replay/experimental/scenarios/obp_wrapper/__init__.py,sha256=ZOJgpjRsmhXTpzGumk3AALKmstNBachtu_hOXUIPY5s,434
59
- replay/experimental/scenarios/obp_wrapper/obp_optuna_objective.py,sha256=swwcot05a8GzIVhEKpfmjG16CuciItVuddPaOjCKo9o,2543
60
- replay/experimental/scenarios/obp_wrapper/replay_offline.py,sha256=9ZP17steBiTh_KO37NnXWyN5LuPpABPhL_QG4JJHf7I,9622
61
- replay/experimental/scenarios/obp_wrapper/utils.py,sha256=Uv_fqyJDt69vIdrw-Y9orLLzyHG0ko8svza0Hs_a87Q,3233
62
- replay/experimental/scenarios/two_stages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- replay/experimental/scenarios/two_stages/reranker.py,sha256=NQhooA3OXLAh_PwydBNU2DGRRGPq2j2R0SSHtDM7hlg,4238
64
- replay/experimental/scenarios/two_stages/two_stages_scenario.py,sha256=u41ymdhx0MS1I08VDjJ2UhXpSqsfTA1x9Hbz1tOaWLY,29822
65
- replay/experimental/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- replay/experimental/utils/logger.py,sha256=UwLowaeOG17sDEe32LiZel8MnjSTzeW7J3uLG1iwLuA,639
67
- replay/experimental/utils/model_handler.py,sha256=Rfj57E1R_XMEEigHNZa9a-rzEsyLWSDsgKfXoRzWWdg,6426
68
- replay/experimental/utils/session_handler.py,sha256=H0C-Q2pqrs_5aDvoAkRMZuS5qu07uhu6g5FEL3NJiic,1305
69
- replay/metrics/__init__.py,sha256=j0PGvUehaPEZMNo9SQwJsnvzrS4bam9eHrRMQFLnMjY,2813
70
- replay/metrics/base_metric.py,sha256=ejtwFHktN4J8Fi1HIM3w0zlMAd8nO7-XpFi2D1iHXUQ,16010
71
- replay/metrics/categorical_diversity.py,sha256=3tp8n457Ob4gjM-UTB5N19u9WAF7fLDkWKk-Mth-Vzc,10769
72
- replay/metrics/coverage.py,sha256=e6vPItrRlI-mLNuOT5uoo5lMAAzkYGKZRxvupi21dMk,8528
73
- replay/metrics/descriptors.py,sha256=BHORyGKfJgPeUjgLO0u2urSTe16UQbb-HHh8soqnwDE,3893
74
- replay/metrics/experiment.py,sha256=6Sw8PyItn3E2R-BBa_YwrmtBV3n0uAGHHOvkhHYgMz4,8125
75
- replay/metrics/hitrate.py,sha256=LcOJLMs3_Dq4_pbKx95qdCdjGrX52dyWyuWUFXCyaDw,2314
76
- replay/metrics/map.py,sha256=dIZcmUxd2XnNC7d_d7gmq0cjNaI1hlNMaJTSHGCokQE,2572
77
- replay/metrics/mrr.py,sha256=qM8tVMSoyYR-kTx0mnBGppoC53SxNlZKm7JKMUmSv9U,2163
78
- replay/metrics/ndcg.py,sha256=izajmD243ZIK3KLm9M-NtLwxb9N3Ktj58__AAfwF6Vc,3110
79
- replay/metrics/novelty.py,sha256=j3p1fbUVi2QQgEre42jeQx73PYYDUhy5gYlrL4BL5b8,5488
80
- replay/metrics/offline_metrics.py,sha256=f_U4Tk3Ke5sR0_OYvoE2_nD6wrOCveg3DM3B9pStVUI,20454
81
- replay/metrics/precision.py,sha256=DRlsgY_b4bJCOSZjCA58N41REMiDt-dbagRSXxfXyvY,2256
82
- replay/metrics/recall.py,sha256=fzpASDiH88zcpXJZTbStQ3nuzzSdhd9k1wjF27rM4wc,2447
83
- replay/metrics/rocauc.py,sha256=1vaVEK7DQTL8BX-i7A64hTFWyO38aNycscPGrdWKwbA,3282
84
- replay/metrics/surprisal.py,sha256=HkmYrOuw3jydxFrkidjdcpAcKz2DeOnMsKqwB2g9pwY,7526
85
- replay/metrics/torch_metrics_builder.py,sha256=jccdTNXJrwiWmBoD9cB3ilIn-upKhR6toAfKTG5T2Mc,13855
86
- replay/metrics/unexpectedness.py,sha256=LSi-z50l3_yrvLnmToHQzm6Ygf2QpNt_zhk6jdg7QUo,6882
87
- replay/models/__init__.py,sha256=kECYluQZ83zRUWaHVvnt7Tg3BerHrJy9v8XfRxsqyYY,1123
88
- replay/models/als.py,sha256=1MFAbcx64tv0MX1wE9CM1NxKD3F3ZDhZUrmt6dvHu74,6220
89
- replay/models/association_rules.py,sha256=shBNsKjlii0YK-XA6bSl5Ov0ZFTnjxZbgKJU9PFYptY,14507
90
- replay/models/base_neighbour_rec.py,sha256=SdGb2ejpYjHmxFNTk5zwEo0RWdfPAj1vKGP_oj7IrQo,7783
91
- replay/models/base_rec.py,sha256=aNIEbSy8G5q92NOpDlSJbp0Z-lAkazFLa9eDAajl1wI,56067
92
- replay/models/cat_pop_rec.py,sha256=ed1X1PDQY41hFJ1cO3Q5OWy0rXhV5_n23hJ-QHWONtE,11968
93
- replay/models/cluster.py,sha256=9JcpGnbfgFa4UsyxPAa4WMuJFa3rsuAxiKoy-s_UfyE,4970
94
- replay/models/common.py,sha256=rFmfwwzWCWED2HaDVuSN7ZUAgaNPGPawUudgn4IApbo,2121
95
- replay/models/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- replay/models/extensions/ann/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- replay/models/extensions/ann/ann_mixin.py,sha256=Ua1fuwrvtISNDQ8iPV-ln8S1LDKz8-rIU2UYsMExAiU,7782
98
- replay/models/extensions/ann/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- replay/models/extensions/ann/entities/base_hnsw_param.py,sha256=5GRdcQj4-zhNXfJ7ko2WHGHgRuXCzSHCRcRxljl1V4c,776
100
- replay/models/extensions/ann/entities/hnswlib_param.py,sha256=j3V4JXM_yfR6s2TjYakIXMg-zS1-MrP6an930DEIWGM,2104
101
- replay/models/extensions/ann/entities/nmslib_hnsw_param.py,sha256=WeEhRR4jKqgvWK_zDK8fx6kEqc2e_bc0kubvqK3iV8c,2162
102
- replay/models/extensions/ann/index_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- replay/models/extensions/ann/index_builders/base_index_builder.py,sha256=Ul25G0FaNLOXUjrDXxZDTg7tLXlv1N6wR8kWjWICtZ0,2110
104
- replay/models/extensions/ann/index_builders/driver_hnswlib_index_builder.py,sha256=U8-3lRahyWmWkZ7tYuO-Avd1jX-lGh7JukC140wJ-WQ,1600
105
- replay/models/extensions/ann/index_builders/driver_nmslib_index_builder.py,sha256=1NLWyAJGYgp46uUBhUYQyd0stmG6DhLh7U4JEne5TFw,1308
106
- replay/models/extensions/ann/index_builders/executor_hnswlib_index_builder.py,sha256=cf3LhBCRRN-lBYGlJbv8vnY-KVeHAleN5cVjvd58Ibs,2476
107
- replay/models/extensions/ann/index_builders/executor_nmslib_index_builder.py,sha256=0DPJ3WAt0cZ5dmtZv87fmMEgYXWf8rM35f7CA_DgWZY,2618
108
- replay/models/extensions/ann/index_builders/nmslib_index_builder_mixin.py,sha256=AIkVnobesnTM5lrBSWf9gd0CySwFQ0vH_DjemfLS4Cs,1925
109
- replay/models/extensions/ann/index_inferers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- replay/models/extensions/ann/index_inferers/base_inferer.py,sha256=I39aqEc2somfndrCd-KC3XYZnYSrJ2hGpR9y6wO93NA,2524
111
- replay/models/extensions/ann/index_inferers/hnswlib_filter_index_inferer.py,sha256=JjT4l_XAjzUOsTAE7OS88zAgPd_h_O44oUnn2kVr8E0,2477
112
- replay/models/extensions/ann/index_inferers/hnswlib_index_inferer.py,sha256=CoY_oMfdcwnh87ceuSpHXu4Czle9xxeMisO8XJUuJLE,1717
113
- replay/models/extensions/ann/index_inferers/nmslib_filter_index_inferer.py,sha256=tjuqbkztWBU4K6qp5LPFU_GOGJf2f4oXneExtUEVUzw,3128
114
- replay/models/extensions/ann/index_inferers/nmslib_index_inferer.py,sha256=S5eCBZlTXxEAeX6yeZGC7j56gOcJ7lMNb4Cs_5PEj9E,2203
115
- replay/models/extensions/ann/index_inferers/utils.py,sha256=6IST2FPSY3nuYu5KqzRpd4FgdaV3GnQRQlxp9LN_yyA,641
116
- replay/models/extensions/ann/index_stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
- replay/models/extensions/ann/index_stores/base_index_store.py,sha256=u4l2ybAXX92ZMGK7NqqosbKF75QgFqhAMVadd5ePj6Y,910
118
- replay/models/extensions/ann/index_stores/hdfs_index_store.py,sha256=0zDq9PdDOiD6HvtZlfjTbuJHfeTOWBTQ_HiuqZmoxtA,3090
119
- replay/models/extensions/ann/index_stores/shared_disk_index_store.py,sha256=thl4T1uYU4Gtk4nBao_qK8CbFBdX1xmXNishxgfCd-I,2030
120
- replay/models/extensions/ann/index_stores/spark_files_index_store.py,sha256=QP_8mE7EIBbePIe0AB-IWuJLRA5MR3wswCEt8oHzn-0,3617
121
- replay/models/extensions/ann/index_stores/utils.py,sha256=6r2GP_EFCaCguolW857pb4lRS8rh6_Nv_Edso9_j5no,3756
122
- replay/models/extensions/ann/utils.py,sha256=AgQvThi_DvEtakQeTno9hVZVWiWMFHKTjRcQ2wLa5vk,1222
123
- replay/models/kl_ucb.py,sha256=L6vC2KsTBTTx4ckmGhWybOiLa5Wt54N7cgl7jS2FQRg,6731
124
- replay/models/knn.py,sha256=HEiGHHQg9pV1_EIWZHfK-XD0BNAm1bj1c0ND9rYnj3k,8992
125
- replay/models/lin_ucb.py,sha256=iAR3PbbaQKqmisOKEx9ZyfpxnxcZomr6YauG4mvSakU,18800
126
- replay/models/nn/__init__.py,sha256=AT3o1qXaxUq4_QIGlcGuSs54ZpueOo-SbpZwuGI-6os,41
127
- replay/models/nn/loss/__init__.py,sha256=s3iO9QTZvLz_ony2b5K0hEmDmitrXQnAe9j6BRxLpR4,53
128
- replay/models/nn/loss/sce.py,sha256=p6LFtoYSY4j2pQh6Z7i6cEADCmRnvTgnb8EJXseRKKg,5637
129
- replay/models/nn/optimizer_utils/__init__.py,sha256=8MHln7CW54oACVUFKdZLjAf4bY83GcOMXpmL87gTnhI,178
130
- replay/models/nn/optimizer_utils/optimizer_factory.py,sha256=1wicKnya2xrwDaHhqygy1VqB8-3jPDhMM7zY2TJE4dY,2844
131
- replay/models/nn/sequential/__init__.py,sha256=CI2n0cxs_amqJrwBMq6n0Z_uBOu7CGXfagqvE4Jlmjw,128
132
- replay/models/nn/sequential/bert4rec/__init__.py,sha256=JfZqHOGxcvOkICl5cWmZbZhaKXpkIvua-Wj57VWWEhw,399
133
- replay/models/nn/sequential/bert4rec/dataset.py,sha256=xd5a-yn5I280Vwoy_KtasDjrvksFolJYp71nDEHNUNQ,10414
134
- replay/models/nn/sequential/bert4rec/lightning.py,sha256=_hP6_6E1SpGu6b_kiYEF4ZVhwKJ4sj_iPTo6loIvM0o,26546
135
- replay/models/nn/sequential/bert4rec/model.py,sha256=2Lqvfz7UBB_ArqNs92OD5dy4a1onR4S5dNZiMbZgAgk,17388
136
- replay/models/nn/sequential/callbacks/__init__.py,sha256=Q7mSZ_RB6iyD7QZaBL_NJ0uh8cRfgxq7gtPHbkSyhoo,282
137
- replay/models/nn/sequential/callbacks/prediction_callbacks.py,sha256=lkYoTOpyt-Gy9wOgOgGlFshTJP24VsDcWm_6pY5Xmyg,9296
138
- replay/models/nn/sequential/callbacks/validation_callback.py,sha256=GcRWM_yVwRBRLTW1sYCy9_aNZ5C71hmJeGG61Yyh4vA,5812
139
- replay/models/nn/sequential/compiled/__init__.py,sha256=eSVcCaUH5cDJQRbC7K99X7uMNR-Z-KR4TmYOGKWWJCI,531
140
- replay/models/nn/sequential/compiled/base_compiled_model.py,sha256=vOL-9jodvSNc7N32V4lTjRTCNM-tOPAxfMyZPENqsFA,10231
141
- replay/models/nn/sequential/compiled/bert4rec_compiled.py,sha256=Z6nfmdT70Wi-j7_CDFJ88iNCp1gdQleg1WkfHp0hb4s,6400
142
- replay/models/nn/sequential/compiled/sasrec_compiled.py,sha256=qUaAwQOsBCstOG3RBlj_pJpD8BHmCpLZWCiPBlFVvT4,5856
143
- replay/models/nn/sequential/postprocessors/__init__.py,sha256=89LGzkNHukcuC2-rfpiz7vmv1zyk6MNY-8zaXrvtn0M,164
144
- replay/models/nn/sequential/postprocessors/_base.py,sha256=Q_SIYKG8G3U03IEK1dtlW1zJI300pOcWQYuMpkY0_nc,1111
145
- replay/models/nn/sequential/postprocessors/postprocessors.py,sha256=oijLByxuzegVmWZS-qRVhdO7ihqHer6SSGTFa8zX7I8,7810
146
- replay/models/nn/sequential/sasrec/__init__.py,sha256=c6130lRpPkcbuGgkM7slagBIgH7Uk5zUtSzFDEwAsik,250
147
- replay/models/nn/sequential/sasrec/dataset.py,sha256=L_LeRWqPc__390j8NWVskboS0NqbveIkLwFclcB4oDw,7189
148
- replay/models/nn/sequential/sasrec/lightning.py,sha256=oScUyB8RU8N4MqWe6kAoWG0JW6Tkb2ldG_jdGFZgA7A,25060
149
- replay/models/nn/sequential/sasrec/model.py,sha256=8kFovyPWqgQ0hmD3gckRjW7-hLBerl3bgYXCk4PYn0o,27656
150
- replay/models/optimization/__init__.py,sha256=N8xCuzu0jQGwHrIBjuTRf-ZcZuBJ6FB0d9C5a7izJQU,338
151
- replay/models/optimization/optuna_mixin.py,sha256=pKu-Vw9l2LsDycubpdJiLkC1eE4pKrDG0T2lhUgRUB4,11960
152
- replay/models/optimization/optuna_objective.py,sha256=UHWOJwBngPA3IRz9yAMEWPg00oyb7Wq9PXuRPYHIiLE,7538
153
- replay/models/pop_rec.py,sha256=Ju9y2rU2vW_jFU9-W15fbbr5_ZzYGihSjSxsqKsAf0Q,4964
154
- replay/models/query_pop_rec.py,sha256=UNsHtf3eQpJom73ZmEO5us4guI4SnCLJYTfuUpRgqes,4086
155
- replay/models/random_rec.py,sha256=9SC012_X3sNzrAjDG1CPGhjisZb6gnv4VCW7yIMSNpk,8066
156
- replay/models/slim.py,sha256=OAdTS64bObZujzHkq8vfP1kkoLMSWxk1KLg6lCCA0N8,4551
157
- replay/models/thompson_sampling.py,sha256=gcjlVl1mPiEVt70y8frA762O-eCZzd3SVg1lnDRCEHk,1939
158
- replay/models/ucb.py,sha256=b2qFgvOAZcyv5triPk18duqF_jt-ty7mypenjRLNWwQ,6952
159
- replay/models/wilson.py,sha256=o7aUWjq3648dAfgGBoWD5Gu-HzdyobPMaH2lzCLijiA,4558
160
- replay/models/word2vec.py,sha256=atfj6GjR_L-TdurRFr1yi7B3BicJ3ZdFxixW9RfojJs,8882
161
- replay/preprocessing/__init__.py,sha256=c6wFPAc6lATyp0lE-ZDjHMsXyEMPKX7Usuqylv6H5XQ,597
162
- replay/preprocessing/converter.py,sha256=JQ-4u5x0eXtswl1iH-bZITBXQov1nebnZ6XcvpD8Twk,4417
163
- replay/preprocessing/discretizer.py,sha256=jzYqvoSVmiL-oS-ri9Om0vSDoU8bCQimjUoe7FiPfLU,27024
164
- replay/preprocessing/filters.py,sha256=C0zR4LOnGJsMzowuWfaTPR457RppgLZRhcZFV1WkS7o,45845
165
- replay/preprocessing/history_based_fp.py,sha256=oEu1CkCz7xcGbPdSTHfhTe1NimnFo50Arn8qngRBgE8,18702
166
- replay/preprocessing/label_encoder.py,sha256=eWsPa5mZq7_9SDxkaiI8mpCfIKTKNr-tlNmfqEunnTk,41432
167
- replay/preprocessing/sessionizer.py,sha256=G6i0K3FwqtweRxvcSYraJ-tBWAT2HnV-bWHHlIZJF-s,12217
168
- replay/scenarios/__init__.py,sha256=XXAKEQPTLlve-0O6NPwFgahFrb4oGcIq3HaYaaGxG2E,94
169
- replay/scenarios/fallback.py,sha256=dO3s9jqYup4rbgMaY6Z6HGm1r7SXkm7jOvNZDr5zm_U,7138
170
- replay/splitters/__init__.py,sha256=DnqVMelrzLwR8fGQgcWN_8FipGs8T4XGSPOMW-L_x2g,454
171
- replay/splitters/base_splitter.py,sha256=zvYVEHBYrK8Y2qPv3kYachfLFwR9-kUAiU1UJSNGS8A,7749
172
- replay/splitters/cold_user_random_splitter.py,sha256=32VgAHiwk9Emkofu1KqwGZrrFiyrYtSQ3YPdt5p_XoQ,4423
173
- replay/splitters/k_folds.py,sha256=RDDL3gE6M5qfK5Ig-pxxJeq3O4uxsWJjLFQRRzQ2Ssg,6211
174
- replay/splitters/last_n_splitter.py,sha256=hMWIGYFg17LioT08VBXut5Ic-w9oXsKd739cy2xuwYs,15368
175
- replay/splitters/new_users_splitter.py,sha256=NksAdl_wL9zwHj3cY5NqrrnkOajgyUDloSsRZ9HUE48,9160
176
- replay/splitters/random_splitter.py,sha256=0DO0qulT0jp_GXswmFh3BMJ7utS-z9e-r5jIrmTKGC4,2989
177
- replay/splitters/ratio_splitter.py,sha256=rFWN-nKBYx1qKrmtYzjYf08DWFiKOCo5ZRUz-NHJFfs,17506
178
- replay/splitters/time_splitter.py,sha256=0ZAMK26b--1wjrfzCuNVBh7gMPTa8SGf4LMEgACiUxA,9013
179
- replay/splitters/two_stage_splitter.py,sha256=8Zn6BTJmZg04CD4l2jmil2dEu6xtglJaSS5mkotIXRc,17823
180
- replay/utils/__init__.py,sha256=3Skc9bUISEPPMMxdUCCT_S1q-i7cAT3KT0nExe-VMrw,343
181
- replay/utils/common.py,sha256=92MTG51WpeEQJ2gu-WvdNe4Fmqm8ze-y1VNIAHW81jQ,5358
182
- replay/utils/dataframe_bucketizer.py,sha256=LipmBBQkdkLGroZpbP9i7qvTombLdMxo2dUUys1m5OY,3748
183
- replay/utils/distributions.py,sha256=UuhaC9HI6HnUXW97fEd-TsyDk4JT8t7k1T_6l5FpOMs,1203
184
- replay/utils/model_handler.py,sha256=6WRyd39B-UXTtKTHWD_ssYN1vMmkjd417bwKb50uqJY,5754
185
- replay/utils/session_handler.py,sha256=fQo2wseow8yuzKnEXT-aYAXcQIgRbTTXp0v7g1VVi0w,5138
186
- replay/utils/spark_utils.py,sha256=GbRp-MuUoO3Pc4chFvlmo9FskSlRLeNlC3Go5pEJ6Ok,27411
187
- replay/utils/time.py,sha256=J8asoQBytPcNw-BLGADYIsKeWhIoN1H5hKiX9t2AMqo,9376
188
- replay/utils/types.py,sha256=rD9q9CqEXgF4yy512Hv2nXclvwcnfodOnhBZ1HSUI4c,1260
189
- replay_rec-0.20.3rc0.dist-info/METADATA,sha256=LCtP5r4PZP-jTKxRCFkk1mYq6qqUNS4rgjcDfmF3by8,13155
190
- replay_rec-0.20.3rc0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
191
- replay_rec-0.20.3rc0.dist-info/licenses/LICENSE,sha256=rPmcA7UrHxBChEAAlJyE24qUWKKl9yLQXxFsKeg_LX4,11344
192
- replay_rec-0.20.3rc0.dist-info/licenses/NOTICE,sha256=k0bo4KHiHLRax5K3XKTTrf2Fi8V91mJ-R3FMdh6Reg0,2002
193
- replay_rec-0.20.3rc0.dist-info/RECORD,,
File without changes