You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/da/6-NLP/2-Tasks/README.md

13 KiB

Almindelige opgaver og teknikker inden for naturlig sprogbehandling

For de fleste naturlig sprogbehandling-opgaver skal teksten, der skal behandles, opdeles, analyseres, og resultaterne gemmes eller krydsrefereres med regler og datasæt. Disse opgaver gør det muligt for programmøren at udlede betydningen eller intentionen eller blot frekvensen af termer og ord i en tekst.

Quiz før forelæsning

Lad os udforske almindelige teknikker, der bruges til at behandle tekst. Kombineret med maskinlæring hjælper disse teknikker dig med at analysere store mængder tekst effektivt. Før du anvender ML på disse opgaver, skal vi dog forstå de problemer, som en NLP-specialist støder på.

Almindelige opgaver inden for NLP

Der er forskellige måder at analysere en tekst, du arbejder med. Der er opgaver, du kan udføre, og gennem disse opgaver kan du opnå en forståelse af teksten og drage konklusioner. Du udfører normalt disse opgaver i en sekvens.

Tokenisering

Det første, de fleste NLP-algoritmer skal gøre, er sandsynligvis at opdele teksten i tokens eller ord. Selvom det lyder enkelt, kan det være vanskeligt at tage højde for tegnsætning og forskellige sprogs ord- og sætningsafgrænsninger. Du kan være nødt til at bruge forskellige metoder til at bestemme afgrænsninger.

tokenisering

Tokenisering af en sætning fra Pride and Prejudice. Infografik af Jen Looper

Embeddings

Word embeddings er en måde at konvertere dine tekstdata til numeriske værdier. Embeddings udføres på en måde, så ord med lignende betydning eller ord, der bruges sammen, grupperes.

word embeddings

"I have the highest respect for your nerves, they are my old friends." - Word embeddings for en sætning i Pride and Prejudice. Infografik af Jen Looper

Prøv dette interessante værktøj til at eksperimentere med word embeddings. Ved at klikke på et ord vises grupper af lignende ord: 'toy' grupperes med 'disney', 'lego', 'playstation' og 'console'.

Parsing & Part-of-speech Tagging

Hvert ord, der er blevet tokeniseret, kan tagges som en del af talen - et substantiv, verbum eller adjektiv. Sætningen the quick red fox jumped over the lazy brown dog kan f.eks. POS-tagges som fox = substantiv, jumped = verbum.

parsing

Parsing af en sætning fra Pride and Prejudice. Infografik af Jen Looper

Parsing handler om at genkende, hvilke ord der er relateret til hinanden i en sætning - for eksempel the quick red fox jumped er en adjektiv-substantiv-verbum-sekvens, der er adskilt fra sekvensen lazy brown dog.

Ord- og frasefrekvenser

En nyttig procedure, når man analyserer en stor mængde tekst, er at opbygge en ordbog over hvert ord eller hver frase af interesse og hvor ofte det forekommer. Frasen the quick red fox jumped over the lazy brown dog har en ordfrekvens på 2 for the.

Lad os se på et eksempeltekst, hvor vi tæller frekvensen af ord. Rudyard Kiplings digt The Winners indeholder følgende vers:

What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.

Da frasefrekvenser kan være case-insensitive eller case-sensitive efter behov, har frasen a friend en frekvens på 2, the har en frekvens på 6, og travels er 2.

N-grams

En tekst kan opdeles i sekvenser af ord med en fast længde, et enkelt ord (unigram), to ord (bigram), tre ord (trigram) eller et vilkårligt antal ord (n-grams).

For eksempel the quick red fox jumped over the lazy brown dog med en n-gram score på 2 producerer følgende n-grams:

  1. the quick
  2. quick red
  3. red fox
  4. fox jumped
  5. jumped over
  6. over the
  7. the lazy
  8. lazy brown
  9. brown dog

Det kan være lettere at visualisere det som en glidende boks over sætningen. Her er det for n-grams af 3 ord, hvor n-grammet er fremhævet i hver sætning:

  1. the quick red fox jumped over the lazy brown dog
  2. the quick red fox jumped over the lazy brown dog
  3. the quick red fox jumped over the lazy brown dog
  4. the quick red fox jumped over the lazy brown dog
  5. the quick red fox jumped over the lazy brown dog
  6. the quick red fox jumped over the lazy brown dog
  7. the quick red fox jumped over the lazy brown dog
  8. the quick red fox jumped over the lazy brown dog

n-grams glidende vindue

N-gram værdi på 3: Infografik af Jen Looper

Substantivfrase-ekstraktion

I de fleste sætninger er der et substantiv, der er subjektet eller objektet i sætningen. På engelsk kan det ofte identificeres ved at have 'a', 'an' eller 'the' foran. At identificere subjektet eller objektet i en sætning ved at 'ekstrahere substantivfrasen' er en almindelig opgave i NLP, når man forsøger at forstå betydningen af en sætning.

I sætningen "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun.", kan du identificere substantivfraserne?

I sætningen the quick red fox jumped over the lazy brown dog er der 2 substantivfraser: quick red fox og lazy brown dog.

Sentimentanalyse

