cpdoc / dhbb-nlp

processamentos DHBB
Other
5 stars 2 forks source link

primeiros dicionarios de entidades #71

Open arademaker opened 3 years ago

arademaker commented 3 years ago

criados a partir dos dicionários já utilizados no DHBB e dados do IBGE p/ GPE

arademaker commented 3 years ago

Em dicionario_GPE.csv, vc juntou cidades e estados? Qual vantagem? Seria melhor manter separado. Qual sua fonte de dados?

arademaker commented 3 years ago

Conforme falamos no Whatsapp, é mais seguro termos no dicionário os termos com iniciais em maiusculas do que ter tudo em lower case. Alguma razão para vc ter transformado tudo em lower case? Acho mais seguro não usarmos assim.

arademaker commented 3 years ago

para todos os dicionários, no README.txt que criei a partir do seu doc inicial, precisamos ter uma FONTE bem clara, como foram gerados os arquivos e se temos licença para usar.

arademaker commented 3 years ago

O arquivo de instituições está inválido.

https://cloud.ibm.com/docs/watson-knowledge-studio?topic=watson-knowledge-studio-dictionaries

Specifies equivalent terms, also called surface forms. Repeat the lemma as a surface form and use a comma to separate multiple surface forms. If a surface form includes a comma, enclose the surface form in quotation marks.

A linha

universidade estadual do centro oeste,3,"universidade estadual do centro oeste,UNICENTRO"

será erroneamente interpretada como tendo a string universidade estadual do centro oeste,UNICENTRO como uma surface form para a entidade universidade estadual do centro oeste. O que vc queria dizer é:

Universidade Estadual do Centro Oeste,3,Universidade Estadual do Centro Oeste,UNICENTRO

Que representa uma entidade com duas surface forms. Note que as aspas são usadas apenas quando o nome da entidade contém a vírgula.

arademaker commented 3 years ago

Não acho razoável pegarmos lista de instituições via CNPJ da Receita. Me parece que estamos lidando com muitos dados completamente irrelevantes para o DHBB. Acho que os dicionários devem ser feitos de forma mais precisa. Exemplos:

  1. lista das universidades do pais (Min Educação)
  2. lista de tribunais, ministérios etc. etc

Estas listas podem sair:

  1. do proprrio DHBB via alguma mineração dos arquivos (mesmo contendo erros) do diretório udp. Ex: token "Ministério" e todos os PROPN seguidos dele?

  2. wikipedia / wikidata / dbpedia ? Ex https://pt.wikipedia.org/wiki/Categoria:Minist%C3%A9rios_do_Brasil

O mesmo vale para nomes de pessoas.

arademaker commented 3 years ago

ainda sobre lower/upper/capitalized cases

For Brazilian Portuguese, English, French, German, Italian, and Spanish, Knowledge Studio does not currently provide an option to specify case-insensitive dictionary-matching, but dictionary entries match text that has a higher case. For example, vehicle in the dictionary matches vehicle, Vehicle or VEHICLE in text, while Sat in the dictionary matches Sat or SAT in text, but not sat.

isto significa que colocar entidades lowercase pode aumentar falso-positivos, prefiro precisão do que recall nos dicionários.

arademaker commented 3 years ago

@danielbonattoseco , fiz novo commit no branch, arrumando arquivos. Peço trabalhar neste branch e avisar aqui quando achar que os problemas acima foram resolvidos para darmos o merge no master.

danielbonattoseco commented 3 years ago

Em dicionario_GPE.csv, vc juntou cidades e estados? Qual vantagem? Seria melhor manter separado. Qual sua fonte de dados?

Juntei tudo pois não vi necessidade de realizar dicionários separados, pelo simples fato de que para o sistema são o mesmo tipo. Se quiser, posso fazer separados. Na verdade temos distritos, mesorregioes, microrregioes, municipios, regioes, regioes-imediatas, regioes-intermediarias, subdistritos e estados. Deveria fazer um dicionario para cada? (Temos dados duplicados entre estes dicionários, mas nao creio que seja um problema para o Watson. No arquivo unico dicionario_GPE fiz drop nas duplicidades por puro capricho e pra diminuir o tamanho do dicionario.) Fonte: https://servicodados.ibge.gov.br/api/docs/localidades

