Nieznane słowa w wyuczonym osadzaniu słów (Gensim) do użycia w Keras
Trenuję osadzanie słów za pomocą GENSIM (word2vec) i używam wytrenowanego modelu w sieci neuronowej w KERAS. Problem pojawia się, gdy mam nieznane (spoza słownictwa) słowo, więc sieć neuronowa już nie działa, ponieważ nie może znaleźć wag dla tego konkretnego słowa. Myślę, że jednym ze sposobów rozwiązania tego problemu jest dodanie nowego słowa ( <unk>
) do wstępnie wyuczonego osadzania słowa z zerową wagą (lub może losowymi wagami? Która jest lepsza?) Czy to podejście jest w porządku? Ponadto w przypadku osadzania tego słowa wagi nie są trenowane w tej sieci neuronowej.
Odpowiedzi
Najbardziej typowe jest ignorowanie nieznanych słów. (Zastąpienie ich słowem wtyczki lub wektorem pochodzenia jest bardziej zniekształcające).
Możesz także rozważyć FastText
zamiast tego trenowanie trybu, który zawsze będzie syntetyzował jakiś wektor zgadywania dla słowa spoza słownictwa z wektorów znak-n-gramowych utworzonych podczas treningu. (Te wektory syntetyczne są często lepsze niż nic, zwłaszcza gdy słowo ma nakładające się rdzenie słów z pokrewnymi słowami - ale uzyskanie większej ilości danych szkoleniowych z przykładami wszystkich odpowiednich zastosowań jest lepsze, a ignorowanie rzadkich nieznanych słów nie jest takie złe).