Tendo muitos documentos de texto (em linguagem natural, não estruturados), quais são as maneiras possíveis de anotá-los com alguns metadados semânticos? Por exemplo, considere um pequeno documento:
I saw the company's manager last day.
Para poder extrair informações dele, ele deve ser anotado com dados adicionais para ser menos ambíguo. O processo de encontrar esses metadados não está em questão, portanto, assuma que seja feito manualmente. A questão é como armazenar esses dados de forma que análises adicionais possam ser feitas de maneira mais conveniente / eficiente?
Uma abordagem possível é usar tags XML (veja abaixo), mas parece muito detalhada, e talvez haja melhores abordagens / diretrizes para armazenar esses metadados em documentos de texto.
<Person name="John">I</Person> saw the <Organization name="ACME">company</Organization>'s
manager <Time value="2014-5-29">last day</Time>.
nlp
metadata
data-cleaning
text-mining
Amir Ali Akbari
fonte
fonte
Respostas:
Pessoalmente, eu recomendaria o uso de algo não específico ao campo da PNL e de algo suficientemente geral que ainda possa ser usado como uma ferramenta, mesmo quando você começar a ultrapassar esse nível de metadados. Eu escolheria especialmente um formato que possa ser usado independentemente do ambiente de desenvolvimento e um que possa manter alguma estrutura básica se isso se tornar relevante (como a tokenização)
Pode parecer estranho, mas eu sinceramente sugeriria
JSON
. É extremamente bem suportado, suporta muita estrutura e é flexível o suficiente para que você não precise sair dela por não ser suficientemente poderoso. Para o seu exemplo, algo como isto:A única grande vantagem que você tem sobre todos os formatos específicos de PNL aqui é que
JSON
pode ser analisada em qualquer ambiente e, como você provavelmente precisará editar seu formato de qualquer maneira, o JSON se presta a edições muito simples que permitem uma curta distância para outros formatos.Você também pode armazenar implicitamente informações de tokenização se desejar:
EDIT: Para esclarecer o mapeamento de metadados é bastante aberto, mas aqui está um exemplo:
Espero que ajude, deixe-me saber se você tiver mais alguma dúvida.
fonte
Em geral, você não deseja usar tags XML para marcar documentos dessa maneira, pois elas podem se sobrepor.
As estruturas UIMA , GATE e NLP semelhantes indicam as tags separadas do texto. Cada etiqueta, tais como
Person
,ACME
,John
etc é armazenado como a posição de que a etiqueta começa e a posição que ele termina. Portanto, para o tagACME
, ele seria armazenado como iniciando uma posição 11 e terminando na posição 17.fonte
A ferramenta de anotação de pirralho pode ser útil para você de acordo com meu comentário. Eu tentei muitos deles e este é o melhor que encontrei. Ele possui uma ótima interface de usuário e pode suportar vários tipos diferentes de anotações. As anotações são armazenadas em um arquivo .annot separado, que contém cada anotação e sua localização no documento original. Uma palavra de aviso, no entanto, se você quiser, em última análise, alimentar as anotações em um classificador como a ferramenta NER de Stanford, terá que fazer alguma manipulação para colocar os dados em um formato que eles aceitem.
fonte
Para descrever todos os dados existentes, é uma tarefa tão difícil, mas podemos usar um modelo de dados: http://schema.org/ , onde são os tipos estruturais das informações. A execução anterior foi direcionada para implementar a tecnologia MarkUp, portanto, parece que pode ser útil para sua tarefa.
fonte