Loading

ESCI Challenge for Improving Product Search

[Task 3 - Score 0.836] 3 Common Models Trained Separately

Just 3 Common Model Trained Separately

leocd

Just want to share my simple approach which somehow boosts my score from ~0.7 to ~0.8 (LB 0.836).

So I tried to train the models separately for each language.

training 3 models separately

here's the checkpoint of the 3 models :

In [ ]:
# https://drive.google.com/file/d/1AZqsOCU80Xlz8MOmPCeUSnqVanQlYGMg/view?usp=sharing

here's the training notebook for es, you can change it to any other languange :

In [ ]:
# https://colab.research.google.com/drive/1hcVlUzDvQ5H9AjWDplnVOSqIIldMEQny?usp=sharing

setting up for prediction

In [1]:
import math
from sentence_transformers import models, losses, datasets
from sentence_transformers import LoggingHandler, SentenceTransformer, util, InputExample
from sentence_transformers.evaluation import EmbeddingSimilarityEvaluator
import logging
from datetime import datetime
import sys
import os
import gzip
import csv
import random
from sentence_transformers.cross_encoder import CrossEncoder
In [2]:
import numpy as np
import pandas as pd
In [3]:
#### Just some code to print debug information to stdout
logging.basicConfig(format='%(asctime)s - %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',
                    level=logging.INFO,
                    handlers=[LoggingHandler()])
In [4]:
# Save path of the model
model_save_path_jp = './output/training_classification_task3_crossv1_jp_bert-base-multilingual-cased'
model_save_path_us = './output/training_classification_task3_crossv1_us_bert-base-multilingual-cased'
model_save_path_es = './output/training_classification_task3_crossv1_es_bert-base-multilingual-cased'
In [5]:
model_jp = CrossEncoder(model_save_path_jp)
model_us = CrossEncoder(model_save_path_us)
model_es = CrossEncoder(model_save_path_es)
2022-06-22 10:12:53 - Use pytorch device: cuda
2022-06-22 10:12:59 - Use pytorch device: cuda
2022-06-22 10:13:05 - Use pytorch device: cuda

processing test data

In [ ]:
input_dir = "data"
full_test_df = pd.read_csv(r"./task3/test_public-v0.3.csv")
print(full_test_df.shape)
full_test_df.head(3)
In [ ]:
product_df = pd.read_csv(r"./task3/product_catalogue-v0.3.csv")
print(product_df.shape)
product_df.head(3)
In [ ]:
product_df.isnull().sum(axis = 0)
In [ ]:
product_df.fillna("",inplace=True)
In [ ]:
product_df.isnull().sum(axis = 0)
In [ ]:
product_df['product_merge'] = product_df['product_title'] + ' ' + product_df['product_description'] + ' ' + product_df['product_bullet_point'] + ' ' + product_df['product_brand'] + ' ' + product_df['product_color_name']
In [ ]:
product_df['product_merge']
In [ ]:
full_test_df2 = pd.merge(full_test_df, 
                          product_df[["product_id", "product_locale", "product_merge"]],
                          left_on=["product_id", "query_locale"], 
                          right_on=["product_id", "product_locale"]
)
print(full_test_df2.shape)
full_test_df2.head()
In [9]:
full_test_df2.rename(columns={'product_merge': 'product_title'}, inplace=True)
In [10]:
full_test_df2
Out[10]:
example_id query product_id query_locale product_locale product_title
0 2227371 2 camas compacto B06X3ZWQ72 es es vidaXL Sofá Cama Extensible de Doble Altura Ma...
1 2227372 2 camas compacto B06Y4QZWBJ es es Barrera de cama nido para bebé, 180 x 66 cm. M...
2 2227373 2 camas compacto B0788QGP71 es es Todocama - Almohada viscoelástica, 90 cm núcle...
3 2227374 2 camas compacto B079HXV34F es es Mobelcenter - Cama Nido con cajones y estanter...
4 2227375 2 camas compacto B07CJMZM94 es es Habitdesign Cama Nido Juvenil, Dos Camas y Un ...
... ... ... ... ... ... ...
277039 2621693 子供 フッ素 味なし B07VP9HH9R jp jp APAGARD(アパガード) アパガード(APAGARD) アパキッズジェル60g むし歯予...
277040 2621694 子供 フッ素 味なし B08277BWLF jp jp alito アリート 歯みがきジェル 子供歯磨き粉 口臭ケア フッ素なし 研磨剤なし 歯科医...
277041 2621695 子供 フッ素 味なし B082H8R4FW jp jp alito アリート 歯みがきジェル 子供歯磨き粉 口臭ケア フッ素なし 研磨剤なし 歯科医...
277042 2621696 子供 フッ素 味なし B08JL9GDTJ jp jp mamacharm 歯磨き粉 子供 バイバイキン 30袋入り 指歯ブラシ付 無添加 赤ちゃん...
277043 2621697 子供 フッ素 味なし B0928QK88H jp jp リッチェル トライ 毎日ピカピカ 歯みがきジェル いちご味 1歳6か月頃から 離乳食を卒業...

