A systems, methods, and products for language learning software that automatically extracts text from corpora using various natural-language processing product features, which can be combined with custom-designed learning activities to offer a needs-based, adaptive learning methodology. The system may receive a text, extract keywords pedagogically valuable to non-native language learning, assign a difficulty score to the text using various linguistic attributes of the text, generate a list of potential distractors for each keyword in the text to implement in learning activities, and topically tag the text against a taxonomy based on the content. This output is then used in conjunction with a series of learning activity-types designed to meet learners' language skill needs and then used to create dynamic, adaptive activities for them.