fastText jako biblioteka umożliwiająca efektywne uczenie się portretów słownych i charakteryzacji zdań. Jest on napisany w języku C++ i wspiera wieloprocesowe przetwarzanie podczas przygotowywania. FastText pozwala na przygotowanie administrowanych i nie administrowanych portretów słów i zdań. Te portrety (embeddings) mogą być wykorzystywane do różnych zastosowań, od nacisku informacyjnego, jako podkreślenia do dodatkowych modeli, do określania konkurentów lub jako inicjalizatory do nauki w ruchu.

Portret

FastText potrafi osiągnąć świetne wykonanie portretów słownych i grupowania zdań, wyjątkowo z powodu nietypowych słów, dzięki wykorzystaniu danych na poziomie znaków.

Każde słowo jest wypowiadane jako worek znaków n-gramów niezależnie od samego słowa, więc na przykład, dla materii słowa, z n = 3, FastText portrety dla znaku n-gramów to <ma, tangle, att, tte, ter, er>. < i > są dodawane jako obrazy graniczne, aby rozpoznać ngram słowa z samego słowa, więc na przykład, jeśli słowo tangle jest kawałkiem żargonu, to jest mówione jako <mat>. Pomaga to zachować znaczenie krótszych słów, które mogą pojawić się jako ngramy różnych słów. Nieodłącznie pozwala to również na wychwycenie znaczenia dla postfiksów/przedrostków.

Długość n-gramów, których używasz, może być ograniczona przez – minn i – maxn banery dla najmniejszej i najbardziej ekstremalnej liczby znaków do indywidualnego wykorzystania. Kontrolują one zakres jakości, dla których można uzyskać n-gramy. Model jest postrzegany jako model pakietu słów, ponieważ poza przesuwanym oknem określania n-gramów, nie ma wewnętrznej struktury słowa, która jest brana pod uwagę przy wybiórczości, tzn. tak długo, jak długo znaki znajdują się pod oknem, żądanie n-gramów nie robi różnicy. Można również całkowicie wyłączyć osadzanie n-gramów również poprzez ustawienie obu na 0. Może to być cenne, gdy ‘słowa’ w modelu nie są słowami dla konkretnego języka, a n-gramy na poziomie znaków nie wróżą dobrze. Najbardziej znanym przypadkiem użycia jest moment, w którym umieszczasz w ids jako słowa. Podczas aktualizacji modelu, fastText uczy się ładunków dla każdego z n-gramów, tak samo jak całego słowa do zrozumienia informacji.

Podczas gdy przygotowanie do fastText’u jest wielostrunowe, przenikanie informacji odbywa się poprzez samotny ciąg. Przetwarzanie i tokenizacja są wykonywane, gdy informacje są wykorzystywane. Powinniśmy dostrzec, jak to się odbywa w szczegółach:

FastText zajmuje się rekordzistami za pomocą opcji – input contention for input information. Wykorzystywanie informacji z stdin nie jest podtrzymywane. FastText instantuje kilka wektorów do monitorowania danych info, wewnątrz nazywanych word2int_ i words_. word2int_ jest wymieniony na haszu łańcucha słów i przechowuje kolejny plik int do klastra words_ (std:: wektor) jak to jest warte. Klaster words_ jest stale wpisywany w żądaniu, aby interesujące słowa pojawiały się podczas korzystania z informacji, i przechowuje jako swoją wartość sekcję struktury, która typuje wszystkie dane o tokenie słowa. fragment zawiera dane towarzyszące:

Kilka rzeczy do zanotowania, słowo jest przedstawieniem ciągu słów, tally jest bezwzględną zawartością pojedynczego słowa w linii informacyjnej, entry_type jest jednym z {słowa, etykiety} ze znakiem używanym właśnie w podanym przypadku. Wszystkie tokeny informacyjne, zwracając mało uwagi na entry_type, są odkładane w podobnym odwołaniu do słowa, co znacznie upraszcza szybkie rozciąganie się w celu zawarcia różnych rodzajów substancji (o tym, jak to zrobić, będę mówił coraz częściej w ostatnim wpisie). W końcu, podsłowa są wektorem wszystkich wyrazów n-gramów danego słowa. Są one również wykonane, gdy informacje są wykorzystywane, i poszedł do etapu przygotowania.

Wektor słowa2int_ ma wielkość MAX_VOCAB_SIZE = 30000000; Liczba ta jest zakodowana na stałe. Rozmiar ten może być ograniczony podczas przygotowywania na ogromnym korpusie i może być z powodzeniem rozszerzony podczas dbania o wykonanie. Lista dla klastra word2int_ jest szacunkiem łańcucha do int hash i jest niezwykłą liczbą wśród 0 i MAX_VOCAB_SIZE. W przypadku wystąpienia błędu hash, a do skrótu właśnie dodano fragment, wartość jest zwiększana do momentu znalezienia jedynego w swoim rodzaju id, który zostanie przypisany do słowa.

