Du har måske bemærket, at når du skriver på din mobiltelefon, forudsiger den det næste ord, du måske vil bruge. Det er en funktion, der gør det hurtigere at skrive og sparer dig tid.
Det er mere bekvemt. Uanset om du sender sms’er, søger på internettet eller skriver en e-mail, kan forudsigende tekst være virkelig nyttig. Men har du nogensinde spekuleret på, hvordan din mobil ved, hvilket ord der skal foreslås næste gang?
I denne guide vil jeg vise dig, hvordan du opretter ordforudsigelser ved hjælp af Python.
For nemt at følge med hjælper det at have en grundlæggende forståelse af NLP. Hvis du er ny til dette, så fortvivl ikke; du kan hurtigt få det grundlæggende fra vores artikel “NLP Simplified”, hvor vi forklarer det enkelt.
Indholdsfortegnelse
Anvendelser af Next Word Prediction
Lad os begynde at lære om denne interessante NLP-teknik sammen, og hvordan den er nyttig, og gennemgå hvert trin tydeligt.
Dataforberedelse
Først og fremmest skal vi importere de nødvendige biblioteker, som er vigtige for vores projekt. Derefter vil vi definere eksempeltekst, som vil blive brugt til træning. Du kan erstatte denne tekst med alle tekstdata efter eget valg.
Du kan også bruge et datasæt med tekstdata, som du nemt kan finde på Kaggle eller en lignende platform.
# Import Necessary Libraries import nltk from nltk import ngrams from collections import defaultdict import random
Eksempel på tekstdata, som vil blive brugt til at forudsige det næste 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 tekst efter dit behov.
Tokenisering
Vi vil forbehandle vores tekst og tokenisere den. Tokenisering er processen med at opdele teksten i individuelle ord eller tokens. Vi bruger nltk-biblioteket i Python til at tokenisere vores tekst.
For at sikre, at vores model fokuserer på ord og ignorerer store og små bogstaver eller tegnsætning, udfører vi forbehandling. Dette trin involverer konvertering af alle ord til små bogstaver og fjernelse af tegnsætning.
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
Efter forbehandling og tokenisering får vi alle ord med små bogstaver og uden tegnsætning.
Tokeniserede ord
Bygning af N-gram
I dette trin skal vi lave N-gram, som er sekvenser af N ord i naturlig sprogbehandling (NLP).
I vores kode skal vi lave bigrammer, hvor N er lig med 2, hvilket betyder, at hvert N-gram vil bestå af par af ord.
Dette er et grundlæggende trin i opbygningen af en forudsigelsesmodel for det næste ord, fordi det giver os mulighed for at analysere ordsekvenser og forudsige det næste ord baseret på konteksten fra de foregående N-1 ord.
# 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-grammer tjener som byggesten til træning og implementering af vores næste-ords forudsigelsesmodel.
Definer funktion
I dette trin opretter vi en funktion kaldet ‘forudsig_næste_ord’, der gætter det næste ord i en sætning baseret på et forudsat præfiks (en sekvens af ord).
Denne funktion er afgørende i næste ords forudsigelsesmodel, da den tager den kontekst, som præfikset giver, og bruger den til at lave en forudsigelse om det mest sandsynlige næste ord.
Jeg vil forklare, hvad der sker i denne proces med enkle ord:
- Funktionen ser på alle de ordpar (bigrammer) i vores tekstdata, der starter med det angivne præfiks (ordene før det manglende ord).
- Den tæller, hvor ofte hvert ord optræder i disse par, og sorterer dem efter hyppighed, fra de fleste til mindst almindelige.
- Funktionen foreslår så det ord, der optræder oftest, som det næste ord efter det givne præfiks.
# 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 afgørende del af den næste ordforudsigelsesmodel, da den giver os mulighed for at generere kontekstuelt relevante forslag til det næste ord i en given tekstsekvens.
Afprøvning
Denne kode lader dig teste modellen med dit eget input. Du skriver et par ord, trykker på Enter, og modellen forudsiger det næste ord. Hvis du skriver noget ugyldigt, bliver du bedt om at prøve igen.
# 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}")
Vores kode vil skabe denne form for grænseflade. Hvor du kan skrive præfikser og trykke enter.
Indtast præfiks
Når du har indtastet enter, får du dit næste ord
Forudsagt ord
Det er en måde at demonstrere, hvordan næste-ords forudsigelsesmodellen kan bruges i praksis.
Udfordringer:
Hvordan man forbedrer nøjagtigheden
Afsluttende ord
I en verden af naturlig sprogbehandling er det en værdifuld færdighed at forudsige det næste ord. Med disse 5 enkle Python-trin har du fået et kraftfuldt værktøj til hurtigere kommunikation og smartere teknologi.
Bliv ved med at udforske og bruge denne viden til at forbedre dine sprogoplevelser. Rejsen er lige begyndt!
Du kan også udforske nogle bedste måder at downloade filer fra en URL ved hjælp af Python.