Improving Computer-Assisted Language Learning through Hierarchical Knowledge Structures