Předvídání dalšího slova v 5 snadných krocích pomocí Pythonu

Možná jste si všimli, že když píšete na svém mobilním telefonu, předpovídá další slovo, které byste mohli chtít použít. Je to funkce, díky které je psaní rychlejší a šetří vám čas.

Je to pohodlnější. Ať už píšete SMS, hledáte na internetu nebo píšete e-mail, prediktivní text může být opravdu užitečný. Přemýšleli jste ale někdy o tom, jak váš mobil ví, jaké slovo navrhnout jako další?

V této příručce vám ukážu, jak vytvářet předpovědi slov pomocí Pythonu.

Chcete-li snadno sledovat, pomůže vám základní znalost NLP. Pokud s tím začínáte, nebojte se; základy můžete rychle získat z našeho článku „NLP zjednodušené“, kde to jednoduše vysvětlíme.

Aplikace předpovědi dalšího slova

  • Predikce dalšího slova zlepšuje rychlost a přesnost psaní na mobilních zařízeních, což je velmi výhodné pro aplikace pro textové zprávy a komunikaci.
  • Vyhledávače používají prediktivní text k navrhování vyhledávacích dotazů, což uživatelům usnadňuje rychlé nalezení relevantních informací.
  • Pomáhá při automatických opravách chybně napsaných slov a snížení překlepů v různých aplikacích, včetně textových procesorů a e-mailových klientů.
  • Vývojáři a programátoři těží z prediktivního textu při psaní kódu, protože navrhuje relevantní funkce, metody a názvy proměnných.
  • Online platformy a streamovací služby používají prediktivní text k doporučení relevantního obsahu uživatelům.
  • Pojďme se společně začít učit o této zajímavé technice NLP a o tom, jak je užitečná, a projděte si každý krok jasně.

    Příprava dat

    Nejprve musíme naimportovat potřebné knihovny, které jsou pro náš projekt důležité. Poté nadefinujeme vzorový text, který bude použit pro školení. Tento text můžete nahradit libovolnými textovými daty podle vašeho výběru.

    Můžete také použít datovou sadu s textovými daty, kterou snadno najdete na Kaggle nebo podobné platformě.

    # Import Necessary Libraries
    
    import nltk
    from nltk import ngrams
    from collections import defaultdict
    import random

    Ukázková textová data, která budou použita pro předpovídání dalšího slova.

    # 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.
    """
    

    Tento text můžete nahradit podle svých požadavků.

      Co je Gartner Magic Quadrant? Jak z toho profitují firmy

    Tokenizace

    Náš text předzpracujeme a tokenizujeme. Tokenizace je proces rozdělení textu na jednotlivá slova nebo tokeny. K tokenizaci našeho textu používáme knihovnu nltk v Pythonu.

    Abychom zajistili, že se náš model soustředí na slova a ignoruje velká a malá písmena nebo interpunkci, provádíme předběžné zpracování. Tento krok zahrnuje převod všech slov na malá písmena a odstranění jakékoli interpunkce.

    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

    Po předběžném zpracování a tokenizaci získáme všechna slova malá a bez interpunkce.

    Tokenizovaná slova

    Budování N-gramů

    V tomto kroku vytvoříme N-gramy, což jsou sekvence N slov ve zpracování přirozeného jazyka (NLP).

      Startupy ve zdravotnictví vydělaly v roce 2023 miliony a Cyera si zajistila 100 milionů dolarů

    V našem kódu vytvoříme bigramy, kde N se rovná 2, což znamená, že každý N-gram se bude skládat z dvojic slov.

    Toto je základní krok při vytváření predikčního modelu pro další slovo, protože nám umožňuje analyzovat sekvence slov a předpovídat další slovo na základě kontextu poskytnutého předchozími N-1 slovy.

    # 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

    Tyto N-gramy slouží jako stavební kameny pro trénink a implementaci našeho modelu predikce dalšího slova.

    Definujte funkci

    V tomto kroku vytvoříme funkci nazvanou ‚predict_next_word‘, která odhadne další slovo ve větě na základě poskytnuté předpony (sekvence slov).

    Tato funkce je klíčová v modelu predikce dalšího slova, protože bere kontext poskytnutý předponou a používá jej k předpovědi nejpravděpodobnějšího dalšího slova.

    Vysvětlím, co se děje v tomto procesu, jednoduchými slovy:

    • Funkce se podívá na všechny dvojice slov (bigramy) v našich textových datech, které začínají zadanou předponou (slova před chybějícím slovem).
    • Počítá, jak často se každé slovo v těchto párech vyskytuje, a seřadí je podle frekvence, od nejčastějších po nejméně časté.
    • Funkce pak navrhne slovo, které se vyskytuje nejčastěji jako další slovo za danou předponou.
    # 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

    Je to klíčová část modelu predikce dalšího slova, protože nám umožňuje generovat kontextově relevantní návrhy pro další slovo v dané textové sekvenci.

      Mikrofon nefunguje ve Snapchatu – co dělat

    Testování

    Tento kód vám umožňuje testovat model s vlastním vstupem. Napíšete několik slov, stisknete Enter a model předpovídá další slovo. Pokud zadáte něco neplatného, ​​budete požádáni, abyste to zkusili znovu.

    # 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}")

    Náš kód vytvoří tento druh rozhraní. Kde můžete psát předpony a stisknout enter.

    Zadejte Prefix

    Po zadání enter dostanete další slovo

    Předpokládané slovo

    Je to způsob, jak demonstrovat, jak lze model predikce dalšího slova použít v praxi.

    výzvy:

  • Přesnost predikce dalšího slova silně závisí na velikosti a kvalitě trénovacích dat. Omezená nebo zašuměná data mohou vést k méně přesným předpovědím.
  • Pokud slovo ve vstupním textu v trénovacích datech neexistuje, nelze jej přesně předpovědět.
  • Interpunkce může ovlivnit přesnost předpovědi, zejména v jazycích, jako je angličtina, kde mohou být hranice slov nejednoznačné.
  • Nesprávná tokenizace nebo předběžné zpracování může vést k nesprávným předpovědím.
  • Mnoho slov má více významů a kontext je nemusí vždy vyjasnit.
  • Jak zlepšit přesnost

  • Použití větší a rozmanitější datové sady zlepšuje pochopení modelu pro různé kontexty a slova.
  • Zvažte použití N-gramů vyššího řádu (např. trigramy) pro více kontextu, ale vyvažte to dostupností dat.
  • Sbírejte zpětnou vazbu od uživatelů a neustále vylepšujte model na základě použití v reálném světě.
  • Pravidelně vyhodnocujte výkon modelu pomocí vhodných metrik a podle toho upravujte strategie.
  • Pro komplexnější kontextové modelování můžete implementovat modely založené na neuronové síti, jako je LSTM nebo Transformer.
  • Závěrečná slova

    Ve světě zpracování přirozeného jazyka je předpovídání dalšího slova cennou dovedností. S těmito 5 jednoduchými kroky Pythonu jste získali mocný nástroj pro rychlejší komunikaci a chytřejší technologii.

    Pokračujte ve zkoumání a používání těchto znalostí k vylepšení svých jazykových zkušeností. Cesta právě začala!

    Můžete také prozkoumat některé nejlepší způsoby stahování souborů z adresy URL pomocí Pythonu.