I have had to work on this on a related NLP project and I decided to tackle the problem since there didn't seem to be anything here. You can check my expander github repository if you are interested.
It uses POS tagging and named entity recognition (NER) to deal with the nouns additionally to the basic expansions. A disambiguations function is also included to deal with the harder case of ambiguous conractions like 's and so on. The NER tagging is the essential part here. It recognizes any nouns that are names, which I have then replaced with a pronoun to analyze the grammatical context and expand it if adequate.
It takes a long time to run on sentences, but it is my approach on how to tackle this problem and runs fairly well on the test cases included in the code.
For more details please have a look at the other answer on the older question or on the github repository directly.