Sobes.tech
Middle — Senior

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:

  1. Omaduste valimine: koguda andmeid objektide kohta — tekstikirjeldused, kategooriad, omadused, pildid jne.

  2. 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.
  3. Omaduste ühendamine: kui on mitu andmetüüpi, ühendada need üheks embeding'iks.

  4. 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).

  5. 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.