Wzdłuż tych linii, wykonanie może się znacznie pogorszyć, gdy wielkość żargonu osiągnie MAX_VOCAB_SIZE. Aby temu zapobiec, fastText ściąga żargon za każdym razem, gdy wielkość haszu przekroczy 75% MAX_VOCAB_SIZE. Kończy się to najpierw zwiększeniem podstawowego limitu licznika dla słowa, aby dopasować rachunek za bycie kawałkiem żargonu, i przycinanie leksykonu dla wszystkich słów, które mają licznik nie tak bardzo jak to. Kontrola 75% krawędzi zdarza się, gdy każde nowe słowo jest włączone, więc to zaprogramowane przycinanie może nastąpić w każdej fazie procedury rozumienia dokumentu.

Oprócz zaprogramowanego przycinania, podstawa oznacza słowa, które są kawałkiem żargonu jest ograniczona przez wykorzystanie – minCount i – minCountLabel banerów dla słów i znaków (używane do regulowanego przygotowania) indywidualnie. Zależne od tych banerów przycinanie następuje po załatwieniu całego dokumentu przygotowawczego. Twój leksykon może być ustawiony na wyższą wartość minimalną, która jest fizycznie wskazana, jeśli liczba wszystkich niezwykłych słów w twoim dokumencie wyzwala zaprogramowane wcześniej przycinanie. Młocenie do predefiniowanego minCount i tak będzie odbywać się konsekwentnie, z powodzeniem gwarantując, że słowa z niższą kontrolą nie będą stanowić głównego aspektu informacji.

Dla negatywnej kontroli nieszczęścia, tabela z negatywnymi słowami jest następnie zbudowana z rozmiaru NEGATIVE_TABLE_SIZE = 10000000. Uwaga: jest to ⅓ wielkości MAX_VOCAB_SIZE. Tabela jest tworzona poprzez wyciągnięcie z obiegu unigramu podstawy kwadratu rekurencyjności każdego słowa, tj. ken.

https://miro.medium.com/max/177/0*8c96yqLRzTvBGUX9

Gwarantuje to, że każde słowo pojawiające się w tabeli negatywów jest prostą, względną kwadratową podstawą jego powtarzalności. Tabela ta jest następnie przekształcana w celu zagwarantowania randomizacji.

Następnie tworzona jest tabela testowa, w której kolejne wyrazy są usuwane jako wykres w segmencie 2.3 pierwszego rozwinięcia słowa2vec. Myśl stojąca za tym jest taka, że słowa, które zostały przerobione, dają mniej danych niż słowa, które są rzadkością, i że ich przedstawienie nie zmieni się o wiele po tym, jak wcześniej zaobserwowano wiele razy podobne słowo.

Papier śledzi towarzyszącą mu technikę usuwania: słowo “preparat” jest usuwane z dużym prawdopodobieństwem

https://miro.medium.com/max/359/0*qNLC4VG51Z_sqcjQ

Domyślna krawędź może być fizycznie zmieniona za pomocą argumentu – t. Krawędź szacunku, nie ma podobnej wagi w fastText jak w pierwszym słowie2vec i powinna być dostrojona do Twojej aplikacji.

Słowo pozbywa się tylko wtedy, gdy na etapie przygotowania arbitralne wyciągnięcie z jednolitego zawłaszczenia gdzieś w zakresie 0 i 1 jest bardziej widoczne niż prawdopodobieństwo pozbycia się. Poniżej znajduje się wykres obiegu dla wartości z zakresu 0-1 dla domyślnego zbocza. Jak pokazano na wykresie, prawdopodobieństwo, że losowanie jest bardziej znaczące niż przyrosty P jako rekurencyjne przyrosty, i wzdłuż tych linii, jest to prawdopodobieństwo, że zostanie ono usunięte jako rekurencyjne przyrosty. Odnosi się to tylko do modeli niezależnych. Słowa nie są usuwane dla modelu zarządzanego.

https://miro.medium.com/max/550/0*VL3ZG58qvvXq-7aU

Na wypadek, gdybyśmy podsunęli preparat za pomocą wstępnie wyszkolonego bannera wektorów, właściwości z rekordu informacyjnego są wykorzystywane do wprowadzenia wektorów warstwy informacyjnej. W przypadku niejasności tworzona jest siatka pomiarowa MxN gdzie M = MAX_VOCAB_SIZE + bucket_size, N = diminish. bucket_size porównuje się do bezwzględnej wielkości eksponatu przydzielonej dla wszystkich tokenów ngramowych.Jest ona ustawiona poprzez flagę -bucket i domyślnie wynosi 2000000. Nogramy wprowadza się za pomocą liczbowego skrótu (równoważnego skrótowi) zawartości ngra i dopasowuje się modulo tego skrótu do podanej siatki w miejscu porównywanym z MAX_VOCAB_SIZE + hash. Zauważ, że w przestrzeni ngramów mogą wystąpić zderzenia, podczas gdy uderzenia są nierealistyczne dla unikalnych słów. Może to mieć również wpływ na wykonanie modelu.

Diminish mówi do elementu warstwy ukrytej w przygotowaniu, a w ten sposób do elementu osadzenia, i jest ustawiany za pomocą – diminish banner. Jest on ustawiony na 100 jako rzecz oczywista. Sieć jest podszyta jednolitym autentycznym środkiem gdzieś w zakresie 0 i 1 /zmniejszyć i jest jednolita w jednostce kwadratu 3D.