Este posibil să fi observat că atunci când tastați pe telefonul mobil, acesta prezice următorul cuvânt pe care ați dori să îl utilizați. Este o caracteristică care face tastarea mai rapidă și economisește timp.
Este mai convenabil. Indiferent dacă trimiteți mesaje text, căutați pe internet sau scrieți un e-mail, textul predictiv poate fi de mare ajutor. Dar te-ai întrebat vreodată cum mobilul tău știe ce cuvânt să sugereze în continuare?
În acest ghid, vă voi arăta cum să creați predicții de cuvinte folosind Python.
Pentru a urma cu ușurință, a avea o înțelegere de bază a NLP vă ajută. Dacă sunteți nou în acest domeniu, nu vă faceți griji; puteți obține rapid elementele de bază din articolul nostru „NLP simplificat”, unde îl explicăm simplu.
Cuprins
Aplicații ale predicției cuvântului următor
Să începem să învățăm împreună despre această tehnică NLP interesantă și despre cum este utilă și să parcurgem fiecare pas în mod clar.
Pregătirea datelor
În primul rând, trebuie să importam bibliotecile necesare care sunt importante pentru proiectul nostru. După aceea, vom defini un text exemplu, care va fi folosit pentru antrenament. Puteți înlocui acest text cu orice date text dorite.
De asemenea, puteți utiliza un set de date cu date text, pe care îl puteți găsi cu ușurință pe Kaggle sau pe o platformă similară.
# Import Necessary Libraries import nltk from nltk import ngrams from collections import defaultdict import random
Exemplu de date text, care vor fi folosite pentru prezicerea cuvântului următor.
# 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. """
Puteți înlocui acest text conform cerințelor dvs.
Tokenizare
Ne vom preprocesa textul și îl vom tokeniza. Tokenizarea este procesul de împărțire a textului în cuvinte sau simboluri individuale. Folosim biblioteca nltk din Python pentru a ne tokeniza textul.
Pentru a ne asigura că modelul nostru se concentrează pe cuvinte și ignoră majuscule sau semnele de punctuație, efectuăm preprocesare. Acest pas implică convertirea tuturor cuvintelor în litere mici și eliminarea oricărei semne de punctuație.
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
După preprocesare și tokenizare, vom obține toate cuvintele cu litere mici și fără semne de punctuație.
Cuvinte simbolizate
Construirea de N-grame
În acest pas, vom crea N-grame, care sunt secvențe de N cuvinte în procesarea limbajului natural (NLP).
În codul nostru, vom crea bigrame, unde N este egal cu 2, ceea ce înseamnă că fiecare N-gramă va consta din perechi de cuvinte.
Acesta este un pas fundamental în construirea unui model de predicție pentru cuvântul următor, deoarece ne permite să analizăm secvențele de cuvinte și să prezicem următorul cuvânt pe baza contextului oferit de cuvintele N-1 anterioare.
# 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
Aceste N-grame servesc ca elemente de bază pentru instruirea și implementarea modelului nostru de predicție pentru cuvântul următor.
Definiți funcția
În acest pas, creăm o funcție numită „predict_next_word” care ghicește următorul cuvânt dintr-o propoziție pe baza unui prefix furnizat (o secvență de cuvinte).
Această funcție este crucială în modelul de predicție al cuvântului următor, deoarece preia contextul furnizat de prefix și îl folosește pentru a face o predicție despre cuvântul următor cel mai probabil.
Voi explica ce se întâmplă în acest proces în cuvinte simple:
- Funcția analizează toate perechile de cuvinte (bigrame) din datele noastre text care încep cu prefixul furnizat (cuvintele dinaintea cuvântului lipsă).
- Numărează cât de des apare fiecare cuvânt în acele perechi și le sortează după frecvență, de la cel mai frecvent la cel mai puțin frecvent.
- Funcția sugerează apoi cuvântul care apare cel mai des ca următorul cuvânt după prefixul dat.
# 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
Este o parte crucială a modelului de predicție al cuvântului următor, deoarece ne permite să generăm sugestii relevante din punct de vedere contextual pentru următorul cuvânt dintr-o anumită secvență de text.
Testare
Acest cod vă permite să testați modelul cu propria dvs. intrare. Tastați câteva cuvinte, apăsați Enter, iar modelul prezice următorul cuvânt. Dacă introduceți ceva nevalid, vă solicită să încercați din nou.
# 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}")
Codul nostru va crea acest tip de interfață. Unde puteți scrie prefixe și apăsați enter.
Introduceți Prefixul
După ce ați introdus enter, veți primi următorul cuvânt
Cuvântul prezis
Este o modalitate de a demonstra modul în care modelul de predicție al cuvântului următor poate fi utilizat în practică.
Provocări:
Cum să îmbunătățiți acuratețea
Cuvinte finale
În lumea procesării limbajului natural, prezicerea cuvântului următor este o abilitate valoroasă. Cu acești 5 pași simpli Python, ați obținut un instrument puternic pentru o comunicare mai rapidă și o tehnologie mai inteligentă.
Continuați să explorați și să utilizați aceste cunoștințe pentru a vă îmbunătăți experiențele lingvistice. Călătoria tocmai a început!
De asemenea, puteți explora câteva modalități cele mai bune de a descărca fișiere de la o adresă URL folosind Python.