A OpenMed é uma plataforma de modelagem de IA de código aberto dedicada à área de saúde e ciências da vida, hospedada na Hugging Face. Ela oferece mais de 380 modelos gratuitos de Reconhecimento de Entidades Nomeadas (NER) focados na extração de informações importantes, como medicamentos, doenças, genes e estruturas anatômicas de textos clínicos e literatura de pesquisa. Esses modelos são todos baseados na licença Apache 2.0 e podem ser usados livremente por qualquer pessoa. O objetivo da OpenMed é derrubar as barreiras de alto custo da IA na área da saúde e oferecer a pesquisadores, médicos e desenvolvedores acesso fácil a ferramentas de alta qualidade que aceleram a pesquisa médica e melhoram os serviços aos pacientes. Os modelos da plataforma têm excelente desempenho, superando até mesmo os caros modelos comerciais em vários conjuntos de dados, com até 36% de elevação. A openMed enfatiza a abertura e a colaboração da comunidade, e aceita contribuições e uso de usuários de todo o mundo.
Lista de funções
- Fornece mais de 380 modelos de reconhecimento de entidades nomeadas (NER) que abrangem medicamentos, doenças, genes, anatomia, tumores e outras áreas médicas.
- Oferece suporte à extração de entidades específicas, como substâncias químicas, variantes genéticas, informações patológicas, etc., de registros clínicos e documentos de pesquisa.
- Os modelos vêm em uma variedade de tamanhos, de 65M a 568M parâmetros, e são adaptados a diferentes ambientes de hardware (por exemplo, GPUs de 8GB a 40GB).
- Integração perfeita com o ecossistema Hugging Face Transformers para facilitar o carregamento e a implantação.
- Fornece um aplicativo de descoberta de modelos que permite aos usuários filtrar modelos por domínio (por exemplo, farmacologia, oncologia) ou tipo de entidade.
- Todos os modelos são de código aberto, baseados na licença Apache 2.0 e gratuitos para uso em ambientes de pesquisa e produção.
- Oferece suporte ao processamento em lote de dados de textos médicos para otimizar a eficiência da análise de dados em grande escala.
Usando a Ajuda
Instalação e preparação do ambiente
Os modelos da OpenMed são hospedados na plataforma Hugging Face e o ambiente de software necessário precisa ser instalado antes do uso. Veja abaixo as etapas detalhadas:
- Instalação do ambiente PythonVerifique se o Python 3.7 ou posterior está instalado em seu sistema. Isso pode ser verificado com o seguinte comando:
python --version
Caso não o tenha, você pode baixá-lo no site do Python.
- Instalação de transformadores Hugging FaceO modelo OpenMed é executado na estrutura Transformers, que precisa ser instalada. Abra um terminal e digite:
pip install transformers datasets pandas
Isso instalará Transformers, Datasets e Pandas para carregamento de modelos e processamento de dados.
- Verificar o suporte à GPU (opcional)Se estiver usando a aceleração da GPU, instale o PyTorch ou o TensorFlow e verifique se o driver da GPU e o CUDA estão configurados. Verifique a disponibilidade da GPU:
python -c "import torch; print(torch.cuda.is_available())"
exportações
True
Indica que a GPU está disponível.
Processo de uso básico
A principal funcionalidade do OpenMed é o Reconhecimento de Entidades Nomeadas (NER) para extrair informações estruturadas de textos médicos. Abaixo está um exemplo de OpenMed/OpenMed-NER-PharmaDetect-SuperClinical-434M
como um exemplo para mostrar como carregar e usar o modelo:
- Modelos de carregamento::
Usando Hugging Face'spipeline
Interface para carregar um modelo. O código a seguir carrega um modelo de reconhecimento de drogas:from transformers import pipeline model_name = "OpenMed/OpenMed-NER-PharmaDetect-SuperClinical-434M" ner_pipeline = pipeline("token-classification", model=model_name, aggregation_strategy="simple")
model_name
Especifique um nome de modelo para localizar outros modelos na página Modelos do OpenMed.aggregation_strategy="simple"
Agregação: Agregue os resultados em entidades completas; consulte a documentação do Hugging Face para obter detalhes.
- Manuseio de texto único::
Insira um texto médico e o modelo reconhecerá as entidades nele contidas. Exemplo:text = "患者服用10毫克阿司匹林治疗高血压。" entities = ner_pipeline(text) for entity in entities: print(f"实体: {entity['word']} ({entity['entity_group']}), 置信度: {entity['score']:.4f}")
Exemplo de saída:
实体: 阿司匹林 (CHEMICAL), 置信度: 0.9987
Isso significa que o modelo identificou com sucesso a "aspirina" como uma entidade química.
- Processamento de texto em lote::
Para grandes quantidades de texto, o OpenMed suporta o processamento em lote para maior eficiência. O código a seguir mostra como processar vários textos:texts = [ "患者服用10毫克阿司匹林治疗高血压。", "多柔比星治疗显示肿瘤显著消退。", "研究发现甲氨蝶呤对类风湿性关节炎有效。" ] results = ner_pipeline(texts, batch_size=8) for i, entities in enumerate(results): print(f"文本 {i+1} 实体:") for entity in entities: print(f" - {entity['word']} ({entity['entity_group']}): {entity['score']:.4f}")
Exemplo de saída:
文本 1 实体: - 阿司匹林 (CHEMICAL): 0.9987 文本 2 实体: - 多柔比星 (CHEMICAL): 0.9972 文本 3 实体: - 甲氨蝶呤 (CHEMICAL): 0.9965
batch_size=8
Tamanho do lote: ajuste o tamanho do lote de acordo com o desempenho do hardware e reduza o valor quando a memória da GPU for pequena.
- Processamento em lote com conjuntos de dados::
O OpenMed suporta o processamento de conjuntos de dados do Hugging Face. O código a seguir mostra como carregar o conjunto de dados OpenMed e processá-lo:from datasets import load_dataset from transformers.pipelines.pt_utils import KeyDataset import pandas as pd # 加载医疗数据集 medical_dataset = load_dataset("BI55/MedText", split="train[:100]") data = pd.DataFrame({"text": medical_dataset["Completion"]}) dataset = Dataset.from_pandas(data) # 批量处理 batch_size = 16 results = [] for out in ner_pipeline(KeyDataset(dataset, "text"), batch_size=batch_size): results.extend(out) print(f"已处理 {len(results)} 条文本")
- Uso de modelos para descobrir aplicativos::
A OpenMed fornece um aplicativo interativo de descoberta de modelos no OpenMed NER Model Discovery App. Os usuários podem usá-lo das seguintes maneiras:- Abra a página do aplicativo e insira o tipo de entidade a ser reconhecida (por exemplo, "substância química" ou "gene").
- Use a função de filtro para encontrar modelos adequados por domínio (por exemplo, farmacologia, oncologia) ou arquitetura de modelo (BERT, RoBERTa).
- Clique no link do modelo para obter o nome do modelo e o exemplo de código diretamente, copie-o para executar localmente.
Operação da função em destaque
- Suporte multidisciplinarModelos OpenMed abrangem uma ampla gama de campos, como farmacologia, oncologia, genômica, patologia e outros. Por exemplo, o uso de
OpenMed/OpenMed-NER-OncologyDetect-SuperClinical-434M
Identificar entidades relacionadas ao câncer:text = "KRAS基因突变驱动肿瘤形成。" entities = ner_pipeline(text) print(entities)
Exemplo de saída:
[{'word': 'KRAS', 'entity_group': 'GENE', 'score': 0.9991}]
- Integração eficienteO modelo é ecologicamente compatível com a Hugging Face e oferece suporte à rápida implementação em ambientes de produção. Os usuários podem implementar modelos por meio dos pontos finais de inferência da Hugging Face sem a necessidade de hardware local.
- Contribuições da comunidadeOs usuários podem acompanhar o OpenMed por meio do recurso "Watch" do Hugging Face para enviar solicitações de recursos ou contribuir com novos modelos.
advertência
- Assegure uma conexão estável com a Internet para fazer o download dos pesos do modelo (alguns modelos são grandes, por exemplo, modelos paramétricos de 568 M exigem cerca de 40 GB de armazenamento).
- Quando a memória da GPU for insuficiente, é recomendável escolher um modelo menor (por exemplo, parâmetros de 65M para o
OpenMed-NER-PathologyDetect-TinyMed-65M
). - Consulte a página da OpenMed regularmente para obter as atualizações mais recentes do modelo.
cenário do aplicativo
- Análise de registros clínicos
Os hospitais podem usar modelos OpenMed para extrair informações sobre medicamentos, doenças etc. dos registros dos pacientes. Por exemplo, identificar rapidamente o nome do medicamento em "Patient taking aspirin" (Paciente tomando aspirina) ajuda os médicos a organizar os registros médicos eletrônicos. - pesquisa médica
Os pesquisadores podem usar modelos para analisar a literatura e extrair informações sobre genes e proteínas para criar um gráfico de conhecimento. Por exemplo, a associação entre o gene BRCA2 e o câncer pode ser extraída de um artigo. - Desenvolvimento de medicamentos
As empresas farmacêuticas podem usar modelos para identificar interações entre substâncias químicas e medicamentos e acelerar a descoberta de medicamentos. Por exemplo, analisando o papel da doxorrubicina no tratamento oncológico. - Privacidade do paciente
A desidentificação por meio do modelo NER remove automaticamente as informações pessoais (por exemplo, nome, endereço) dos registros dos pacientes e está em conformidade com as normas de privacidade, como a HIPAA.
QA
- Os modelos da OpenMed são gratuitos?
Sim, todos os modelos são baseados na licença Apache 2.0 e são totalmente gratuitos para pesquisa e uso comercial. - Como escolher o modelo certo?
Use o aplicativo OpenMed NER Model Discovery para filtrar modelos por domínio ou tipo de entidade. Os tamanhos dos parâmetros (por exemplo, 65M ou 434M) também podem ser selecionados com base nas condições do hardware. - Que hardware é necessário para executar o modelo?
Os modelos suportam GPUs de 8 GB a 40 GB; as CPUs também podem executar modelos menores, mas são mais lentas. Recomenda-se pelo menos 16 GB de RAM. - Como você lida com conjuntos de dados em grande escala?
Use o código de processamento em lote para ajustar obatch_size
para se adaptar ao hardware. Consulte o exemplo de processamento em lote na Ajuda.