suspeitando
suspeitando copied to clipboard
Inclusão de anotações.
Olá pessoal, primeiramente parabéns pela iniciativa. Gostei muito do projeto!
Após ver como vocês criaram a similaridade entre as licitações criei essa issue para propor alguns incrementos no pré-processamento.
Atual método de Pré-Processamento
- Removemos caracteres especiais
- Convertemos todas palavras em minúsculas e as separamos em um array.
- Removemos todas palavras que são "stop words" para não influenciar o modelo a ser treinado. Exemplo de "stop words": de, para, a, no, por, num, minha.
Minha proposta é a inclusão de anotações em algumas categorias especificas como, por exemplo, saúde. Basicamente utilizariamos vocabulários medicos: MeSH, nomes de remédios da Anvisa e outras fontes como: WordNet e DBpedia para produzir essas anotações.
Aqui vocês podem encontrar um exemplo de anotadores automáticos . paper
Uma vez que produzimos essas anotações, passamos diretamente para o proximo passo: 4. Método de Treinamento do Modelo de Rede Neural.
A mudança aqui, seria que utilizariamos as anotações e não o texto inteiro.
id1 = 2947
id2 = 10580
annotated_text1 = preprocessing(lics['objeto'].tolist()[id1])
annotated_text2 = preprocessing(lics['objeto'].tolist()[id2])
# Comput Cosine distances
similarity_vec = model.n_similarity(annotated_text1, annotated_text2)
Minha hipótese se baseia nessa licitação: link. Como podem ver tem vários medicamentos diferentes com similaridades próximas. Obviamente não conseguiremos muitas anotações, portanto teriamos que estabelecer um valor minimo de anotações para usar ambos textos anotados ou caso contrário continuar usando o texto inteiro.
O que acham?
Otimo ponto @silviodc, estavamos pensando em atualizar o pré-processamento para identificar Entidades. Dessa forma ao treinar o texto inteiro, seria incluido as entidades no lugar da palavra de origem. Mas creio que as anotações que vc menciona seja um pouco diferente. Vc já fez isso antes ou consegue nos dar um exemplo de como podemos testar com anotações?
Elas são um pouco diferente, no entanto podemos começar considerando apenas como entidades. Após os primeiros resultados incluímos funcionalidades mais complexas. Estou preparando um annotator com os vocabulários que mencionei.
Assim que estiver funcional compartilho o docker file que estou criando.