fastText als een bibliotheek voor het effectief leren van woordspelingen en zinskarakterisering. Het is geschreven in C++ en ondersteunt multiprocessing tijdens de voorbereiding. FastText stelt u in staat om beheerde en onbegeleide portretten van woorden en zinnen voor te bereiden. Deze portretten (inbeddingen) kunnen worden gebruikt voor verschillende toepassingen van informatiedruk, als hoogtepunten in extra modellen, voor het bepalen van de concurrent, of als initialisatoren voor het leren van bewegingen.

Portrettering

FastText kan een goede uitvoering geven aan woordafbeeldingen en zinsgroepen, uniek vanwege de ongebruikelijke woorden door gebruik te maken van gegevens op karakterniveau.

Elk woord wordt gesproken als een zak karakter n-grammen ondanks het woord zelf, dus bijvoorbeeld, voor het woord materie, met n = 3, is de fastText portrettering voor het karakter n-grammen <ma, tangle, att, tte, ter, er>. < en > worden toegevoegd als limietafbeeldingen om het ngram van een woord te herkennen aan een woord zelf, dus bijvoorbeeld, als het woord tangle een stuk van het jargon is, wordt het gesproken als <mat>. Dit helpt de betekenis van kortere woorden, die als ngram van verschillende woorden kunnen verschijnen, te bewaren. Onvervreemdbaar maakt dit het ook mogelijk om betekenis te vangen voor postfixes/prefixes.

De lengte van n-grammen die u gebruikt kan worden beperkt door de – minn en – maxn banners voor het minste en meest extreme aantal karakters om individueel te gebruiken. Deze bepalen de omvang van de kwaliteiten om n-grammen voor te krijgen. Het model wordt gezien als een pakje woorden model omdat er, afgezien van het schuifvenster van n-gram bepaling, geen binnenstructuur is van een woord dat in aanmerking komt voor featurization, d.w.z. zolang de karakters onder het venster vallen, maakt het verzoek om het karakter n-grammen geen verschil. Je kunt de n-gram inbedding ook volledig uitschakelen door ze allebei op 0 te zetten. Dit kan waardevol zijn als de ‘woorden’ in je model geen woorden zijn voor een specifieke taal, en karakterniveau n-grammen niet goed zou voorspellen. De meest bekende use case is het punt waarop je in id’s als je woorden plaatst. Tijdens de model-update leert fastText ladingen voor elk van de n-grammen, net als het hele woord om informatie te begrijpen.

Terwijl de voorbereiding voor fastText multisnaren is, gebeurt het doornemen van de informatie door middel van een solitair koord. De parsing en tokenisatie worden gedaan wanneer de informatie wordt doorgenomen. We moeten in detail zien hoe dit wordt gedaan:

FastText neemt een recordhandvat door middel van – invoerconflicten voor invoerinformatie. Het doornemen van informatie uit stdin wordt niet gehandhaafd. FastText installeert een aantal vectoren om de infogegevens te controleren, binnenin word2int_ en woorden_. word2int_ staat vermeld op de hash van de woordstring, en slaat een consecutief int bestand op in de woorden_ cluster (std:: vector) zoals het de moeite waard is. De woorden_ cluster wordt gestaag ingevoerd in het verzoek dat interessante woorden verschijnen bij het doornemen van de informatie, en slaat als waarde het struct-gedeelte op dat alle gegevens over het woordtoken typeert. passage bevat de bijbehorende gegevens:

Een paar dingen om op te merken hier, het woord is de tekenreeks weergave van het woord, de telling is de absolute insluiting van het individuele woord in de informatieregel, entry_type is een van {woord, label} met een markering die net wordt gebruikt voor het beheerde geval. Alle informatietokens, met weinig aandacht voor entry_type, worden weggestopt in een gelijkaardige woordverwijzing, wat het uitrekken van verschillende soorten stoffen veel eenvoudiger maakt (ik zal het in een laatste bericht steeds vaker hebben over hoe dit te doen). Eindelijk, subwoorden is een vector van al het woord n-grammen van een bepaald woord. Deze worden ook gemaakt wanneer de informatie wordt doorgenomen, en naar de voorbereidingsstap gaat.

Het woord2int_ vector is van grootte MAX_VOCAB_SIZE = 30000000; dit getal is hard-coded. Deze grootte kan beperkt zijn bij het voorbereiden op een enorm corpus, en kan met succes worden uitgebreid tijdens het verzorgen van de uitvoering. De lijst voor het word2int_ cluster is de schatting van een string naar int hash en is een opmerkelijk getal onder 0 en MAX_VOCAB_SIZE. In het geval dat er een hash crash is, en er is net een passage aan de hash toegevoegd, wordt de waarde verhoogd tot we een one of a kind id aan een woord toewijzen.

