How to separate text into two different parts (positive/negative) without hardcoded rules? The task is simply explainable but I imagine very hard. I have a large (1000+) recordings from a questionnaire in which people are asked to describe some of their good and bad personality traits and also what traits they would like to gain/work on.
The problem is that they are given one answer box for this. Some people start with listing their good, some with their bad ones, some list only their bad, some list only their good.
When I read them I can separately them very easily, but because there is not much structure I am having trouble with building a simple rule based algorithm.
Three examples:
One thing that I would to improve is my social ability. I find it hard approaching people and starting a conversation with a stranger. Also I am quite lazy sometimes. One thing that I am very proud of is my perseverance as well as my loyalty to my pets.

I am not a person with great perserverance, this is something I must work on. Sometimes I can be very lazy and I do not study the subject enough. I have trouble getting started with learning and then I keep pushing it forward, until I get into a time crunch and then I get stressed out and the quality of my work suffers. One thing that I am happy with is my ability to connect with people and I consider myself a very social person.

I am less satisfied with how much of a perfectionist I am. This can sometimes get in the way during work assignments because they will then take me too long. Besides that, I am a good listener and am empathetic with people.

I have written an algorhitm that basically checks for words such as improve, satisfied, change and then classify what follows either as negative or positive until a word is met that negates this and registers everything as positive from that point on.
However, things still keep escaping or being misclassified. Negation is part of the problem as well as people who do not use words such as improve, satisfied but just write down some good and then some bad personality traits such as this:
I work very hard and make a lot of progress when I zoom in on something. I am a family man and love my partner.

I think that I sometimes can be too stubborn for my own good. I feel that my perseverance is not what it used to be.

These things then do not trigger anything on the algorithm (which is currently about 22% of all cases). All in all, I'm hoping for a better approach. I could manually tag a few hundred and then have a model extract the rest but I'm not sure if this is a good idea and where even to begin. Does anyone here have any recommendations?
Cheers! Appreciate all help because I am stuck in the mud :p :(
This will be part of a pipeline so doing it manually is not an option. One obvious option is to separate the good and bad parts from the questionnaire but for this task it is also not an option. I
 A: This is an NLP problem, and while there has been much progress in recent years, those problems are still considered quite hard.
In particular, your task sounds like sentiment analysis. The basic idea is to separate the text into sentences and then assign a sentiment (e.g. "positive" or "negative") to each of them.
Furthermore, your approach seems to be a rule-based method. There are already a couple of rule-based methods developed for this task. You might want to look into those. To start, see here or here.
But you could also think about applying some sentiment analysis machine learning model. This would be a supervised learning problem and for training, you would need many sentences that are already labeled with "positive" and "negative".
And, if you want to use the state-of-the-art deep learning models, you will need a lot of such labeled data. This might be a problem in your situation.
Fortunately, this is a very common problem, so you might benefit from some pre-trained sentiment models. Those are models that have been trained on large datasets and only need some fine-tuning with your data to adapt them to your problem. And for fine-tuning you don't need much data, so you might want to give it a try.
I think a good start for learning about sentiment analysis with deep neural networks is this post. See also here, or here.
If the deep learning approach is not for you, maybe because of the complexity and the computational costs (buying GPU hardware or cloud computing resources), you could still go for training an ML model, but a classic one. A useful library would be the python NLTK library.
