Improving Information Retrieval with Knowledge Graphs and Natural Language Processing