Kuidas muuta esemeid embedideks ja soovitada nende põhjal?
sobes.tech AI
Vastus AI-lt
Objektide (näiteks kaupade, artiklite, filmide) teisendamine embeding'ideks ja nende põhjal soovituste tegemine hõlmab tavaliselt järgmisi samme:
-
Omaduste valimine: koguda andmeid objektide kohta — tekstikirjeldused, kategooriad, omadused, pildid jne.
-
Teisendamine vektori ruumi:
- Tekstipõhiste andmete jaoks saab kasutada Word2Vec, FastText, BERT, Sentence Transformers mudeleid, mis teisendavad teksti fikseeritud suurusega vektoriteks.
- Piltide jaoks — kasutada eelnevalt treenitud CNN (näiteks ResNet) omaduste väljavõtmiseks.
- Kategooria- ja numbriliste omaduste jaoks — rakendada one-hot kodeerimist, normaliseerimist ja/või embeding'ide õppimist.
-
Omaduste ühendamine: kui on mitu andmetüüpi, ühendada need üheks embeding'iks.
-
Embedding-mudeli treenimine (valikuline): võib treenida mudelit, mis arvestab kasutajate ja objektide vahelist suhtlust (näiteks matrix factorization, närvivõrgud triplet loss või contrastive loss'iga).
-
Soovitused:
- Uue kasutaja või päringu jaoks leida huvipakkuvate objektide embeding'id.
- Kasutada sarnasuse mõõdikuid (kosinusvahemaa, Euklidi vahemaa) lähimate naabrite leidmiseks.
- Soovitada objekte, mille embeding'id on kõige lähemal.
Näide tekstikirjelduste jaoks Pythonis sentence-transformers raamatukogu abil:
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
items = ["Punane T-särk puuvillast", "Sinised teksad", "Mustad nahast saapad"]
model = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = model.encode(items)
# Leia objekt, mis sarnaneb "Sinine T-särk"
query = "Sinine T-särk"
query_emb = model.encode([query])
similarities = cosine_similarity(query_emb, embeddings)[0]
most_similar_idx = np.argmax(similarities)
print(f"Soovitatud objekt: {items[most_similar_idx]}")
Seega võimaldavad embeding'id esitada objekte mugaval viisil ning luua soovitusi nende sarnasuse põhjal vektoritruumis.