Algoritmo per classificare le parole per i livelli di difficoltà dell'impiccato come "Facile", "Medio" o "Difficile"


114

Qual è un buon algoritmo per determinare la "difficoltà" di una parola per un gioco dell'impiccato, in modo che il gioco possa selezionare le parole per abbinare un livello di difficoltà specificato?

La difficoltà sembrerebbe correlata al numero di ipotesi richieste, alla relativa frequenza di utilizzo delle lettere (ad es. Parole con molte lettere non comuni possono essere più difficili da indovinare) e potenzialmente alla lunghezza della parola.

Ci sono anche alcuni fattori soggettivi da (tentare di) compensare, come la probabilità che una parola sia nel vocabolario del giocatore e possa essere riconosciuta, consentendo di passare da una strategia di indovinare basata sulle sole frequenze delle lettere a indovinare sulla base di un elenco di parole corrispondenti conosciute.

Il mio tentativo per ora è di seguito in rubino. Qualche suggerimento su come migliorare la categorizzazione?

def classify_word(w)
  n = w.chars.to_a.uniq.length # Num. unique chars in w
  if n < 5 and w.length > 4
    return WordDifficulty::Easy
  end
  if n > w.length / 2
    return WordDifficulty::Hard
  else
    return WordDifficulty::Medium
  end
end

Sto scrivendo un gioco dell'impiccato che vorrei far giocare ai miei figli; Sono un po 'troppo vecchio per tentare i "compiti a casa", il che potrebbe essere il motivo per cui la domanda sta ricevendo così tanti voti negativi ... Le parole vengono estratte casualmente da grandi database di parole, che includono molte parole oscure, e vengono filtrate in base al livello di difficoltà determinato per la parola.


