J'essaie de coder l'algorithme de presse dissocié basé sur N-gram dans Scala. Comment générer un N-gramme pour un grand fichier: Par exemple, pour le fichier contenant "l'abeille est l'abeille des abeilles". p>
Pouvez-vous me donner quelques astuces comment le faire? Désolé pour le dérangement. p>
3 Réponses :
Vos questions pourraient être un peu plus spécifiques, mais voici mon essai.
val words = "the bee is the bee of the bees" words.split(' ').sliding(2).foreach( p => println(p.mkString))
Ce n'est pas que cela ne vous donnera que 2 grammes. Si les N-grammes sont souhaités, alors n doit être paramétré.
@tuxdna mais il peut être facilement ajusté
Vous pouvez essayer cela avec un paramètre de N
val words = "the bee is the bee of the bees" val w = words.split(" ") val n = 4 val ngrams = (for( i <- 1 to n) yield w.sliding(i).map(p => p.toList)).flatMap(x => x) ngrams foreach println List(the) List(bee) List(is) List(the) List(bee) List(of) List(the) List(bees) List(the, bee) List(bee, is) List(is, the) List(the, bee) List(bee, of) List(of, the) List(the, bees) List(the, bee, is) List(bee, is, the) List(is, the, bee) List(the, bee, of) List(bee, of, the) List(of, the, bees) List(the, bee, is, the) List(bee, is, the, bee) List(is, the, bee, of) List(the, bee, of, the) List(bee, of, the, bees)
Voici une approche basée sur le flux. Cela ne nécessitera pas trop de mémoire lors de l'informatique N-grammes.
List(the, bee) List(bee, is) List(is, the) List(the, bee) List(bee, of) List(of, the) List(the, bees) List(the, bee, is) List(bee, is, the) List(is, the, bee) List(the, bee, of) List(bee, of, the) List(of, the, bees) List(the, bee, is, the) List(bee, is, the, bee) List(is, the, bee, of) List(the, bee, of, the) List(bee, of, the, bees)
Je l'aime, pas sûr de l'utilité du processus code>. Pourquoi ne pas simplement faire
ngrams (...). Foreach (x => println (x.toliste)) code>?
@Mortimère: question intéressante. processus code> est juste une fonction supplémentaire. Nous pouvons absolument utiliser
ngrams2 foreach {x => println (x.tolist)} code>. Merci :-)
Je ne sais pas ce qu'est un n-gramme. Vous choisissez-vous simplement des mots au hasard? Ou a une certaine logique?
@santiagobasulto Wikipedia est votre ami: en.wikipedia.org/wiki/n-gram
Est-ce par hasard lié à Stackoverflow.com/Questions/8256830/... ?