Próbuję osadzić około 60 milionów fraz w przestrzeni wektorowej , a następnie obliczyć podobieństwo między nimi. Używam sklearn's CountVectorizer
z niestandardową wbudowaną funkcją tokenizera, która produkuje unigramy i bigramy. Okazuje się, że aby uzyskać sensowne reprezentacje, muszę pozwolić na ogromną liczbę kolumn, liniowych w liczbie wierszy. Prowadzi to do niewiarygodnie rzadkich matryc i zabija wydajność. Nie byłoby tak źle, gdyby było tylko około 10 000 kolumn, co moim zdaniem jest całkiem rozsądne w przypadku osadzania słów.
Zastanawiam się nad próbą użycia Google'a, word2vec
ponieważ jestem prawie pewien, że powoduje on znacznie mniejsze wymiary i gęstsze osadzanie. Ale czy są jeszcze jakieś osadzenia, które na pierwszy rzut oka mogą uzasadniać? Kluczowym wymaganiem byłaby możliwość skalowania około 60 milionów fraz (wierszy).
Jestem całkiem nowy w dziedzinie osadzania słów, więc każda rada by pomogła.
Powinienem również dodać, że już używam dekompozycji wartości pojedynczej, aby poprawić wydajność.
Odpowiedzi:
Ostatnio pracowano nad dynamicznym przypisywaniem wymiaru word2vec (pomiń gram) za pomocą maszyn Boltzmanna. Sprawdź ten artykuł:
„Nieskończone osadzanie słów” -Nalsnick, Ravi
Podstawową ideą jest pozwolenie, aby Twój zestaw treningowy dyktował wymiar twojego modelu word2vec, co jest karane przez termin regulacyjny związany z rozmiarem wymiaru.
Powyższy artykuł robi to dla słów i byłbym ciekawy, jak dobrze radzi sobie z frazami.
źródło