DAI-utvecklareLaboration· ca 40 min· i webbläsaren
Labb: skalärprodukt, norm och cosinuslikhet
Implementera vektoroperationerna för hand med listor, verifiera mot NumPy, och använda cosinuslikhet för att hitta det mest lika ordet.
Lär ut: Vektorer
Teori
u·v = Σ uᵢvᵢ. ‖u‖ = √(u·u). cos(u,v) = u·v / (‖u‖‖v‖). Skalärprodukten är stor när vektorerna pekar åt samma håll — det är hela idén bakom embeddings.
Deluppgifter
- dot, norm — Implementera
dot(u, v)ochnorm(u)med vanliga listor (ingen NumPy). - cosinus — Implementera
cosinus(u, v). - mest_lik —
mest_lik(q, ordvektorer)returnerar nyckeln i dicten vars vektor har högst cosinuslikhet med q.
Startkoden
körs i din webbläsareimport math
def dot(u, v):
# TODO
...
def norm(u):
# TODO: math.sqrt(dot(u, u))
...
def cosinus(u, v):
# TODO
...
def mest_lik(q, ordvektorer):
# TODO: nyckeln med högst cosinus(q, vektor)
...
Du skriver koden, tester du inte ser avgör om den håller. Skapa ett gratis konto för att köra labben.
Prova diagnosenSkapa konto gratisFörväntade resultat
dot([1,2,3],[4,-1,2]) = 8; norm([6,8]) = 10; cosinus([1,0],[1,1]) ≈ 0,707; mest_lik(kung, {...}) = 'drottning'.
Vanliga fel
zipstannar vid kortaste listan — kontrollera lika längd.- Division med noll för nollvektorn i cosinus.
- Använder
max()på dict utankey=och får nyckeln i bokstavsordning.