text analysis algorithms