""" Bakgrunn: Vi ønsker å undersøke kompleksiteten i språket til USAs presidenter. En måte å gjøre dette på er ved å se på hvor mye variasjon det er i ordbruken deres. Programmet under analyserer innsettingstalene (inagurals) fra alle USAs presidenter for å finne ut av forholdet mellom hvor mange ord (tokens) de bruker og hvor mange unike ord (typer) de bruker. Dette kaller vi type/token-ratio. Andre måter å undersøke språklig kompleksitet på inkluderer å se på setningslengde og ordlengde. Kan du implementere dette i programmet? """ import nltk from nltk.corpus import inaugural import matplotlib.pyplot as plt # Sørge for at tekstene er lasta ned nltk.download("inaugural") # Her lagrer vi resultatene results = {} # Itererer over hver innsettingstale for fileid in inaugural.fileids(): # Lager en indre ordbok for talen results[fileid] = {} # Henter ord fra innsetingstalen words = inaugural.words(fileid) # Gjør til små bokstaver words = [word.lower() for word in words] # Henter antal tokens og typer num_tokens = len(words) unique_words = set(words) num_types = len(unique_words) # Regner ut type/token-ratio ttr = num_types / num_tokens # Lagrer resultater results[fileid]["num_tokens"] = num_tokens results[fileid]["num_types"] = num_types results[fileid]["type_token_ratio"] = ttr # Printer resultatene for hver tale for speech, metrics in results.items(): print("Tale:", speech) print(" - Antall tokens:", metrics["num_tokens"]) print(" - Antall typer:", metrics["num_types"]) print(" - Type/token-ratio:", metrics["type_token_ratio"]) show_plot = input("Vil du se dataene som grafer? ja/nei ").lower() if show_plot == "ja": # Lagrer lister med informasjonen vi trenger speeches = list(results.keys()) num_tokens_values = [metrics["num_tokens"] for metrics in results.values()] # Lager graf plt.figure(figsize=(14, 6)) plt.plot(speeches, num_tokens_values, marker="o", linestyle="-", color="b") plt.xticks(rotation=90, fontsize=8) plt.xlabel("Tale") plt.ylabel("Antall tokens") plt.title("Lengde på hver Inaugural Speech") plt.tight_layout() plt.show() num_types_values = [metrics["num_types"] for metrics in results.values()] plt.figure(figsize=(14, 6)) plt.plot(speeches, num_types_values, marker="o", linestyle="-", color="b") plt.xticks(rotation=90, fontsize=8) plt.xlabel("Tale") plt.ylabel("Antall tokens") plt.title("Unike ord i hver Inaugural Speech") plt.tight_layout() plt.show() ttr_values = [metrics["type_token_ratio"] for metrics in results.values()] plt.figure(figsize=(14, 6)) plt.plot(speeches, ttr_values, marker="o", linestyle="-", color="b") plt.xticks(rotation=90, fontsize=8) plt.xlabel("Tale") plt.ylabel("Type/Token Ratio") plt.title("Type/Token Ratio for hver Inaugural Speech") plt.tight_layout() plt.show()