danielbonattoseco commented 3 years ago

Conforme falamos no Whatsapp, é mais seguro termos no dicionário os termos com iniciais em maiusculas do que ter tudo em lower case. Alguma razão para vc ter transformado tudo em lower case? Acho mais seguro não usarmos assim.

Utilizei critério de caso a caso. Por exemplo, para GPE e nomes próprios, usei Title. Para nomes de entidades, preferi usar lower case por essa característica da documentação:

"Para português do Brasil, inglês, francês, alemão, italiano e espanhol, o Knowledge Studio não fornece atualmente uma opção para especificar correspondência de dicionário sem distinção entre maiúsculas e minúsculas, mas as entradas do dicionário correspondem a textos que têm uma caixa mais alta. Por exemplo, veículo no dicionário corresponde a veículo, Veículo ou VEÍCULO no texto, enquanto Sáb no dicionário corresponde a Sáb ou SÁB no texto, mas não sáb."

neste caso, a entrada de dicionario "Lei De Segurança Nacional" não identificaria o termo "Lei de Segurança Nacional" no corpus pelo simples case da preposição. Se o dicionário constar como "lei de segurança nacional", ele captará todas as variações de case possíveis e acredito que os falsos positivos sejam pouco recorrentes dada a especificidade do dicionário (diferente de GPE que possui nomes de cidades polissêmicos).

danielbonattoseco commented 3 years ago

para todos os dicionários, no README.txt que criei a partir do seu doc inicial, precisamos ter uma FONTE bem clara, como foram gerados os arquivos e se temos licença para usar.

As fontes que utilizei são de APIs públicas, mas posso sim especificar.

danielbonattoseco commented 3 years ago

O arquivo de instituições está inválido.

https://cloud.ibm.com/docs/watson-knowledge-studio?topic=watson-knowledge-studio-dictionaries

Specifies equivalent terms, also called surface forms. Repeat the lemma as a surface form and use a comma to separate multiple surface forms. If a surface form includes a comma, enclose the surface form in quotation marks.

A linha

universidade estadual do centro oeste,3,"universidade estadual do centro oeste,UNICENTRO"

será erroneamente interpretada como tendo a string universidade estadual do centro oeste,UNICENTRO como uma surface form para a entidade universidade estadual do centro oeste. O que vc queria dizer é:

Universidade Estadual do Centro Oeste,3,Universidade Estadual do Centro Oeste,UNICENTRO

Que representa uma entidade com duas surface forms. Note que as aspas são usadas apenas quando o nome da entidade contém a vírgula.

isso está incorreto mesmo. no meu código, adicionei uma regra para só colocar entre aspas as entidades que constem a vírgula (seguindo a documentação), mas nesse caso o output está completamente zoado. vou revisar o código e ver o que aconteceu.

danielbonattoseco commented 3 years ago

Não acho razoável pegarmos lista de instituições via CNPJ da Receita. Me parece que estamos lidando com muitos dados completamente irrelevantes para o DHBB. Acho que os dicionários devem ser feitos de forma mais precisa. Exemplos:

  1. lista das universidades do pais (Min Educação)
  2. lista de tribunais, ministérios etc. etc

Estas listas podem sair:

  1. do proprrio DHBB via alguma mineração dos arquivos (mesmo contendo erros) do diretório udp. Ex: token "Ministério" e todos os PROPN seguidos dele?
  2. wikipedia / wikidata / dbpedia ? Ex https://pt.wikipedia.org/wiki/Categoria:Minist%C3%A9rios_do_Brasil

O mesmo vale para nomes de pessoas.

isso que achei que devíamos discutir e ir, aos poucos, agregando aos dicionários. Para um primeiro momento os dicionários que temos já ajudam, mas irmos pensando coletivamente em tipos de dicionários que podem ser buscados e agregados. Os exemplos que vc usou são algumas das possibilidades. A wikipedia é uma fonte considerada confiável para esse tipo de aplicação?

arademaker commented 3 years ago

A wikipedia é uma fonte considerada confiável para esse tipo de aplicação?

as vezes melhor que fontes oficiais no sentido de ter mais gente olhando e revisando.