Привет всем, я все еще в своем цикле статей пишу о spaCy и НЛП.
Я уже писал о:
2. Сопоставление на основе правил с помощью spaCy
3. Анализ настроений в Твиттере с использованием spaCy
4. Улучшение моделей классификации текста с помощью spaCy
А теперь давайте рассмотрим одну из основных функций spaCy, NER, распознавание именованных объектов.
В spaCy используется чрезвычайно быстрая система распознавания статистических объектов, которая присваивает метки смежным диапазонам токенов. Обученные конвейеры по умолчанию могут идентифицировать множество именованных и числовых объектов, включая компании, местоположения, организации и продукты. Вы можете добавлять произвольные классы в систему распознавания сущностей и обновлять модель новыми примерами.
Вы можете найти гораздо больше информации, обратившись к документации spaCy.
Что называется распознаванием сущностей?
Именованный объект — это «объект реального мира», которому присвоено имя — например, человек, страна, продукт или название книги. spaCy может распознавать различные типы именованных объектов в документе, запрашивая у модели прогноз.
Перейдем к первому примеру:
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for ent in doc.ents:
print(ent.text, ent.label_)
-OUTPUT
Apple ORG
U.K. GPE
$1 billion MONEY
Удивительный!!!!!
Модель идентифицировала именованный объект, в данном случае ORG (компании, агентства, учреждения), GPE (геополитический объект) и ДЕНЬГИ (денежные ценности, включая единицы).
Мы также рассмотрим использование визуализатора дисплея.
displacy.serve(doc, style="ent")
Проект НЭР
Хорошо, теперь, когда я рассмотрел основы Named Entity, давайте поговорим о запуске проекта NER.
Есть 2 способа начать проект NER, первый и самый простой — использовать предварительно обученные модели spaCy, таких как en_core_web_lg или en_core_web_trf.
Использование этих двух предварительно обученных моделей позволяет быстро приступить к работе.
Нуууу, почти все время вы хотите тренировать какие-то определенные ярлыки, такие как названия брендов, найденные в текстах Twitter, или названия лекарств, или даже найти какой-то определенный образец названий компаний и так далее.
В таких случаях вам нужно будет тренироваться. ваша собственная модель с вашими аннотированными данными.
Да, вы правильно прочитали!
Вы должны аннотировать свои собственные данные, чтобы они соответствовали цели вашего проекта.
Аннотация
Это одна из самых важных задач при создании проекта NLP.
Вам необходимо аннотировать правильные данные, потому что машины могут учиться на письменных текстах, обрабатывая важную информацию.
И качество аннотации имеет большое значение. огромное влияние на конечную модель.
Существует много инструментов, которые выполняют этот процесс аннотации, например Prodigy, Stanford CoreNLP, TagEditor и doccano.
доккано
Это инструмент для текстовых аннотаций с открытым исходным кодом для людей. Он предоставляет функции аннотаций для классификации текста, маркировки последовательностей и последовательностей задач.
Таким образом, вы можете создавать помеченные данные для анализа настроений, распознавания именованных сущностей, суммирования текста и т. д.
Дополнительную информацию можно найти на doccano github.
https://github.com/doccano/doccano
Это один из инструментов, который можно использовать при аннотировании собственных данных для построения конвейера НЛП и обучения собственных моделей.
Использовать такой инструмент очень просто, а результаты обучения на наших собственных данных очень высоки.
Советы по созданию собственной модели НЛП:
. Поставьте перед проектом четкую цель
Главный вопрос: какова цель моего проекта?
Будет ли это проект по классификации (например, анализ настроений)? Будет ли это проект по распознаванию именованных объектов?
. Где данные?
Будут ли данные поступать из Twitter или любых других социальных сетей? Буду ли я извлекать некоторые статьи из API?
. Какой инструмент аннотации я буду использовать для этого проекта?
. Какие важные ярлыки нужно аннотировать?
Если это анализ настроений, я буду отмечать тексты как положительные или отрицательные или любой другой ярлык.
. Каким правилам следует следовать при написании аннотаций?
Какие признаки текста позволяют классифицировать текст как отрицательный? (наличие отрицательных слов очевидно, но если в тексте есть какие-то претензии, то каковы эти шаблоны?)
Я знаю, что конвейер аннотаций намного сложнее, чем эти вопросы, но это хороший шаг для нашего первого проекта.
Теперь, имея собственный набор данных, вы можете построить конвейер spaCy для обучения NER или чего-то еще.
В следующей статье я сделаю проект с нуля, чтобы показать, как легко и быстро можно обучить новый проект НЛП с нуля.