def METHOD_NAME(ClassifierCls, content_type):
    classifiers = {
        'like_'+content_type: 1, 
        'dislike_'+content_type: -1,
        'remove_like_'+content_type: 0,
        'remove_dislike_'+content_type: 0,
    }
    for opinion, score in classifiers.items():
        if opinion in post:
            post_contents = post.getlist(opinion)
            for post_content in post_contents:
                if not post_content: continue
                classifier_dict = {
                    'user_id': request.user.pk,
                    'feed_id': feed_id or 0,
                    'social_user_id': social_user_id or 0,
                }
                if content_type in ('author', 'tag', 'title'):
                    max_length = ClassifierCls._fields[content_type].max_length
                    classifier_dict.update({content_type: post_content[:max_length]})
                if content_type == 'feed':
                    if not post_content.startswith('social:'):
                        classifier_dict['feed_id'] = post_content
                try:
                    classifier = ClassifierCls.objects.get(**classifier_dict)
                except ClassifierCls.DoesNotExist:
                    classifier = None
                if not classifier:
                    try:
                        classifier_dict.update(dict(score=score))
                        classifier = ClassifierCls.objects.create(**classifier_dict)
                    except NotUniqueError:
                        continue
                if score == 0:
                    classifier.delete()
                elif classifier.score != score:
                    if score == 0:
                        if ((classifier.score == 1 and opinion.startswith('remove_like'))
                            or (classifier.score == -1 and opinion.startswith('remove_dislike'))):
                            classifier.delete()
                    else:
                        classifier.score = score
                        classifier.save()