def test_build(self): data = Reader().read('./tests/sentiment_data.txt', fmt='UITup', sep=',', tup_sep=':') md = SentimentModality(data=data) uid_map = OrderedDict() iid_map = OrderedDict() for raw_uid, raw_iid, _ in data: uid_map.setdefault(raw_uid, len(uid_map)) iid_map.setdefault(raw_iid, len(iid_map)) matrix = dok_matrix((len(uid_map), len(iid_map)), dtype=np.float32) for raw_uid, raw_iid, _ in data: user_idx = uid_map.get(raw_uid) item_idx = iid_map.get(raw_iid) matrix[user_idx, item_idx] = 1 md.build(uid_map=uid_map, iid_map=iid_map, dok_matrix=matrix) self.assertEqual(md.num_aspects, 3) self.assertEqual(md.num_opinions, 2) self.assertEqual(len(md.sentiment), 4) self.assertEqual(len(md.user_sentiment), 3) self.assertEqual(len(md.item_sentiment), 3) self.assertEqual(len(md.aspect_id_map), 3) self.assertEqual(len(md.opinion_id_map), 2) try: SentimentModality().build() except ValueError: assert True
def test_with_modalities(self): data = Reader().read("./tests/data.txt") sentiment_data = Reader().read("./tests/sentiment_data.txt", fmt="UITup", sep=",", tup_sep=":") bm = BaseMethod.from_splits(train_data=data[:-1], test_data=data[-1:]) self.assertIsNone(bm.user_text) self.assertIsNone(bm.item_text) self.assertIsNone(bm.user_image) self.assertIsNone(bm.item_image) self.assertIsNone(bm.user_graph) self.assertIsNone(bm.item_graph) self.assertIsNone(bm.sentiment) bm.user_text = TextModality() bm.item_image = ImageModality() bm.sentiment = SentimentModality(data=sentiment_data) bm._build_modalities() try: bm.user_text = ImageModality() except ValueError: assert True try: bm.item_text = ImageModality() except ValueError: assert True try: bm.user_image = TextModality() except ValueError: assert True try: bm.item_image = TextModality() except ValueError: assert True try: bm.user_graph = TextModality() except ValueError: assert True try: bm.item_graph = ImageModality() except ValueError: assert True try: bm.sentiment = TextModality() except ValueError: assert True try: bm.sentiment = ImageModality() except ValueError: assert True
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================ """Example for Multi-Task Explainable Recommendation""" from cornac.datasets import amazon_toy from cornac.data import SentimentModality from cornac.eval_methods import RatioSplit from cornac.metrics import NDCG, RMSE from cornac.models import MTER from cornac import Experiment data = amazon_toy.load_rating() sentiment = amazon_toy.load_sentiment() md = SentimentModality(data=sentiment) eval_method = RatioSplit(data, test_size=0.2, rating_threshold=1.0, sentiment=md, exclude_unknowns=True, verbose=True, seed=123) mter = MTER(n_user_factors=15, n_item_factors=15, n_aspect_factors=12, n_opinion_factors=12, n_bpr_samples=1000, n_element_samples=200, lambda_reg=0.1,
def test_init(self): data = Reader().read('./tests/sentiment_data.txt', fmt='UITup', sep=',', tup_sep=':') md = SentimentModality(data=data) self.assertEqual(len(md.raw_data), 4)