Biorąc pod uwagę zdanie: „Kiedy otworzę drzwi ?? , zacznie się automatycznie nagrzewać”
Chciałbym uzyskać listę możliwych słów w? z prawdopodobieństwem.
Podstawową koncepcją stosowaną w modelu word2vec jest „przewidywanie” słowa na podstawie otaczającego kontekstu.
Po zbudowaniu modelu, jaka jest właściwa operacja wektorów kontekstowych, aby wykonać moje zadanie przewidywania nowych zdań?
Czy to po prostu suma liniowa?
model.most_similar(positive=['When','I','open','the','door','it','starts' ,'heating','automatically'])
Odpowiedzi:
Word2vec działa w dwóch modelach CBOW i skip-gram. Weźmy model CBOW, ponieważ twoje pytanie idzie w taki sam sposób, jak przewiduje słowo docelowe, biorąc pod uwagę otaczające słowa.
Zasadniczo model opracowuje macierze wagi wejściowej i wyjściowej, które zależą od słów kontekstu wejściowego i wyjściowego słowa docelowego za pomocą ukrytej warstwy. Zatem propagacja wsteczna służy do aktualizacji wag, gdy różnica błędów między przewidywanym wektorem wyjściowym a bieżącą macierzą wyjściową.
Zasadniczo, przewidywanie słowa docelowego na podstawie danych słów kontekstowych jest używane jako równanie w celu uzyskania optymalnej macierzy masy dla danych danych.
Aby odpowiedzieć na drugą część, wydaje się nieco złożona niż tylko suma liniowa.
h
wielkości warstwyNx1
syn1
(word2vec.c
lubgensim
), która ma rozmiarVxN
syn1
przezh
wynikowy wektor będzie miałz
rozmiarVx1
y = softmax(z)
z rozmiaremVx1
, gdzie najwyższe prawdopodobieństwo oznacza jednorazową reprezentację słowa docelowego w słowniku.V
oznacza rozmiar słownictwa iN
rozmiar wektora osadzania.Źródło: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf
Aktualizacja: Modele pamięci krótkoterminowej wykonują obecnie świetną robotę, przewidując kolejne słowa. Modele seq2seq są wyjaśnione w samouczku tensorflow . Jest też post na blogu o generowaniu tekstu.
źródło
syn1
po prostu zapisując model. tak, kolejność jest ignorowana, w przypadku aplikacji można faktycznie przejść z modelem seq2seq opartym na LSTM.Funkcja przewidywania brakujących słów została dodana jako funkcja w najnowszej wersji Word2Vec. Oczywiście twoje zdanie musi być zgodne ze składnią wejściową modelu Word2Vec używaną do szkolenia modelu (małe litery, słowa stop itp.)
Zastosowanie do przewidywania 3 najlepszych słów dla „Kiedy otwieram? Drzwi”:
źródło
center
jest między trzecim a czwartym słowem? To nie ma dla mnie sensu. Wyobrażam sobie, że można wstawić tylko parzyste słowa kontekstowefloor(len(n)/2))
ifloor(len(n)/2))+1