Несколько строк кода для извлечения сущностей через QAmodel

глубокое обучение

«Это 15-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."

Hugging face — поставщик услуг чат-ботов из Нью-Йорка, США, специализирующийся на технологии NLP. Его сообщество с открытым исходным кодом предоставляет большое количество моделей предварительного обучения с открытым исходным кодом, особенно библиотеку моделей предварительного обучения с открытым исходным кодом на github. звезда превысила 50w.

Официальная ссылка на сайт здесь:huggingface.co/

В этой статье будет использоватьсяpipelinesкоторый предоставилQuestionAnsweringPipelineAPI извлекает информацию из предложений с помощью вопросов и ответов. Хотя эффект извлечения является общим, скорость извлечения высока при небольшом объеме кода. Конкретные эффекты заключаются в следующем:

Рис. 1. Эффект извлечения модели MRC_Roberta

Рис. 2. Эффект извлечения модели QA_Roberta

Видно, что эффект извлечения модели класса QA или класса MRC все еще присутствует, а скорость очень высока, в основном 300 мс, что составляет около 0,3 с, чтобы получить ответ, поэтому мы можем получить минимальный модуль извлечения информации или вопрос. и модуль ответов с несколькими строками кода.

Pipelines

В этой статье мы кратко познакомим вас с обнимающим лицом.pipelines功能.pipelinesэто хороший и простой способ использовать модели для логического вывода. ЭтиpipelinesПодход — это простой API, который инкапсулирует большой объем сложного кода и предоставляет простой API, предназначенный для нескольких задач, включая анализ настроений, распознавание именованных сущностей, ответы на вопросы, генерацию текста, маскированные языковые модели и извлечение функций.

Официальная документация сайта Pieline находится здесь:официальная документация

Примеры использования см.сводка задачи.

Процесс реализации

Три шага:

1. Перейдите на страницу Hugging Face, чтобы загрузить китайские модели Bert, китайские QA или китайские модели MRC и сохранить их в указанном каталоге:

Модель MRC_Roberta:Метод объятий test.co/luhua/eat...

Модель QA_Roberta:обнимаю test.co/utwo/Roberta…

2. Загрузите Tokenizer и модель, а также то, какой Tokenizer и модель можно использовать для запроса документа.В этой статье используетсяAutoModelForQuestionAnsweringиAutoTokenizer

import time 
from transformers import AutoModelForQuestionAnswering,AutoTokenizer,pipeline
import torch, json, logging
logging.getLogger().setLevel(logging.INFO)

model = AutoModelForQuestionAnswering.from_pretrained("./PretrainModel/luhua_ChinesePretrainMRC_RobertaWwmExtLarge/")
tokenizer = AutoTokenizer.from_pretrained("./PretrainModel/luhua_ChinesePretrainMRC_RobertaWwmExtLarge/")
QA_model = pipeline('question-answering', model=model, tokenizer=tokenizer)

3. Создайте конвейер, введите вопрос и текст в соответствии с форматом, чтобы получить результат.

%%time
QA_model2 = pipeline('question-answering', model=model, tokenizer=tokenizer)
QA_input = {'question': "糖尿病的坏处",
            'context': "糖尿病是一组以高血糖为特征的代谢性疾病。高血糖则是由于胰岛素分泌缺陷或其生物作用受损,或两者兼有引起。长期存在的高血糖,导致各种组织,特别是眼、肾、心脏、血管、神经的慢性损害、功能障碍。"}
QA_model(QA_input)

"""
Wall time: 305 ms
{'score': 2.974448580062017e-05, 'start': 83, 'end': 92, 'answer': '慢性损害、功能障碍'}
"""

Неинтересно возвращать только один ответ, можете ли вы вернуть более одного ответа?

  • Осталось настроить параметры

Пример:

Интерпретация параметров

pipeline("question-answering") перепрыгнет кQuestionAnsweringPipelineЭтот класс, наконец, вернет словарь или список словарей.В основном мы смотрим на параметры в методе __call__.

  • top_k: количество возвращаемых ответов, по умолчанию 1; если в тексте недостаточно ответов для возврата, будет возвращено меньше ответов topk
  • doc_stride: управляет размером перекрывающихся блоков, по умолчанию 128.
  • max_answer_len: максимальная длина прогнозируемого ответа, по умолчанию 15.
  • max_seq_len: общая длина комбинированного предложения (тело + вопрос) после сегментации слов, по умолчанию 384.
  • max_question_len: максимальная длина вопроса после сегментации слов, по умолчанию 64.
  • handle_impossible_answer: достаточно, чтобы принять невозможное в качестве ответа, по умолчанию False

Функция очень интересная, и вы можете попробовать еще больше удовольствия НЛП — новый лучший игрок на полставки в Daydream. !