1) Manual labeling--- this is not as bad as it sounds. Especially when you apply transfer learning, and for most of the datasets you have a lot of pre-trained models. There are products for that, but also inline python libraries
2) Rule based--- not advisible, since your model will just focus on these if-else rules itself. It would be the the best if these are the rules that are not that visible in the dataset, and the model cant catch it so easily. Which just implies it will than start to learn information in other features that also could be valuable.
3) Pseudo Labeling---- will add confident predicted test data to your training data. Therefore you will reinforce the clear labeled data and use them to help and label/predict other ones. Note, its a potential overfitting method.
4) Unsupervised Approach---- try to find good representation of data. The one thats discriminative enough, than apply clustering algos. If the resulting clusters are clear and different, you can look a couple of samples from every cluster and conclude what are the labels for every sample in your dataset.