apt-get update
apt-get install build-essential -y
Preparing enviroment:
(for torch 1.12.0)
Option 1:
pip install pyg-lib torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.12.0+cu113.html
export LD_LIBRARY_PATH="/opt/conda/lib/:$LD_LIBRARY_PATH"
Option 2:
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-geometric
pip install -r requirements.txt
For the case of "command 'x86_64-linux-gnu-gcc' failed with exit status 1":
apt-get install python3.x-dev
python run_bias_crs.py --config config/crs/tgredial/tgredial.yaml
การทดลองดำเนินการผ่านแบบจำลอง ReDial, KGSF, KBRD และ TGReDial และประเมินผลบนชุดข้อมูล ReDIAL และ TGReDIAL
การสร้างและการจัดเตรียมบทสนทนาสังเคราะห์นั้นดำเนินการโดย [data_prep_gen_ .ipynb] แรก จากนั้น [gen_convert_ .ipynb] ภายในโฟลเดอร์ของ data_aug (* หมายถึงชื่อของชุดข้อมูล)
การเพิ่มข้อมูลถูกนำมาใช้ภายใน base.py ภายใน [bias_crs/data/dataloader/base.py] ในขณะที่การเปลี่ยนแปลงจำนวนรายการที่จะเสริมผ่าน popNudge สามารถเปลี่ยนแปลงได้จากที่นี่
สำหรับผลการทดลองทุกครั้งจะถูกบันทึกไว้ในไดเร็กทอรีของ [data/bias/] และตามด้วยโฟลเดอร์ที่ตั้งชื่อตามชื่อโมเดลและชุดข้อมูล และตั้งชื่อว่า [bias_anlytic_data.csv]
การวิเคราะห์ผลลัพธ์การแนะนำที่สอดคล้องกันผ่านคะแนนความนิยมข้ามตอนและคะแนนความนิยมตามความตั้งใจของผู้ใช้สามารถเข้าถึงได้ผ่านโฟลเดอร์ของ [การวิเคราะห์]
from scipy.stats.stats import pearsonr
def compute_pop_scores(pop_score_dict, items):
return [pop_score_dict[item] if item in pop_score_dict else 0.0 for item in items]
pop_scores = [compute_pop_scores(pop_score_dict, row['Prediction_items']) for _, row in data.iterrows()]
data['pop_scores'] = pop_scores
new_conv = True
cep_scores = []
for idx, row in data.iterrows():
# set the default value to the first episode
if new_conv:
new_conv = False
cep_scores.append(0.5)
else:
if idx+1 < len(data) and row['conv_id'] != data.at[idx+1, 'conv_id']:
new_conv=True
pearsonr_score = np.abs(pearsonr(row['pop_scores'], data.at[idx-1, 'pop_scores'])[0])
cep_scores.append(pearsonr_score)
data['cep_score'] = cep_scores
data['cep_pop_score'] = data['cep_score'] * data['pop_bias']
data['target_pop_score'] = data['target_item_index'].map(pop_score_dict)
data['UIOP'] = np.abs(data['pop_bias'] - data['target_pop_score'])
@inproceedings{
title={Improving Conversational Recommendation Systems via Bias Analysis and Language-Model-Enhanced Data Augmentation},
author={Xi Wang, Hossein A. Rahmani, Jiqun Liu, Emine Yilmaz}
booktitle={Proceedings of EMNLP 2023 (Findings)}
year={2023}
}
พื้นที่เก็บข้อมูลนี้ได้รับการพัฒนาตามกรอบงาน CRSLab [https://github.com/RUCAIBox/CRSLab] ขอขอบคุณการมีส่วนร่วมอันล้ำค่าของพวกเขาสำหรับการพัฒนาและประเมินแบบจำลองภายในโครงการนี้อย่างเป็นระบบ