Question: I'm having a hard time calculating the sum of a specific set of children with the same name. I did it like this, but it does not work. Please help.

```
driverRef.orderByChild("earnings")
            .once()
            .then((DataSnapshot dataSnapShot) {
          print("PPPP" + dataSnapShot.value.toString());
          if (dataSnapShot.value != null) {
            print("kkkk" + j.values.toList()[i]["fare"].toString());

           sum = double.parse(j.values.toList()[i]["fare"].toString())+sum;
            print("JJJJJ" + sum.toString());
            // double oldEarnings = double.parse(
            //     j.values.toList()[i]["fare"].toString());
            // double oldEarnings=sum;
            double totalEarnings = fareAmount + sum;

            driverRef.child(currentFirebaseUser.uid)
                .child("earnings")
                .set(
                totalEarnings.toStringAsFixed(2));
          } else {
            double totalEarnings = fareAmount.toDouble();
            driverRef.child(currentFirebaseUser.uid).child("earnings").set(
                totalEarnings.toStringAsFixed(2));
          }

```

Answer: 
Instead of doing `model.build_vocab(sentences=shuffle_corpus(tokenized_sentences), update=True)`

Replace the **sentence** param name with **corpus\_iterable** so if your iterable is working fine, you should be able to generate easily as:

`model.build_vocab(shuffle_corpus(tokenized_sentences), update=True)`

or

`model.build_vocab(corpus_iterable=shuffle_corpus(tokenized_sentences), update=True)`

It requires List of List for the training so try to provide the data in that format. Also, try to clean your data. I think empty spaces are not a good choices but I haven't tried those either. Everything else is same. Just follow the [official Documentation on FastText training](https://radimrehurek.com/gensim/models/word2vec.html) and that should keep you going. It works for `Word2Vec` too but this one has more explanations to it.

**NOTE: The example given there is from old version that is why `sentence=` param is giving errors**

Q.2: The mode build vocab. It is obviously necessary to build the vocab else how would the model know what is `a,the,book,reader` and so on. every word needs a corresponding number and that is what it is for. If you are working with some data where you have many OOV words, try `FastText`.

It has one thing that by looking at `Astronomer` and `geology`, it can give you embedding for `astrology` even if it has not seen it even once.
In recent versions of Gensim, the name `sentences` has been replaced. (It often misled people into thinking each text had to be a proper sentence, as opposed to just a list-of-tokens.)

You should either specify your corpus as a `corpus_iterable` (if it's something like a Python `list`, or sequence that is re-iterable), or as a `corpus_file` (if it's in a single disk file that's already broken into texts by newline, and tokens by spaces).

Separately:

* You probably don't need the complication of re-shuffling your corpus repeatedly. (If your datasource has massive clumping of word-types in certain ranges – like all examples of word A occur in a row of texts early on, and all examples of word B appear in a row of text late – then *one* shuffle before starting may help, so all words are equally likely to be found early and late in the corpus.)
* Calling `.train()` multiple times is almost always a mistake which causes confusion over the training passes & mismanagement of the learning-rate `alpha` decay. See this answer about (related-algorithm) `Doc2Vec` for more details: <https://stackoverflow.com/a/62801053/130288>