Nessuno, credo, ti scriverà il codice completo (nemmeno io, anche perché ho sempre poco tempo). Ma qualche indizio da darti, è ok, ovviamente.
Visto che parli di split (e non del find di java.util.regex.Matcher) deduco che l'unica opzione accettabile sia quella di "spezzare" innanzitutto il testo usando spazi (e simboli di punteggiatura magari) come separatori al fine di ottenere i singoli token che sono le parole.
Per questo basta appunto stringa.split(" ...regex... ") con una apposita regex che devi ideare tu ed ottieni un bel array con le parole.
A quel punto fai un ciclo sulle parole e consideri solo quelle con più di 3 caratteri (banale test sulla lunghezza). A questo punto devi conteggiare le occorrenze di ciascuna parola. La cosa più logica è una "mappa" in cui la chiave è la parola mentre il valore è un "contatore" (numero intero, chiaramente).
Una volta esaminate tutte le parole, hai una mappa che contiene es. "ciao"-->1, "prova"-->2 ecc... A quel punto calcolare percentuali e altro è abbastanza lineare e semplice.
Ti è servita questa spiegazione? Lo so che è abbastanza generale ma da questo devi partire.![]()