Keyword extraction using lexical chains or keyphrase extraction from Bayes classifier. An algorithm with background knowledge would always serve better.
Machine Learning approaches are as simple as "Give me a list of features to identify typical instances of a data and I shall identify the rest of them". When you are handling running text we need to identify the prominent words (keywords) from the text which act as features for your machine learning approaches.
Now, to extract these keywords there are various NLP approaches,
Bag of words:
A simple TF-IDF
N-Grams
POS Tagging etc.,
The above approaches don't take the position of the word into account however if position plays a crucial role the data that you are dealing with you can try Word offsets.
An overview of the most commonly used supervised and unsupervised methods for keyword extraction task, including extensive related work you can find in paper: https://www.researchgate.net/publication/280092953_An_Overview_of_Graph-Based_Keyword_Extraction_Methods_and_Approaches?ev=prf_pub
You can choose what's best for you.
Further... I recommend to check a method which is simple to perform, doesn't require a machine learning or external linguistic knowledge. Such a method (SBKE) is based on statistical and structural information encompassed in the source text. Paper: