เครื่องมือ Python อย่างง่ายสำหรับการเปรียบเทียบการเปรียบเทียบ
EMBCOMPARE เป็นแพ็คเกจ Python ขนาดเล็กที่ได้รับแรงบันดาลใจอย่างมากจากเครื่องมือเปรียบเทียบการฝังที่ช่วยให้คุณเปรียบเทียบการฝังตัวของคุณทั้งทางสายตาและตัวเลข
EMBCOMPARE ช่วยให้สิ่งต่าง ๆ หายไป การคำนวณทั้งหมดทำในหน่วยความจำและแพ็คเกจไม่ได้นำการจัดการการจัดเก็บข้อมูลการฝังไว้
หากคุณต้องการเครื่องมือในการจัดเก็บเปรียบเทียบและติดตามการทดลองของคุณคุณอาจชอบโครงการ Vectory
# basic install
pip install embcompare
# installation with the gui tool
pip install embcompare[gui]EMBCOMPARE จัดเตรียม CLI ที่มีสามคำสั่งย่อย:
embcompare add ใช้เพื่อสร้างหรืออัปเดตไฟล์ YAML ที่มี Embeddings Infos ทั้งหมด: PATH, รูปแบบ, ฉลาก, คำว่า frequencies, ... ;embcompare report ใช้เพื่อสร้างรายงาน JSON ที่มีตัวชี้วัดเปรียบเทียบembcompare gui ใช้เพื่อเริ่มต้น Streamlit WebApp เพื่อเปรียบเทียบการฝังตัวของคุณด้วยสายตาEMBCOMPARE ใช้ไฟล์ YAML สำหรับการอ้างอิง EMBEDDING และข้อมูลที่เกี่ยวข้อง โดยค่าเริ่มต้น EMBCOMPARE กำลังมองหาไฟล์ชื่อ EMBCOMPARE.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 มีจุดมุ่งหมายเพื่อช่วยในการเปรียบเทียบการฝังด้วยตัวชี้วัดเชิงตัวเลขที่สามารถใช้เพื่อตรวจสอบว่าการฝังตัวที่สร้างขึ้นใหม่นั้นแตกต่างจากครั้งสุดท้ายหรือไม่ 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
GUI ยังมีประโยชน์มากในการเปรียบเทียบการฝังตัว ในการเริ่มต้น GUI ให้ใช้ Commande embcompare gui มันจะเปิดตัวแอพ streamlit ที่จะช่วยให้คุณเปรียบเทียบการฝังตัวที่คุณเพิ่มในไฟล์การกำหนดค่า
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,
# ...
# } GUI ถูกสร้างขึ้นด้วยกระแส เราพยายามปรับเปลี่ยนแอพเพื่อให้คุณสามารถนำคุณสมบัติบางอย่างกลับมาใช้ใหม่ได้ง่ายขึ้นสำหรับแอพ Streamlit ที่กำหนดเองของคุณ:
# 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 )