Можливо, ви помітили, що коли ви друкуєте на своєму мобільному телефоні, він передбачає наступне слово, яке ви можете використати. Це функція, яка пришвидшує введення тексту та економить ваш час.
Так зручніше. Якщо ви надсилаєте текстові повідомлення, шукаєте в Інтернеті чи пишете електронний лист, інтелектуальний текст може бути дуже корисним. Але чи замислювалися ви коли-небудь, як ваш мобільний телефон знає, яке слово запропонувати наступним?
У цьому посібнику я покажу вам, як створювати передбачення слів за допомогою Python.
Щоб легко слідувати, базове розуміння НЛП допоможе. Якщо ви новачок у цьому, не хвилюйтеся; ви можете швидко отримати основи з нашої статті «НЛП спрощено», де ми пояснюємо це просто.
Програми передбачення наступного слова
Давайте разом почнемо вивчати цю цікаву техніку НЛП і її корисність, а також чітко пройдемо кожен крок.
Підготовка даних
Перш за все, нам потрібно імпортувати необхідні бібліотеки, які важливі для нашого проекту. Після цього ми визначимо зразок тексту, який буде використовуватися для навчання. Ви можете замінити цей текст будь-якими текстовими даними на свій вибір.
Ви також можете використовувати набір даних із текстовими даними, які ви можете легко знайти на Kaggle або схожій платформі.
# 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. """
Ви можете замінити цей текст відповідно до ваших вимог.
Токенізація
Ми попередньо обробимо наш текст і позначимо його. Токенізація — це процес розбиття тексту на окремі слова або лексеми. Ми використовуємо бібліотеку nltk у Python для токенізації нашого тексту.
Щоб гарантувати, що наша модель фокусується на словах і ігнорує регістр і пунктуацію, ми виконуємо попередню обробку. Цей крок передбачає перетворення всіх слів на малі літери та видалення будь-якої пунктуації.
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
Після попередньої обробки та токенізації ми отримаємо всі слова в нижньому регістрі та без розділових знаків.
Токенізовані слова
Побудова N-грам
На цьому кроці ми збираємося створити N-грами, які є послідовностями з N слів у обробці природної мови (NLP).
У нашому коді ми збираємося створити біграми, де N дорівнює 2, тобто кожна N-грама складатиметься з пар слів.
Це фундаментальний крок у побудові моделі передбачення для наступного слова, оскільки він дозволяє нам аналізувати послідовності слів і передбачати наступне слово на основі контексту, наданого попередніми N-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
Ці N-грами служать будівельними блоками для навчання та впровадження нашої моделі передбачення наступного слова.
Визначити функцію
На цьому кроці ми створюємо функцію «predict_next_word», яка вгадує наступне слово в реченні на основі наданого префікса (послідовності слів).
Ця функція має вирішальне значення в моделі передбачення наступного слова, оскільки вона бере контекст, наданий префіксом, і використовує його, щоб зробити прогноз щодо найбільш ймовірного наступного слова.
Я поясню, що відбувається в цьому процесі простими словами:
- Функція переглядає всі пари слів (біграми) у наших текстових даних, які починаються з наданого префікса (слова перед пропущеним словом).
- Він підраховує, як часто кожне слово з’являється в цих парах, і сортує їх за частотою від найбільш поширених до найменш поширених.
- Потім функція пропонує слово, яке найчастіше зустрічається, як наступне слово після заданого префікса.
# 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
Це важлива частина моделі передбачення наступного слова, оскільки дозволяє нам генерувати релевантні контексту пропозиції для наступного слова в певній текстовій послідовності.
Тестування
Цей код дозволяє перевірити модель за допомогою ваших власних даних. Ви вводите кілька слів, натискаєте Enter, і модель передбачає наступне слово. Якщо ви введете щось недійсне, вам буде запропоновано повторити спробу.
# 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}")
Наш код створить такий інтерфейс. Де можна написати префікси і натиснути enter.
Введіть префікс
Після введення enter ви отримаєте наступне слово
Передбачене слово
Це спосіб продемонструвати, як модель передбачення наступного слова можна використовувати на практиці.
виклики:
Як підвищити точність
Заключні слова
У світі обробки природної мови передбачення наступного слова є цінною навичкою. За допомогою цих 5 простих кроків Python ви отримали потужний інструмент для швидшого спілкування та розумніших технологій.
Продовжуйте досліджувати та використовувати ці знання, щоб покращити свій мовний досвід. Подорож тільки почалася!
Ви також можете дослідити кілька найкращих способів завантажувати файли з URL-адреси за допомогою Python.