5.8 KiB
5.8 KiB
import pandas as pd
import pickle
import numpy as np
import faiss
from sklearn.metrics import ndcg_score, dcg_score, average_precision_score
sprawy organizacyjne- zaliczenie
dodatkowy mini projekt/zadanie domowe?
true_relevance = np.asarray([[10, 2, 0, 1, 5]])
scores = np.asarray([[9, 5, 2, 1, 1]])
idealny- 9,2,5
nasz- 10,2,0
dla p = 3
CG = 10 + 2 + 0
CG
12
np.log2(2)
1.0
DCG = 10 / np.log2(2) + 2 / np.log2(3) + 0 / np.log2(4)
DCG
11.261859507142916
dcg_score(true_relevance, scores, k=3)
11.261859507142916
IDCG = 10 / np.log2(2) + 5 / np.log2(3) + 2 / np.log2(4)
IDCG
14.154648767857287
DCG / IDCG
0.7956297391650307
ndcg_score(true_relevance, scores, k=3)
0.7956297391650307
Pytanie:
jak to się odnosi do praktyki?
ZADANIE
policz ręcznie CG, DCG, nDCG i sprawdź czy zgadza się to z scikit-learn: dla k = 10
TRUE = np.asarray([[1,0,1,0,0,0,0,1,0,1,0,0,0,0,1]])
PREDICTED = np.asarray([[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]])
Wyszukiwarka TFIDF - jakie są plusy i minusy?
W jaki sposób można zrobić lepszą wyszukiwarkę (wykorzystując transformery lub inne modele neuronowe)? Jakie są potencjalne zalety i wady takiego podejścia?
from sentence_transformers import SentenceTransformer
sentences = ["Hello World", "Hallo Welt"]
model = SentenceTransformer('LaBSE')
embeddings = model.encode(sentences)
print(embeddings)
Zadanie
- zainstaluj faiss i zrób tutorial: https://github.com/facebookresearch
- wczytaj treści artykułów z BBC News Train.csv
- Użyj któregoś z transformerów (możesz użyć biblioteki sentence-transformers) do stworzenia embeddingów dokumentów
- wczytaj embeddingi do bazy danych faiss
- wyszukaj query 'consumer electronics market'