Оглавление

  1. Введение
  2. Деловой контекст
  3. Машинное обучение/глубокое обучение аспект проблемы
  4. Источник данных

а. Веб-автоматизация

б. Веб-скрапинг

в. Аннотация данных

5. Введение данных

а. Теги в данных

6. Метрики потерь

7. Моделирование

а. Тренироваться

б. Тест

8. Развертывание

9. Заключение и будущие работы

10. Ссылки

1. Введение

В настоящее время, когда спрос на программный продукт на рынке увеличился, компаниям необходимо нанять большое количество ИТ-специалистов, восполняющих рыночный пробел. Кроме того, многие люди претендуют на работу в этих ИТ-компаниях, и компания не может просмотреть каждое из резюме. А вот и бизнес-контекст для создания системы для решения этой проблемы.

2. Деловой контекст

Поскольку многие люди претендуют на работу в ИТ-компаниях, и компании не могут просматривать каждое конкретное резюме, поэтому для решения этой проблемы необходимо создать систему мл / дл.

3. аспект проблемы ML/DL

Эта проблема может быть решена с помощью глубокого обучения. Первоначально были предприняты некоторые попытки решить эту проблему с помощью lstms, но точность была не такой хорошей, как сейчас, когда речь идет о модели трансформаторов, в частности о bert, которые в настоящее время являются самой современной моделью. Эта проблема может быть решена с помощью NER (распознавание именованных объектов) с использованием RoBerta (трансформеры обнимающих лиц) с библиотекой spacy (очень легко кодировать в этой библиотеке). Почему трансформеры? Потому что они являются Sota для задач НЛП, а преобразователи очень хорошо работают с задачами НЛП, поскольку они обучаются на больших данных, и нам просто нужно настроить гиперпараметры для нашего варианта использования. Нам не нужно обучать его с нуля.

4. Источник данных

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

а. Веб-автоматизация:

Прежде всего я создал файлы csv для списка URL-адресов резюме с сайтов. Это ссылка.

Я сделал веб-автоматизацию с помощью библиотеки селена, известной своей целью веб-автоматизации. Ниже приведен код для этой веб-автоматизации:

б. Веб-скрапинг:

Теперь у меня есть CSV-файлы, содержащие URL-адреса резюме. Теперь я удалил данные из Интернета с помощью библиотеки BeautifulSoup. Я также сделал некоторую предварительную обработку, чтобы текст выглядел в лучшем формате. Код для приведен ниже.

в. Аннотации данных:

Теперь у нас есть данные в предварительно обработанном формате. Теперь нам нужно аннотировать вручную, поскольку готовые данные недоступны. Итак, инструмент, который я использовал для аннотаций данных, приведен ниже, вы можете проверить его. Это ссылка.

5. Введение данных

В этой части мы обсудим, как выглядят данные, чтобы мы могли двигаться дальше. Сначала мы обсудим теги, представленные в аннотированных данных.

а. Теги в аннотированных данных:

Для данного набора слов возможно семь типов объектов:

  1. Должность: эта сущность представляет тип работы, которую хотят пользователи.
  2. навык : Представляет собой важные навыки, которыми обладают пользователи.
  3. опыт : представляет работу пользователя в предыдущей компании и временную шкалу.
  4. org : это набор компаний, в которых пользователь работал ранее или работает сейчас.
  5. tool : Представляет собой программные инструменты, используемые пользователем.
  6. Степень: показывает, какую степень пользователь получил, например, B.Tech, M.tech, MBA и т. д.
  7. Educ : представляет колледж, в котором учился пользователь.

6. Метрики потерь

Поскольку точность и полнота очень важны для определения характера ner, лучшими показателями, которые можно оценить, также является F1-оценка.

7. Моделирование

  1. Обучение

Для моделирования я использую модифицированную версию bert, т.е. Roberta, которая выполняет задачу ner (распознавание именованных объектов). Модель обучается с использованием пространственной библиотеки версии 3.

Моделирование состоит из двух частей:

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

Вышеупомянутая функция принимает аннотированные данные и выдает выходной файл в формате .spacy, который затем используется для обучения модели.

Теперь нам нужно установить файл конфигурации для обучения, который уже есть на github.

После этого мы можем обучить модель всего одной строкой кода в cmd.

python -m spacy train -g 0 config.cfg  --output generated_model/ --paths.train output_tagged_spacy_from/ --paths.dev cross_val/

Обучение модели заняло 8 часов для обучения на google colab pro gpu. Поэтому, если вам нужна предварительно обученная модель, ссылка доступна на github.

2. Тестирование

Для целей тестирования есть два шага:

а. Первый шаг - преобразовать pdf в текстовые данные

б. Затем используйте этот текст после очистки для тестирования модели.

Код для тестовой части находится в test.ipynb на gihub.

8. Развертывание

Развертывание для этого проекта было выполнено локально с использованием flask с html, css и javascript.

Итак, чтобы воспроизвести проект, выполните следующие действия:

а. Прежде всего загрузите папку и перейдите в эту папку развертывания в командной строке.

б. Создайте виртуальную среду в python с версией 3.7.13.

в. Затем загрузите папку generate_model в эту папку развертывания. Это ссылка.

д. Затем установите необходимый пакет для этого проекта с помощью команды

pip3 установить -r требования.txt

е. Затем запустите файл main.py python, используя

python3 main.py

д. После этого вы можете открыть веб-страницу с localhost. Перейдя по этой ссылке, загрузите свое резюме в формате pdf, и через некоторое время вы сможете увидеть вывод парсера в виде таблицы.

Демонстрационное видео этого проекта приведено ниже:

9. Заключение и будущие работы

  1. Часть, в которой pdf преобразуется в текстовую форму, может быть улучшена с помощью технологии распознавания текста.
  2. Аннотированные данные для обучения создаются мной вручную, поэтому их меньше. Но если мы сможем создать набор данных большого объема, эта модель будет совсем другим зверем.

10. Ссылки

  1. https://www.jobspider.com/job
  2. https://stackoverflow.com/questions/71695387/connecting-to-a-other-google-drive-than-the-one-logged-into-google-colab/71696254#71696254
  3. https://github.com/explosion/spaCy/discussions/8456
  4. https://towardsdatascience.com/how-to-fine-tune-bert-transformer-with-spacy-3-6a90bfe57647
  5. https://stackoverflow.com/questions/68213223/how-to-evaluate-trained-spacy-version-3-model#:~:text=nlp%20%3D%20spacy.load(path_to_model)%0Aexamples%20 %3D%20%5B%5D%0Ascorer%20%3D%20Scorer()%0Afor%20text%2C%20annotations%20in%20TEST_REVISION_DATA%3A%0A%20%20%20%20doc%20%3D%20nlp.make_doc (текст)%0A%20%20%20%20example%20%3D%20Example.from_dict(doc%2C%20annotations)%0A%20%20%20%20example.predicted%20%3D%20nlp(str(example .predicted))%0A%20%20%20%20examples.append(пример)%0Ascorer.score(примеры)
  6. https://www.appliedaicourse.com/course/11/Applied-Machine-learning-course
  7. https://www.naukri.com/

Для получения всего кода вы можете посетить мой профиль github по адресу:



Мы можем подключить LinkedIn:



Курс: