import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df=pd.read_csv("medium_data.csv")
words=df["text"].str.lower().str.split()
pairs=pd.DataFrame([(s[i],s[i+1]) for s in words.dropna() for i in range(len(s)-1)],columns=["c","n"])
seed,seq,probs="python",["python"],[1.0]

for _ in range(7):
    top=pairs.query("c==@seed")["n"].value_counts(normalize=True)
    if top.empty: break
    seed=top.index[0]
    seq.append(seed)
    probs.append(top.iloc[0])

plt.figure(figsize=(9,4))
plt.plot(seq,probs,"o-",color="teal",lw=2)
plt.title("Predictive Text: "+" ".join(seq))
plt.xlabel("Generated Words")
plt.ylabel("Probability")
plt.xticks(rotation=45,ha="right")
plt.grid(True,ls="--",alpha=0.5)
plt.tight_layout()
plt.show()