Alat Python sederhana untuk menanamkan perbandingan
Embcompare adalah paket python kecil yang sangat terinspirasi oleh alat pembanding yang menanamkan yang membantu Anda membandingkan embeddings Anda baik secara visual maupun numerik.
Embrompare membuat hal -hal Simple. Semua perhitungan dibuat dalam memori dan paket tidak membawa manajemen penyimpanan embedding.
Jika Anda memerlukan alat untuk menyimpan, membandingkan dan melacak eksperimen Anda, Anda mungkin menyukai proyek vektori.
# basic install
pip install embcompare
# installation with the gui tool
pip install embcompare[gui]Embompare menyediakan CLI dengan tiga sub-komandan:
embcompare add digunakan untuk membuat atau memperbarui file YAML yang berisi semua embeddings info: path, format, label, frekuensi istilah, ...;embcompare report digunakan untuk menghasilkan laporan JSON yang berisi metrik perbandingan;embcompare gui digunakan untuk memulai Webapp yang lurus untuk membandingkan embeddings Anda secara visual.Embompare Gunakan file YAML untuk merujuk embeddings dan informasi yang relevan. Secara default, EMBCOMPARE sedang mencari file bernama embompare.yaml di direktori kerja saat ini.
embeddings :
first_embedding :
name : My first embedding
path : /abspath/to/firstembedding.json
format : json
frequencies : /abspath/to/freqs.json
frequencies_format : json
labels : /abspath/to/labels.pkl
labels_format : pkl
second_embedding :
name : My second embedding
path : /abspath/to/secondembedding.json
format : word2vec
frequencies : /abspath/to/freqs.pkl
frequencies_format : pkl
labels : /abspath/to/labels.json
labels_format : json Perintah embcompare add memungkinkan untuk memperbarui file ini secara program (dan bahkan membuatnya jika tidak ada).
Embompare bertujuan untuk membantu membandingkan embedding berkat metrik numerik yang dapat digunakan untuk memeriksa apakah embedding baru yang dihasilkan sangat berbeda dari yang terakhir. embcompare report Perintah dapat digunakan dalam dua cara:
embcompare report first_embedding
# creates a first_embedding_report.json file containing some infos about the embeddingembcompare report first_embedding second_embedding
# creates a first_embedding_second_embedding_report.json file containing comparison metrics
GUI juga sangat berguna untuk membandingkan embeddings. Untuk memulai GUI, gunakan Commande embcompare gui . Ini akan meluncurkan aplikasi streamLit yang akan memungkinkan Anda untuk membandingkan embeddings yang Anda tambahkan secara visual dalam file konfigurasi.
Embompare menyediakan beberapa kelas untuk memuat dan membandingkan embeddings.
Kelas Embedding adalah anak dari kelas gensim.KeyedVectors .
Itu menambah beberapa fungsi:
import json
import gensim . downloader as api
from embcompare import Embedding
word_vectors = api . load ( "glove-wiki-gigaword-100" )
with open ( "frequencies.json" , "r" ) as f :
word_frequencies = json . load ( f )
embedding = Embedding . load_from_keyedvectors ( word_vectors , frequencies = word_frequencies )
neigh_dist , neigh_ind = embedding . compute_neighborhoods () Kelas EmbeddingComparison dimaksudkan untuk membandingkan dua objek Embedding :
from embcompare import EmbeddingComparison , load_embedding
emb1 = load_embedding ( "first_emb.bin" , embedding_format = "fasttext" , frequencies_path = "freqs.pkl" )
emb2 = load_embedding ( "second_emb.bin" , embedding_format = "word2vec" , frequencies_path = "freqs.pkl" )
comparison = EmbeddingComparison ({ "emb1" : emb1 , "emb2" : emb2 }, n_neighbors = 25 )
comparison . neighborhoods_similarities [ "word" ]
# 0.867 Kelas EmbeddingReport digunakan untuk menghasilkan laporan kecil tentang embedding:
from embcompare import EmbeddingReport , load_embedding
emb1 = load_embedding ( "first_emb.bin" , embedding_format = "fasttext" , frequencies_path = "freqs.pkl" )
report = EmbeddingReport ( emb1 )
report . to_dict ()
# {
# "vector_size": 300,
# "mean_frequency": 0.00012,
# "mean_distance_neighbors": 0.023,
# ...
# } Kelas EmbeddingComparisonReport digunakan untuk menghasilkan laporan perbandingan kecil dari dua embedding:
from embcompare import EmbeddingComparison , EmbeddingComparisonReport , load_embedding
emb1 = load_embedding ( "first_emb.bin" , embedding_format = "fasttext" , frequencies_path = "freqs.pkl" )
emb2 = load_embedding ( "second_emb.bin" , embedding_format = "word2vec" , frequencies_path = "freqs.pkl" )
comparison = EmbeddingComparison ({ "emb1" : emb1 , "emb2" : emb2 })
report = EmbeddingComparisonReport ( comparison )
report . to_dict ()
# {
# "embeddings" : [
# {
# "vector_size": 300,
# "mean_frequency": 0.00012,
# "mean_distance_neighbors": 0.023,
# ...
# },
# ...
# ],
# "neighborhoods_similarities_median": 0.012,
# ...
# } GUI dibangun dengan streamlit. Kami mencoba memodulasi aplikasi sehingga Anda dapat lebih mudah menggunakan kembali beberapa fitur untuk aplikasi streamlit khusus Anda:
# embcompare/gui/app.py
from embcompare . gui . features import (
display_custom_elements_comparison ,
display_elements_comparison ,
display_embeddings_config ,
display_frequencies_comparison ,
display_neighborhoods_similarities ,
display_numbers_of_elements ,
display_parameters_selection ,
display_spaces_comparison ,
display_statistics_comparison ,
)
from embcompare . gui . helpers import create_comparison
def main ():
"""Streamlit app for embeddings comparison"""
config_embeddings = config [ CONFIG_EMBEDDINGS ]
(
tab_infos ,
tab_stats ,
tab_spaces ,
tab_neighbors ,
tab_compare ,
tab_compare_custom ,
tab_frequencies ,
) = st . tabs (
[
"Infos" ,
"Statistics" ,
"Spaces" ,
"Similarities" ,
"Elements" ,
"Search elements" ,
"Frequencies" ,
]
)
# Embedding selection (inside the sidebar)
with st . sidebar :
parameters = display_parameters_selection ( config_embeddings )
# Display informations about embeddings
with tab_infos :
display_embeddings_config (
config_embeddings , parameters . emb1_id , parameters . emb2_id
)
comparison = create_comparison (
config_embeddings ,
emb1_id = parameters . emb1_id ,
emb2_id = parameters . emb2_id ,
n_neighbors = parameters . n_neighbors ,
max_emb_size = parameters . max_emb_size ,
min_frequency = parameters . min_frequency ,
)
# Display number of element in both embedding and common elements
with tab_infos :
display_numbers_of_elements ( comparison )
# Display statistics
with tab_stats :
display_statistics_comparison ( comparison )
if not comparison . common_keys :
st . warning ( "The embeddings have no element in common" )
st . stop ()
# Comparison below are based on common elements comparison
with tab_spaces :
display_spaces_comparison ( comparison )
with tab_neighbors :
display_neighborhoods_similarities ( comparison )
with tab_compare :
display_elements_comparison ( comparison )
with tab_compare_custom :
display_custom_elements_comparison ( comparison )
with tab_frequencies :
display_frequencies_comparison ( comparison )