Langs deze lijnen kan de uitvoering aanzienlijk verergeren zodra het jargon in MAX_VOCAB_SIZE in omvang toeneemt. Om dit te voorkomen, snoeit fastText het jargon elke keer dat de grootte van de hasj meer dan 75% van MAX_VOCAB_SIZE krijgt. Dit wordt afgewerkt door eerst de basis-totaalgrens voor een woord te verhogen zodat het een stukje van het jargon is, en het lexicon te snoeien voor alle woorden die niet zo groot zijn als dit. De controle voor de 75% rand gebeurt bij elk nieuw woord, dus dit geprogrammeerde snoeien kan in elke fase van de documentbegrijzingsprocedure gebeuren.

Naast de geprogrammeerde snoeiwijze betekent de basis dat woorden die een stuk van het jargon zijn, beperkt worden door het gebruik van de – minCount en – minCountLabel banners voor woorden en merken (gebruikt voor gereguleerde voorbereiding) afzonderlijk. De snoeiwijze die afhankelijk is van deze banners vindt plaats nadat het hele voorbereidingsdocument is behandeld. Uw lexicon kan worden gedrempeled op een hogere min-telling die fysiek wordt aangegeven als het aantal opmerkelijke woorden in uw programma de eerder bepaalde snoeiwijze triggert. De drempel naar de vooraf gedefinieerde minTelling zal hoe dan ook consistent gebeuren, zodat u er zeker van kunt zijn dat woorden met een lagere controle niet als een belangrijk aspect van uw informatie worden beschouwd.

Voor het negatief inspecteren van tegenslag wordt dan een tabel met negatieve woorden gebouwd met de grootte NEGATIEVE_TABLE_SIZE = 10000000. Let op: dit is ⅓ van de grootte van de MAX_VOCAB_SIZE. De tabel wordt opgebouwd door te tekenen uit een unigram-circulatie van de vierkante basis van de herhaling van elk woord, d.w.z..ken.

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

Dit garandeert dat de keren dat elk woord in de negatieventabel voorkomt, eenvoudigweg relatieve vierkante basis is van zijn herhaling. Deze tabel wordt dan herschikt om de randomisatie te garanderen.

Vervolgens wordt een testtabel ontwikkeld om de opeenvolgende woorden als plot in segment 2.3 van het eerste word2vec-uitbreidingsdocument op te nemen. De gedachte hierachter is dat woorden die opnieuw worden gebruikt veel minder gegevens geven dan woorden die ongewoon zijn, en dat hun weergave niet veel zal veranderen na het zien van eerdere observaties van een gelijksoortig woord.

In het papier wordt de bijbehorende techniek voor het verwijderen van het woord getraceerd: het voorbereidingswoord wordt verwijderd met een waarschijnlijkheid van

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

De standaardrand kan fysiek worden gewijzigd door middel van de – t arg. De edge esteem, t heeft niet hetzelfde belang in fastText als in het eerste word2vec-papier, en moet worden afgestemd op uw toepassing.

Een woord wordt weggegooid als, tijdens de voorbereidingsfase, een willekeurige trekking uit een uniforme toe-eigening ergens in het bereik van 0 en 1 prominenter is dan de waarschijnlijkheid dat het weggegooid wordt. Het volgende is een plot van de omloop voor waarden die lopen van 0-1 voor de standaardrand. Zoals in het diagram te zien is, is de waarschijnlijkheid dat een trekking meer opvalt dan de toename van P als de herhaling toeneemt, en langs deze lijnen is het ook de waarschijnlijkheid dat de toename wordt afgezet als de herhaling. Dit geldt alleen voor modellen zonder hulp. Woorden worden niet weggegooid voor een beheerd model.

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

Bij de kans dat we de voorbereiding met – voorgetrainde vectoren banner installeert, worden de kwaliteiten uit het informatiedossier gebruikt om de informatielaag vectoren te introduceren. In het geval dat vaag, een rooster van meting MxN waar M = MAX_VOCAB_SIZE + bucket_size, N = diminish wordt gemaakt. bucket_size vergelijkt met de absolute grootte van de tentoonstelling toegewezen voor alle ngram tokens.It is ingesteld via de -bucket flag en is standaard ingesteld op 2000000. Ngrammen worden ingevoerd door middel van een numerieke hash (de equivalente hashing capaciteit) van de ngram inhoud en het passen van de modulo van dit hash nummer op het geïnstalleerde raster op een positie te vergelijken met MAX_VOCAB_SIZE + hash. Merk op dat er crashes kunnen optreden in de ngrams ruimte, terwijl impacts onrealistisch zijn voor unieke woorden. Dit kan ook de uitvoering van het model beïnvloeden.

Diminish spreekt tot het element van de verborgen laag in de voorbereiding, en op deze manier wordt het element van de inbedding, en wordt ingesteld door middel van de – diminish banner. Dit is als vanzelfsprekend ingesteld op 100. Het netwerk wordt met een uniforme echte toe-eigening ergens in het bereik van 0 en 1/diminish ingesteld en is uniform in de eenheid 3D vierkant.