Задать вопрос

Как сделать умный фильтр текста по смыслу?

Задача:
- Есть парсер (на PHP) постов ВК по теме сдачи квартир. Надо определить - написал текст Агент или Собственник.

Как решена задача на данный момент (топорно):
- С помощью масок из стоп-слов. Находится в тексте стоп-слово (прим: агентство) - значит агент.

В чем проблема:
- Естественно такой подход очень топорный и иногда неправильно фильтрует посты.

Вопрос:
- Где найти информацию с примерами по реализации подобных скриптов? Мне просто хотя бы концепцию понять как это сделать максимально практично.

Пока думаю запилить такую тему: скрипт будет искать не только стоп-слова, но и слова определяющие Собственника. Также всем этим маскам хочу присвоить свои баллы. Т.е. ищем все стоп-слова (они минусуют общий балл текста), ищем все слова определяющие собственника (они плюсуют общий балл текста), и по набранным баллам определяем на сколько пост относится к собственнику жилья.

Самому ничего нарыть не получилось в инете. Заранее спасибо за любую информацию по этой теме!
  • Вопрос задан
  • 953 просмотра
Подписаться 7 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
@vshvydky
Идея анализа слов хороша, но добавь к ней анализ страницы. У агента будет точно не одна объява о продаже на стене своей страницы, значит он точно не твой таргет, тогда и минусуй.
Ответ написан
@Nwton
1) Просматриваете сотню объявлений
2) Анализируете каждое и выясняете, что именно помогло вам определить тип объявления и качество
3) Пишете скрипт, который анализирует нужные детали
4) Тестируете скрипт на паре сотен разных объявлений. Смотрите как именно бот анализирует данные, следите за каждым этапом и дорабатываете алгоритм

Это про общий подход к созданию таких штук.
Ответ написан
latteo
@latteo
Его и по телефону не всегда отличишь, если агент косит под собственника.

Для ручной фильтрации использую:
- анализ телефона, как правило у агенств множество квартир. А у собственника 90% одна объява, 10% могут быть объявления 2-3 квартир + могут попадаться объявы по продаже мелких вещей.
- анализ картинки: агенствам лень заморачиваться и картинки могут идти на несколько объяв, но увы парсить гугл это долго.
- общий фон текста + интуиция. Вот тут машина пока бессильна, хотя можете попробовать анализом нескольких тысяч текстов выявить закономерности через сервисы типа https://habrahabr.ru/post/243705/

PS: в современном мире агенства - это зло в виде лишнего посредника с огромными запросами и минимальной функцией свести 2х людей без малейших проверок кто эти люди.
Ответ написан
Arseny_Info
@Arseny_Info
R&D engineer
1) Токенизация и лемматизация текста
2) Bag of words или TF/IDF векторизация
3) Доп.фичи про уникальность телефона / адреса.
4) Простая линейная модель поверх этих векторов.

Тому, кто хоть раз работал с такими задачами, дел на 1-2 вечера.
Ответ написан
Abyasov
@Abyasov
За любую движуху, кроме голодовки :)
Похоже, вам нужно смотреть в сторону машинного обучения. В двух словах здесь не опишешь, рекомендую почитать материалы на эту тему. Но я бы пошел таким путем:

1) Для каждого объявления создал набор признаков. Можно начать с того, что у вас уже есть (судя по описанию и ответам на комментарии). На "мешок слов", наверное, не стоит сходу вестись. Там будет много шума. Потребуется уменьшение размерности признакового пространства. Подозреваю, что на старте можно ограничиться индикатором вхождения в текст слов-маркеров. Список таких слов можно сделать и ручками. И еще. Думаю будут очень важны признаки связанные с вхождение контактов в несколько объявлений.

2) Для обучения модели потребуется выборка объявлений в которых точно известно кто его разместил. Это самое важное место. И самое сложное. Подозреваю, что выборка будет маленькая, в таком случае это наложит ограничения на выбор модели (будете работать с теми же деревьями и бустингом над ними).

3) Обучающую выборку надо будет предварительно обработать: категориальные признаки (всякие идентификаторы, категории, темы) заменить на наборы бинарных (one hot encoding), числовые - нормировать, выборку сбалансировать.

4) Выбираете метрику по которой будите оценивать качество работы алгоритма (точность, полнота, F-мера или ROC-AUC или еще что-то). Это отдельная большая тема и выбор будет зависеть от вашей бизнес-модели.

5) Собираете несколько моделей, выбираете наиболее перспективные. А потом подбираете гипер-параметры в этих моделях. Возможно, захотите комбинировать несколько моделей, но тут нужно быть осторожным с производительностью и переобучением.

6) Прикручиваете полученную модель к своему сервису.

7) Находите новые признаки, обучающие данные, идеи и улучшаете модель. Здесь предела совершенству нет ))

А то что есть у вас сейчас, скорее всего без потерь можно будет описать обычным деревом решений. Так что хуже стать не должно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы