natural language processing techniques and algorithms implemented in ruby