I got interested in this thread as I’m looking at similar scenarios myself. Reading this I got an idea of an approach. I don’t have the code solution, but just a theory.
If you map the text “Although the price is high they do what they promise. Got an answer in 5 minutes after contacting support, couldn’t be better.” in displaCy, you get this graph
The idea I got is this:
In both your examples, splitting the text into sentences somewhat works to keep the sentiment and the subject together and separate them from the other statement.
Example 1:
- Delivery was very fast.
- But they wont reply to my questions.
Example 2:
- Although the price is high they do what they promise.
- Got an answer in 5 minutes after contacting support, couldn’t be better.
But in reality, it’s probably not going to be that cleanly defined. I can really see people writing the first example as one sentence, which gives this graph
So I came up with this theoretical method:
- Break this into two unit of texts - one per sentence.
- Break each sentences into verb groups.
- Although the price is high
- they do what they promise
- Got an answer in 5 minutes after contacting support
- couldn’t be better
- You can classify each as for subject - support, price, etc.
- Analyze sentiment on each.
This also extracts one new sentiment - the phrase they do what they promise could be considered a positive feedback on your service.
It’s not perfect, and this “complex” statement is probably a typical feedback text, unfortunately.