Amazon Machine Learning Solutions Lab (MLSL) skapade nyligen ett verktyg för att kommentera text med namngivna enheter (NER) och relationsetiketter med hjälp av Amazon SageMaker Ground Sannhet. Annotatorer använder det här verktyget för att märka text med namngivna entiteter och länka deras relationer, och därigenom bygga en datauppsättning för att träna avancerade NLP-modeller (natural language processing) maskininlärning (ML). Viktigast av allt är att detta nu är allmänt tillgängligt för alla AWS-kunder.
Kundanvändningsfall: Booking.com
Booking.com är en av världens ledande reseplattformar online. Att förstå vad kunderna säger om företagets 28 miljoner+ fastighetslistor på plattformen är avgörande för att upprätthålla en förstklassig kundupplevelse. Tidigare kunde Booking.com endast använda traditionella sentimentanalyser för att tolka kundgenererade recensioner i stor skala. För att uppgradera specificiteten hos dessa tolkningar vände sig Booking.com nyligen till MLSL för hjälp med att bygga en anpassad kommenterad datauppsättning för att träna en aspektbaserad sentimentanalysmodell.
Traditionell sentimentanalys är processen att klassificera en text som positiv, negativ eller neutral som en singulära känsla. Detta fungerar för att i stora drag förstå om användare är nöjda eller missnöjda med en viss upplevelse. Till exempel, med traditionell sentimentanalys kan följande text klassificeras som "neutral":
Vår vistelse på hotellet var trevlig. Personalen var vänlig och rummen var rena, men våra sängar var ganska obekväma.
Aspektbaserad sentimentanalys ger en mer nyanserad förståelse av innehållet. I fallet med Booking.com, snarare än att ta en kundrecension som helhet och klassificera den kategoriskt, kan den ta emot känslor från en recension och tilldela den till specifika aspekter. Kundrecensioner av ett visst hotell kan till exempel berömma den obefläckade poolen och fitnessområdet, men ge kritisk feedback om restaurangen och loungen.
Det uttalande som skulle ha klassificerats som "neutralt" av traditionell sentimentanalys kommer, med aspektbaserad sentimentanalys, att bli:
Vår vistelse på hotellet var trevlig. Personalen var vänlig och rummen var rena, men våra sängar var ganska obekväma.
- Hotell: Positivt
- Personal: Positivt
- Rum: Positivt
- Sängar: Negativt
Booking.com försökte bygga en anpassad aspektbaserad sentimentanalysmodell som skulle berätta för dem vilka specifika delar av gästupplevelsen (från en lista med 50+ aspekter) som var positiv, negativ, eller neutrala.
Innan Booking.com kunde bygga en träningsdatauppsättning för den här modellen behövde de ett sätt att kommentera den. MLSL:s anteckningsverktyg gav den välbehövliga skräddarsydda lösningen. Människogranskning utfördes på en stor samling hotellrecensioner. Sedan slutförde annotatörer en annotering av namngivna enheter på känsla och gästupplevelse textspann och fraser innan de länkade samman lämpliga spann.
Den nya aspektbaserade modellen låter Booking.com anpassa både boende och recensioner till sina kunder. Att lyfta fram de positiva och negativa aspekterna av varje boende gör det möjligt för kunderna att välja sin perfekta matchning. Dessutom bryr sig olika kunder om olika aspekter av boendet, och den nya modellen öppnar möjligheten att visa de mest relevanta recensionerna för var och en.
Märkningskrav
Även om Ground Truth tillhandahåller en inbyggd NER-textkommentarfunktion, ger den inte möjligheten att länka samman enheter. Med detta i åtanke har Booking.com och MLSL utarbetat följande högnivåkrav för ett nytt namngiven textetiketteringsverktyg för enhetsigenkänning som:
- Accepterar som input: text, enhetsetiketter, relationsetiketteroch klassificeringsetiketter.
- Godkänner valfritt som indata förkommentarerad data med föregående etikett och relationskommentarer.
- Presenterar annotatorn med antingen okommenterad eller förkommenterad text.
- Tillåter annotatorer att markera och kommentera godtycklig text med en enhetsetikett.
- Tillåter annotatorer att skapa relationer mellan två entitetsanteckningar.
- Tillåter annotatorer att enkelt navigera i ett stort antal enhetsetiketter.
- Stöder gruppering av enhetsetiketter i kategorier.
- Tillåt överlappande relationer, vilket innebär att samma kommenterade textsegment kan relateras till mer än ett annat kommenterat textsegment.
- Tillåter överlappande anteckningar för entitetsetiketter, vilket innebär att två anteckningar kan överlappa samma textstycke. Till exempel kan texten "Seattle Space Needle" ha både anteckningarna "Seattle" → "platser" och "Seattle Space Needle" → "attraktioner".
- Utdataformatet är kompatibelt med inmatningsformatet, och det kan återkopplas till efterföljande märkningsuppgifter.
- Stöder UTF-8-kodad text som innehåller emoji och andra multi-byte-tecken.
- Stöder vänster till höger språk.
Exempel på anteckning
Tänk på följande dokument:
Vi älskade läget för detta hotell! Takloungen gav oss den perfekta utsikten över space needle. Det är också en kort bilresa från gäddmarknaden och vattnet.
Mat var endast tillgänglig via rumsservice, vilket var en liten besvikelse men är vettigt i denna post-pandemiska värld.
Sammantaget en rimligt prissatt upplevelse.
När det här dokumentet läses in i den nya NER-anteckningen får en arbetare följande gränssnitt:
I det här fallet är arbetstagarens uppgift att:
- Märk enheter relaterade till fastigheten (plats, pris, mat, etc.)
- Märk enheter relaterade till sentiment (positiva, negativa eller neutrala)
- Länka egendomsrelaterade namngivna enheter till sentimentrelaterade sökord för att exakt fånga gästupplevelsen
Anteckningshastigheten var en viktig faktor för verktyget. Med hjälp av en sekvens av intuitiva kortkommandon och musgester kan annotatorer driva gränssnittet och:
- Lägg till och ta bort anteckningar för namngivna enheter
- Lägg till relationer mellan namngivna enheter
- Hoppa till början och slutet av dokumentet
- Skicka in dokumentet
Dessutom finns det stöd för överlappande etiketter. Till exempel, Seattle Space Needle
: i denna fras, Seattle
är annoterad både som en plats i sig själv och som en del av attraktionens namn.
Den färdiga anteckningen ger en mer komplett, nyanserad analys av data:
Relationer kan konfigureras på många nivåer, från enhetskategorier till andra enhetskategorier (till exempel från "mat" till "sentiment") eller mellan enskilda entitetstyper. Relationer är riktade, så annotatorer kan koppla en aspekt som mat till en känsla, men inte vice versa (såvida det inte är uttryckligen aktiverat). När du ritar relationer kommer anteckningsverktyget automatiskt att härleda relationsetiketten och riktningen.
Konfigurera NER Annotation Tool
I det här avsnittet tar vi upp hur man anpassar NER-anteckningsverktyget för kundspecifika användningsfall. Detta inkluderar att konfigurera:
- Inmatningstexten att kommentera
- Enhetsetiketter
- Relationsetiketter
- Klassificeringsetiketter
- Förannoterade data
- Arbetsinstruktioner
Vi kommer att täcka detaljerna för inmatnings- och utdatadokumentformaten, samt ge några exempel på varje.
Mata in dokumentformat
NER-anteckningsverktyget förväntar sig följande JSON-formaterade indatadokument (Fält med ett frågetecken bredvid namnet är valfria).
I ett nötskal har inmatningsformatet dessa egenskaper:
- Antingen
entityLabels
orclassificationLabels
(eller båda) krävs för att kommentera. - If
entityLabels
ges alltsårelationshipLabels
kan läggas till. - Relationer kan tillåtas mellan olika enhets-/kategorietiketter eller en blandning av dessa.
- "Källan" till en relation är den enhet som den riktade pilen börjar med, medan "målet" är dit den är på väg.
Fält | Typ | Beskrivning |
text | sträng | Nödvändig. Mata in text för anteckning. |
tokenRows | sträng[][] | Frivillig. Anpassad tokenisering av inmatad text. Array av arrayer av strängar. Översta nivå array representerar varje rad med text (radbrytningar), och andra nivå array representerar tokens på varje rad. Alla tecken/runor i inmatningstexten måste redovisas i tokenRows, inklusive eventuella blanksteg. |
documentId | sträng | Frivillig. Valfritt värde för kunder att hålla reda på dokument som kommenteras. |
enhetsetiketter | objekt[] | Krävs om classificationLabels är tom. En rad enhetsetiketter. |
entityLabels[].namn | sträng | Nödvändig. Visningsnamn för enhetsetikett. |
entityLabels[].category | sträng | Frivillig. Enhetsetikettkategorinamn. |
entityLabels[].shortName | sträng | Frivillig. Visa denna text över kommenterade enheter snarare än det fullständiga namnet. |
entityLabels[].shortCategory | sträng | Frivillig. Visa den här texten i rullgardinsmenyn för val av entitetsanteckning istället för de fyra första bokstäverna i kategorinamnet. |
entityLabels.color | sträng | Frivillig. Hexfärgkod med prefixet "#". Om den är tom tilldelar den automatiskt en färg till enhetsetiketten. |
relationsetiketter | objekt[] | Frivillig. Uppsättning av relationsetiketter. |
relationLabels[].namn | sträng | Nödvändig. Visningsnamn för relationsetikett. |
relationLabels[].allowedRelationships | objekt[] | Frivillig. Matris av värden som begränsar vilka typer av etiketter för käll- och målenhet som denna relation kan tilldelas. Varje objekt i arrayen "OR'ed" tillsammans. |
relationLabels[].allowedRelationships[].sourceEntityLabelCategories | sträng[] | Krävs för att ställa in antingen sourceEntityLabelCategories eller sourceEntityLabels (eller båda). Lista över kategorityper för juridisk källenhetsetikett för denna relation. |
relationLabels[].allowedRelationships[].targetEntityLabelCategories | sträng[] | Krävs för att ställa in antingen targetEntityLabelCategories eller targetEntityLabels (eller båda). Lista över kategorityper för juridisk målenhetsetikett för denna relation. |
relationLabels[].allowedRelationships[].sourceEntityLabels | sträng[] | Krävs för att ställa in antingen sourceEntityLabelCategories eller sourceEntityLabels (eller båda). Lista över etiketttyper för juridisk källa för denna relation. |
relationLabels[].allowedRelationships[].sourceEntityLabels | sträng[] | Krävs för att ställa in antingen targetEntityLabelCategories eller targetEntityLabels (eller båda). Lista över juridiska målenhetsetiketttyper för denna relation. |
klassificering Etiketter | sträng[] | Krävs om entityLabels är tomt. Lista över klassificeringsetiketter på dokumentnivå. |
entityAnnotations | objekt[] | Frivillig. Uppsättning av entitetsanteckningar att förannotera ingångstext med. |
entityAnnotations[].id | sträng | Nödvändig. Unik identifierare för denna entitetsanteckning. Används för att referera till denna enhet i relationAnnotations. |
entityAnnotations[].start | antal | Nödvändig. Starta runförskjutning för denna entitetsanteckning. |
entityAnnotations[].end | antal | Nödvändig. Slut runoffset för denna entitetsannotering. |
entityAnnotations[].text | sträng | Nödvändig. Textinnehåll mellan start och slut runförskjutning. |
entityAnnotations[].label | sträng | Nödvändig. Associerad enhetsetikettnamn (från namnen i entityLabels). |
entityAnnotations[].labelCategory | sträng | Valfritt. Associerad enhetsetikettkategori (från kategorierna i entityLabels). |
relationAnteckningar | objekt[] | Frivillig. En rad relationskommentarer. |
relationAnnotations[].sourceEntityAnnotationId | sträng | Nödvändig. Källenhetskommentar-ID för denna relation. |
relationAnnotations[].targetEntityAnnotationId | sträng | Nödvändig. Antecknings-ID för målenhet för denna relation. |
relationAnnotationer[].etikett | sträng | Nödvändig. Namn på associerad relationsetikett. |
klassificeringAnteckningar | sträng[] | Frivillig. En rad klassificeringar att förannotera dokumentet med. |
meta | objektet | Frivillig. Ytterligare konfigurationsparametrar. |
meta.instruktioner | sträng | Frivillig. Instruktioner för märkningskommentaren i Markdown-format. |
meta.disableSubmitConfirmation | boolean | Frivillig. Ställ in på sant för att inaktivera inlämningsbekräftelsemodal. |
meta.multiClassification | boolean | Frivillig. Ställ in på sant för att aktivera multi-label-läge för classificationLabels. |
Här är några exempeldokument för att få en bättre uppfattning om detta inmatningsformat
Dokument som följer detta schema tillhandahålls till Ground Truth som enskilda rader i ett indatamanifest.
Utdatadokumentformat
Utdataformatet är utformat för att enkelt återkoppla till en ny anteckningsuppgift. Valfria fält i utdatadokumentet ställs in om de också är inställda i inmatningsdokumentet. Den enda skillnaden mellan ingångs- och utdataformaten är meta
objekt.
Fält | Typ | Beskrivning |
meta.avvisad | boolean | Är satt till sant om kommentatorn avvisade detta dokument. |
meta.rejectedReason | sträng | Annotatorns skäl för att avvisa dokumentet. |
meta.runor | sträng[] | Array av runor som står för alla tecken i inmatningstexten. Används för att beräkna entitetskommentarer start- och slutförskjutningar. |
Här är ett exempel på ett utdatadokument som har kommenterats:
Runes anmärkning:
En "runa" i detta sammanhang är ett enda tecken som kan markeras i text, inklusive tecken med flera byte som emoji.
- Eftersom olika programmeringsspråk representerar multi-byte-tecken på olika sätt, innebär det att vi har ett entydigt sätt att beskriva ett visst textval genom att använda "runor" för att definiera varje tecken som kan markeras som ett enda atomiskt element.
- Till exempel behandlar Python den svenska flaggan som fyra tecken:
Men JavaScript behandlar samma emoji som två tecken
För att eliminera all tvetydighet kommer vi att behandla den svenska flaggan (och alla andra emoji- och multibyte-tecken) som ett enda atomärt element.
- Offset: Runeposition i förhållande till inmatad text (börjar med index 0)
Utför NER-anteckningar med Ground Truth
Som en fullständigt hanterad datamärkningstjänst bygger Ground Truth utbildningsdatauppsättningar för ML. För detta användningsfall använder vi Ground Truth för att skicka en samling textdokument till en pool av arbetare för anteckning. Slutligen granskar vi för kvalitet.
Ground Truth kan konfigureras för att bygga ett datamärkningsjobb med det nya NER-verktyget som en anpassad mall.
Specifikt kommer vi att:
- Skapa en personalstyrka för privat märkning av arbetare för att utföra anteckningsuppgiften
- Skapa ett Ground Truth-indatamanifest med de dokument vi vill kommentera och ladda sedan upp det till Amazon Simple Storage Service (Amazon S3)
- Skapa Lambda-funktioner för pre-etiketteringsuppgift och post-labeling uppgift
- Skapa ett Ground Truth-märkningsjobb med den anpassade NER-mallen
- Anteckna dokument
- Granska resultaten
NER verktygsresurser
En komplett lista över refererade resurser och exempeldokument finns i följande diagram:
Märkning av arbetsstyrka
Ground Truth använder SageMaker-märkning av arbetsstyrkor för att hantera arbetare och fördela uppgifter. Skapa en privat arbetsstyrka, ett arbetslag som kallas ner-worker-team, och tilldela dig själv till teamet med hjälp av instruktionerna i Skapa en privat arbetskraft (Amazon SageMaker Console).
När du har lagt till dig själv i en privat arbetsstyrka och bekräftat din e-post, notera webbadressen till arbetarportalen från AWS Management Console:
- Navigera till
SageMaker
- Navigera till
Ground Truth → Labeling workforces
- Välj
Private
fliken - Notera URL:en
Labeling portal sign-in URL
Logga in på arbetarportalen för att se och börja arbeta med märkningsuppgifter.
Inmatningsmanifest
Ground Truth-indatamanifestet är en JSON-linjefil där varje rad innehåller en enskild arbetsuppgift. I vårt fall kommer varje rad att innehålla ett enda JSON-kodat indatadokument som innehåller texten som vi vill kommentera och NER-anteckningsschemat.
Ladda ner ett exempel på indatamanifest reviews.manifest
från https://assets.solutions-lab.ml/NER/0.2.1/sample-data/reviews.manifest
Anmärkningar: varje rad i inmatningsmanifestet behöver en nyckel på toppnivå source
or source-ref
. Du kan lära dig mer i Använd en inmatningsmanifestfil i Amazon SageMaker Developer Guide.
Ladda upp Input Manifest till Amazon S3
Ladda upp detta indatamanifest till en S3-bucket med AWS Management Console eller från kommandoraden, och ersätt därmed your-bucket
med ett verkligt hinknamn.
Ladda ner anpassad arbetarmall
Ladda ner NER-verktygets anpassade arbetsmall från https://assets.solutions-lab.ml/NER/0.2.1/worker-template.liquid.html genom att visa källan och spara innehållet lokalt, eller från kommandoraden:
Skapa Lambda-funktioner för pre-etiketteringsuppgift och post-labeling uppgift
Ladda ner exempel för märkningsuppgift Lambda-funktion: smgt-ner-pre-labeling-task-lambda.py
från https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-pre-labeling-task-lambda.py
Ladda ner exempel för märkningsuppgift Lambda-funktion: smgt-ner-post-labeling-task-lambda.py
från https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-post-labeling-task-lambda.py
- Skapa Lambda-funktion för pre-etiketteringsuppgift från AWS Management Console:
- Navigera till
Lambda
- Välja
Create function
- Ange
Function name
assmgt-ner-pre-labeling-task-lambda
- Välja
Runtime
→Python 3.6
- Välja
Create function
- In
Function code
→lambda_hanadler.py
, klistra in innehållet ismgt-ner-pre-labeling-task-lambda.py
- Välja
Deploy
- Navigera till
- Skapa lambda-funktion efter märkningsuppgift från AWS Management Console:
- Navigera till
Lambda
- Välja
Create function
- Ange
Function name
assmgt-ner-post-labeling-task-lambda
- Välja
Runtime
→Python 3.6
- Bygga ut
Change default execution role
- Välja
Create a new role from AWS policy templates
- Ange
Role name
:smgt-ner-post-labeling-task-lambda-role
- Välja
Create function
- Välj
Permissions
fliken - Välj
Role name
:smgt-ner-post-labeling-task-lambda-role
för att öppna IAM-konsolen - Lägg till två policyer till rollen
- Välja
Attach policies
- Fäst den
AmazonS3FullAccess
policy - Välja
Add inline policy
- Välj
JSON
fliken - Klistra in följande inline-policy:
- Välja
- Navigera tillbaka till
smgt-ner-post-labeling-task-lambda
Lambdafunktions konfigurationssida - Välj
Configuration
fliken - In
Function code
→ lambda_hanadler.py
, klistra in innehållet ismgt-ner-post-labeling-task-lambda.py
- Välja
Deploy
- Navigera till
Skapa ett Ground Truth-märkningsjobb
Från AWS Management Console:
- Navigera till
Amazon SageMaker
service - Navigera till
Ground Truth
→Labeling Jobs
. - Välja
Create labeling job
- Ange en
Job Name
- Välja
Manual Data Setup
- Ange platsen för indatauppsättningen där du laddade upp indatamanifestet tidigare (t.ex
3://your-bucket/ner-input/sample-smgt-input-manifest.jsonl
) - Ange platsen för utdatauppsättningen för att peka på en annan mapp i samma hink (t.ex.
s3://your-bucket/ner-output/
) - Ange en
IAM Role
genom att väljaCreate new role
- Tillåt den här rollen att komma åt valfri S3-bucket genom att välja
S3 buckets you specify
→Any S3 bucket
när du skapar policyn - I ett nytt AWS Management Console-fönster öppnar du
IAM
konsolen och väljRoles
- Sök efter namnet på rollen som du just skapade (t.ex.
AmazonSageMaker-ExecutionRole-20210301T154158
) - Välj rollnamnet för att öppna rollen i konsolen
- Bifoga följande tre policyer:
- Välj Bifoga policyer
- Fäst den
AWSLambda_FullAccess
till rollen - Välja
Trust Relationships
→Edit Trust Relationships
- Redigera förtroendeförhållandet JSON,
- ersätta
YOUR_ACCOUNT_NUMBER
med ditt numeriska AWS-kontonummer för att läsa: - Rädda förtroenderelationen
- Tillåt den här rollen att komma åt valfri S3-bucket genom att välja
- Återgå till det nya Ground Truth-jobbet i det tidigare AWS Management Console-fönstret: under
Task Category
, VäljCustom
- Välja
Next
- Välja
Worker types
:Private
- Välj
Private team
:ner-worker-team
som skapades i föregående avsnitt - I
Custom labeling task setup
textområdet, rensa standardinnehållet och klistra in innehållet iworker-template.liquid.html
fil som erhållits tidigare - ange
Pre-labeling task Lambda function
med den tidigare skapade funktionen:smgt-ner-pre-labeling
- ange
Post-labeling task Lambda function
med funktionen skapad tidigare:smgt-ner-post-labeling
- Välja
Create
Anteckna dokument
När Ground Truth-jobbet har skapats kan vi börja kommentera dokument. Öppna arbetarportalen för vår arbetsstyrka som skapats tidigare (i AWS Management Console, navigera till SageMaker
, Ground Truth → Labeling workforces
, Private
och öppna Labeling portal sign-in URL
)
Logga in och välj den första etikettuppgiften i tabellen och välj sedan "Börja arbeta" för att öppna kommentatorn. Gör dina kommentarer och välj skicka på alla tre exempeldokumenten.
Granska resultaten
När Ground Truth-annotatorer slutför uppgifter kommer resultaten att finnas tillgängliga i S3-utmatningshinken:
När alla uppgifter för ett märkningsjobb är klara är den konsoliderade utdata tillgänglig i output.manifest
fil som finns här:
Det här utdatamanifestet är en JSON-radfil med ett kommenterat textdokument per rad i "Output Document Format" som specificerats tidigare. Den här filen är kompatibel med "Input Document Format", och den kan matas direkt in i ett efterföljande Ground Truth-jobb för ytterligare en omgång av anteckningar. Alternativt kan den tolkas och skickas till ett ML-utbildningsjobb. Några scenarier där vi kan använda en andra omgång av kommentarer är:
- Dela upp anteckningsprocessen i två steg där den första kommentatorn identifierar entitetskommentarer och den andra kommentatorn ritar relationer
- Tar ett prov på vår
output.manifest
och skicka den till en andra, mer erfaren kommentator för granskning som en kvalitetskontroll
Anpassade mallar för anteckningar för Ground Truth
NER-anteckningsverktyget som beskrivs i detta dokument är implementerat som en anpassad Ground Truth-anteckningsmall. AWS-kunder kan bygga sina egna anpassade anteckningsgränssnitt med hjälp av instruktionerna som finns här:
Slutsats
Genom att arbeta tillsammans kunde Booking.com och Amazon MLSL utveckla ett kraftfullt textannoteringsverktyg som kan skapa komplexa namngivna enheters igenkänning och relationskommentarer.
Vi uppmuntrar AWS-kunder med en NER-textanteckning att prova verktyget som beskrivs i det här inlägget. Om du vill ha hjälp med att påskynda användningen av ML i dina produkter och tjänster, vänligen kontakta Amazon Machine Learning Solutions Lab.
Om författarna
Dan Noble är en mjukvaruutvecklingsingenjör på Amazon där han hjälper till att skapa förtjusande användarupplevelser. På fritiden tycker han om att läsa, träna och göra äventyr med sin familj.
Pri Nonis är en Deep Learning Architect på Amazon ML Solutions Lab, där han arbetar med kunder över olika vertikaler och hjälper dem att påskynda sin molnmigreringsresa och att lösa sina ML-problem med hjälp av toppmoderna lösningar och teknologier.
Niharika Jayanthi är Front End Engineer på AWS, där hon utvecklar anpassade annoteringslösningar för Amazon SageMakers kunder. Utanför jobbet tycker hon om att gå på museum och träna.
Amit Beka är Machine Learning Manager på Booking.com, med över 15 års erfarenhet av mjukvaruutveckling och maskininlärning. Han är fascinerad av människor och språk, och hur datorer fortfarande förbryllas av båda.
- '
- 100
- 11
- 7
- Om oss
- tillgång
- Konto
- Redovisning
- tvärs
- Handling
- Dessutom
- Annat
- Alla
- amason
- Amazon maskininlärning
- Amazon SageMaker
- Tvetydighet
- analys
- OMRÅDE
- tillgänglig
- Tillgänglig för alla
- AWS
- Börjar
- Där vi får lov att vara utan att konstant prestera,
- SLUTRESULTAT
- Byggnad
- vilken
- fall
- klassificering
- cloud
- koda
- samling
- komplex
- datorer
- konfiguration
- övervägande
- Konsol
- innehåll
- innehåll
- kunde
- Skapa
- kritisk
- kundupplevelse
- Kunder
- datum
- djupt lärande
- utveckla
- Utvecklare
- Utveckling
- olika
- dokument
- inte
- lätt
- effekt
- Emoji
- uppmuntra
- ingenjör
- etc
- exempel
- utförande
- förväntar
- erfarenhet
- Erfarenheter
- familj
- Fed
- återkoppling
- Fält
- Slutligen
- Förnamn
- fitness
- livsmedelsproduktion
- format
- hittade
- full
- fungera
- gif
- kommer
- Gäst
- styra
- hjälpa
- hjälper
- här.
- Markera
- hotell
- Hur ser din drömresa ut
- How To
- HTTPS
- IAM
- genomföras
- med Esport
- Inklusive
- index
- individuellt
- IT
- JavaScript
- Jobb
- resa
- Nyckel
- märkning
- Etiketter
- språk
- Språk
- Large
- ledande
- LÄRA SIG
- inlärning
- Adress
- Nivå
- nivåer
- linje
- LINK
- Flytande
- Lista
- Annonser
- lokalt
- läge
- du letar
- maskininlärning
- ledning
- markera
- marknad
- Match
- meta
- emot
- ML
- modell
- mer
- museer
- namn
- Naturligt språk
- Naturlig språkbehandling
- behövs
- nlp
- nummer
- Erbjudanden
- offset
- nätet
- öppet
- öppnas
- Möjlighet
- Övriga
- Personer
- fraser
- plattform
- Plattformar
- Strategier
- policy
- poolen
- Portal
- post-pandemi
- den mäktigaste
- pris
- Principal
- privat
- process
- Produkter
- Programmering
- programmeringsspråk
- egenskapen
- ge
- ger
- Python
- kvalitet
- fråga
- Läsning
- Förhållanden
- Krav
- resurs
- Resurser
- restaurang
- Resultat
- översyn
- Omdömen
- Rum
- sagemaker
- sparande
- Skala
- känsla
- känsla
- Tjänster
- in
- Kort
- Enkelt
- So
- Mjukvara
- mjukvaruutveckling
- Lösningar
- LÖSA
- Utrymme
- fart
- starta
- .
- bo
- förvaring
- stödja
- Målet
- Tekniken
- källan
- tid
- tillsammans
- tokenization
- tokens
- verktyg
- topp
- toppnivå
- spår
- traditionell
- Utbildning
- färdas
- behandla
- behandlar
- Litar
- us
- användare
- värde
- version
- utsikt
- Vad
- inom
- Arbete
- arbetade
- arbetare
- arbetskraft
- arbetssätt
- tränar
- fungerar
- världen
- Världens
- skulle
- år