12
Perché i voti negativi? Questa è una domanda decente. Farei funzionare una difficoltà come f(w) = (# unique letters) * (7 - # vowels) * (sum of the positions of unique letters in a list, ordered by frequency). Da lì, puoi semplicemente dividere l'intervallo della funzione in tre segmenti e chiamare quelli le tue difficoltà.
Blender

2
Ti suggerirei di fare una ricerca sul web per questo - probabilmente ci sono algoritmi o dizionari che pretendono di calcolare / segnalare la complessità della parola. So che ci sono testi più lunghi.
Hot Licks

3
Correlati: youtube.com/watch?v=bBLm9P-ph6U (QI XL - The Hardest Word to Indovina in Hangman)
Claus Jørgensen

5
Qualunque cosa tu faccia, assicurati di includere EXTINCTION SPECTROPHOTOPOLERISCOPEOCCULOGRAVOGYROKYNETOMETER.
Hot Licks

2
Per gli utenti che potrebbero non avere familiarità con Ruby, forse vuoi spiegare cosa fa la prima riga del tuo metodo? n = w.chars.to_a.uniq.lengthConta il numero di lettere uniche?
T Nguyen

Risposte:


91

1. Introduzione

Ecco un modo per affrontare questo problema in modo sistematico: se hai un algoritmo che interpreta bene l'impiccato, puoi considerare la difficoltà di ogni parola come il numero di ipotesi sbagliate che il tuo programma prenderebbe se indovinasse quella parola.

2. A parte la strategia dell'impiccato

C'è un'idea che è implicita in alcune altre risposte e commenti, che la strategia ottimale per il risolutore sarebbe quella di basare le proprie decisioni sulla frequenza delle lettere in inglese, o sulla frequenza delle parole in qualche corpus. Questa è un'idea seducente, ma non è del tutto corretta. Il risolutore fa meglio se modella accuratamente la distribuzione delle parole scelte dall'incastonatore , e un incastonatore umano potrebbe scegliere le parole in base alla loro rarità o evitare le lettere usate di frequente. Ad esempio, anche se Eè la lettera più frequentemente usato in inglese, se il setter sceglie sempre dalle parole JUGFUL, RHYTHM, SYZYGY, e ZYTHUM, quindi un risolutore perfetto non inizia da indovinare E!

L'approccio migliore per modellare il setter dipende dal contesto, ma immagino che una sorta di inferenza induttiva bayesiana funzionerebbe bene in un contesto in cui il risolutore gioca molte partite contro lo stesso setter o contro un gruppo di setter simili.

3. Un algoritmo dell'impiccato

Qui descriverò un risolutore che è abbastanza buono (ma tutt'altro che perfetto). Modella l'incastonatore scegliendo le parole in modo uniforme da un dizionario fisso. È un algoritmo goloso : in ogni fase indovina la lettera che riduce al minimo il numero di errori, cioè le parole che non contengono l'ipotesi. Ad esempio, se finora non sono state fatte ipotesi e le parole possibili sono DEED, DEADe DARE, allora:

  • se indovini Do E, non ci sono errori;
  • se indovini A, c'è un errore (DEED );
  • se indovini R, ci sono due errori ( DEEDe DEAD);
  • se indovini un'altra lettera, ci sono tre errori.

Quindi o Do Eè una buona ipotesi in questa situazione.

(Grazie al colonnello Panic nei commenti per aver sottolineato che le ipotesi corrette sono libere nel boia: me ne sono completamente dimenticato al primo tentativo!)

4. Implementazione

Ecco un'implementazione di questo algoritmo in Python:

from collections import defaultdict
from string import ascii_lowercase

def partition(guess, words):
    """Apply the single letter 'guess' to the sequence 'words' and return
    a dictionary mapping the pattern of occurrences of 'guess' in a
    word to the list of words with that pattern.

    >>> words = 'deed even eyes mews peep star'.split()
    >>> sorted(list(partition('e', words).items()))
    [(0, ['star']), (2, ['mews']), (5, ['even', 'eyes']), (6, ['deed', 'peep'])]

    """
    result = defaultdict(list)
    for word in words:
        key = sum(1 << i for i, letter in enumerate(word) if letter == guess)
        result[key].append(word)
    return result

def guess_cost(guess, words):
    """Return the cost of a guess, namely the number of words that don't
    contain the guess.

    >>> words = 'deed even eyes mews peep star'.split()
    >>> guess_cost('e', words)
    1
    >>> guess_cost('s', words)
    3

    """
    return sum(guess not in word for word in words)

def word_guesses(words, wrong = 0, letters = ''):
    """Given the collection 'words' that match all letters guessed so far,
    generate tuples (wrong, nguesses, word, guesses) where
    'word' is the word that was guessed;
    'guesses' is the sequence of letters guessed;
    'wrong' is the number of these guesses that were wrong;
    'nguesses' is len(guesses).

    >>> words = 'deed even eyes heel mere peep star'.split()
    >>> from pprint import pprint
    >>> pprint(sorted(word_guesses(words)))
    [(0, 1, 'mere', 'e'),
     (0, 2, 'deed', 'ed'),
     (0, 2, 'even', 'en'),
     (1, 1, 'star', 'e'),
     (1, 2, 'eyes', 'en'),
     (1, 3, 'heel', 'edh'),
     (2, 3, 'peep', 'edh')]

    """
    if len(words) == 1:
        yield wrong, len(letters), words[0], letters
        return
    best_guess = min((g for g in ascii_lowercase if g not in letters),
                     key = lambda g:guess_cost(g, words))
    best_partition = partition(best_guess, words)
    letters += best_guess
    for pattern, words in best_partition.items():
        for guess in word_guesses(words, wrong + (pattern == 0), letters):
            yield guess

5. Risultati di esempio

Utilizzando questa strategia è possibile valutare la difficoltà di indovinare ogni parola di una raccolta. Qui considero le parole di sei lettere nel mio dizionario di sistema:

>>> words = [w.strip() for w in open('/usr/share/dict/words') if w.lower() == w]
>>> six_letter_words = set(w for w in words if len(w) == 6)
>>> len(six_letter_words)
15066
>>> results = sorted(word_guesses(six_letter_words))

Le parole più facili da indovinare in questo dizionario (insieme alla sequenza di ipotesi necessarie al risolutore per indovinarle) sono le seguenti:

>>> from pprint import pprint
>>> pprint(results[:10])
[(0, 1, 'eelery', 'e'),
 (0, 2, 'coneen', 'en'),
 (0, 2, 'earlet', 'er'),
 (0, 2, 'earner', 'er'),
 (0, 2, 'edgrew', 'er'),
 (0, 2, 'eerily', 'el'),
 (0, 2, 'egence', 'eg'),
 (0, 2, 'eleven', 'el'),
 (0, 2, 'enaena', 'en'),
 (0, 2, 'ennead', 'en')]

e le parole più dure sono queste:

>>> pprint(results[-10:])
[(12, 16, 'buzzer', 'eraoiutlnsmdbcfg'),
 (12, 16, 'cuffer', 'eraoiutlnsmdbpgc'),
 (12, 16, 'jugger', 'eraoiutlnsmdbpgh'),
 (12, 16, 'pugger', 'eraoiutlnsmdbpcf'),
 (12, 16, 'suddle', 'eaioulbrdcfghmnp'),
 (12, 16, 'yucker', 'eraoiutlnsmdbpgc'),
 (12, 16, 'zipper', 'eraoinltsdgcbpjk'),
 (12, 17, 'tuzzle', 'eaioulbrdcgszmnpt'),
 (13, 16, 'wuzzer', 'eraoiutlnsmdbpgc'),
 (13, 17, 'wuzzle', 'eaioulbrdcgszmnpt')]

Il motivo per cui sono difficili è perché dopo aver indovinato -UZZLE, hai ancora sette possibilità:

>>> ' '.join(sorted(w for w in six_letter_words if w.endswith('uzzle')))
'buzzle guzzle muzzle nuzzle puzzle tuzzle wuzzle'

6. Scelta della lista di parole

Ovviamente quando prepari elenchi di parole per i tuoi figli non inizieresti con il dizionario di sistema del tuo computer, inizieresti con un elenco di parole che ritieni possano conoscere. Ad esempio, potresti dare un'occhiata agli elenchi di Wikizionario delle parole più usate in vari corpora inglesi.

Ad esempio, tra le 1.700 parole di sei lettere nelle 10.000 parole più comuni nel Progetto Gutenberg del 2006 , le dieci più difficili sono queste:

[(6, 10, 'losing', 'eaoignvwch'),
 (6, 10, 'monkey', 'erdstaoync'),
 (6, 10, 'pulled', 'erdaioupfh'),
 (6, 10, 'slaves', 'erdsacthkl'),
 (6, 10, 'supper', 'eriaoubsfm'),
 (6, 11, 'hunter', 'eriaoubshng'),
 (6, 11, 'nought', 'eaoiustghbf'),
 (6, 11, 'wounds', 'eaoiusdnhpr'),
 (6, 11, 'wright', 'eaoithglrbf'),
 (7, 10, 'soames', 'erdsacthkl')]

(Soames Forsyte è un personaggio della Saga Forsyte di John Galsworthy ; l'elenco di parole è stato convertito in lettere minuscole quindi non è stato possibile per me rimuovere rapidamente i nomi propri.)


1
Buona chiamata negli elenchi di parole usate di frequente. invokeit.wordpress.com/frequency-word-lists ha inglese e svedese, quindi è bello averli entrambi.
grrussel

1
Mi aspetterei bingledi essere valutato più difficile di singleo tingle- bingleè una parola meno comune ed b è una lettera meno comune
BlueRaja - Danny Pflughoeft

5
Fantastico algoritmo (e grazie per aver spiegato in inglese prima di scrivere il codice!). Ma penso che dovresti cercare di ridurre al minimo il numero di ipotesi errate . Quindi, se il dizionario fosse [bat, bet, hat, hot, yum], indoverei "T" (piuttosto che B, A o H). Se ho ragione, non mi costa niente. Se sbaglio, rimane solo "yum".
Colonel Panic

8
Questo è un algoritmo davvero interessante, ma penso che non rifletta la strategia che i giocatori umani probabilmente faranno - invece di conoscere ogni singola parola, gli umani riconosceranno (probabilisticamente) le parole più comuni, e altrimenti cercheranno di riconoscere sufficienti e prefissi (come ione, ing) e in caso contrario indovina solo le lettere comuni (iniziando con le vocali, quindi facendo t / r / s / n / ecc.). Non sono sicuro di come codificarlo ma è qualcosa a cui pensare :)
Patashu

2
Ottima analisi. Come sottolinea @Patashu, il passo successivo per renderlo ancora migliore sarebbe piuttosto che prendere un dizionario di parole comuni, prendere un dizionario completo di parole ma con annotazioni sulla comunanza, e semplicemente pesare euristicamente la consuetudine della parola con la difficoltà di distribuzione delle lettere. Ma è solo per un miglioramento opzionale: questa è già un'ottima soluzione così com'è.
Ben Lee

21

Un modo davvero semplice sarebbe calcolare un punteggio basato sulla mancanza di vocali nella parola, sul numero di lettere uniche e sulla comunanza di ogni lettera:

letters = 'etaoinshrdlcumwfgypbvkjxqz'
vowels = set('aeiou')

def difficulty(word):
    unique = set(word)
    positions = sum(letters.index(c) for c in word)

    return len(word) * len(unique) * (7 - len(unique & vowels)) * positions

words = ['the', 'potato', 'school', 'egypt', 'floccinaucinihilipilification']

for word in words:
    print difficulty(word), word

E l'output:

432 the
3360 potato
7200 school
7800 egypt
194271 floccinaucinihilipilification

Puoi quindi segnare le parole con:

        score < 2000   # Easy
 2000 < score < 10000  # Medium
10000 < score          # Hard

Ciao frullatore, puoi dirmi per favore a cosa serve il numero magico 7? Perché non 6 o 50? Cosa succede se inserisco un altro numero arbitrale?
Pavan

@Pavan: niente di veramente. I punteggi di tutte le parole verranno spostati verso l'alto della stessa quantità.
Blender

sì, ho notato il cambiamento quando stavo giocando con un esecutore di Python online. Ho notato qualcosa ed è allora che quando digito qualcosa di simile a fantastico rispetto ad aberrante, aborrente avrebbe un valore inferiore a fantastico nonostante fantastico sia una parola che è scritta più correttamente, quindi dovrebbe apparire in un livello di difficoltà inferiore in un gioco di parole. Questo mi ha fatto capire che la difficoltà è soggettiva, ma mi ha fatto pensare che ci dovrebbe essere una sorta di studio fatto per delineare quali parole sono più difficili da scrivere sulle altre, giusto? Potresti indicarmi un tale studio?
Pavan

O almeno come si chiamerebbe uno studio del genere poiché ho difficoltà a trovare una raccolta di parole con la percentuale di persone che hanno scritto in modo errato la parola al primo tentativo - che è quello che sto cercando ora.
Pavan

9

Puoi utilizzare il metodo Monte Carlo per stimare la difficoltà di una parola:

  • Simula un gioco indovinando ogni volta una lettera casuale, ponderata in base alla frequenza delle lettere nella tua lingua di destinazione, e conta quante supposizioni ha impiegato il tuo giocatore casuale per arrivare a una soluzione. Nota che poiché ogni ipotesi elimina una lettera, questo processo è finito e restituisce un numero da 1 a 26, inclusi.
  • Ripeti questo processo 2*Nvolte, dove Nè il numero di univoco lettere nella tua parola,
  • Calcola il punteggio facendo la media dei risultati delle 2*Ncorse,
  • Determina il livello di complessità: i punteggi inferiori a dieci indicano una parola facile e i punteggi superiori a sedici indicano una parola difficile; tutto il resto è medio.

2
Penso che dovresti contare solo ipotesi errate . Non ci sono penalità per le ipotesi corrette.
Colonel Panic

Perché quel numero di ripetizioni? Penso che questa strategia (come la maggior parte delle strategie randomizzate) abbia una maggiore varianza per le parole più brevi .
Colonnello Panic

@ColonelPanic Penso che contare il numero totale di ipotesi sia migliore, perché incorpora naturalmente il numero di lettere distinte nella risposta. Potresti avere ragione sul fatto che la varianza sulle parole più brevi sia maggiore. Forse allora il numero di ripetizioni dovrebbe essere corretto. Tuttavia, penso che 2N sarebbe un buon inizio.
dasblinkenlight

4

Precedente discussione simile intorno allo stesso argomento: Determina la difficoltà di una parola inglese

Mi piace la risposta alla fine del link ^. Per un gioco dell'impiccato per bambini, applica un approccio come lo scrabble.

Assegna un valore in punti a ciascuna lettera, quindi somma le lettere.


1
Questa, insieme all'evitare parole rare o oscure a livelli facili, sembra la via da seguire per ora. Una complicazione che non avevo menzionato è che le parole sono selezionate da enormi dizionari, la maggior parte dei quali devono per definizione essere usati raramente :-)
grrussel

I valori in punti potrebbero funzionare, probabilmente utilizzando la frequenza delle lettere . Tuttavia, alcune parole di uso comune possono effettivamente avere valori di punteggio stranamente alti.
Nuclearman

3

Qualche tempo fa ho scritto un risolutore dell'impiccato utilizzando l'ovvio algoritmo: dato un dizionario iniziale di tutte le parole possibili, ad ogni turno scegliamo la lettera che ricorre nel maggior numero di parole rimaste nel dizionario, quindi rimuoviamo le parole non corrispondenti (a seconda del risposta) dal dizionario.

L'algoritmo non è così semplice come questo, poiché spesso ci sono diverse lettere che ricorrono ciascuna nello stesso numero di parole nel dizionario. In questo caso, la scelta della lettera può fare una differenza significativa sul numero di tentativi richiesti per una parola. Scegliamo i massimi dove le informazioni risultanti sul posizionamento di quella lettera (se è effettivamente nella parola) forniscono le informazioni massime sul sistema (la lettera con la massima entropia di informazioni ). ad esempio, se le due parole possibili rimanenti sono "enciclopedia" e "enciclopedica", la lettera "c" ha la stessa probabilità di apparire come e, n, y, l, o, p, e, d, i (cioè è garantito essere nella parola), ma dovremmo chiedere prima di 'c' poiché ha un'entropia informativa diversa da zero.

Il codice sorgente (C ++, GPL) è qui

Il risultato di tutto questo è un elenco di parole, con il numero di tentativi richiesti per ciascuna: difficoltà.txt (630KB). La parola più difficile da trovare per questo algoritmo è "volontà" (con 14 tentativi falliti); la i e la doppia l vengono indovinate abbastanza rapidamente, ma poi le opzioni includono bill, dill, fill, gill, hill, kill, mill, pill, rill, till, will, e da quel momento in poi l'unica opzione è indovinare ogni lettera in girare. In modo un po 'controintuitivo, le parole più lunghe vengono indovinate molto più rapidamente (semplicemente non ce ne sono tante tra cui scegliere).

Ovviamente, in un gioco umano di boia, la psicologia (e l'ampiezza del vocabolario) giocano un ruolo molto più importante di quanto questo algoritmo spieghi ...


3

Fallo e basta! Gioca all'impiccato contro la parola. Conta quante forfait (cioè ipotesi errate) ci vogliono per battere.

Avrai bisogno di una strategia per giocare. Ecco una strategia umana (ish). Dal dizionario, cancella tutte le parole che finora non si adattano alle rivelazioni. Indovina la lettera più frequente tra le parole rimaste.

Se la tua strategia è randomizzata, puoi definire la tua misura come il numero previsto di rinunce e stimarlo empiricamente.


Un'altra strategia deterministica, da un bot boia che ho scritto alcuni anni fa. Indovina la lettera che riduce al minimo il numero di parole rimanenti nel caso in cui l'ipotesi non sia corretta (es. Ottimizzare il caso peggiore). Oggi questa strategia non mi piace perché troppo meccanica, preferisco quella sopra.


Haha, stavo solo per suggerire la stessa cosa. Ma una versione seria: scrivi un semplice bot che indovina usando una semplice strategia, quindi eseguilo un sacco di volte sulle parole di un dizionario.
Tikhon Jelvis

Sì, è quello che volevo dire!
Colonel Panic

2

Innanzitutto, ovviamente, genererai un elenco di lettere uniche. Quindi ordina per frequenza (in inglese o in qualsiasi lingua - ci sono elenchi per questo ), con lettere meno frequenti che hanno una maggiore difficoltà.

Quindi devi decidere se combinare i punteggi aggiungendo, moltiplicando o utilizzando un altro schema.


(In realtà, potresti non aver bisogno di ordinare in base alla frequenza, ma accumula solo i punteggi di frequenza. Anche se potrebbe essere che l'ordinamento fornisca qualche informazione in più, vale la pena provare per vedere se sembra fare qualcosa per te.)
Hot Licks

E potresti voler tenere conto in qualche modo delle combo di lettere - cioè, se c'è una Q, quasi certamente c'è una U, e una U rende una Q molto più probabile. Quindi potrebbe avere senso, ad esempio, considerare QU come una singola lettera, da una frequenza POV.
Hot Licks

1

Stai perdendo voti perché ci stai chiedendo di costruire un algoritmo molto complesso per te.

Perché non crei solo tre array (facile, medio e difficile) e compili ciascuno con un centinaio di parole? Ci vorrebbero circa 20 minuti.

Prometto che i tuoi figli si annoieranno dell'impiccato molto prima che brucino qualche centinaio di giochi ...: D


3
Non deve essere così complesso. Ad esempio, dai un'occhiata al commento di Blender, per esempio. La tua risposta non affronta realmente la domanda principale e non è particolarmente utile.
Tikhon Jelvis

4
"Perché non crei solo tre array (facile, medio e difficile) e compili ciascuno con un centinaio di parole?": Chiamato anche metodo "risolvi il problema assumendo che il problema sia già risolto".
Pascal Cuoq

Critica presa, grazie ... immagino da un punto di vista accademico, hai perfettamente ragione, la mia risposta non risolve nulla. Ma da un punto di vista pratico, cioè il modo più semplice per costruire un gioco dell'impiccato per i tuoi figli, la mia risposta lo risolve, in modo economico e veloce.
BBagi

1
@PascalCuoq Oppure si potrebbe dire che questo è l'approccio per "risolvere il problema assumendo che gli esseri umani siano più bravi a scegliere elenchi adeguati rispetto agli algoritmi". Dato che l'interrogante vuole un gioco per bambini, sembra meglio che "cappello, gatto, sole" siano nell'elenco facile e "xilofono, niente, scuola" siano nell'elenco difficile, anche se quelli potrebbero essere trovati con meno tentativi in media.
Darren Cook

1
@PascalCuoq Non c'è niente di sbagliato nell'aggirare un problema complesso anche se una soluzione semplice se riesci a farla franca. Non c'è niente di sbagliato nemmeno nel costruire algoritmi complessi per divertimento, ma la soluzione semplice merita almeno una menzione.
David

1

Bene, potenzialmente potrebbero esserci molte cose coinvolte:

  1. Come tutti hanno detto, la frequenza delle singole lettere;
  2. La lunghezza di una parola dovrebbe sicuramente contare, ma non in modo lineare: una parola lunga può indurre a indovinare le lettere, mentre una breve può essere difficile da ottenere;
  3. Inoltre, le parole stesse dovrebbero essere considerate: "bipartito" potrebbe essere una parola per persone in SO, ma forse non per popolazione non tecnica.

In realtà, potresti provare a co-evolvere diverse strategie , metà delle quali per decidere il valore di una parola e metà per cercare di vincere la partita. Quest'ultimo gruppo proverà a massimizzare il punteggio mentre il primo cercherà di minimizzarlo. Dopo un po 'potrebbe esserci uno schema e poi la metà per decidere il valore di una parola potrebbe darti alcuni parametri di riferimento.


La frequenza d'uso di una parola è un buon punto. Il mio primo tentativo basato sul punteggio di lettere uniche in base alla frequenza dichiarata "eutettico" era una parola "facile". Google ngrams storage.googleapis.com/books/ngrams/books/datasetsv2.html sembra probabilmente aiutare a identificare le parole di uso comune, oggi.
grrussel

1

Inizia con un elenco di parole e avvia una ricerca su Google per ognuna. Lascia che il numero di risultati funga da proxy (grossolano) della difficoltà del termine.

In una versione raffinata raggrupperesti le parole in base a un sinonimo Relazione Basato su un thesaurus e determinerai la parola più difficile di una categoria contando i risultati delle ricerche su Google.

Portare la nozione di n-Grammi Un passo avanti, la difficoltà di una parola potrebbe essere valutata dalla frequenza delle sue sillabe in prosa. Dipende dalla qualità delle statistiche delle sillabe, ovviamente. Probabilmente dovresti distinguere tra lessemi e parole funzionali (determinanti, congiunzioni ecc.) E Normalizzare per numero di sillabe nella parola (sembra eccessivo mentre scrivo ...).


0

Mi piace l'idea di costruire un algoritmo che impara e cambia a seconda degli utenti. All'inizio, puoi implementare uno qualsiasi degli algoritmi suggeriti per creare l'elenco, quindi man mano che più persone giocano, assegni un peso a ciascuna delle parole a seconda del numero di ipotesi (che viene anche continuamente monitorato e calcolato ). Ciò evita che parole complesse ma popolari vengano valutate in modo difficile ma siano ben note alle persone.


0

Calcola il valore di ogni lettera di una parola in punti Scrabble: E = 1, D = 2, V = 4, X = 8 e così via. Sommali e dividi per il numero di lettere per ottenere un valore di lettera medio e usalo per segnare la parola. Calcola la media per ogni parola in un grande dizionario e determina i punti di interruzione tra i quartili. Chiama le parole nel quartile più basso "facile", le parole nei due quartili centrali "medio" e le parole nel quartile più alto "difficile".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.