The information is on Minecraft Wiki.
I just copied-and-pasted the relevant information.
Mating and Population
Villagers will mate depending on available housing. A "house" is defined as a wooden door that has an "inside" and an "outside". The "inside" is the side of the door which has more "roof" than the other. A block counts as being part of the "roof" when it is within 5 blocks of the door, its topside is exposed to sunlight during the day, and its bottom side is higher than the door's bottom side. Notice that a door is not a "house" without a roof, or with equal amount of roof on both sides. A house is initiated by a nearby villager (up to 16 blocks away horizontally along both axis, and up to 4 blocks vertically), and then either added to an existing or a new village. Sometimes the Villager AI doesn't behave as expected until the game is restarted.Lots of clarification needed. If there is a well-lit nearby cave that villagers can and do easily fall into, their population will explode to accommodate the space, and they can become very difficult to get rid of. Once housing has been established, Villagers will then mate until the number of adult Villagers equals 0.35 times the number of doors. Any remaining children will grow up as usual, resulting in a total number of adult Villagers somewhere above one third of the number of nearby wooden doors. The type of Villager that the child is, doesn't depend on what type the parents are; Two farmer Villagers can have a child that is any of the occupations. Unlike other breed-able mobs, the parents and child have no personal interactions other than socializing. Villager children will sprint about, entering and leaving houses at will. The Villager children will also chase each other around the village to simulate that they are playing tag. These children will sometimes stop sprinting to stare at an Iron Golem. If the Iron Golem is holding a rose, the children will cautiously take the flower from its hands. Although children look smaller than adult Villagers, their hitbox is the same size. It is possible to grief a server by exploiting the mating algorithm and building tons of small houses and creating enough lag to make the game unplayable.