أداة Python بسيطة لتضمين المقارنة
Ambcompare هي حزمة Python صغيرة مستوحاة للغاية من أداة المقارنة التضمين التي تساعدك على مقارنة تضميناتك بصريًا وعدديًا.
Perccompare يبقي الأشياء simples. يتم إجراء جميع الحسابات في الذاكرة ولا تجلب الحزمة أي إدارة تخزين التضمين.
إذا كنت بحاجة إلى أداة لتخزين تجاربك ومقارنتها وتتبعها ، فقد يعجبك مشروع Vectory.
# basic install
pip install embcompare
# installation with the gui tool
pip install embcompare[gui]يوفر أمبير CLI ثلاثة مخصصات فرعية:
embcompare add لإنشاء أو تحديث ملف yaml يحتوي على جميع التضمينات: المسار ، التنسيق ، الملصقات ، التردد المصطلح ، ... ؛embcompare report لإنشاء تقارير JSON التي تحتوي على مقاييس المقارنة ؛embcompare gui لبدء webapp البطيء لمقارنة تضميناتك بصريًا.استخدم ملف yaml للرجوع إلى التضمينات والمعلومات ذات الصلة. بشكل افتراضي ، تبحث أمسيومباري عن ملف يدعى أمبيرباري. YAML في دليل العمل الحالي.
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 يتيح الأمر لـ embcompare add إلى تحديث هذا الملف بشكل برمجي (وحتى إنشائه إذا لم يكن موجودًا).
يهدف أمبيرباري إلى المساعدة في مقارنة التضمين بفضل المقاييس العددية التي يمكن استخدامها للتحقق مما إذا كان التضمين الجديد الذي تم إنشاؤه مختلفًا تمامًا عن آخر. يمكن استخدام embcompare report بطريقتين:
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
واجهة المستخدم الرسومية هي أيضا مفيدة جدا لمقارنة التضمينات. لبدء واجهة المستخدم الرسومية ، استخدم Commande embcompare gui . سيتم تشغيل تطبيق بديل يسمح لك بمقارنة التضمينات التي أضفتها في ملف التكوين بصريًا.
يوفر Embcompare عدة فئات لتحميل ومقارنة التضمينات.
فئة Embedding هي طفل من فئة gensim.KeyedVectors .
يضيف وظائف قليلة:
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 () يهدف فئة EmbeddingComparison لمقارنة كائنين 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 يتم استخدام فئة EmbeddingReport لإنشاء تقرير صغير حول التضمين:
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,
# ...
# } يتم استخدام فئة EmbeddingComparisonReport لإنشاء تقرير مقارنة صغيرة من اثنين من التضمين:
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,
# ...
# } تم بناء واجهة المستخدم الرسومية مع التدفق. لقد حاولنا تحديد التطبيق حتى تتمكن من إعادة استخدام بعض الميزات بسهولة لتطبيق SPEREMLIT المخصص:
# 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 )