Помогите идеей. NLP/Лемматизация/Машинное обучение

IvanVish

Client
Регистрация
19.06.2020
Сообщения
26
Благодарностей
6
Баллы
3
Термины:

1. Обработка естественного языка (NLP) сочетает в себе компьютерную лингвистику, машинное обучение и модели глубокого обучения для обработки человеческого языка.

2. Лемматиза́ция — процесс приведения словоформы к лемме — её нормальной (словарной) форме.

Нормальные формы
В русском языке нормальными формами считаются следующие морфологические формы:

  • для существительных — именительный падеж, единственное число;
  • для прилагательных — именительный падеж, единственное число, мужской род;
  • для глаголов, причастий, деепричастий — глагол в инфинитиве (неопределённой форме) несовершенного вида.
Примеры
  • кошками → кошка
  • бежал → бежать
  • боязненных → боязненный

Задача:
Есть огромная база заявок. Необходимо распределять заявки по категориям.
Пример:
Ремонт квартиры под ключ в новостройке --> Категория "Ремонт квартир"
Замена смесителя в ванной --> Категория "Сантехника"
Поменять электрический счётчик в щитке --> Категория "Электрика"

Ну и так далее.
В примерах рассмотрели лишь заголовки, в дальнейшем ещё понадобится обрабатывать описание к заявкам, но всё по порядку.



1. Работа с заголовками.

Обработка русскоязычного текста.
Зачастую заголовки относящиеся к одной категории имеют различные вариации написания, так же не редки грамматические ошибки. Нам же необходимо учитывать все эти нюансы и сделать так, чтобы программа чётко понимала о чём идёт речь.

Как это вижу я. Создание некой базы со словами и категориями к ним. Программа берёт каждое слово из заголовка, приводит его к нормальной форме (Лемматизация), сверяет с базой и определяет к какой категории оно относится. (Это в двух словах. Понимаю что в заголовках могут быть одинаковые слова в различных категориях, нужно учитывать вероятность и т.д., но это позже)
Запнулся я на этапе лемматизации. Пробовал несколько готовых библиотек, но результат не устраивает.

Пожелания. Желательно чтобы это всё работало без использования нейронных сетей, в будущем подразумевается работа офлайн. Всё это должно работать в связке с Зеннопостером, либо на его базе.

Палки в колёсах.
- Большинство библиотек в данной сфере работает на net 5, зенка же переваривает максимум Framework 4.6.2, что порядком нас ограничивает.
- C#. Опять же ограничения зенки. На C# умные сети нынче не модно разрабатывать.
- Библиотеки что я пробовал применять, работают на нейронных сетях. Результат был не предсказуем, оказались они туповаты.

Заключение.
Возможно я не правильно рассуждаю, нужно смотреть на задачу шире, возможно нужен иной подход. Я не профи, адекватная критика приветствуется.
Может кто-то поделится своими наработками, может подскажут рабочую библиотеку, укажут направление в котором нужно двигаться. Жду любые идеи и предложения.
 
Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 761
Благодарностей
2 401
Баллы
113
Никто никого ни в чём не ограничивает.
Пишете на том языке, который нравится обычное консольное приложение.
После чего Зенкой передаете в него аргументы и получаете ответ.
С помощью Зенки получаете необходимую гибкость (выполнение кода в нужный момент времени с нужными данными).

А собственно само решение, которое нужно, чтобы оно правильно что-то там сортировало - добро пожаловать на фриланс с подробным тз и описанием всего что только можно и требованием собрать это решение в консольное приложение, которое уже можно дёргать с Зенно. В итоге, имея уже нужное решение, при необходимости можно его просто дёргать или упаковать в проект в проекте либо в плагин и также дёргать в нужный момент.

А какими-то наработками врятли кто-то поделится, так как задача специфичная, многим лень даже входить в контекст всего того, что было написано выше. Чтобы кому-то хоть что-то было интересно - должна быть краткая задача, должен быть код/шаблон/пример того, что уже сделано и потом краткий, но понятный вопрос. Если задача слишком большая - дробить её нужно как слона на кусочки, и по каждому кусочку создавать тему, чтобы работа, которую нужно выполнить была мелкой, на 10-20 минут, а не на несколько дней на обдумывание и написание чего-то, ведь Ваша тема порождает больше вопросов по задаче в мозгу потенциального человека который мог бы что-то ответить, а вопросы должны строиться так, чтобы наоборот в мозгу ответчика порождалось масса вариантов что ответить и за счёт этого самоутвердится/потешить своё чувство собственного достоинства и тп.

Я специально так как и Вы написал много букв, чтобы Вы очутили себя на стороне тех, кто читал Вашу тему, но так и не осмелился хоть что-то написать в ответ, ведь проигнорировать проще, чем вникать во всю эту логику.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)