277044 rows × 6 columns

In [11]:
full_test_df2 = full_test_df2[["example_id", "query", "product_title", "query_locale"]]
full_test_df2
Out[11]:
example_id query product_title query_locale
0 2227371 2 camas compacto vidaXL Sofá Cama Extensible de Doble Altura Ma... es
1 2227372 2 camas compacto Barrera de cama nido para bebé, 180 x 66 cm. M... es
2 2227373 2 camas compacto Todocama - Almohada viscoelástica, 90 cm núcle... es
3 2227374 2 camas compacto Mobelcenter - Cama Nido con cajones y estanter... es
4 2227375 2 camas compacto Habitdesign Cama Nido Juvenil, Dos Camas y Un ... es
... ... ... ... ...
277039 2621693 子供 フッ素 味なし APAGARD(アパガード) アパガード(APAGARD) アパキッズジェル60g むし歯予... jp
277040 2621694 子供 フッ素 味なし alito アリート 歯みがきジェル 子供歯磨き粉 口臭ケア フッ素なし 研磨剤なし 歯科医... jp
277041 2621695 子供 フッ素 味なし alito アリート 歯みがきジェル 子供歯磨き粉 口臭ケア フッ素なし 研磨剤なし 歯科医... jp
277042 2621696 子供 フッ素 味なし mamacharm 歯磨き粉 子供 バイバイキン 30袋入り 指歯ブラシ付 無添加 赤ちゃん... jp
277043 2621697 子供 フッ素 味なし リッチェル トライ 毎日ピカピカ 歯みがきジェル いちご味 1歳6か月頃から 離乳食を卒業... jp

277044 rows × 4 columns

In [23]:
full_test_df2['substitute_label'] = 'kosong'
C:\Users\leo_c\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  """Entry point for launching an IPython kernel.
In [28]:
full_test_df2
Out[28]:
example_id query product_title query_locale substitute_label
0 2227371 2 camas compacto vidaXL Sofá Cama Extensible de Doble Altura Ma... es no_substitute
1 2227372 2 camas compacto Barrera de cama nido para bebé, 180 x 66 cm. M... es no_substitute
2 2227373 2 camas compacto Todocama - Almohada viscoelástica, 90 cm núcle... es no_substitute
3 2227374 2 camas compacto Mobelcenter - Cama Nido con cajones y estanter... es kosong
4 2227375 2 camas compacto Habitdesign Cama Nido Juvenil, Dos Camas y Un ... es kosong
... ... ... ... ... ...
277039 2621693 子供 フッ素 味なし APAGARD(アパガード) アパガード(APAGARD) アパキッズジェル60g むし歯予... jp kosong
277040 2621694 子供 フッ素 味なし alito アリート 歯みがきジェル 子供歯磨き粉 口臭ケア フッ素なし 研磨剤なし 歯科医... jp kosong
277041 2621695 子供 フッ素 味なし alito アリート 歯みがきジェル 子供歯磨き粉 口臭ケア フッ素なし 研磨剤なし 歯科医... jp kosong
277042 2621696 子供 フッ素 味なし mamacharm 歯磨き粉 子供 バイバイキン 30袋入り 指歯ブラシ付 無添加 赤ちゃん... jp kosong
277043 2621697 子供 フッ素 味なし リッチェル トライ 毎日ピカピカ 歯みがきジェル いちご味 1歳6か月頃から 離乳食を卒業... jp kosong

277044 rows × 5 columns

predict test data

In [26]:
from tqdm import tqdm
In [30]:
for i in tqdm(range(len(full_test_df2))):
    if full_test_df2.iloc[i,3] == 'es' :
        scores = model_es.predict([[full_test_df2.iloc[i,1], full_test_df2.iloc[i,2]]],show_progress_bar=False)
    if full_test_df2.iloc[i,3] == 'us' :
        scores = model_us.predict([[full_test_df2.iloc[i,1], full_test_df2.iloc[i,2]]],show_progress_bar=False)
    if full_test_df2.iloc[i,3] == 'jp' :
        scores = model_jp.predict([[full_test_df2.iloc[i,1], full_test_df2.iloc[i,2]]],show_progress_bar=False)
    if scores[0] > 0.5 :
        full_test_df2.iloc[i,-1] = 'substitute'
    else :
        full_test_df2.iloc[i,-1] = 'no_substitute'
100%|████████████████████████████████████████████████████████████████████████| 277044/277044 [3:04:10<00:00, 25.07it/s]
In [31]:
full_test_df2[['example_id','substitute_label']]
Out[31]:
example_id substitute_label
0 2227371 no_substitute
1 2227372 no_substitute
2 2227373 no_substitute
3 2227374 no_substitute
4 2227375 no_substitute
... ... ...
277039 2621693 no_substitute
277040 2621694 no_substitute
277041 2621695 no_substitute
277042 2621696 no_substitute
277043 2621697 no_substitute

277044 rows × 2 columns

saving submission results

In [32]:
full_test_df2[['example_id','substitute_label']].to_csv('./task3/submission.csv',index=False)

Comments

You must login before you can post a comment.

Execute