Uno strumento di apprendimento molto utile in cui mi sono imbattuto per il cinese era una massiccia lista di frasi che, tranne i primi 10 o 15, differivano solo da quelle precedenti con una o due parole , o almeno il meno possibile: il creatore li ha ordinati per relazione, ovviamente iniziando con poche frasi standard per impedire che i primi fossero casuali e complessi.
Sono un po 'confuso su come andare a scrivere la mia implementazione di tale e algoritmo. Ora tieni con me (a meno che tu non abbia smesso di leggere b / c questa domanda è fuori linea per questo sito) come sono stato definito "stupido" da diversi insegnanti ma stavo pensando a questo algoritmo incredibilmente inefficiente:
- Prendi la prima frase (frase numero uno)
- Passa ciclicamente da una frase all'altra e conta il numero di parole diverse (diverse dalla prima frase) (passando da ciascuna parola di ciascuna frase) - assegna un numero in una matrice che lo rappresenta.
- Esegui nuovamente il ciclo e trova quelli con i numeri associati più bassi
- Se c'è una frase con il numero più basso di parole diverse - fai che la frase successiva nell'elenco (frase numero due)
- Se ci sono più frasi, ordinale in base al quale hai più parole nelle prime 1000 parole nella lingua e quindi sono più utili
- Con le frasi selezionate (con le parole più simili alla frase 1) ordinate per frequenza di parola, scegli quelle o le più frequenti come frasi 2, 3 ecc.
- Inizia dappertutto controllando la frase successiva nella sequenza con l'ultima combinata con tutte le precedenti per trovare il numero più basso di nuove parole su tutte le frasi
Per un corpus di 100.000 frasi, probabilmente eseguirò un ciclo di milioni di volte per ogni frase. Ci deve essere un modo migliore. Il mio obiettivo generale è il seguente:
Ogni frase nell'array (sequenza, che cosa hai) ha il minor numero possibile di nuove parole, con parole "nuove" definite come quelle non presenti in nessuna frase precedente.