-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Evitar duplicados de la misma empresa #31
Comments
Muy buen punto Softman, pero nos impone parsear el borme entero antes de parsear cualquier otro boletín entonces. Que a lo mejor no es mala idea, pero hasta cuando conseguimos tener los BORME? vamos a conseguir todas las empresas que esten en el BOE desde el BORME, seguro? |
perdonad lo he cerrado antes sin querer, no me he dado ni cuenta. |
Y aún teniendo la lista (completa!!!) de nombres correctos de empresas, una vez parseamos el BOE, nos llegan nombres incorrectos. Como detectas de que empresa se trata? Esto de la key única lo podrías detallar porfa o apuntar donde se genera en el código? Porque deberiamos entender si "Cañero Platano SL" === "Platano PLATANI ca NIERO SA" por ley misma, porque a lo mejor deberíamos ir cruzando fonética y algoritmo de palabras, algun analisis un poco raro... como para aproximar las personas (que es otro rollo, pero pasa igual..). |
Me da que necesitamos diccionarios (.sql o .csv) que incluyan fonética y gramática. Hay por ahí, cuando tenga un ratito busco uno. Y en "el otro repo" he puesto un diccionario de nombres en /databases si quieres. + |
son 2 procesos distintos la obtencion de una key única y la consulta de aproximados en la base de datos. |
la key la calculo en base a la cadena con el modulo https://www.npmjs.com/package/aguid |
a la key única que le das en entrada? me lo ubicas en el código please? |
Quizá sea esto mejor manera de detectar si una palabra tiene significado: Por nota sólo... ;) |
si claro https://github.com/Ingobernable/kaos155/blob/dev/App/node_app/_utils/BORME/Borme_Rutines.js linea 875 : getUnique: function (_this, _name, _db, callback) { |
En este código veo que generas el GUID en función de _name ("app.aguid(_name)"). Entonces el GUID dependerá entero del valor de _name. Que limpieza efectuas al nombre de empresa? Quitas acentos y espacios por ejemplo? Oye y aparte, acabo de poner el dedo sobre algo que nos va a servir mucho me parece. Se llama "Fuzzy matching", y esta incorporado en MySQL en forma de "hash fonético"!! que surpresa.. Se llama SOUNDEX ;) Y también esta lo de "distancia de Levenshtein", que parece más apropiado en el momento de parsear, cuando hay más tiempo para analizar muchas lineas. Hasta han hecho una formula en MySQL! https://stackoverflow.com/a/369834 |
MariaDB [(none)]> select SOUNDEX("caaos"); MariaDB [(none)]> select SOUNDEX("caous"); :D Parece bastante común: Leyendo toda esta doc, sospecho que Soundex solo funciona bien en ingles, mientras la distancia de Levenshtein funcionaría en cualquier idioma con alfabeto latin. |
Y veo "metaphone" tb, pero ahí dice que es más preciso que soundex porque recoge las reglas de prononciación................ del ingles. O sea, mejor soundex entonces ;) |
Y ahí esta el algoritmo para un metaphone ingles y otro español, me parece :)))) |
Confirmo que usar ( levenshtein + searx + estadisticas de ocurrencias ) permite corregir los nombres de empresas de manera automática :)))) voddafon e tel e f o n ic a coca...co ll a .. aunque vaya un poco lento para tener más precisión. Viva las APIs :))) |
Afinando algoritmo, funciona muy bien para espacios que sobren, por lo menos!!! voddafon e voddafon ee voddafon es sam ur gene r al m o t o r s ib er d ro l a tel e f o n ic a tel e f o n ic aa tel e f o n ic aaa coca...co ll a coca...co lll a coca...co llll a Not bad :) |
como la haces detalla un poco más, hay un caso a b b o t t f a r m a ce u tica Soci e da d an ó ni ma, en el boe que realmente lo he dejado por imposible |
las transformaciones que hago a la empresa en el BORME estan en https://github.com/Ingobernable/kaos155/blob/dev/App/node_app/_utils/BORME/Borme_Transforms.js |
El método:
Algo así... pero para seleccionar "S o c i e d a d An o n i ma", mejor valdría usar regexp del tipo "S\s*O\s*C\s*I\s*E\s*D\s*A\s*D\s*A\s*N\s*O\s*N\s*I\s*M\s*A". La técnica que describo, me parece que serviría sobre todo para corregir nombres del tipo "a b b o t t f a r m a ce u tica" (> 50% de espacios / letras o algo así), o nombres que los usuarios (nosotros) declaren manualmente como mal escritos. |
Hola!
Acabo de encontrar estos muy interesantes artículos 405 y 408!!
http://www.rmc.es/documentacion/publico/RMC-%20Art%C3%ADculos%20que%20determinan%20la%20concesi%C3%B3n%20o%20denegaci%C3%B3n%20de%20las%20denominaciones%20sociales.pdf
Artículo 405. Prohibición de denominaciones oficiales.
Mercantil no podrán formar su denominación exclusivamente con el
nombre de España, sus Comunidades Autónomas, provincias o municipios.
Tampoco podrán utilizar el nombre de organismos, departamentos o
dependencias de las Administraciones Públicas, ni el de Estados
extranjeros u organizaciones internacionales.
-> se entiende que una denominación social puede ser "PLATANOS ANDALUCIA SL", pero no sólo "ANDALUCIA SL". no?
por sociedades en las que el Estado o sus organismos autónomos ostenten
directa o indirectamente la mayoría del capital social.
Los adjetivos “autonómico”, “provincial” o “municipal” sólo
podrán ser utilizados por sociedades en las que la correspondiente
administración ostente directa o indirectamente la mayoría del capital
social.
El adjetivo “oficial” y demás de análogo significado sólo
podrán ser utilizados por las sociedades en que la Administración Pública
ostente la mayoría del capital.
aplicación cuando el empleo en la denominación de las expresiones a que
se refieren se halle amparado por una disposición legal o haya sido
debidamente autorizado.
Artículo 408. Concepto de identidad.
coincidencia total y absoluta entre denominaciones, sino también cuando se
dé alguna de las siguientes circunstancias:
1ª La utilización de las mismas palabras en diferente orden, género o
número.
PLATANOS CAÑEROS
== PLATANO CAÑERO
== CAÑERO PLATANO
== CAÑEROS PLATANOS
== CAÑEROS PLATANOS PLATANOS CAÑEROS
== CAÑEROS PLATANO PLATANOS CAÑERO ???
-> para generar ID de empresa, normalizar las palabras al singular, ponerlas en orden alfabético, y quitar los duplicados. Sí?
2ª La utilización de las mismas palabras con la adición o supresión
de términos o expresiones genéricas o accesorias, o de artículos, adverbios,
preposiciones, conjunciones, acentos, guiones, signos de puntuación u otras
partículas similares, de escasa significación.
CAÑERO PLATANO
== CAÑERO-PLATANO
== ¡¿..CAÑERO-PLATANO..+!
== CAÑERÓ -- - -- PLATÄNO
== EL CAÑERO PLATANO
== POR EL CAÑERO PLATANO
== POR_EL_CAÑERO_PLATANO ???
== EL CAÑERO PLATANO DE ESPAÑA ???
== EL CANERO PLATANO ??? identificais la "ñ" en este punto 2ª. ?!
-> quitar los acentos de cualquier letra (y la ñ??)
-> para el ID, quitar conjunciones, preposiciones, adverbios, artículos y palabras de escasa significación (necesitamos un diccionario!!!!)
-> reemplazar lo que no es alphanumérico por un espacio, y reducir todo a espacios únicos.
3ª La utilización de palabras distintas que tengan la misma expresión
o notoria semejanza fonética.
PLATANO CAÑERO
== PLATANI CAÑERO
== PLATANHO CANIERO
== PLATANO CANERO ??? la "ñ" se identifica a la "n" ???
anterior no serán de aplicación cuando la solicitud de certificación se
realice a instancia o con autorización de la sociedad afectada por la nueva
denominación que pretende utilizarse.
-> a veces sí son varias empresas, si tienen la autorización de la primera empresa en tener la denominación social -> lo asimilamos siempre a un grupo de empresa entonces, no a la misma empresa...?
En la certificación expedida por el Registrador Mercantil Central se
consignará la oportuna referencia a la autorización. La autorización habrá
de testimoniarse en la escritura o acompañarse a la misma para su
inscripción en el Registro Mercantil.
denominaciones se prescindirá de las indicaciones relativas a la forma
social o de aquellas otras cuya utilización venga exigida por la Ley.-
CAÑERO PLATANO SL
== CAÑERO PLATANO SA
== CAÑERO PLATANO SLU
etc.. no?
Falta saber también si:
CAÑERO BARBACOA == CAÑERO BARBECUE ?? (identidad entre idiomas)
PLATANOS DE ESPAÑA SL == PLATANOS ESPAÑA SL == PLATANOS SL ???
Saludos
The text was updated successfully, but these errors were encountered: