Podobieństwo semantyczne i osadzenia zdań
Sentence-BERT, podobieństwo cosinusowe na potrzeby wyszukiwania semantycznego, klasteryzacja osadzeń.
Podobieństwo semantyczne i osadzenia zdań to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Zdania, nie tylko słowa
Osadzenia słów reprezentują słowa, ale często musimy porównywać całe zdania lub dokumenty. Uśrednianie wektorów słów powoduje utratę niuansów; potrzebujemy pojedynczego wektora, który uchwyci pełne znaczenie.
Czym są osadzenia zdań
Osadzenia zdań mapują całe zdanie na jeden gęsty wektor, dzięki czemu zdania o podobnym znaczeniu mają sąsiadujące wektory, co umożliwia wyszukiwanie semantyczne i grupowanie.
Biblioteka sentence-transformers
Biblioteka sentence-transformers ułatwia to zadanie. Udostępnia dostrojone modele transformerowe, które bezpośrednio generują wysokiej jakości wektory zdań.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("all-MiniLM-L6-v2")Dlaczego all-MiniLM-L6-v2
all-MiniLM-L6-v2 to popularny wybór domyślny: jest mały, szybki i dokładny, a także generuje wektory o 384 wymiarach. W większości zastosowań zapewnia dobry kompromis między szybkością a jakością.
Kodowanie zdań
model.encode przekształca listę zdań w macierz osadzeń, w której każdy wiersz odpowiada jednemu zdaniu.
sentences = [
"The cat sits on the mat.",
"A feline rests on the rug.",
"I am learning machine learning.",
]
embeddings = model.encode(sentences)
print(embeddings.shape) # (3, 384)Pomiar podobieństwa
Podobieństwo cosinusowe mierzy kąt między dwoma wektorami, ignorując ich długość. Wartości bliskie 1 oznaczają bardzo podobne znaczenie, a wartości bliskie 0 — brak związku.
from sentence_transformers import util
sim = util.cos_sim(embeddings[0], embeddings[1])
print(sim.item()) # high, both about a cat restingUżywanie sklearn cosine_similarity
Można również użyć bezpośrednio biblioteki scikit-learn na macierzy osadzeń, aby uzyskać pełną macierz podobieństwa dla każdej pary.
from sklearn.metrics.pairwise import cosine_similarity
matrix = cosine_similarity(embeddings)
print(matrix) # (3, 3) pairwise similaritiesIdea wyszukiwania semantycznego
Wyszukiwanie semantyczne znajduje dokumenty na podstawie znaczenia, a nie słów kluczowych. Należy zakodować zapytanie i wszystkie dokumenty, a następnie uszeregować dokumenty według ich podobieństwa cosinusowego do wektora zapytania.
Przykład wyszukiwania semantycznego
Zakoduj korpus raz, a następnie dla każdego zapytania oblicz podobieństwa i zwróć najlepiej dopasowane wyniki.
from sentence_transformers import util
corpus = ["How to reset my password", "Refund policy details", "Track my order"]
corpus_emb = model.encode(corpus)
query_emb = model.encode("I forgot my login")
hits = util.semantic_search(query_emb, corpus_emb, top_k=2)
print(hits)Zastosowania w praktyce
Osadzenia zdań napędzają dopasowywanie odpowiedzi w FAQ, wykrywanie duplikatów, grupowanie, rekomendacje oraz etap wyszukiwania w systemach RAG, które dostarczają odpowiedni kontekst dużym modelom językowym.
Wskazówki dotyczące dobrych wyników
Wybierz model wytrenowany do danego zadania (wyszukiwanie semantyczne lub parafrazy). Normalizuj osadzenia, jeśli wymaga tego używana miara podobieństwa, a w przypadku dużych korpusów korzystaj z bazy wektorowej, aby szybko wyszukiwać najbliższych sąsiadów.
Szybki test
Sprawdź swoją wiedzę na temat osadzeń zdań.
Podsumowanie
Podsumowanie: Osadzenia zdań kodują całe zdania jako wektory. Użyj SentenceTransformer("all-MiniLM-L6-v2") i model.encode(sentences), a następnie porównuj je za pomocą podobieństwa cosinusowego. Stanowi to podstawę wyszukiwania semantycznego: zakoduj zapytanie i korpus, a następnie uszereguj wyniki według podobieństwa. Jest to kluczowe dla dopasowywania odpowiedzi w FAQ, grupowania i wyszukiwania w systemach RAG.
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 53
- Lekcje
- 225
Często zadawane pytania
Czy lekcja „Podobieństwo semantyczne i osadzenia zdań” jest bezpłatna?
Tak — pełny tekst „Podobieństwo semantyczne i osadzenia zdań” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Podobieństwo semantyczne i osadzenia zdań”?
Sentence-BERT, podobieństwo cosinusowe na potrzeby wyszukiwania semantycznego, klasteryzacja osadzeń. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Podobieństwo semantyczne i osadzenia zdań”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Word2Vec: Skip-gram i CBOW
- Osadzenia GloVe i FastText
- Klasyfikacja tekstu za pomocą BERT
- Podobieństwo semantyczne i osadzenia zdań