En sætning eller tekst kan analyseres for sentiment, eller hvor positiv eller negativ den er. Sentiment måles i polarity og objektivitet/subjektivitet. Polarity måles fra -1.0 til 1.0 (negativ til positiv) og 0.0 til 1.0 (mest objektiv til mest subjektiv).

Senere vil du lære, at der er forskellige måder at bestemme sentiment ved hjælp af maskinlæring, men en måde er at have en liste over ord og fraser, der er kategoriseret som positive eller negative af en menneskelig ekspert og anvende den model på tekst for at beregne en polaritetsscore. Kan du se, hvordan dette ville fungere i nogle tilfælde og mindre godt i andre?

Bøjning

Bøjning gør det muligt at tage et ord og finde dets ental eller flertal.

Lemmatization

En lemma er grundformen eller hovedordet for et sæt ord, for eksempel flew, flies, flying har en lemma af verbet fly.

Der findes også nyttige databaser til NLP-forskere, især:

WordNet

WordNet er en database over ord, synonymer, antonymer og mange andre detaljer for hvert ord på mange forskellige sprog. Det er utrolig nyttigt, når man forsøger at bygge oversættelser, stavekontroller eller sprogværktøjer af enhver art.

NLP-biblioteker

Heldigvis behøver du ikke selv at bygge alle disse teknikker, da der findes fremragende Python-biblioteker, der gør det meget mere tilgængeligt for udviklere, der ikke er specialiserede i naturlig sprogbehandling eller maskinlæring. De næste lektioner inkluderer flere eksempler på disse, men her vil du lære nogle nyttige eksempler, der kan hjælpe dig med den næste opgave.

Øvelse - brug af TextBlob biblioteket

Lad os bruge et bibliotek kaldet TextBlob, da det indeholder nyttige API'er til at tackle disse typer opgaver. TextBlob "står på de gigantiske skuldre af NLTK og pattern, og fungerer godt med begge." Det har en betydelig mængde ML indlejret i sin API.

Bemærk: En nyttig Quick Start guide er tilgængelig for TextBlob, som anbefales til erfarne Python-udviklere.

Når man forsøger at identificere substantivfraser, tilbyder TextBlob flere muligheder for ekstraktorer til at finde substantivfraser.

  1. Tag et kig på ConllExtractor.

    from textblob import TextBlob
    from textblob.np_extractors import ConllExtractor
    # import and create a Conll extractor to use later 
    extractor = ConllExtractor()
    
    # later when you need a noun phrase extractor:
    user_input = input("> ")
    user_input_blob = TextBlob(user_input, np_extractor=extractor)  # note non-default extractor specified
    np = user_input_blob.noun_phrases                                    
    

    Hvad sker der her? ConllExtractor er "En substantivfrase-ekstraktor, der bruger chunk parsing trænet med ConLL-2000 træningskorpus." ConLL-2000 refererer til 2000-konferencen om Computational Natural Language Learning. Hvert år afholdt konferencen en workshop for at tackle et vanskeligt NLP-problem, og i 2000 var det substantiv chunking. En model blev trænet på Wall Street Journal med "sektioner 15-18 som træningsdata (211727 tokens) og sektion 20 som testdata (47377 tokens)". Du kan se de anvendte procedurer her og resultaterne.

Udfordring - forbedring af din bot med NLP

I den forrige lektion byggede du en meget simpel Q&A bot. Nu vil du gøre Marvin lidt mere sympatisk ved at analysere din input for sentiment og udskrive et svar, der matcher sentimentet. Du skal også identificere en noun_phrase og spørge om den.

Dine trin, når du bygger en bedre samtalebot:

  1. Udskriv instruktioner, der rådgiver brugeren om, hvordan man interagerer med botten
  2. Start loop
    1. Accepter brugerinput
    2. Hvis brugeren har bedt om at afslutte, så afslut
    3. Behandl brugerinput og bestem passende sentimentrespons
    4. Hvis en substantivfrase detekteres i sentimentet, pluraliser den og spørg om mere input om det emne
    5. Udskriv svar
  3. loop tilbage til trin 2

Her er kodeudsnittet til at bestemme sentiment ved hjælp af TextBlob. Bemærk, at der kun er fire gradienter af sentimentrespons (du kan have flere, hvis du vil):

if user_input_blob.polarity <= -0.5:
  response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
  response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
  response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
  response = "Wow, that sounds great. "

Her er noget eksempeloutput til vejledning (brugerinput er på linjer, der starter med >):

Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!

En mulig løsning på opgaven findes her

Videnskontrol

  1. Tror du, at de sympatiske svar ville 'narre' nogen til at tro, at botten faktisk forstod dem?
  2. Gør identifikationen af substantivfrasen botten mere 'troværdig'?
  3. Hvorfor ville det være nyttigt at ekstrahere en 'substantivfrase' fra en sætning?

Implementer botten i den tidligere videnskontrol og test den på en ven. Kan den narre dem? Kan du gøre din bot mere 'troværdig'?

🚀Udfordring

Tag en opgave fra den tidligere videnskontrol og prøv at implementere den. Test botten på en ven. Kan den narre dem? Kan du gøre din bot mere 'troværdig'?

Quiz efter forelæsning

Gennemgang & Selvstudie

I de næste par lektioner vil du lære mere om sentimentanalyse. Undersøg denne interessante teknik i artikler som disse på KDNuggets

Opgave

Få en bot til at svare


Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.