Похоже, вам нужно смотреть в сторону машинного обучения. В двух словах здесь не опишешь, рекомендую почитать материалы на эту тему. Но я бы пошел таким путем:
1) Для каждого объявления создал набор признаков. Можно начать с того, что у вас уже есть (судя по описанию и ответам на комментарии). На "мешок слов", наверное, не стоит сходу вестись. Там будет много шума. Потребуется уменьшение размерности признакового пространства. Подозреваю, что на старте можно ограничиться индикатором вхождения в текст слов-маркеров. Список таких слов можно сделать и ручками. И еще. Думаю будут очень важны признаки связанные с вхождение контактов в несколько объявлений.
2) Для обучения модели потребуется выборка объявлений в которых точно известно кто его разместил. Это самое важное место. И самое сложное. Подозреваю, что выборка будет маленькая, в таком случае это наложит ограничения на выбор модели (будете работать с теми же деревьями и бустингом над ними).
3) Обучающую выборку надо будет предварительно обработать: категориальные признаки (всякие идентификаторы, категории, темы) заменить на наборы бинарных (one hot encoding), числовые - нормировать, выборку сбалансировать.
4) Выбираете метрику по которой будите оценивать качество работы алгоритма (точность, полнота, F-мера или ROC-AUC или еще что-то). Это отдельная большая тема и выбор будет зависеть от вашей бизнес-модели.
5) Собираете несколько моделей, выбираете наиболее перспективные. А потом подбираете гипер-параметры в этих моделях. Возможно, захотите комбинировать несколько моделей, но тут нужно быть осторожным с производительностью и переобучением.
6) Прикручиваете полученную модель к своему сервису.
7) Находите новые признаки, обучающие данные, идеи и улучшаете модель. Здесь предела совершенству нет ))
А то что есть у вас сейчас, скорее всего без потерь можно будет описать обычным деревом решений. Так что хуже стать не должно.