Можда сте приметили да када куцате на свом мобилном телефону, он предвиђа следећу реч коју бисте можда желели да употребите. То је функција која убрзава куцање и штеди вам време.
То је згодније. Било да шаљете поруке, претражујете интернет или пишете е-пошту, предвидљиви текст може бити од велике помоћи. Али да ли сте се икада запитали како ваш мобилни телефон зна коју реч да предложи?
У овом водичу ћу вам показати како да креирате предвиђања речи користећи Питхон.
Да бисте лако пратили, помаже вам основно разумевање НЛП-а. Ако сте нови у овоме, не брините; можете брзо добити основе из нашег чланка „НЛП поједностављени“, где то једноставно објашњавамо.
Преглед садржаја
Примене предвиђања следеће речи
Хајде да заједно почнемо да учимо о овој занимљивој НЛП техници и колико је корисна, и прођимо јасно кроз сваки корак.
Припрема података
Пре свега, потребно је да увеземо потребне библиотеке које су важне за наш пројекат. Након тога ћемо дефинисати узорак текста који ће се користити за обуку. Овај текст можете заменити било којим текстуалним подацима по вашем избору.
Такође можете користити скуп података са текстуалним подацима, које можете лако пронаћи на Каггле-у или сличној платформи.
# Import Necessary Libraries import nltk from nltk import ngrams from collections import defaultdict import random
Пример текстуалних података, који ће се користити за предвиђање следеће речи.
# 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. """
Овај текст можете заменити према вашим захтевима.
Токенизација
Ми ћемо претходно обрадити наш текст и токенизирати га. Токенизација је процес разлагања текста на појединачне речи или лексеме. Користимо нлтк библиотеку у Питхон-у да токенизујемо наш текст.
Да бисмо осигурали да се наш модел фокусира на речи и игнорише велика и мала слова или интерпункцију, вршимо претходну обраду. Овај корак укључује претварање свих речи у мала слова и уклањање свих знакова интерпункције.
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
Након предобраде и токенизације, све речи ћемо добити малим словима и без интерпункције.
Токенизиране речи
Изградња Н-грама
У овом кораку ћемо креирати Н-граме, који су секвенце од Н речи у обради природног језика (НЛП).
У нашем коду ћемо креирати биграме, где је Н једнако 2, што значи да ће се сваки Н-грам састојати од парова речи.
Ово је фундаментални корак у изградњи модела предвиђања за следећу реч јер нам омогућава да анализирамо секвенце речи и предвидимо следећу реч на основу контекста који су дале претходне Н-1 речи.
# 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
Ови Н-грами служе као градивни блокови за обуку и имплементацију нашег модела предвиђања следеће речи.
Дефинишите функцију
У овом кораку креирамо функцију под називом ‘предицт_нект_ворд’ која погађа следећу реч у реченици на основу датог префикса (низа речи).
Ова функција је кључна у моделу предвиђања следеће речи, јер узима контекст који даје префикс и користи га за предвиђање највероватније следеће речи.
Објаснићу шта се дешава у овом процесу једноставним речима:
- Функција гледа све парове речи (биграме) у нашим текстуалним подацима који почињу са датим префиксом (речи испред речи која недостаје).
- Рачуна колико често се свака реч појављује у тим паровима и сортира их по учесталости, од најчешће до најмање уобичајене.
- Функција тада предлаже реч која се најчешће јавља као следећу реч после датог префикса.
# 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
То је кључни део модела предвиђања следеће речи, јер нам омогућава да генеришемо контекстуално релевантне предлоге за следећу реч у датом низу текста.
Тестирање
Овај код вам омогућава да тестирате модел сопственим уносом. Укуцате неколико речи, притиснете Ентер и модел предвиђа следећу реч. Ако унесете нешто неважеће, тражи се да покушате поново.
# 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}")
Наш код ће креирати овакав интерфејс. Где можете да упишете префиксе и притиснете ентер.
Унесите префикс
Након уноса ентер, добићете следећу реч
Предвиђена реч
То је начин да се покаже како се модел предвиђања следеће речи може користити у пракси.
Изазови:
Како побољшати тачност
Завршне речи
У свету обраде природног језика, предвиђање следеће речи је вредна вештина. Са ових 5 једноставних Питхон корака, добили сте моћан алат за бржу комуникацију и паметнију технологију.
Наставите да истражујете и користите ово знање да побољшате своје језичко искуство. Путовање је тек почело!
Такође можете истражити неке најбоље начине за преузимање датотека са УРЛ-а користећи Питхон.