Du har kanskje observert at når du skriver på mobiltelefonen, forutsier den neste ord du kanskje vil bruke. Det er en funksjon som gjør skrivingen raskere og sparer tid.
Det er mer praktisk. Enten du sender tekstmeldinger, søker på internett eller skriver en e-post, kan prediktiv tekst være veldig nyttig. Men har du noen gang lurt på hvordan mobilen din vet hvilket ord som skal foreslås neste gang?
I denne veiledningen vil jeg vise deg hvordan du lager ordprediksjoner ved hjelp av Python.
For å følge med på en enkel måte, hjelper det å ha en grunnleggende forståelse av NLP. Hvis du er ny på dette, ikke bekymre deg; du kan raskt få det grunnleggende fra artikkelen vår «NLP Simplified», hvor vi forklarer det enkelt.
Innholdsfortegnelse
Applikasjoner av Next Word Prediction
La oss begynne å lære om denne interessante NLP-teknikken sammen og hvordan den er nyttig, og gå tydelig gjennom hvert trinn.
Dataforberedelse
Først av alt må vi importere de nødvendige bibliotekene som er viktige for prosjektet vårt. Etter det vil vi definere eksempeltekst, som skal brukes til opplæring. Du kan erstatte denne teksten med hvilken som helst tekstdata du ønsker.
Du kan også bruke et datasett med tekstdata, som du enkelt finner på Kaggle eller en lignende plattform.
# Import Necessary Libraries import nltk from nltk import ngrams from collections import defaultdict import random
Eksempeltekstdata, som vil bli brukt til å forutsi neste ord.
# Sample Text Data text = """ Once upon a luminous, starry night in the quaint, enigmatic town of Serendipity, a curious young explorer named Amelia embarked on an extraordinary adventure. With her trusty magnifying glass in hand and an indomitable spirit, she embarked on a quest to discover the elusive Elysian treasure hidden deep within the labyrinthine forest. As she ventured through the verdant woods, Amelia encountered an eccentric, talking squirrel named Percival, who spoke in riddles and guided her toward the treasure's whereabouts. The forest was resplendent with bioluminescent flora, illuminating her path with a kaleidoscope of colors. Amelia soon reached a precipice overlooking an awe-inspiring, cerulean waterfall, its cascading waters echoing a melodious serenade. Beside the waterfall stood a colossal, moss-covered stone with cryptic inscriptions. With Percival's guidance, she deciphered the ancient runes and uncovered the entrance to the treasure trove. Inside, she discovered an opulent chest adorned with intricate, golden filigree. Upon opening it, a symphony of shimmering jewels, radiant gemstones, and glistening artifacts greeted her with an ethereal glow. The Elysian treasure was hers, a testament to her dauntless courage and insatiable curiosity. Amelia's return to Serendipity was celebrated with jubilant revelry, and her remarkable journey became a legend, inspiring others to embark on their own adventures in the wondrous realm of imagination and discovery. """
Du kan erstatte denne teksten i henhold til dine krav.
Tokenisering
Vi vil forhåndsbehandle teksten vår og tokenisere den. Tokenisering er prosessen med å dele opp teksten i individuelle ord eller tokens. Vi bruker nltk-biblioteket i Python for å tokenisere teksten vår.
For å sikre at modellen vår fokuserer på ord og ignorerer store og små bokstaver eller tegnsetting, utfører vi forhåndsbehandling. Dette trinnet innebærer å konvertere alle ord til små bokstaver og fjerne tegnsetting.
import nltk # Tokenize the text into words words = nltk.word_tokenize(text) # Preprocess the words (convert to lowercase, remove punctuation) words = [word.lower() for word in words if word.isalnum()] words
Etter forbehandling og tokenisering vil vi få alle ord med små bokstaver og uten tegnsetting.
Tokeniserte ord
Bygge N-gram
I dette trinnet skal vi lage N-gram, som er sekvenser av N ord i naturlig språkbehandling (NLP).
I koden vår skal vi lage bigrammer, der N er lik 2, noe som betyr at hvert N-gram vil bestå av par med ord.
Dette er et grunnleggende trinn i å bygge en prediksjonsmodell for det neste ordet fordi det lar oss analysere ordsekvenser og forutsi neste ord basert på konteksten gitt av de forrige N-1 ordene.
# Define the order of the N-gram model (N=2 for bigrams) N = 2 # Create N-grams from the tokenized words ngrams_list = list(ngrams(words, N)) # Create a defaultdict to store N-grams and their frequency ngram_freq = defaultdict(int) for ngram in ngrams_list: ngram_freq[ngram] += 1
Disse N-grammene fungerer som byggesteinene for opplæring og implementering av vår neste-ords prediksjonsmodell.
Definer funksjon
I dette trinnet lager vi en funksjon kalt «forutsi_neste_ord» som gjetter neste ord i en setning basert på et gitt prefiks (en rekkefølge av ord).
Denne funksjonen er avgjørende i den neste ordprediksjonsmodellen, siden den tar konteksten gitt av prefikset og bruker den til å lage en prediksjon om det mest sannsynlige neste ordet.
Jeg vil forklare hva som skjer i denne prosessen med enkle ord:
- Funksjonen ser på alle ordparene (bigrammene) i tekstdataene våre som starter med det oppgitte prefikset (ordene før det manglende ordet).
- Den teller hvor ofte hvert ord vises i disse parene og sorterer dem etter frekvens, fra de fleste til minst vanlige.
- Funksjonen foreslår da det ordet som forekommer oftest som det neste ordet etter det gitte prefikset.
# Define Function def predict_next_word(prefix): # Filter N-grams that start with the given prefix matching_ngrams = [(ngram, freq) for ngram, freq in ngram_freq.items() if ngram[:-1] == prefix] if not matching_ngrams: return "No prediction available." # Sort N-grams by frequency in descending order sorted_ngrams = sorted(matching_ngrams, key=lambda x: x[1], reverse=True) # Select the N-gram with the highest frequency as the prediction prediction = sorted_ngrams[0][0][-1] return prediction
Det er en avgjørende del av den neste ordprediksjonsmodellen, siden den lar oss generere kontekstuelt relevante forslag for det neste ordet i en gitt tekstsekvens.
Testing
Denne koden lar deg teste modellen med din egen inngang. Du skriver noen få ord, trykker på Enter, og modellen spår neste ord. Hvis du skriver noe ugyldig, blir du bedt om å prøve på nytt.
# You can use this code snippet to interactively test the model with user input user_input = input("Enter a prefix for next-word prediction: ").lower().split() if len(user_input) != N - 1: print("Please enter a valid prefix.") else: prefix = tuple(user_input) prediction = predict_next_word(prefix) print(f"Next word prediction: {prediction}")
Koden vår vil lage denne typen grensesnitt. Hvor du kan skrive prefikser og trykke enter.
Skriv inn prefiks
Når du har skrevet inn enter, får du ditt neste ord
Forutsagt ord
Det er en måte å demonstrere hvordan neste-ords prediksjonsmodellen kan brukes i praksis.
Utfordringer:
Hvordan forbedre nøyaktigheten
Siste ord
I en verden av naturlig språkbehandling er det en verdifull ferdighet å forutsi neste ord. Med disse 5 enkle Python-trinnene har du fått et kraftig verktøy for raskere kommunikasjon og smartere teknologi.
Fortsett å utforske og bruke denne kunnskapen til å forbedre språkopplevelsene dine. Reisen har akkurat begynt!
Du kan også utforske noen beste måter å laste ned filer fra en URL ved hjelp av Python.