<jupyter_start><jupyter_text>Visualisation de la précision dense vs sparse<jupyter_code>import pandas as pd<jupyter_output><empty_output><jupyter_text>On visualise ici les différentes performances selon le type de retriever choisi (sparse / dense).  Dans le notebook *Visualisation results* (results de Pavel) on visualisait la performance pour chaque test, ici on visualise plutot la *performance moyenne* comme plusieurs tests ont été faits.<jupyter_code>results_dense_sparse = results[results['filter_level'].isnull()]
results_dense_sparse.set_index('k', inplace=True)
mean_prec_sparse_dense = results_dense_sparse.groupby(['k','retriever_type'])['precision'].mean()
print("précision moyenne par rapport à k et retriever type: \n", mean_prec_sparse_dense)
mean_prec_sparse_dense.unstack().plot(kind='bar', stacked=True,legend=True)<jupyter_output>précision moyenne par rapport à k et retriever type: 
 k  retriever_type
1  dense             0.148723
   sparse            0.064119
2  sparse            0.096175
3  dense             0.180935
   sparse            0.141046
5  dense             0.195227
   sparse            0.223111
Name: precision, dtype: float64<jupyter_text>Globalement le retriever *dense* donne des meilleurs résultats, sauf pour le cas k=5  Visualisation des résultats avec filtrage par dossier<jupyter_code>results_filtrage_dossier = results[results['filter_level']=='dossier']
results_filtrage_dossier.set_index('k', inplace=True)
mean_prec_filtrage_dossier = results_filtrage_dossier.groupby(['k','retriever_type'])['precision'].mean()
print("précision moyenne par rapport à k et au type de retriever pour filtrage 'dossier': \n", mean_prec_filtrage_dossier)
mean_prec_filtrage_dossier.unstack().plot(kind='bar',stacked=True,legend=True)<jupyter_output>précision moyenne par rapport à k et au type de retriever pour filtrage 'dossier': 
 k  retriever_type
1  dense             0.344698
   sparse            0.323747
2  sparse            0.313275
3  dense             0.406866
   sparse            0.408369
5  dense             0.426887
   sparse            0.565911
Name: precision, dtype: float64<jupyter_text>Visualisation des résultats avec filtrage par thème<jupyter_code>results_filtrage_theme = results[results['filter_level']=='theme']
results_filtrage_theme.set_index('k', inplace=True)
mean_prec_filtrage_theme = results_filtrage_theme.groupby(['k','retriever_type'])['precision'].mean()
print("précision moyenne par rapport à k et au type de retriever pour filtrage 'thème': \n", mean_prec_filtrage_theme)
mean_prec_filtrage_theme.unstack().plot(kind='bar',stacked=True,legend=True)
#Pourquoi meilleure performance pour dense ici?
print(len(results))
print(results['retriever_type'].value_counts())


print(len(results_filtrage_dossier))
print(results_filtrage_dossier['retriever_type'].value_counts())

print(len(results_filtrage_theme))
print(results_filtrage_theme['retriever_type'].value_counts())<jupyter_output>134
sparse    105
dense      29
Name: retriever_type, dtype: int64
24
sparse    18
dense      6
Name: retriever_type, dtype: int64
41
sparse    27
dense     14
Name: retriever_type, dtype: int64
{'fraction_non_alphanumeric': 0.09183349221480776, 'fraction_numerical': 0.04321576104226247, 'mean_word_length': 5.160469667318982, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '72376', 'license': 'MIT', 'n_tokens_mistral': 1153, 'n_tokens_neox': 1059, 'n_words': 245, 'path': 'docs/piaf/retriever/Visualisation_results_Robin.ipynb', 'repo_name': 'taniki/knowledge-base', 'size': '3147'}