Switched from using Tweet.full_text to Tweet.text, which uses escaped HTML characters so that Twitter entity character positions line up properly. See sferik/twitter#348.