Веса принято держать в районе нуля - что-то типа +/-1. В итоге, если мы будет просто в лоб брать порядковый номер, то нейронке надо и порядковый номер 2 и порядковый номер 20 как-то приводить в свою нутрянку к маленьким числам (нормировать), иначе слово в позиции 100 будет иметь в 100 раз больше значимость, чем первое.
Поэтому тут нужно какое-то векторное кодирование из небольших чисел. Сразу напрашивается двоичный код, он в принципе подходит, но его минус в том, что получается тоже большой разлёт, то 0 то 1. Синус же дает несколько промежуточных значений. В принципе кодировку можно было бы и захардкодить, но зачем, когда синус сделает это за нас.