With the explosion of Web 2.0, customers are able to share their opinions and sentiments online. This has led to new opportunities for companies and organizations to understand people's opinions towards their products or services and can serve to improve their products or market strategy more effectively. However, the data on the Web is huge and unstructured, which makes it difficult to analyze automatically and in bulk. This paper proposes a novel (semantic-based) framework for fine-grained sentiment analysis. It also includes a practical implementation of the framework to analyse the sentiments expressed within customer reviews, aiming to provide accuracy of sentiment classification. The framework is able to deal with mixed-opinion reviews and handle contextual information via a sentiment lexicon containing multi-word expressions. Datasets across two domains (phone products and hotel services) were used to evaluate the proposed framework for its reliability and validity. A sizeable performance improvement was noted whereby the proposed methodology yielded a result of 91.3% accuracy in sentiment classification as compared to the baseline (SentiWordNet) which had a result of 71.0%.