Retrouvez-nous sur Twitter

Retrouvez-nous sur Facebook

:: Utilisateurs Réfugiés SpiceGuid ► Le projet ERic

Le projet ERic

Le fil des nouvelles sur l'avancement de mon projet ERic (Entity-Relationship interactive calculator).

La dernière version stable ERic 0.2g :

Ertaï, Aka Guymelef et TSG aiment cet article

Les derniers commentaires

SpiceGuid SpiceGuid il y a 1 mois , modifié il y a 1 mois

fam_new

ERic vient de passer en version 0.2g :

fam_add

Ajout de la relation d'inégalité a =/= b  entre deux entités, dans les requêtes (select).

fam_tick

Sur le dessin ci-dessous cela signifie que la boîte Difference-link est maintenant dans la boîte principale ERic 0.2g (tout en restant dans la boîte Operators).

fam_tick

Pas d'archive. J'ai uniquement mis à jour le dépôt SVN.

fam_bug

Comme je ne teste pas et que je n'ai aucun utilisateur il n'y a pas de bug connu.

Ertaï il y a 1 mois

SpiceGuid a écrit :

"
fam_bug

Comme je ne teste pas et que je n'ai aucun utilisateur il n'y a pas de bug connu.

"

Génie !

SpiceGuid il y a 1 mois

fam_bug

Tester c'est une perte de temps. Au lieu de pleurer qu'il y a un bogue, un utilisateur constructif devrait poster dans Certification d'un algorithme efficace de H-coloration.

icon_question

Pourquoi modifier un code boggué si je ne peux même pas prouver que le nouveau code est correct ? Ça ne sert à rien. C'est une perte de temps.

fam_coq

Il n'y a qu'une seule façon de prouver que le code (modifié ou pas) est correct c'est de contribuer à la Certification d'un algorithme efficace de H-coloration. Si vous connaissez une autre façon de procéder merci de me la communiquer.

fam_tick

Il existe des programmeurs qui préfèrent tester. Le résultat on le connaît : leurs programmes sont truffés de bogues.

SpiceGuid SpiceGuid il y a 3 mois

ERic-aspects
ERic 0.2f dans tous ses aspects et toutes ses extensions envisageables. (mise à jour)
fam_comment

La boîte [Not-this-relation] remplace la très mal nommée boîte [Negation] (car il n'y a pas et il n'y aura jamais de négation en ERic pour des raisons de logique fondamentale).

fam_new

Le nouvel opérateur [Différence-link] force deux boîtes-entités à représenter 2 entités distinctes (que le mécanisme de ne pourra de subsomption pas identifier l'une à l'autre). Cet opérateur pourrait éventuellement être ajouté à une éventuelle version ERic 0.2g

fam_comment

L'opérateur [Generalization] reste inchangé. Il est toujours possible de calculer un unique graphe-ER qui subsume 2 autres graphe-ER quelconques. C'est possible grâce à la [Taxonomy] qui a toujours une racine. Que ce soit un tree, un DAG ou un lattice il y a toujours une racine unique. Donc forcément quand on remonte dans la généralité on tombe tôt ou tard sur un point commun.

fam_new

Le nouvel opérateur [Specialization] est tout le contraire. Il doit calculer un unique graphe-ER qui est subsumé par 2 autres graphe-ER quelconques. Ça n'est possible que si les 2 taxonomies (celle des entités et celle des relations) possèdent une anti-racine. De toutes les taxonomies seules les lattice possèdent une anti-racine.

beverage
Le treilli (lattice) des boissons (beverage). En haut la boisson universelle. En bas l'anti-boisson.

SpiceGuid SpiceGuid il y a 3 mois , modifié il y a 3 mois

ERic-aspects
ERic 0.2f dans tous ses aspects et toutes ses extensions envisageables.
fam_accept

La boîte centrale cerne toutes les fonctionnalités d'ERic 0.2f, en résumé les relations sont binaires et non-typées, l'interface est textuelle et synchrone, les opérations disponibles sont la subsomption et la négation, les taxonomies sont de simples hiérarchies.

fam_accept

Tout ce qui est en dehors de la boîte centrale représente autant d'extensions envisageables.

fam_accept

Les boîtes carrées And et Xor sont reliées aux autres par la boîte ronde implicite (Relation).

fam_accept

Une boîte And signifie que l'utilisateur pourrait cumuler toutes les fonctionnalités.

fam_accept

Une boîte Xor signifie que les fonctionnalités seraient mutuellement exclusives.

fam_accept

La mise à jour de la base de données pourrait se faire à l'aide d'un système de réécriture [RewriteSystem] si ERic possédait les [Bigraphs] avec leurs [Interfaces] au lieu des simples graphes de boîtes (boxed graphs) comme c'est le cas actuellement.

fam_accept

Le déploiement de l'application sur plusieurs postes de travail suppose une architecture client-serveur [Asynchronous] qu'ERic ne possède pas actuellement.

fam_comment

D'après les experts du domaine, une interface 100% visuelle est incontournable.

fam_comment

Comme vous pouvez le remarquer, le fait de "zoomer" sur une boîte particulière vous place dans un contexte mais ne vous isole pas totalement de l'extérieur. À cause des liens entrants et sortants et du fait que les boîtes peuvent se recouvrir partiellement. 

Ertaï il y a 3 mois

Joli graphique, mais pourquoi l'interface graphique serait-elle mutuellement exclusive avec l'interface textuelle ? perplexe

SpiceGuid il y a 3 mois

Parce que je suis trop fainéant pour chercher une bijection entre les deux (à supposer qu'elle existe sweat2).

Ertaï il y a 3 mois

Les deux systèmes ne peuvent pas tout simplement cohabiter ?

SpiceGuid il y a 3 mois

Les deux notations ont leurs avantages :

  • avec le texte pas besoin de layout
  • avec le diagramme pas besoin de déclarer des variables et de décomposer le graphe en une liste de triplets départ-arête-arrivée

C'est donc tout bénéfice si les deux notations sont acceptés.

Même chose pour le layout, manuel ou assisté, on peut imaginer un 1ier jet manuel, puis une optimisation automatisée du positionnement des boîtes et du routage des arêtes (moins de coudes, moins de croisements), puis conclure avec une retouche manuelle pour des raisons esthétiques.

Ertaï a écrit :

"

Les deux systèmes ne peuvent pas tout simplement cohabiter ?

"

Si blaicon15 Apparemment j'avais le cerveau tellement obscurci que je t'ai pondu une réponse à la Nostradamus. Ça m'arrive d'être totalement dans la lune, tu as bien fait d'insister pouce

Ertaï il y a 3 mois

En tout cas j'aime bien ce graphique qui expose clairement les capacités actuelles et futures de ton logiciel. On reste loin de la complexité de langages de modélisation plus fournis et du coup moins utilisés.

SpiceGuid SpiceGuid il y a 4 mois

Base de connaissances et fichage

La subsomption est un très bon mécanisme de reconnaissance de motifs. Toute application consistera à développer une ontologie qui spécialise cet outil abstrait pour un usage concret. On passe ainsi d'une définition algébrique abstraite à des définitions et des genres concrets.

On veut un outil d'assistance au diagnostic médical ?

Il suffit de créer une ontologie des pathologies et des parcours de soin.

patient diagnostic
Historique médical, examen, et asistance au diagnostique.

En théorie on vient de créer une application pour mieux soigner le monde.

En pratique on vient de créer un formidable outil de fichage qui pourrait bien intéresser votre assurance maladie, votre assurance vieillesse, votre employeur, vos contacts sur Meetic et j'en passe.

On veut un outil d'assistance à la sécurité publique ?

Il suffit de créer une ontologie des crimes et délits et des parcours judiciaires.

Même causes, mêmes conséquences.

En théorie on vient de créer une application de lutte contre le crime et la récidive.

En pratique on vient de créer un formidable outil de flicage qui pourrait intéresser aussi bien les démocraties de plus en plus sensibles au sentiment d'insécurité que les dictatures de plus en plus sensibles à la contestation sur les réseaux sociaux.

Moralité

Avant de commencer à développer une ontologie, posez-vous d'abord cette question : l'information stockée est-elle potentiellement liberticide ? Si la réponse est affirmative alors abandonnez l'idée tout de suite. Oubliez les bénéfices sur les autres critères (santé,sécurité,...). Les bénéfices sur ces critères ne seront acceptés que s'ils ne se font pas au détriment des libertés individuelles.

SpiceGuid il y a 4 mois

À peine 1h après avoir écrit cet article je reçois une offre d'emploi dans ma boîte-à-lettres électronique, dont voici un extrait :

Citation :

"

The problem of classification is well understood and many classification
algorithms and tools exist...

This research will develop and implement these new techniques as part of a
major European Project, called ePOOLICE, where the application of them is
required for the detection and prediction of organised crime. This requires
the development of an environmental scanning system for analysing and
hypothesising scenarios of possible threats by monitoring the environment
and capturing, in real-time, relevant information present in heterogeneous
sources, including law enforcement analysis reports, governmental
information, web, social media, news, academia, non-governmental and
international organizations.
At Sheffield Hallam University your Director of Studies will be a co-author
of and Principal Investigator for the ePOOLICE project. You will be working
within the University's Centre of Excellence for Terrorism, Resilience,
Intelligence and Organised Crime research (CENTRIC). The aim of CENTRIC is
to facilitate the triangulation between the four key stakeholders in the
security domain: Citizens, Law Enforcement Agencies, Industry and Academia.

"

À croire que :

  • ou bien l'UE se contrefiche des libertés individuelles
  • ou bien l'UE a de l'argent à perdre dans des projets politiquement inapplicables, que le citoyen n'aurait même pas osé imaginer dans ses cauchemars les plus fous

Bref, croyez-le ou non : la demande existe icon_surprised

Ertaï il y a 4 mois

Et bien, qu'attends-tu, go go go ! Smile

SpiceGuid il y a 4 mois

Il faudrait d'abord que je m'entraîne à classifier les manquements à la charte du refuge :

• Prau deu l'ortografe

• freepost, lurking, stalking, bashing

• incitation à la pratique de jeux vidéos violents couto

• graine latente d'homophobie larvée icon_wink

• détournement de mineur et incitation à la pornographie icon_surprised

• techniques de drague éhontées (dont avatar et smileys personnalisés) Smile_lullab

• mode manuel pour les autres infractions non répertoriées perplexe

• bannissements automatisés icon_razz

Ertaï il y a 4 mois

Le Refuge d'Aerie's Guard est le repaire du crime organisé. Plus spécifiquement, le crime de création et d'originalité. icon_razz

Sbirematqui il y a 4 mois

Politiquement inapplicable, pour le moment, du moins je le crois. L'idée d'être fiché et étiqueté est de moins en moins politiquement incorrecte, par le biais des médias sociaux et notamment des réseaux sociaux type Facebook, cette idée de voir ses informations d'individu groupées dans un fichier informatique devient moins menaçante et plus usuelle.

Je le constate notamment dans la génération dans laquelle je suis plongée (je pense aux 10-20 ans), la sensibilisation aux dangers de l'information, de la collecte de données, du "fichage" est bien moindre en rapport à ce que j'observe chez les personnes plus âgées, moins imbibées d'Internet. Ce ne sont que mes propres observations et je ne suis pas sociologue, mais je pense que la collecte de donnée à propos des individus associée à l'utilisation de ces données à propos des individus tendra et tends déjà un peu vers la banalisation, à devenir quelque chose de "commun".

Pour m'être un peu plongé récemment dans le sujet, la cybercriminalité, l'utilisation commune de moyens de chiffrages forts par tout le monde (hashs, clés publiques/privées, des bidules 256-bits abominables...etc), rend la tâche de plus en plus difficile avec des moyens traditionnels. Actuellement, acheter en toute sécurité n'importe quelle drogue depuis chez soi et à des prix défiant toutes concurrences, c'est possible : On se télécharge un petit Routeur Onion, on se procure quelques Bitcoins, on fait ses transactions anonymes vers un vendeur anonyme sur un serveur anonyme avec une IP anonyme, en prenant soin d'avoir un petit SSL au coin, et pof, trois jours plus tard on reçoit dans sa boîte au lettre son petit colis. Même, si on se fait attraper, comme il n'y a eut aucune transaction, aucun achat, on peut nier l'existence même de l'intention de se droguer : Ce colis n'était qu'une erreur !

Il y a un besoin croissant de faire face à ces petits groupes d'individus qui avec des moyens simples permettent de grandes choses, comme les terroristes qui ont eut l'idée de détourner des avions, des internautes ont l'idée de monter leur petite affaire d’assassinats, de ventes libres de stupéfiants, d'armes à feu, de divers produits chimiques dangereux... tout ce qui rapporte de l'argent et qui n'est pas très légal. Je suis d'avis que le passage de notre société à la sphère mondialisée, à la sphère sociale, conduit et a déjà conduit à de nouvelles formes de criminalités, utilisant les nouveaux outils.

Or, comment luter contre la criminalité ? Collecter des informations, les recouper, intervenir, compléter les informations, avancer...etc Les méthodes de base ne changeront pas, c'est surtout l'échelle qui changera. Pour réussir à trouver une aiguille dans une botte de foin mille fois plus grosse, on regarde mille fois plus longtemps, ou on regarde avec mille cerveaux. Réussir à avancer sur la mise au point d'un système automatisé de collecte de données, de fichage, de recoupement (de reconnaissance de motif), ce sont devenu des choses d'avenir pour ce qui est de la criminalité, car le temps où on cassait les codes, où on déchiffrait les disques durs, où on écoutait les lignes téléphoniques... c'est finit. Demain, on aura besoin de "gros engins".

C'est liberticide, oui, mais je crois que la société va l'oublier petit à petit, et que le jour où il y aura une action criminelle d'envergure qui marquera l'opinion, avec un jeu politique, la mise en place d'une telle base de donnée sera du domaine du possible, politiquement acceptable. Or, il faut pouvoir l'implémenter au bon moment et avoir des résultats rapides pour calmer le public sur ses angoisses de liberté et d'intimité, et donc avoir déjà mené de longues recherches à ce propos pour pouvoir catapulter le projet sous les projecteurs au bon moment.

Enfin, tout cela est ma vision de la chose, je trouve que l'Union Européenne fait bien son travail en travaillant sur ce genre de projets, même si ce n'est pas très moral.

SpiceGuid il y a 4 mois

L'argument selon lequel nous vivons dans un monde fait de menaces qu'Iron-Man ne pourra pas toujours anticiper et c'est pourquoi il doit fournir son armure au gouvernement ne me convainc pas que je doive par avance renoncer à mes libertés.

Alors en effet je suis de la génération où l'on se "cache derrière un pseudo" pour commettre ses cyber-délits en toute impunité icon_wink

Plutôt que de continuer à disserter ici sur les (dé-)mérites de ce projet européen qui ne concerne pas ERic, j'ai préféré faire directement un signalement à un lobby des libertés informatiques.

SpiceGuid SpiceGuid il y a 4 mois , modifié il y a 4 mois

Le modèle de graphe d'ERic 0.3

Par un heureux miracle il est en fait déjà implémenté biggrinking

Sans même que j'en sois conscient. En fait ERic 0.2 est une sorte d'assembleur pour les modèles de graphe.

L'exemple de la création du spectacle de clown :

[Dream*d] Experiencer [Person Eva*v]
[ProspectFor*p] Agent v
d Theme [Event*e]
        [Show*s] Performer [Clown*w]
        s In e
        w In e
p Theme [Asset*a]
        [Capital*c] Financing s 
        [Man*m] Acting w
        c In a
        m In a.

Remarquez la relation a In b qui indique qu'une boîte a est contenue dans une autre boîte b.

J'espère bien faire d'autres découvertes du même acabit qui démultiplient autant l'expressivité d'ERic Smile

Les perspectives commerciales

Comme je l'ai déjà dit c'est à moi de les créer. Pour ce faire il faut que je réécrive toute la documentation du point de vue du client. Quels problèmes ERic est-il capable de résoudre ? Quelles solutions est-il capable d'apporter ? Il faut que j'arrête de modéliser du langage naturel et que je montre comment ERic peut modéliser du business model, de l'analyse SWOT ou de l'organisationnel. En un mot transformer mon gadget algorithmique en un produit consommable par les entreprises / administrations.

Ma nouvelle documentation devra introduire petit à petit toutes les subtilités de la modélisation Entités/Relations sans jamais s'éloigner des préoccupations du client. Tout ceci afin de convaincre le client qu'ERic est bien une technologie de rupture.

SpiceGuid il y a 4 mois

Je viens de refabriquer une nouvelle ontologie à partir de zéro.

Avec plus d'expérience, peu de vocabulaire et la nouvelle relation In je m'amuse à créer des graphes délirants Smile

Ertaï il y a 4 mois

Tant que tu t'amuses, je crois que c'est l'essentiel DoubleAccentCirconflexe

SpiceGuid il y a 4 mois

Ce n'est même pas moi qui ai inventé cette relation In.

Je l'ai découverte dans une thèse datant de 2001 mais qui n'a été mise en ligne qu'en octobre 2009.

fam_comment

Cette relation In est encore plus puissante que le modèle que j'avais initialement proposé. Par exemple rien n'empêche qu'une boîte appartienne à deux boîtes différentes ou plus. Ça permet de modéliser le recouvrement partiel de plusieurs contextes.

Et pourtant dieu sait combien de fois on m'a affirmé que "personne ne lit les thèses universitaires" icon_razz

SpiceGuid il y a 4 mois

Si j'en crois le tableau de cet article ERic pourrait être adapté à la Business Intelligence décisionnelle. Un débouché de plus à creuser DoubleAccentCirconflexe

SpiceGuid il y a 4 mois

On pourrait croire que je passe mes journées à me branler. Mais pas uniquement.

Là j'ai du faire des efforts pour trouver des diagrammes réalistes "vendable" comme du Business Modelling.

À priori le modèle standardisé le plus connu qui ressemble le plus à mes boîtes de graphes c'est le Statechart de David Harel. Cette notation fait depuis toujours partie du standard UML (c'est pas parce que je n'utilise pas la POO que je ne connais pas vos petits fétiches icon_wink ). Bon, en pratique il semble que personne n'utilise vraiment ces modèles d'états hiérarchisés. Du coup on ne trouve que des exemples scolaires, surtout des modèles d'états de montres, de calculatrices, de lecteurs MP3. À croire que les programmeurs POO sont tellement désabusés qu'ils n'adhèrent même pas à leur principes icon_razz

Three modes of a digital watch
Vous seriez PDG, ça vous intéresserait le cycle des états d'une montre/alarme digitale ?

Le problème si l'on ne s'adresse pas à des programmeurs c'est qu'on s'adresse à des personnes habituées à des schémas entités/relations beaucoup plus basiques, donc sans imbrication. Ces personnes font du Business Modelling.

Carrefour's custom greating card
Exemple classique de Business Modelling à l'aide d'entités/relations : comment Carrefour vous vend des cartes de vœux personnalisées. Cliquez pour agrandir.

Ça ne fait toujours pas mon affaire. Ce qu'il me faudrait c'est un exemple similaire à la souris verte qui courrait dans l'herbe, mais avec des graphes imbriqués. Et surtout qui me fasse passer du niveau école maternelle au niveau école de commerce. Et j'ai trouvé quelque chose qui y ressemble beaucoup : BPMN Business Process Model Notation, un standard de l'OMG.

NPDI Process
Cliquez pour agrandir. C'est plus sérieux non ?

Alors du coup on est en droit de se poser la question : finalement, il existe déjà des notations standard (certes plus spécifiques) pour modéliser la même chose qu'ERic. Est-ce que je ne suis pas en train de réinventer la roue ? Hé bien je pense que non. Car ces standards ne servent qu'à la documentation/communication.

Aucun de ces standards n'est équipé d'un mécanisme de subsomption comme l'est ERic.

Grâce à la subsomption ERic est capable :

  • d'interroger le modèle comme une base de données
  • d'identifier la présence ou l'absence de n'importe quel business-pattern, ceci afin d'encourager le business-reengineering par l'adoption de "bonnes pratiques"

EDIT: bien que pas mauvais, l'exemple ci-dessus n'illustre pas encore parfaitement toutes les capacités d'ERic. ERic accepte que les flèches traversent les boîtes, qu'elles y entrent ou qu'elles en sortent. Ce qui n'est pas le cas dans le schéma ci-dessus.

Sbirematqui il y a 4 mois

Au risque de me faire taper (encore) avec des idées déplacés, mais il me semble que Eric apporte quelque chose aux notations, quelque chose de plus concret pour un businessman...

Je m'explique, ce genre de schémas, pourquoi ils existent ? Pour permettre de structurer, structurer les idées, les mettre à plat, et surtout : Mettre en évidence les relations entre ces idées.

Pour moi, l'utilité qu'on en a dans l'entreprise est celle de la performance, de l'efficacité, lorsqu'il s'agit de faire fonctionner beaucoup de choses en même temps, ce genre de schémas est un gain de temps précieux, et surtout un miracle quand il s'agit de garder les idées claires.

La limite de ces modèles est leur taille, leur complexité, plus ils deviennent gros, plus ils perdent leur utilité. Pour moi, Eric pourrait surmonter ce problème, en amenant une dimension dynamique, la possibilité d'interagir avec des modèles de grande à très grande taille, la possibilité d'imbriquer facilement des gros modèles dans de plus grands modèles, de zoomer, d"zoomer, de faire obstruction de certaines parties du schéma, de le triturer dans tous les sens, le formalisme apporté par Eric pourrait être le noyau d'un outil puissant.

Mais dans cette voie, c'est bien la forme que prendrait l'outil qui sera déterminante, car c'est avec cette forme qu'interagira l'utilisateur final.

J'ai dit le mot qui tue : utilisateur. icon_razz

SpiceGuid il y a 4 mois

Tu m'enlèves les mots de la bouche Smile

J'ai bien conscience que la notation texte est indéchiffrable pour un manageur, si elle ne l'est pas déjà pour un programmeur. Donc tout devrait reposer sur l'ergonomie graphique, la facilité à digérer et à interagir avec des schémas imbriqués à grande échelle. Par exemple à l'échelle d'une multinationale ou d'une administration comme la commission européenne. J'ai lu des papiers de recherche sur la modélisation à grande échelle (par exemple sur le projet Ariane V). À cette échelle la notion de point de vue est primordiale. Le modèle doit être global, il doit tout contenir. Paradoxalement il doit aussi savoir rester local, adopter le cœur de métier de l'utilisateur et retirer toute l'information qui n'a aucun impact sur son travail.

Bon, ceci dit, j'ai déjà un train de retard, les caricaturistes m'ont devancé, les salauds sourire3

business model caricature
Le business modeleur, l'idiot du village global ?

SpiceGuid SpiceGuid il y a 4 mois , modifié il y a 4 mois

Mes acquis

  • J'ai une confirmation que le modèle de graphe d'ERic 0.3 est viable et tout aussi utilisable que celui d'ERic 0.2, tout en étant beaucoup plus expressif.
  • J'ai une syntaxe concrète pour exprimer le modèle de graphe d'ERic 0.3

Par contre au niveau algorithmique tout reste à inventer, à ma connaissance ça n'a jamais été fait auparavant.

Exemples de syntaxe concrète

L'exemple de la création du spectacle de clown :

[Dream*d] Experiencer [Person Eva*e]
[ProspectFor*p] Agent e
d Theme [Event
        [Show*s] Performer [Clown*c]]
p Theme [Asset
        [Capital] Financing s 
        [Man] Acting c].

Les 3 variantes de Tom croyant qu'Éva veut épouser un marin :

[Believe*b] Experiencer [Person Tom]
b Theme [Proposition 
        [Want*w] Theme
        [Situation [Marry*m] Agent ?e]]
w Experiencer [Person Eva*e]
m Theme [Sailor].


[Believe*b] Experiencer [Person Tom]
b Theme [Proposition 
        [Want*w] Theme
        [Situation [Marry*m] Agent ?e m Theme [Sailor]]]
w Experiencer [Person Eva*e].


[Believe*b] Experiencer [Person Tom]
b Theme [Proposition 
        [Want*w] Theme
        [Situation [Marry*m] Agent ?e]
        m Theme [Sailor]]
w Experiencer [Person Eva*e].

Cependant la plupart des spécialistes du domaine s'accordent à dire que l'utilisateur final préfère une représentation graphique plutôt qu'une représentation textuelle.

 
Or cela fait une différence énorme pour le programmeur :

  • Avec une représentation textuelle il suffit d'afficher le résultat-texte dans un GtkSourceView2, c'est presque aussi facile que dans une console.
  • Avec une représentation graphique il faut convertir le résultat-graphe en un diagramme affichable à l'écran. À ma connaissance ce graph-drawing n'a jamais été réalisé pour le modèle de graphe d'ERic 0.3

Les perspectives commerciales

Elles sont minces. De l'avis général le marché n'existe pas, il faut le créer à force de techno-évangélisme. De plus les entreprises ont une fâcheuse tendance à privilégier les standards industriels, même nouveaux, comme OWL-RDF ou BPEL. Elles restent réticentes à la recherche universitaire et encore plus à la recherche privée.

Pour résumer

Je rentrerais dans une phase de développement où je sortirais du fun tout en restant très éloigné de la viabilité commerciale. Ça ne m'enchante pas. Ça serait davantage soutenable si j'avais une subvention ou du sponsor. J'aimerais minimiser le temps de développement contraint sans perspectives de rémunération. Le chemin le plus court c'est peut être un IDE simpliste pour ERic 0.2, ça resterait assez sympathique tout en me procurant un minimum de matériel de démonstration.

Sbirematqui il y a 4 mois

Tu parles de perspectives commerciales, de graphes, de relations, est-ce que Eric peut aider à la gestion de problèmes proches de ceux dans lesquels les réseaux bayesiens sont impliqués ? Est-ce qu'un possible rapprochement d'Éric vers les réseaux bayesiens serait intéressant ?

Parce que pour ceux-ci que je nomme, les perspectives scientifiques et commerciales vont en élargissant, et je trouve que la représentation apportée par Eric y serait peut-être pertinente.

SpiceGuid il y a 4 mois

Pour ce qui est des perspectives scientifiques et commerciales qui vont en élargissant je dirais qu'on nous a déjà fait le coup avec les fractales, les supra-conducteurs et les réseaux de neurones.

Comme je suis un psychorigide qui déteste n'aime pas les statistiques, je ne m'investirai pas une seule seconde dans les réseaux bayesiens. Disons que c'est une idée que je vais considérer avec un dédain mêlé d'un silence plein de bienveillance.

SpiceGuid SpiceGuid il y a 5 mois , modifié il y a 5 mois

Raisonnement en langage naturel

On m'a fait plusieurs fois la remarque : pourquoi ne pas modifier ERic pour lui permettre de raisonner en langage naturel ? À chaque fois j'ai répondu que c'était hors de question, mais un comme un autocrate, sans argumenter davantage ma décision. Cette fois je suis décidé à vous convaincre de la vanité de ce genre de requête. Par l'exemple. Plutôt que par le mépris.

Langage naturel et raisonnement

D'où viendrait cette fascination pour le mariage du langage naturel et du raisonnement ?

D'après moi elle prendrait racine dans le fameux test de Turing.

Ce fameux test de Turing qui a été démythifié lors du Turing 1990 Colloquium

L'exemple

Tout ce qui est rare est cher.
Un Rubik's cube bon marché est rare.
Donc un Rubik's cube bon marché est cher.

Pour les détails techniques je vous renvoie vers ma contribution sur DVP.com

On pourrait m'objecter plein de choses.

Par exemple que l'outil en démonstration a été choisi à dessein afin de discréditer la technique utilisée.

À cette objection je réponds :

  • Le but n'est pas de discréditer tel ou tel outil ou institution. Le but est de vous montrer ce qui se fait de mieux et pourquoi je ne vais pas le copier.
  • L'outil en démonstration a été élaboré dans une très grande école à la renommée mondiale. Y ont enseigné notamment Albert Einstein et Niklaus Wirth. Et si je n'en cite que deux c'est parce que citer les autres serait tout simplement trop long.

On pourrait aussi m'objecter que, bon marché ou pas, les Rubik's cubes sont toujours trop chers. C'est une opinion que je respecte et à laquelle j'adhère totalement. Cependant je pense qu'un outil doit obéir à la loi du moindre étonnement, ce qui n'est clairement pas le cas ici.

On pourrait encore m'objecter qu'ERic n'est nullement à l'abri d'une quelconque incohérence / absurdité / stupidité. Certes. À cela je réponds qu'un langage artificiel est un avertisseur efficace : vous posez une question artificielle à laquelle vous obtenez une réponse toute aussi artificielle. En cela il n'y a pas de mauvaise surprise.

SpiceGuid SpiceGuid il y a 5 mois , modifié il y a 5 mois

Moi, une relation avec toi, dans tes rêves !

Dans la documentation d'ERic 0.2 j'ai commis 2 erreurs, à savoir dire :

  • qu'un graphe entités/relations est proche du langage naturel
  • qu'un graphe entités/relations permet certains raisonnements sommaires

Deux affirmations à cause desquelles j'ai dû rembarrer un utilisateur potentiel qui commençait à s'enthousiasmer pour mon projet. Il s'en est allé poursuivre ailleurs sa quête chimérique d'une Imbécillité Artificielle.

Avec ERic 0.3 je vais rectifier le tir :

  • un diagramme entités/relations est une machine autopoïétique à interprétation endoporeutique
  • un diagramme entités/relations permet de raisonner gravement pour la santé

Selon mes estimations cet étalage de volapük épistémologique devrait suffire à éloigner la plupart des importuns.

Alors je devine votre objection : dans entités/relations il y a relations.

Point d'entité sans une relation.

Que nenni dis-je.

Preuve à l'appui. Grâce aux hyper-nœuds Smile

evening-spider-hope
Araignée du soir, espoir

 

La nuit tous les chats sont gris

Le paragraphe précédent était initialement destiné à introduire, avec un certain humour, la problématique de la quantification universelle. Malheureusement des incertitudes pèsent encore qui retardent ma rédaction sur ce sujet. D'autant plus que depuis ma désillusion sur les Rubik's cubes j'ai tendance à devenir plus précautionneux.

Il fait nuit. Félix est un chat. Quelle est la couleur de Félix ?

Griiiiiiiis.

non c'est un raisonnement trop subtil pour ERic 0.3, il ne sera pas capable de répondre.

En fait il ne sera même pas possible d'affirmer que la nuit tous les chats sont gris.

Les détails gores de mon investigation

Par contre il est bien heureusement possible d'affirmer que tous les chats sont des félins.

Et d'obtenir des conclusions en conséquence.

Dans ce cas on peut parce que c'est inconditionnel (toujours vrai).

SpiceGuid SpiceGuid il y a 6 mois

Les premières lignes de code

Pas fâché d'abandonner Microsoft-Paint sweat2

module type Diagram
=
sig
   type diagram
   type concept
   type relation
   type entity =
      | EntityC of concept
      | EntityI of concept * int
      | EntityS of concept * string
      | EntityF of concept * float
      | EntityD of concept * diagram
   val empty : diagram
   val extend : diagram -> entity -> diagram
   val connect : diagram -> relation -> diagram
   type pattern = diagram 
   val select : diagram -> pattern -> diagram list 
end

Alors tout est là, on a les diagrammes, on construit un diagramme à partir du diagramme vide (empty), en ajoutant un par un les entités (avec extend) et les relations (avec connect). On peut envelopper un diagramme dans une hyper-entité (grâce à EntityD).

On peut interroger un diagramme (avec select).

Ça compile bien.

fam_page_white_ocaml

Encore une victoire éclair du langage chameau Smile

Spoiler (Sélectionnez le texte dans le cadre pointillé pour le faire apparaître)

Après on peut aussi faire de vrais programmes qui font vraiment quelque chose icon_razz

Mais c'est plus difficile blaicon15

SpiceGuid il y a 6 mois

Il faut affronter la réalité en face.

Cela fait 1 semaine que je tente vainement d'entrer dans une dynamique de productivité. Entre fatigue psychologique / épisode(s) dépressif / problème difficile, si je laisse filer je risque de perdre des mois à rêvasser que je "conçois" tout en ne produisant rien du tout.

Dans l'immédiat je vais jouer mes atouts :

fam_accept

j'ai une licence compatible OSI

fam_accept

j'ai une base de code, petite et de grande qualité

fam_accept

j'ai une assez bonne documentation (en français)

Par conséquent ERic 0.3 ferait un excellent projet de fin d'année pour un étudiant motivé.

Évidemment je vais encore faire choux-blanc mais qui ne tente rien n'a rien icon_wink

Le texte de mon appel à contribution.

Ertaï il y a 6 mois

Je te souhaite de trouver un sympathique collaborateur, et vu le niveau d'abstraction, l'université est sans doute le seul endroit où tu pourras trouver un tel collaborateur Smile

SpiceGuid SpiceGuid il y a 7 mois , modifié il y a 7 mois

La méthode de développement zéro défaut

ERic a été conçu selon une méthode de développement qui garanti le zéro défaut.
Cet article a pour but de vulgariser les cinq points clés de cette méthode.
Afin qu'elle se démocratise et que vous puissiez en bénéficier pour vos propres développements.

Je ne comprends rien à la source.

C'est normal. La source d'ERic est en OCaml. Seuls des chameaux expérimentés élevés dans un profond désert sentimental peuvent interpréter l'odeur de la pisse de chameau. Les autres seront victimes de mirages et autres hallucinations. Ils finiront par se perdre dans une étendue sableuse interminable. Ils agoniseront dans d'atroces souffrances, sucés par d'ignobles insectes, traqués par les serpents et les scorpions.

Où est le Bug-Tracker ?

La mauvaise nouvelle c'est qu'il n'y a pas de Bug-Tracker.
La bonne nouvelle c'est que, comme il y a zéro défaut, il n'y a pas besoin de Bug-Tracker.

J'ai trouvé un bug, que dois-je faire ?

Votre cerveau de primate a cru déceler un bug dans la dernière version d'ERic. Ou même dans une ancienne version. Peu importe. Ce qui importe c'est de vous rappeler que vous n'êtes qu'un primate. La réponse d'ERic est difficilement interprétable par votre cerveau de primate. Ou bien ERic n'a pas donné de réponse. Parce que vous lui avez posé une question de primate. ERic est un peu hautain, il n'aime pas trop dialoguer avec de simples primates. Les deux paragraphes suivants traitent ces deux cas séparément.

Je ne comprends pas la réponse d'ERic.

Soumettez vos données, votre question, et la réponse qui vous a été faite. Un chamelier se chargera de tenter d'éclairer votre cerveau primitif.

ERic ne me répond pas.

Soumettez vos données et votre question. Un chamelier se chargera de les reformuler dans un langage plus évolué.

SpiceGuid il y a 7 mois

Je devrais sans doute mettre les choses au clair icon_wink

Avant que Cathaseris ne me tombe dessus à bras raccourcis, à juste titre tomate

non je n'habite pas la planète des singes 

• Le seul secret du zéro défaut c'est le zéro utilisateur

• Une seule personne qualifiée (DEA informatique) a un peu testé ERic. Son verdict :

nlegriel a écrit :

"

Je n'aime pas ta notation.

"

Alors pourquoi ce billet provocateur ?

fam_accept

Les plus avertis d'entre-vous l'auront compris : c'est une parodie de discours méthodologiste.

fam_accept

Il y a plein de gens qui veulent vous vendre des recettes miracles pour éradiquer les bugs.

fam_accept

Ils n'ont qu'un seul but : détourner votre attention pour vous faire renier votre expérience.

Ne reniez jamais votre expérience, c'est votre bien le plus précieux, c'est votre valeur-ajoutée sur le marché du travail. Sans votre expérience vous ne seriez rien. Rien d'autre qu'un pantin dans les mains d'un gourou méthodologiste.

Sbirematqui il y a 7 mois

Amen. Smile

Merci pour le billet, garde couraj pour la suite ! On est derrière toi ! Smile

SpiceGuid SpiceGuid il y a 7 mois

ERic 0⁴ hyper-symétrique

Des fois je m'ennuie dans l'après midi. Normalement sur France 5 il y a deux documentaires scientifiques dans l'après midi. Un avec des dinosaures en images de synthèse qui chassent d'autres dinosaures en images de synthèse. Celui-là je ne le regarde pas. Le second est un documentaire sur le cosmos. J'en regarde un de temps en temps. On y apprend que chaque particule possède son antiparticule symétrique. Et pour aller plus loin dans la cosmologie on nous parle même de super-symétrie. C'est fascinant d'élégance quand on sait que tout ça est complétement abstrait et entièrement basé sur la théorie des catégories (voir par exemple Introducing categories to the practicing physicist).

À mon tour maintenant, car après tout ERic est lui-aussi basé sur la théorie des catégories.
J'ai déjà les boîtes carrées et les hyper-boîtes carrées. J'ai aussi les boîtes rondes.
Attendez une minute ! Tout cela manque de symétrie !
On va ajouter les hyper-boîtes rondes ! Et voilà, on a une structure hyper-symétrique DoubleAccentCirconflexe  

Qu'est-ce qu'une hyper-boîte ronde ?

C'est une boîte ronde qui contient un graphe Entité/Relation.
Et à quoi ça sert ? À construire des relations plus sophistiquées. Que l'on ne pourrait pas exprimer rien qu'à l'aide du vocabulaire des relations de base. Bien entendu on aurait des hyper-liens qui pourraient entrer et sortir des hyper-boîtes rondes et des hyper-boîtes carrées à des niveaux d'imbrication hyper-arbitraires.
Et quel serait l'homomorphisme induit ? Le même que celui d'ERic 0.3, il suffirait, dans la définition, de remplacer carré par rond, et rond par carré. On resterait en terrain connu DoubleAccentCirconflexe

C'est pas un peu abstrait ?

fam_page_white_php

Il n'y a pas si longtemps un Programmeur Hautement Performant m'a soufflé une Phrase Hyper Pénétrante. Et d'un coup d'un seul, ce qui n'était qu'un gadget largement hypothétique est devenu une nécessité absolue. Alors donnez moi une raison, une seule, un exemple, un seul, et je passe dès aujourd'hui au modèle hyper-symétrique. Au boulot les Ertaï, les Luminox et les Sbirematqui, je compte sur vous !

SpiceGuid il y a 7 mois

The-judge-grants
Le juge a prononcé la dissolution du mariage d'Alice et Bob par consentement mutuel.
fam_bug

Désolé pour la faute, en anglais on écrit Attribute au lieu de Attribut.

fam_comment

Dans cet exemple il y a un lien entrant dans une hyper-boîte ronde mais pas de lien sortant. Cependant à quoi bon chercher un exemple ? Du moment qu'on peut sortir d'une hyper-boîte carrée pourquoi pas d'une hyper-boîte ronde ? L'interdire serait d'ailleurs plus compliqué que de l'autoriser.

fam_page_white_ocaml

Je saute la version 0.3, je vais passer directement à l'implémentation de ERic 0⁴, la version hyper-symétrique DoubleAccentCirconflexe

Sbirematqui il y a 7 mois

Bon, si il faut chercher...

Le juge a prononcé la dissolution du mariage d'Alice et Bob par consentement mutuel, ce qui cause qu'il y a eu partage des biens, ce qui fait qu'Alice ne peut plus dépenser aux frais de Bob.

Bref, je n'ai pas trouvé mieux dès potron-minet. sweat2

SpiceGuid il y a 7 mois

Pauvre Alice, espérons qu'elle a un amant fortuné sourire3

Il y a plus simple pour créer des liens sortants : au lieu d'un "consentement mutuel" je mettrais 2 consentements, le consentement d'Alice et le consentement de Bob. Ça ferait un lien sortant vers Alice et un lien sortant vers Bob.

Mon problème n'est pas là. Mon problème du moment c'est qu'en fait je pourrais exprimer la même chose avec une boîte carrée "Mariage" au lieu d'une boîte ronde "SpouseOf". Et dans ce cas il n'y aurait même plus besoin d'hyper-boîte ronde, une hyper-boîte carrée ferait l'affaire blaicon15

Je ne peux pas le prouver mais j'ai l'intuition que l'hyper-symétrie est redondante. Cependant :

  • je me méfie de mes intuitions
  • parfois la redondance est un défaut, parfois la redondance est une qualité, je deviens indécis sur l'apport de hyper-symétrie
Marriage
Le mariage d'Alice et Bob, à l'aide d'une boîte carrée.

Pour l'anecdote, d'après ce que j'ai entendu dire, avec le mariage homosexuel les mariés s'appelleront marié(e) n°1 et marié(e) n°2.

SpiceGuid il y a 7 mois

Je le dit ouvertement, si ça n'était pas assez explicite, ERic n'a qu'un lointain rapport avec un langage naturel. Le but est davantage le développement d'un modèle pour le monde et la conscience. Un langage naturel au contraire n'est pas un modèle mais un moyen de communication, pas du tout universel, développé empiriquement et en évolution constante. 

En y réfléchissant bien (la nuit) l'hyper-symétrie n'est envisageable qu'avec un modèle de graphe biparti (anglais).

Par conséquent, et contrairement aux apparences, l'hyper-symétrie n'est pas du tout dans la lignée d'ERic 0.2 et 0.3, ça n'a plus rien à voir autant en terme de structure qu'en terme d'homomorphisme.

Du coup j'abandonne cette piste qui aurait pu être enrichissante si au départ j'avais fait le choix des graphes bipartis.

Citation :

"

ERic 0⁴ hyper-symmetry is a dead end

"

Il n'empêche que ça valait le coup de consacrer 2-3 jours à étudier cette option. Histoire de ne pas avoir à le regretter plus tard.

TSG TSG il y a 7 mois

Et sinon, qui veut se coller sur le développement du Projet RAMzy?

Ertaï il y a 7 mois

Je me disais aussi "Tiens, TSG qui poste sur un sujet hautement théorique ?" icon_rolleyes

SpiceGuid il y a 7 mois

icon_lol Bien dit Très Savant Gobelin

SpiceGuid SpiceGuid il y a 7 mois , modifié il y a 7 mois

À la recherche de l'homomorphisme induit

Maintenant que je tiens une structure suffisamment expressive il me suffit de construire l' homomorphisme induit pour finaliser la construction de ma catégorie

C'est exactement la même démarche que pour ERic 0.2 où :

fam_accept

ma structure était le digraphe étiqueté

fam_accept

mon homomorphisme était l'homomorphisme de graphes

fam_accept

ma catégorie était la catégorie où les objets étaient des graphes et où les flèches étaient des homomorphismes de graphes

C'est encore tout pareil cette fois-ci. En plus compliqué.

Spoiler (Sélectionnez le texte dans le cadre pointillé pour le faire apparaître)

Je me doute bien que certains membres d'AG doivent se questionner sur l'opportunité de poster ici ce genre de considérations limite ésotériques.

La réponse est simple :

• normalement je devrais le faire sur DVP.com où je suis rédacteur

• sur DVP.com, éditer un message est un calvaire, publier un article est un enfer, et quand bien même je n'ai pas d'avantage de lecteurs attentifs que j'en ai ici

j'ai un blog sur DVP.com, on me l'a pourri en le passant sous wordpress (disparition de l'en-tête, des paragraphes, des images, des liens, des styles)

• Ertaï, au contraire, a mis en place un système de blog, simple, rapide, efficace, pérenne. Je l'en remercie. Et j'en profite.

Ertaï il y a 7 mois

Et bien pour une fois que quelqu'un dit du bien d'eZ Publish qui fournit la structure des blogs et l'éditeur de texte riche qui fournit le style, j'apprécie grandement Smile

SpiceGuid il y a 7 mois

eZ Publish c'est le bien DoubleAccentCirconflexe

Sinon les définitions de Wikipedia.org sont systématiquement écrites comme s'il n'y avait absolument aucune application informatique. Il faut lire entre les lignes. À force d'être généraliste ça en devient pathologiquement abstrait. Des fois c'est à peine si je comprends de quoi ça parle blaicon15

SpiceGuid il y a 7 mois

L'homomorphisme induit on le construit à la main, en imposant les cas de base (image d'une entité, image d'une relation, image d'une hyper-entité,...).

Du coup il y a une certaine liberté dans le choix de l'homomorphisme.

  • Certains ont une tendance au mutisme. Inconvénient : on risque de passer à côté d'une piste de recherche ou d'une information de contexte potentiellement intéressante.
  • Certains ont une tendance au bavardage. Inconvénient : s'il y a trop de bavardage alors l'information utile risque d'être noyée dans le bruit de fond.

ERic 0.2 utilise un homomorphisme particulièrement "autiste" :

  • N'étaient données que les informations strictement demandées.
  • N'était donnée aucune information contextuelle. Toute information était considérée comme vraie quelque soit son environnement. L'environnement était considéré comme une extension (superflue) de l'information, pas comme une modalité (nécessaire).

Sbirematqui il y a 7 mois

On l'aime EzPublishhh. : D

Pour ma part, je sors d'un module sur l'algèbre générale, et je comprends (enfin) le sens de tous les termes marrants que tu utilise depuis le début du fil... sweat2
Je suis bien avancé, n'ayant vu que le côté abstrait et théorique, j'arrive à peine à me faire une idée de ce que ces termes foutent là. Mais bon, je ne soigne. DoubleAccentCirconflexe

En tous cas, je commence à saisir un peu mieux le point d'ÉRic, je me rends mieux compte de ce qui a dû être fournit, et même si je reste encore un peu dubitatif vis-à-vis de beaucoup de choses, je ne peux que te dire : Bravo ! clap

Je renouvelle mes encouragements pour ERic !

SpiceGuid il y a 7 mois

Moi aussi je suis dubitatif.

J'y crois à peine qu'au bout du compte toute cette cogitation pseudo-savante va déboucher sur un programme exécutable. D'ailleurs j'angoisse à mesure qu'approche le moment de commencer à coder. C'est loin d'être gagné d'avance.

  • je remercies Ertaï pour la lecture attentive de tout mon charabia ainsi que pour l'exemple qui m'a fait gagner un temps inestimable
  • je te remercies pour tes encouragements ainsi que pour les efforts qui t'avancent si peu
  • je remercies Aka qui a suivi un moment avant de crouler sous ses obligations de chroniqueur manga du refuge

SpiceGuid il y a 7 mois

Si l'on comptait en minutes alors cela ferait déjà une éternité que j'ai pseudo-formalisé un homomorphisme induit pour ERic 0.3

Quand j'essaye de progresser plus loin dans la formalisation j'arrive presque au détail d'implémentation, et là je préfère faire confiance à OCaml plutôt qu'à mon intuition. Du coup il n'y a plus qu'à implémenter ERic 0.3 avant de passer à ERic 0.4 qui ajoutera la multiple hyperonymie ( plusieurs super-concepts et plusieurs super-relations au lieu d'un(e) seul(e) ).

SpiceGuid SpiceGuid il y a 8 mois , modifié il y a 8 mois

Liens trans-hyper-nœuds

Cela fait 3 jours que, à part jouer à l'excellent Scrambled Nations je me pose la question suivante :

fam_accept

Dans mes 3 schémas d'exemple les liens qui traversent le cadre d'un hyper-nœud le font tous dans le sens du nœud courant vers le nœud parent.

fam_accept

Je me creuse la tête pour trouver un contre-exemple. Un graphe qui nécessiterait un lien qui traverse le cadre d'un hyper-nœud dans le sens du nœud courant vers un nœud fils.

fam_help

Comme je ne trouve pas ce contre-exemple je ne sais pas si mon modèle est complet (tous les liens utiles qui traversent le font toujours dans le même sens) ou extensible (des liens qui traverseraient  dans le même sens contraire seraient également utiles).

D'où blocage. Un linguiste (avec une spécialisation en graphes conceptuels) pourrait me débloquer mais je n'en connais pas.

En l'absence de réponse définitive je vais devoir prendre un risque :

fam_accept

Parier que les liens sont uni-sens (quitte à me tromper).

fam_accept

Autoriser les liens dans les deux sens (quitte à compliquer encore plus la notion d'homomorphisme de structure).

fam_accept

Ne pas trancher prématurément (quitte à perdre du temps).

SpiceGuid il y a 8 mois

Mon expérience des contextes (informatiques) m'incite à penser que c'est toujours le contexte englobé qui dépend du contexte englobant et jamais l'inverse.

D'autre part les choses sont bien assez compliquées comme elles sont et je n'ai pas davantage de temps à perdre.

Mon seul soucis c'est qu'au cours du développement d'autres questions pourraient surgir et m'amener à multiplier les choix arbitraires de conception. Avec le risque d'un résultat final sous-optimal qui pourrait remettre en question tout le travail. Pour quasiment me ramener où j'en suis, à la version 0.2

Ertaï il y a 8 mois

De ce que j'ai compris de tes trois exemples, c'est que les liens qui traversent le cadre le font tous pour désigner un concept qui existe en-dehors de ce cadre. Une sorte de référence à un concept indépendant du cadre.

L'inverse, ce serait un concept qui n'existe que dans un cadre et qui y est fait référence par quelque chose en-dehors du cadre.

Est-ce que cet exemple conviendrait : 

 Tom parle du clown dont a rêvé Eva

Le clown n'existe que dans le cadre du rêve d'Eva, mais pourtant Tom qui est extérieur au rêve peut y faire référence.

SpiceGuid il y a 7 mois

Oh mon dieu ! C'est pas croyable ! Je n'en reviens pas. Tu es un lecteur très attentif.

J'ai changé ton exemple en "Eva parle du clown du spectacle de ses rêves".

Eva-speaks-about-the-clown-of-her-dream-show
Eva speaks about the clown of her dream show

En tout cas toutes mes félicitations pouce

Honnêtement, je n'osais même pas imaginer que quelqu'un me mettrait sur la bonne voie.

En plus j'étais carrément parti pour faire le mauvais choix. Tu viens ni plus ni moins de sauver mon projet sweat2

En un seul message de toi je viens de rentabiliser tous mes efforts investis dans cette série d'articles de vulgarisation Smile

Ertaï il y a 7 mois

Je ne pensais pas que mon petit message aurait une telle portée sweat2

Je suis très content d'avoir pu t'aiguiller alors que jusqu'ici je n'avais une compréhension très vague de ton projet Smile

SpiceGuid il y a 7 mois

Je vais te donner une seconde occasion d'être très content de ta trouvaille.

Après une semaine de recul je peux maintenant te l'avouer : l'exemple "Éva parle du clown du spectacle de ses rêves" n'était qu'un exemple de transition. Pour que tu reconnaisses l'esprit de ta participation. Et aussi pour ne pas t'embrouiller avec de nouveaux "gadgets" de mon invention.

L'exemple auquel je pensais vraiment c'était : "Éva monte un spectacle de clown", mais un spectacle vu comme un business-plan. Donc Éva doit trouver des fonds pour financer son spectacle, et un interprète pour jouer le clown.

Eva-prospects-for-assets
Éva monte un spectacle de clown

Au niveau de la nouvelle gadgetry, il y a 2 choses : 

fam_add

Une relation peut sortir d'un cadre-contexte puis entrer dans un autre cadre-contexte. Plus généralement, une relation sort de zéro ou plusieurs cadre-contexte(s) puis entre dans zéro ou plusieurs autre(s) cadre-contexte(s).

fam_add

Un hyper-nœud comme Asset est également un conteneur pour un ou plusieurs (morceaux de) graphes. L'hyper-nœud joue le rôle des collections dans les langages de programmation. Ici l'hyper-nœud Asset collectionne [Capital] et [Man].

Ertaï il y a 7 mois

Pourquoi "Acting" et "Financing" ne sont pas des verbes comme "Dream" ou "ProspectFor" ?

SpiceGuid il y a 7 mois

Il n'y a pas de raison profonde. C'est totalement arbitraire. Ce n'est que du vocabulaire.

[Capital] (Finance) [Show] et [Man] (Act) [Clown] conviendraient aussi bien.

SpiceGuid il y a 7 mois

Ma réponse est insatisfaisante et incomplète.

Ta question est une sorte de variante de la question de Aka "pourquoi le verbe est dans une boîte-ronde et pas dans une boîte-carrée (comme on me l'a appris) ?". Elle mérite davantage de commentaire.

Commençons par l'anglais.
Est-ce que dream est un verbe ?
Est-ce que dream est un nom commun ?
À voir. Au cas par cas.

Maintenant Entités/Relations.
Ce qui compte vraiment c'est qu'une boîte-ronde (Relation) relie toujours deux boîtes-carrées (Entités).
À part ça on met le mot que l'on veut à l'intérieur pourvu que ce mot soit présent dans la hiérarchie des relations (la relation Acting est à la ligne 113).

Y-a-t-il une relation univoque anglais ↔ ERic ?
Il n'y en a certainement pas. L'anglais autorise la négation, ERic ne l'autorise(-ra) pas.

Y-a-t-il une relation ERic ↦ anglais ?
C'est loin d'être évident (pour moi).

Au bout du compte est-ce que tout ça n'est pas que de l'enfumage ?
Si on croit qu'ERic est un agent conversationnel alors oui je dirais que c'est de l'enfumage.
C'est plutôt un modèle de BDD orienté linguistique.

Ertaï il y a 7 mois

Merci de l'explication, en informatique au moins ce genre de graphe fonctionnel possède une légende bien précise, et les formes gardent la même signification non seulement dans le même graphe, mais dans tous les graphes ayant la même finalité, d'où ma question.

SpiceGuid SpiceGuid il y a 8 mois , modifié il y a 8 mois

Résumons-nous

Lors de nos précédents arbitrages parmi la grande famille des graphes nous nous étions arrêtés au multi-digraphe-étiqueté-à-hyper-nœuds. C'est le point de départ de cet article où nous achevons notre spécification d'ERic 0.3.

Droit au but

Cette fois je fais fi de la démarche (trop tortueuse) pour vous présenter directement le résultat.

Les hyper-nœuds sont des conteneurs

C'était le credo de l'article précédent. Un hyper-nœud est une boîte fermée hermétiquement. Intérieur et extérieur sont isolés. Chaque boîte contient une donnée. Il suffit de désigner une boîte pour accéder à la donnée qu'elle contient. Éventuellement il y a encore une boîte dans la boîte. Comme des poupées russes. C'est du grand classique de l'algorithmique.

Tom-believes-that-Eva-wants-to-marry-a-sailor-Hypernodes
Tom croit qu'Éva veut épouser un marin.

 

Les hyper-nœuds sont des membranes

Maintenant on change de point de vue. Les hyper-nœuds ne sont plus des boîtes hermétiques. Ce sont des membranes biologiques. Cela fait deux différences fondamentales :

fam_accept

Les hyper-nœuds sont des cadres-contextes. À l'extérieur de l'hyper-nœud on est dans le contexte de l'hyper-nœud parent. À l'intérieur de l'hyper-nœud on est dans un nouveau contexte plus spécifique qui enrichi le contexte parent (celui de l'hyper-nœud parent). C'est plus organique, il y a des systèmes et des sous-systèmes.

fam_accept

Il y a toujours un intérieur et un extérieur mais les échanges sont possibles entre les deux mondes. Le conteneur était un sarcophage. La membrane est une interface. C'est plus organique, il y a des flux qui traversent les parois.

Comme toujours des schémas valent mieux qu'un long discours.

Tom croit toujours qu'Éva veut épouser un marin.

Sauf que maintenant il y a 3 variantes possibles selon l'hyper-nœud dans lequel se trouve le marin.

Tom-believes-that-Eva-wants-to-marry-a-sailor-Hypernodes-2
Tom croit qu'Éva veut épouser un marin. Éva existe parce qu'elle est en dehors de ce que croit Tom. Le marin existe forcément car il est lui aussi en dehors de ce que croit Tom.
Tom-believes-that-Eva-wants-to-marry-a-sailor-Hypernodes-3
Tom croit qu'Éva veut épouser un marin. Éva existe. Et elle voudrait qu'il existe un marin qu'elle pourrait épouser.
Tom-believes-that-Eva-wants-to-marry-a-sailor-Hypernodes-4
Tom croit qu'il existe un marin qu'Éva veut épouser.

C'est beaucoup plus précis, n'est-ce pas ?

Spoiler (Sélectionnez le texte dans le cadre pointillé pour le faire apparaître)

Je maudis MS-Paint. Je le hais du plus profond de mon âme. Ça me prends un temps fou de faire ces schémas à la noix. Je préfère de loin la notation textuelle. Dommage que les schémas soient plus lisibles. Parce que pour les éditer c'est un sacerdoce.

Les graphes conceptuels

C'est encore un graphe (ou pas ) ? C'est encore une structure de données (ou pas ) ? On trouve ça dans les livres d'algorithmique (ou pas ) ? Et sinon c'est grave docteur ? Non, ça n'est pas grave. Tout ce dont on a besoin c'est d'une base de données et d'un mécanisme de requête. Et le mécanisme de requête c'est la recherche de tous les homomorphismes existant entre un motif et une collection de données. D'ailleurs c'était déjà le cas avec Eric 0.2. Wikipédia était bien capable de définir les homomorphismes de graphe tout en étant incapable de donner un algorithmique pour les trouver. Ça n'a pas empêché d'implanter ERic 0.2. Ce sera pareil avec ERic 0.3. Si on n'a plus le courage de faire de la recherche en algorithmique alors on changera de projet.

Sbirematqui il y a 8 mois

*enfile sa casquette de livreur*
*sonne à la porte de SpiceGuid*

Bonjour chez vous ! C'est vous qui aviez commandé 1kg de motivation ?
Tenez, signez ici.

*tend sa tablette de livreur*

Comment ? Ah ! Oui, vos tartines seront livrées demain. Euh, au fait, j'ai encore de la motivation à livrer, vous sauriez pas où se trouve le "laboratoire gobelet" ?
Ah, il a changé de nom ? Vous pouvez m'indiquer où il est ?

*regarde le bonhomme lego agiter ses bras*

Merci, oui, passez vous aussi une bonne journée.

*remonte dans son camion en lâchant un chapelet de jurons et passe ses nerfs sur son GPS*

SpiceGuid il y a 8 mois

merci
Sbire

Les pizzas motivantes je pense que c'est pour le "laboratoire gobelin" icon_wink

Sbirematqui il y a 8 mois

C'est qu'on la veut notre v8 d'AG et notre v0.3 d'ERic ! sourire3

SpiceGuid SpiceGuid il y a 8 mois , modifié il y a 8 mois

Spoiler (Sélectionnez le texte dans le cadre pointillé pour le faire apparaître)

L'horaire tardive à laquelle a été rédigé cet article est due à un petit ennui technique.

merci

à Ertaï de l'avoir corrigé au plus vite.

J'en profite pour ajouter que pour fêter le passage de Sbirematqui vers le langage Haskell j'ai décidé de rehausser légèrement le niveau. De façon purement mesquine, juste histoire d'être certain de rester au top biggrinking

Ne vous étonnez pas si vous ne comprenez pas tout tout de suite, lisez lentement, relisez, et dans quelques semaines/mois/années ça prendra davantage de sens même si ça vous paraît totalement ésotérique aujourd'hui.


L'histoire continue

Ceux qui croient que la mise en parenthèse du projet ERic m'empêche d'alimenter ce blog se fourvoient. Un temps mort dans le développement c'est au contraire le moment idéal pour mieux fixer des idées parfois trop mouvantes. Et quoi de mieux pour fixer ses idées que de les mettre au propre pour les partager. De façon informelle, en français, bien avant de devoir rédiger la documentation officielle et définitive (qui serait cette fois en anglais).


Les pré-requis

Ce tutoriel n'est pas le plus facile de la série sur ERic.
Pour l'assimiler au mieux je ne peux que vous recommander :

fam_accept

la lecture de la documentation officielle d'ERic 0.2f (en français)

fam_accept

éventuellement, la lecture de l'introduction aux graphes-conceptuels par John F. Sowa (en anglais)


Les 4 visages d'ERic

Il y a 4 façons de comprendre et d'envisager ERic en tant qu'un système complet d'information :

fam_accept

comme une représentation graphique du langage naturel

fam_accept

comme une structure de données informatique

fam_accept

comme une modélisation des connaissances

fam_accept

comme une logique diagrammatique

Jusqu'ici on a surtout insisté sur les deux premiers aspects :

fam_accept

Quoique de manière incomplète ERic nous permet d'assez bien rendre compte de la sémantique du langage naturel.

fam_accept

La structure de données de prédilection est le multi-digraphe-étiqueté. On a justifié ce choix par le fait que cette structure de données est familière au lecteur et au programmeur.

fam_accept

On a également donné un méta-modèle d'ERic. C'est dire qu'au moins implicitement on assume une certaine capacité de modélisation.

fam_accept

On n'a pas donné de sémantique logique formellement dérivable d'un graphe entités/relations. Pour ne pas embarrasser le non-logicien mais surtout parce que le programmeur principal est plus à l'aise avec la vision "structure de données". Cependant aux détours de certaines explications on a laissé entrevoir qu'une telle logique était à l'œuvre. De plus on a identifié l'homomorphisme comme la méthode de requête et la subsomption comme la méthode de classification. Il n'y aucune raison de remettre en cause ces choix de mathématique/logique.


Comment améliorer ERic ? 

Quelque soit la modification opérée sur ERic elle impactera simultanément les 4 interprétations de façon cohérente.

fam_help

Avoir 4 interprétations étroitement liées est-il un avantage ou bien une complexité supplémentaire ?

fam_help

A-t-on l'obligation d'anticiper 4 fois plus et de tourner 4 fois sa langue dans sa bouche avant de changer une ligne de code ?

fam_comment

Heureusement non. Dans le cas contraire ERic serait de fait condamné à la stagnation.
En fait on peut carrément choisir une interprétation, améliorer ERic dans cette interprétation, et l'amélioration se répercutera sur les 3 autres interprétations sans même qu'on ait à y penser.

fam_star

Mieux: on peut identifier une limitation dans une interprétation et la corriger à l'aide d'une extension dans une autre interprétation. Chaque amélioration se répercute sur les 4 interprétations.
C'est d'ailleurs exactement comme ça que l'on va procéder.
L'homme est supérieur en capacités linguistiques, c'est donc sur ce point qu'on va chercher des problèmes.
ERic est supérieur en capacités de modélisation, c'est dans ce domaine qu'on va chercher les solutions.


ERic 0.2f possède des limitations linguistiques 

Tom believes in God
Tom croit en Dieu
Eva wants an ice-cream.png
Éva veut une crème-glacée
Tom believes that Eva wants to marry a sailor
Tom croit qu'Éva veut épouser un marin

Dans les deux premier cas on a un complément d'objet direct (un Dieu, une crème-glacée).
Le dernier cas est plus composite. Tom croit à une Proposition qui affirme (Statement) quelque chose. Éva veut une Situation qui décrit (Description) un certain état.

ERic 0.2 ne gère pas cette configuration de façon optimale :

fam_accept

Il n'est pas possible d'exprimer que le marin n'existe pas ailleurs que dans la tête de Tom.

fam_accept

Pire encore: si on demande "une personne veut-t-elle se marier" on aura pour réponse "oui, Éva veut se marier". Sans rien préciser des pensées de Tom. Le problème ici est que le graphe n'est pas assez structuré. Le fait que Tom croit quelque chose n'est qu'une extension du fait qu'Éva veut épouser un marin. Et vice-versa. Il y a des propositions mais il n'y a pas de propositions subordonnées

Évidemment on voudrait bien remédier à ces déficiences.

On a dit également qu'ERic ne supportait pas la négation. La version ERic 0.2d supporte la négation atomique qui n'a de négation à peu près que le nom. En fait il s'agit juste d'interdire un certain type de lien entre deux entités. On n'a pas de négation générale. Et pour des raisons de logique qui dépassent le cadre de ce tutoriel on n'ambitionne pas d'en avoir.


Modéliser ERic pour améliorer ERic 

Comme n'importe quel concepteur de logiciel on va utiliser un langage de conception pour faciliter la re-factorisation d'ERic.

meta model
Rappel du méta-modèle d'ERic 0.2f
fam_lightbulb

Remarque cruciale n°1: dans ce méta-modèle tous les référents (Name, Integer, String, Reference, Float) sont des types atomiques, il n'y a aucun type structuré.

fam_lightbulb

Remarque cruciale n°2: ce méta-modèle définit le type EntityRelationGraph qui lui est un type très structuré.

fam_star
fam_lightbulb

Idée: On va simplement ajouter le type EntityRelationGraph dans la liste des référents possibles. De cette façon on pourra avoir des nœuds dont le référent est un graphe entités/relations. Un graphe dont les nœuds peuvent contenir des graphes s'appelle un graphe à hyper-nœuds. 

Spoiler (Sélectionnez le texte dans le cadre pointillé pour le faire apparaître)

fam_user_comment

Certains parlent de graphes imbriqués plutôt que de graphes à hyper-nœuds. Moi je préfère graphe à hyper-nœuds parce que sinon on pourrait imbriquer dans les nœuds ou bien dans les arêtes ou bien dans les deux. C'est trop ambigu. Graphe à hyper-nœuds c'est clair : on imbrique que dans les nœuds. 

fam_comment

Ceux qui connaissent les diagrammes d'états (StateCharts) ont déjà rencontré des graphes imbriqués.

meta model hypernode
Le nouveau méta-modèle d'ERic enrichi par les référents EntityRelationGraph

Conséquences linguistiques 

Comme on va le voir cette modification résout le problème des propositions subordonnées.
Par contre cela ne résout pas le problème de l'existence (in)certaine du marin.

Tom believes that Eva wants to marry a sailor Hypernodes
Tom croit qu'Éva veut épouser un marin (avec un digraphe à hyper-nœuds)

On voit que les arêtes Statement et Description ont disparu.
Chaque proposition subordonnée est désormais délimitée par un nœud-cadre.

Désormais le code contient une indentation pour marquer le niveau d'imbrication des nœuds :

join
   [Believe *b] Experiencer [Person:Tom] b Theme
   [Proposition
      [Want *w] Experiencer [Person:Eva] w Theme
      [Situation
         [Marry *m] Agent [Person:Eva]
         m Theme [Sailor]
      ]
  ].

Conséquences logiques 

Les notions d'homomorphisme et de subsomption deviennent récursives. En particulier les requêtes deviennent récursives. Elles se propagent à l'intérieur des hyper-nœuds tout en mémorisant le contexte externe.

Concrètement lorsque l'on demande "une personne veut-t-elle se marier" on aura pour réponse "oui, Tom croit qu'Éva veut se marier" au lieu de simplement "oui, Éva veut se marier".


Conséquences sur les structures de données 

Comme on l'a dit on passe du multi-digraphe-étiqueté au multi-digraphe-étiqueté-à-hyper-nœuds.

Le challenge n'est pas tant dans la représentation de ce type de graphe que dans la façon d'en stocker une très grande quantité tout en ralentissant le moins possible la recherche récursive d'homomorphismes.


Conclusion

On a présenté une solution au problème des propositions subordonnées et ce que cette solution implique sur les 4 interprétations d'un graphe entités/relations.

fam_page_go

Le prochain article présentera une solution au problème de l'existence (in)certaine du marin ainsi que ses implications profondes sur la nature algorithmique des graphes-conceptuels.

SpiceGuid il y a 8 mois

Une question simple :

Tom croit qu'Éva veut épouser un marin vous trouvez ça plus lisible en multi-digraphe-étiqueté ou bien en multi-digraphe-étiqueté-à-hyper-nœuds ?

Tom believes that Eva wants to marry a sailor
sans hyper-nœuds
Tom believes that Eva wants to marry a sailor Hypernodes
avec hyper-nœuds

Ertaï il y a 8 mois

Personnellement la direction des flèches à partir des verbes me perturbe. Si la personne Tom croît au thème de Dieu, l'inverse n'est pas forcément vrai, si ? Je veux dire que le thème de Dieu ne croît pas en la personne Tom. Pourquoi mettre des flèches dans les deux sens alors ?

SpiceGuid il y a 8 mois

C'est comme en cours de français des collèges.

La phrase est centrée sur le verbe :

fam_add

le verbe (Believe ou Want) a un sujet (Experiencer)

fam_add

le verbe (Believe ou Want) a un complément d'objet (Theme)

Où vois-tu 1 flèche dans les deux sens ? Il y a 2 flèches qui partent de la boîte-verbe et elles partent dans le même sens (ce sont 2 flèches sortantes qui sortent de la boîte-verbe).

Si c'est un complément d'objet direct alors il y a une seule boîte-carrée (God ou IceCream).

Si le complément d'objet est une proposition alors il y a aussi une seule boîte-carrée (Proposition ou Situation). Seulement dans ce cas c'est une hyper-boîte (parce que son contenu est plus complexe).

SpiceGuid il y a 8 mois

J'ai refait le schéma exprès pour ceux qui ont des difficultés à lire les graphes.

Tom believes in God
Tom croit en Dieu

Dans un graphe il ne faut pas regarder l'image. Il faut seulement observer les propriétés de connectivité.

Pour comprendre ERic 0.1 il faut :

fam_accept

savoir lire et écrire un graphe

fam_accept

comprendre ce qu'est un (Wiki) homomorphisme de graphes

Pour comprendre ERic 0.2 il faut en plus comprendre la notion de subsomption de graphes.

Pour comprendre ERic 0.3 il faudra en plus (et entre autres) comprendre la notion d'hyper-nœud.

Ertaï il y a 8 mois

Je comprends mieux. Je supposais qu'il fallait que la relation aille dans ce sens là :

 Tom -> Experiencer -> Believe -> Theme -> God

Mais grâce à ton explication, je comprends mieux le sens des flèches.

Merci SpiceGuid ! pouce

SpiceGuid il y a 8 mois

C'est linguistique, la phrase (ou la proposition) est enracinée sur le verbe.

Comme à l'école en cours de français, quand on te faisait décomposer grammaticalement icon_wink

Après la notion d'homomorphisme (autre définition Wiki) est importante, et là j'avoue que je ne sais pas comment le vulgariser. Et plus c'est difficile à expliquer plus c'est difficile à vendre disgust Sans parler de la subsomption, des hyper-nœuds et de tout ce que je vais encore ajouter dans la version 0.3 couto

Edit: je dessine toujours les graphes sous MS-Paint et c'est vraiment une corvée

SpiceGuid SpiceGuid il y a 9 mois , modifié il y a 9 mois

(In)conscience artificielle

Quelque part sur un site d'informatique un membre enthousiaste d'AG a émis cette idée qu'une conscience artificielle pourrait se résumer dans la formule "je sais que je sais".

Je n'ai pas d'opinion philosophique sur la question. Par contre je pense être suffisamment avancé sur le plan technique pour exprimer artificiellement "je sais que je sais" beaucoup plus aisément que notre gentil membre ne pourra le faire malgré sa bonne volonté évidente.

D'ailleurs je vais le faire pas plus tard que tout de suite.

> ERic
Entity-Relationship interactive calculator.
version 0.2e by Damien Guichard.
# load "ECO.bdd".
# super-type [Think] Know.
# join
  [Know*k] Agent [Person:I]
  k Theme [Proposition*p]
  p Statement k.

Voilà c'est fait. On a créé une conscience artificielle (ou pas).

Sbirematqui il y a 9 mois

Ce que j'ai exposé sur le site du zéro était une manière de lancer l'émule parmi des gens plus ou moins "normaux", de voir leurs réactions à certains postulats, de voir d'autres avis que le mien de la part de personnes qui n'ont pas déjà un avis fixe.

Après, la discussion qu'on pourrait faire autour de la conscience est longue, j'ai cependant ma propre opinion sur la question, qui pourrait se résumer a fait que la conscience est le fait de se rappeler qu'on a existé, pas de savoir qu'on existe.

En effet, si la conscience était le fait de savoir qu'on sait, de savoir qu'on existe, du moment qu'on acquiert ce savoir, notre conscience devient passée, présente et future. En effet, un savoir que tu utilise en permanence (dès que tu es conscient) ne pourrait s'oublier spontanément, et donc tu peux dès lors énoncer que tu sauras que tu existera, que tu sais que tu existe et que tu as su que tu existe. La conscience serait une demi-droite débutant à l'instant de ta naissance et se poursuivant à l'infini dans le futur. En gros, avec une telle définition, tu serais conscient d'exister à la fois hier, aujourd'hui, demain, dans mille ans.

De façon virtuelle, la conscience serait donc passée, présente et future avec une telle définition, on en convient, c'est absurde. De même, il est difficile d'expliquer les absences de la conscience (le sommeil, le coma... etc) de courtes durées dans le temps, ce serait imaginer un savoir qui *disparaît* au moment de l'endormissement et *réapparaît* au moment de l'éveil.

Si on imagine la conscience comme étant le fait de se rappeler qu'on a existé à l'instant juste antérieur, on éloigne le paradoxe. En effet, au passé, tu peux dire que tu étais conscient car tu te rappelais que tu avais existé, et par récurrence déduire qui tu existe à l'instant juste antérieur à l'instant présent. A l'instant présent (qui certes n'existe pas, mais je raccourcis la disserte en postulant que le présent existe. Puis, c'est mieux compréhensible comme cela), on ne peut prétendre de se rappeler d'une chose du présent (c'est un fait, tu ne peux te rappeler que du vécu), on ne peut être ainsi conscient au futur, car on ne peut énoncer au futur le fait qu'on existait à l'instant juste antérieur sans devoir utiliser l'instant présent, qui lui n'est pas conscient. Nous ne sommes donc conscients que de l'instant de nos premiers souvenirs (ceux de la prime enfance dont on peut difficilement se rappeler, personne ne peut prétendre se souvenir de lui-même à l'instant 0 de sa vie) jusqu'à l'instant antérieur à l'instant présent. De même, le sommeil ou l'excès d'alcool, les moments où notre mémoire ne peut fonctionner, sont souvent associés à une "perte de conscience", conscience qui revient dès qu'on commence à retrouver l'usage de notre mémoire.

Ainsi, la conscience est le souvenir de nous-même, et en rajoutant deux ou trois pages, tu peux aisément aboutir au fait que ce souvenir est la somme successive de tous nos états successifs, les plus anciens n'étant reconnaissables que dans les modifications majeures de nous même et les plus récents étant présents dans leurs détails. Nous sommes la somme de ce que nous avons été, et à chaque instant nous devenons ce que nous allons être lorsque l'instant présent devient l'instant juste antérieur.

Ajoutons encore du blabla empiriste pour enfin comprendre que le souvenir que nous avons de l'instant présent est constitué par les perceptions que nous avons du monde et plus particulièrement de nos interprétations, nous avons donc au final :

Une conscience C qui passe de C{t} à C{t+1} lorsque le E{t+1} (Environnement à l'instant t+1) vient s'y adjoindre dans sa propre interprétation issue de C{t}.

C{t+1} = E{t+1} + C{t}

Ainsi, C{t} est et sera la somme des états antérieurs C{t'} avec t > t'.

Bien sûr, n'oublions pas que la philosophie ne peut prétendre à une vérité scientifique, mais qu'elle fournit juste des voies de réflexions. Il existe évidemment d'autres manières de considérer la conscience.

Pour le coup, tu nous as fait :

C{t} = C{t} (Le fait de savoir ce que je sais, d'être conscient d'être conscient, en ces conditions ce sera vrai pour tous les instants t)

SpiceGuid il y a 9 mois

Je te dois des excuses parce qu'en fait la formule "je sais que je sais" n'est même pas de toi.

J'ai essayé de répondre honnêtement. Peut être que j'ai répondu à côté. Selon moi la conscience n'est pas réductible à une simple conscience de soi. Et même si c'était le cas je doute qu'aucune implantation logicielle ne te donne entièrement satisfaction, quelque soit ta définition personnelle de la conscience. Dans tous les cas Haskell est un très bon investissement.

En tout cas j'ai réveillé le fil de discussion.

SpiceGuid SpiceGuid il y a 9 mois , modifié il y a 9 mois

Quelles différences entre ERic et une base de données orientée graphes

 

fam_accept

Les bases de données orientées graphes classiques s'appuient toutes sur un langage à objets. La conséquence c'est que les entités sont des objets et les relations sont des références. Du coup il y a une hiérarchie sur les types d'entités (la hiérarchie des classes) mais il n'y a pas de hiérarchie sur les types de relations. Au contraire, ERic 0.2 possède deux hiérarchies distinctes, une pour les entités, une autre pour les relations.

fam_accept

Deuxième conséquence, plus importante: ERic 0.2 possède la subsomption. Les données sont des graphes. Les requêtes sont des graphes. Les réponses sont des graphes. Avec les autres bases de données, les données sont des objets, les requêtes sont des chemins+filtres, les réponses sont des objets. Il n'y a pas de notion de subsomption. En fait les bases de données orientées graphes classiques ne sont guère plus qu'un moyen de (dé-)sérialisation pour des amas d'objets à charger/sauver sur disque.

fam_accept

La documentation des bases de données orientées graphes affirme que le graphe est la structure de données la plus générale. La documentation d'ERic n'affirme rien de tel. Au contraire. ERic 0.3+ a pour objectif d'offrir une structure de données plus générale que les graphes, les multi-graphes, les graphes bipartites, les hyper-graphes et autres variations ou extensions de la définition d'un graphe.

fam_accept

La plupart des bases de données orientées graphes offrent certains algorithmes classiques comme le plus court chemin d'un objet à un autre, les plus proches voisins vérifiant une certaine propriété... ERic n'offre rien de tel, il ne fonctionne que par subsomption.

Ertaï il y a 9 mois

Et au niveau des applications pratiques ? icon_razz

SpiceGuid il y a 9 mois

Les origines du modèle que j'utilise prennent racines dans la logique, les mathématiques et la philosophie. Il y a sur terre des personnes suffisamment exceptionnelles pour cumuler les trois compétences. Ces personnes là pensent aux modèles, pas aux applications.

Les applications viennent après les outils qui viennent après les modèles.

Mon ambition c'est de produire un outil qui rende hommage aux génies qui ont pensé le modèle.

J'ai comme l'impression que derrière ta question il y a le soucis de mon sort personnel. Et je t'en remercie.

La vérité sur les applications c'est que jusqu'à présent je n'en connais pas de vraiment convaincante. Au choix on peut dire que j'innove, que j'anticipe, ou bien que je me suicide socialement.

Ertaï il y a 9 mois

SpiceGuid a écrit :

"

Au choix on peut dire que j'innove, que j'anticipe, ou bien que je me suicide socialement.

"

Je crois que ces trois caractéristiques décrivent bien les génies incompris de leur temps. pouce

SpiceGuid il y a 9 mois

Sur le mur tu disais "inadapté".

La première chose que l'on voit ou que l'on pense de moi c'est que je ne travaille pas.

Ertaï il y a 9 mois

Inadapté mais génial, en tout cas ici tu n'as pas à craindre l'opprobre productiviste. Smile

SpiceGuid SpiceGuid il y a 9 mois , modifié il y a 9 mois

fam_fr

Mise à jour mineure vers la version 0.2f

fam_accept

Suite à une visite de nlegriel la relation Attribut a été renommée Attribute et une relation Value a été ajoutée.

Le couple Property/Value constitue une alternative à Attribute :

  • Si la modélisation est orientée Graphe Conceptuel on préfèrera →(Attribute)→[Age 17]
  • Si la modélisation est orientée RDF / OWL on préfèrera →(Property)→[Age]→(Value)→[Integer 17]
fam_add

Interface source avec OCaml.

Sbirematqui il y a 9 mois

L'interface source avec Ocalm, c'est quoi ?

SpiceGuid il y a 9 mois

Cela signifie que la source est encore plus modulaire (le moteur de subsomption est encore mieux encapsulé). Du coup si tu programmes en OCaml alors tu peux facilement changer la syntaxe de la console interactive.

Par exemple tu peux utiliser un langage pseudo-naturel comme Attempto Controlled English.

fam_us

Attempto Project

SpiceGuid SpiceGuid il y a 10 mois , modifié il y a 10 mois

Pour vous faire patienter avant de dévoiler les nouvelles caractéristiques d'ERic 0.3a, voici un petit tutoriel sur mon algo de reachability en version 0.2

ERic 0.2 possède une double hiérarchie: une pour les concepts et aune autre pour les relations.

Dynamiquement ERic compare les types de milliers de paires de concepts et de paires de relations. La vitesse de comparaison de deux types est donc vitale pour la performance.

L'ordre dans une hiérarchie est un ordre partiel.

Voici comment on compare deux types A et B :

  • ou bien le type A est un ancêtre du type B (on note A ≥ B)
  • ou bien le type B est un ancêtre du type A (on note B ≥ A)
  • ou bien les deux types A et B ne sont pas comparables

Voici une représentation d'une hiérarchie, une liaison vers la droite est un lien vers un nœud frère, une liaison vers le bas est un lien vers une liste de nœuds fils.

  A
  |
  B-----------------C-----D
  |                 |     |      
  E------F------G   H     I------J

Le nœud A est le nœud sommet. Les nœuds B,C,D sont ses fils directs.

Dans ce cas comparer deux nœuds quelconques est une opération complexe.

Il faut partir d'un nœud et parcourir le chemin qui mène jusqu'au sommet en espérant rencontrer l'autre nœud au passage. Et si ça échoue alors il faut partir de l'autre nœud et parcourir le chemin qui mène jusqu'au sommet en espérant rencontrer le premier nœud au passage. Et si ça échoue encore alors les deux nœuds n'étaient pas comparables !

Bref il faut parcourir l'arbre.

TROP LENT.

Voici la solution de SpiceGuid.

Au départ l'arbre ci-dessus est étiqueté avec des intervalles d'entiers. Comme ceci.

[0,10]
  |
[1,5]-------------[5,7]-[7,10]
  |                 |     |      
[2,3]-[3,4]-[4,5] [6,7] [8,9]-[9,10]

Les nœuds proches du commet ont un intervalle plutôt large.

Alors que les nœuds feuilles ont un intervalle plutôt étroit.

À présent la comparaison entre deux nœuds se fait en temps constant : un nœud A est l'ancêtre d'un nœud B si et seulement si l'intervalle A contient l'intervalle B.

Évidemment l'objectif de la version 0.3a est d'offrir un niveau similaire de performance dans la comparaison de deux nœuds tout en offrant la possibilité de l'héritage multiple. La hiérarchie n'est alors plus un arbre mais un DAG (Directed-Acyclic-Graph).

La solution s'inspirera probablement de la technique générale dite de structural-boostrapping. Cette technique consiste (pour simplifier) à se baser sur un TAD incomplet (ici mon arbre étiqueté avec des intervalles) pour construire le TAD recherché (ici un DAG qui résout le problème de reachability). Cette solution devrait donner de bons résultats pratiques puisque plusieurs études chiffrent le nombre moyen de types parents à environ presque 2 pour les ontologies les plus foisonnantes et à peine plus de 1 pour les ontologies les plus arborescentes.

Ertaï il y a 10 mois

Ça me rappelle les cours d'algorithmie que nous avons pris ensemble avec Aka Guymelef, je me rappelle bien de ce type d'arbre "borné". La complexité réside dans l'insertion et la suppression, mais l'accès ( = recherche ) est ultra-rapide.

SpiceGuid il y a 10 mois

Hmmm... Ici il s'agit d'un arbre n-aire (n quelconque), pas d'un arbre binaire de recherche (où n=2 et l'arbre est totalement ordonné). Ici mon arbre est partiellement ordonné et chaque nœud est étiqueté par un intervalle, pas par un simple entier icon_wink

Ordre partiel

Ertaï il y a 10 mois

Même avec la page Wikipédia que tu as mise en lien je ne comprends pas bien pourquoi ton arbre est partiellement ordonné ? perplexe

SpiceGuid il y a 10 mois

Mon arbre est un dendrogramme.

Je vais essayer d'être plus clair que Wikipédia.

Avec un ordre total il n'y a que 2 cas possibles (d'où n=2 pour un arbre qui fait un tri total) :

  • ou bien A ≥ B
  • ou bien B ≥ A

Un arbre d'héritage est trié selon un ordre partiel, c'est-à-dire qu'il y a 3 cas possibles (il faut un arbre n-aire pour faire un tri partiel) :

  • ou bien A ≥ B  (A est plus général que B)
  • ou bien B ≥ A  (A est plus spécifique que B)
  • ou bien A et B ne sont pas comparables

Ne sont pas comparables :

  • dans mon dendrogramme : tous les nœuds frères, plus B et H, B et I, B et J, C et E, C et F, C et G, C et I, C et J, D et E, D et F, D et G, D et H
  • dans le dendrogramme de wikipédia : tous les nœuds qui n'ont aucune lettre en commun
  • en général : tous les nœuds dont l'un n'est pas l'ancêtre de l'autre

Ertaï il y a 10 mois

Je comprends mieux, merci pour l'explication Smile

SpiceGuid il y a 10 mois

Bravo, tu n'as plus qu'à imaginer comment on étiquette chaque nœud avec un intervalle d'entiers icon_wink

(aide: on fait un parcours en profondeur d'abord)

Qu'est-ce qu'un arbre n-aire ?

SpiceGuid SpiceGuid il y a 10 mois , modifié il y a 10 mois

Il va y avoir une longue pose pause de brainstorming avant la spécification de la version 0.3a

Explications :

  • Je suis tout nouveau dans le monde des bases de données. Je n'avais pas compris que les données stockées ont un cycle de vie. Il ne suffit pas d'un langage de déclaration et d'un langage de requête, il faut en plus un langage de mise à jour. Et mettre à jour des graphes ça n'est pas évident. En tout cas c'est plus difficile que mettre à jour des enregistrements ou des objets. C'est une faiblesse de l'approche que je n'avais pas vue initialement. Une recherche rapide dans le domaine me confirme que le problème est peu étudié / non-résolu.  
  • J'aimerais étendre les capacités des requêtes. En particulier dans le quantitatif (minimum, maximum, intervalle) et dans le temporel (durée minimale, durée maximale, date butoir).
  • J'aimerais pouvoir créer des cadre-contextes qui rendraient l'information contextuelle. C'est-à-dire liée à une situation, un état, un point de vue,... C'est une extension bien étudiée, dont on connaît les propriétés. Toutefois ça complique considérablement l'implantation et ça n'arrange rien quant à la résolution des deux problèmes précédents.
  • J'aimerais autoriser le sous-typage multiple (héritage multiple) dans la hiérarchie des concepts et dans la hiérarchie des relations.
  • J'aimerais faciliter l'embarquement dans les applications utilisateurs, en particulier dans les langages C et OCaml (tant pis pour les autres, ils n'auront qu'à s'interfacer avec le C). Comparativement aux points précédents celui-ci est le plus facile. Pour OCaml c'est trivial et pour le C c'est (assez bien) documenté et il est facile de contacter nombre de personnes expérimentées en la matière.

Je ne crois pas que j'arriverai à tout faire, mon objectif pour la version 0.3a c'est de résoudre au moins 3 parmi ces 5 points afin d'avancer un peu plus vite.

En attendant vos questions / commentaires / critiques sur la version 0.2d sont toujours les bienvenues DoubleAccentCirconflexe

Mon but à moyen/long terme c'est d'avoir une Graph-based DB à visée commerciale.

Pour ça, une fois les 5 points précédents résolus il en restera encore 2 autres :

  • une interface graphique GTK+
  • un mécanisme de requêtes asynchrones distribuées

Et tout ça peut se faire 100% en OCaml DoubleAccentCirconflexe

Ertaï il y a 10 mois

Bon courage pour cette pause icon_wink

Edit : A propose de base de données en graph, j'ai eu l'occasion de m'intéresser à Neo4j, un système de base de donnée en graph commercial qui  est assez populaire, je ne sais pas si tu peux t'inspirer de leur modèle (ou pas).

Sbirematqui il y a 10 mois

Tu as notre soutient ! Du moins, le soutient de tous ceux qui ont de petits ponayzs dans la tête quand ils cherchent à saisir la nature de tes méta-capacités d'algorithmique.

sourire3

SpiceGuid il y a 10 mois

Je suis heureux (pour toi) de constater qu'il y a encore une vie après SQL. Tu penses bien que je ratisse large. Alors oui j'ai regardé du côté de Neo4j.

Mais aussi des tas d'autres choses, HyperGraphDB, QGraph, Prometheus et j'en oublie... Ce qui m'a fait la meilleure impression c'est HyperNode/HyperLog. Cependant c'est davantage orienté-objet et moins langage-naturel que mon approche initiale. Il n'y a pas de sémantique logique associée. Mais l'approche objet ne m'est pas du tout étrangère et je n'écarte aucun modèle à priori.

@sbirematqui

Je ne peux pas t'expliquer l'algo de subsomption d'ERic 0.2, pas parce que c'est secret, au contraire c'est du logiciel libre EUPL. Par contre je vais essayer de faire des petits tutoriels pour vous expliquer des choses plus simples mais néanmoins intéressantes.

SpiceGuid il y a 9 mois

Comme je le craignais la longue pause de brainstorming est en train de tourner à la dérive. Épisode dépressif, baisse de motivation, manque de perspectives professionnelles, dégoût de la programmation... Je n'ai même pas la force d'installer OCaml 4.0 c'est tout dire.

Bref, arrêt total. Là je vais souhaiter un joyeux anniversaire à Zeami et on reparlera d'ERic plus tard.

merci

les gars pour votre soutient amical.

SpiceGuid SpiceGuid il y a 12 mois , modifié il y a 12 mois

La poupée qui dit "non"

La prochaine version ERic v0.2d implémentera la négation atomique (et non, TSG, ça n'est ni toxique ni radioactif icon_wink).

Alors me direz-vous, quelle différence entre la négation logique et la négation atomique perplexe

Hé bien la réponse est simple : je vais être obligé de m'atomiser le cerveau dans le seul but de réussir à l'implanter sourire3

Et si je survis je pourrai continuer avec des super-pouvoirs algorithmiques renforcés.

SpiceGuid il y a 11 mois

Et voilà !

Nouvelle version 0.2d avec négation atomique Smile

SpiceGuid SpiceGuid il y a plus d'1 an

Mise à jour mineure de 0.2b vers 0.2c (ECO étendue, plus d'unités SI, pas de nouvelle fonctionnalité).

SpiceGuid SpiceGuid il y a plus d'1 an , modifié il y a plus d'1 an

Je viens de m'inscrire

À la mailing-list cg@conceptualgraphs.org

En parcourant la (maigre) archive de la liste je constate la quasi-absence de marché US pour du logiciel entités/relations, c'est typique du domaine de l'informatique appliquée, le buzzword c'est ce dont tout le monde parle mais que personne n'utilise.

Au début je pensais qu'il n'y avait qu'un simple problème d'absence interface graphique et de capacité multi-utilisateurs mais apparemment la résistance/réticence va bien plus loin que ça.

En recoupant avec d'autres sources d'information j'en conclus que :

  • quand il n'y a presque pas de marché US pour de l'IA alors il n'y en a pas du tout dans l'UE
  • l'acteur majeur du marché c'est Google qui fait du "web sémantique" ou du moins qui prétend qu'il va bientôt en faire que d'ailleurs il en fait déjà, que c'est pour demain mais qu'aujourd'hui c'est déjà demain et que d'ailleurs son nouveau langage s'appelle Google Noop heu non en fait il s'appelle Google Go ... aux dernières nouvelles il s'appelle Google Dart ... (mais ça n'est pas le même, c'est un nouveau ++ mieux bien)
  • le "web sémantique" c'est simplement du web 2.0, 3.0, ++ ce que vous voulez
  • la faiblesse (économique) de mon approche vient de ce qu'il faut alimenter la base manuellement, de préférence avec du personnel qualifié en informatique/linguistique, qui sait ce qu'il fait. or les personnes qui savent ce qu'elles font sont trop rares et trop chères. le coût est trop immédiat, le gain d'échelle est trop lointain ou trop difficile à chiffrer.
  • d'où l'approche Googlesque (je spam le net avec des robots collecteurs et j’agrège pour les nuls puis je vends du trafic aux annonceurs)

Au total c'est assez démotivant icon_frown

Sbirematqui il y a plus d'1 an

Si tu as une offre, mais pas de demande, il faut créer une demande artificiellement. Le moyen le plus direct serait une poignée de démonstrations techniques alléchante, tu dois donc trouver des domaines d'application qui intéressent les gens et proposer des démonstrations interactives conçues pour toucher un public au plus large. Créer sa niche, en quelque sorte. :3

SpiceGuid il y a plus d'1 an

Tu sais ce qu'on dit : dans chaque niche il y a un chien méchant.

Je n'ai plus qu'à construire ma niche et ensuite "tu les manges mes croquettes ou je te mords les fesses". Bref, aller chercher la croissance avec les dents (©Sarkozy 2007).

SpiceGuid SpiceGuid il y a plus d'1 an , modifié il y a plus d'1 an

Préfixes / Suffixes

ERic possède déjà certaines relations destinées à élargir le champ d'usage de certains concepts. Par exemple ERic n'a pas besoin du suffixe -ment parce que ce suffixe sert à construire des adverbes. Or ECO possède déjà la relation Manner, en français façon ou manière, qui sert précisément à construire des adverbes.

Par exemple on ne peut pas dire "agir illégalement", mais on peut dire :

// agir de façon illégale
[Act] Manner [Illegal]

On ne peut pas dire "un chat peureux", mais on peut dire :

// un chat sujet à la peur
[Cat] Temper [Fear]

Autant que possible ERic + ECO remplacent les préfixes / suffixes par des relations appropriées qui font sens pour lui et pour son algorithme de subsomption.

C'est tout le principe du modèle Entités/Relations, on créer un langage artificiel aussi riche que possible mais avec un vocabulaire aussi réduit que possible comparativement à un langage naturel.

Les unités de mesure

Il y a là une exception. Sans doute parce que le système de mesure n'a rien d'un langage naturel puisqu'il a été conçu après des siècles de sciences. J'ai étudié la proposition de Sbirematqui pour que 1000 Meter = 1 KiloMeter et je l'ai amendée pour la rendre compatible avec le reste du système à l'aide d'une extension minimale.

Modification n°1

Micro, Kilo,... ne sont pas des préfixes de Meter, Watt,... mais des suffixes des nombres réels. Par exemple au lieu d'écrire 1.e3 on peut écrire 1. Kilo, au lieu d'écrire 1.e-6 on peut écrire 1. Micro. Donc essentiellement il n'y a plus du tout d'extension, il n'y a que la possibilité d'écrire en lettres ce qu'on pouvait déjà écrire en chiffres. Or pas d'extension du tout c'est justement l'extension que l'on recherche.

Modification n°2

Il y a exclusion entre les nombres réels et les autres référents. En particulier il n'y a plus de risque d'avoir à comparer des réels avec des entiers. Les concepts ordinaires acceptent tous les référents ordinaires (dont les entiers) mais pas les réels. Au contraire, les unités de mesure sont déclarées à l'aide de crochets et d'un point comme [.Meter], [.Gram], [.Watt] et leur référent ne peut être qu'un nombre réel précédent l'unité au lieu de suivre le concept. Ainsi on a [1. Kilo Meter] mais on ne peut pas avoir [1. Kilo Apple] dont on ne saurait pas s'il s'agit d'1Kg de pomme ou bien de mille pommes.

[Apple 1000]  // mille pommes
[Apple] Weight [1. Kilo Gram]  // 1Kg de pomme

Modification n°3

Toute unité a un super-type qui indique de quoi l'unité est la mesure.

super-type [Fruit] Apple.    // n'est pas une unité
super-type [Power] [.Watt].  // est une unité de puissance

C'est essentiel pour pouvoir utiliser une proposition quand on ne connaît pas la quantité exacte.

// La puissance requise par le convecteur temporel de la DeLorean
// afin de voyager dans le temps
[Power] Description [Consume*c]
c Agent [Time Convector*t]
[Car DeLorean] EquippedWith t
c RequiredBy [Time Travel]

Conclusion

Tous les problèmes de mesure ne sont pas résolus pour autant. Par exemple il reste à étendre le système de requêtes pour pouvoir filtrer les réponses selon des critères quantitatifs (au dessus d'un minimum, au dessous d'un maximum, à l'intérieur d'un intervalle). Ce genre de filtrage serait également intéressant sur les dates (avant, après, pendant une période).

Une autre limitation mentionnée dans la documentation concerne l'absence de négation. Une forme restreinte de négation (appelée graphes polarisés) pourra néanmoins être ajoutée sans perturber l'équilibre du système.

Il y a également la possibilité de créer des "contextes" en imbriquant les graphes ER (un graphe ER est alors le référent d'une boîte-entité). Cependant on n'obtient pas forcément toute l'expressivité qu'on pourrait attendre d'un modèle in-the-box / out-of-the-box.

SpiceGuid SpiceGuid il y a plus d'1 an , modifié il y a plus d'1 an

Après presque 1 mois d'errances ERic a enfin une (modeste) feuille de route vers la version 0.2b :

fam_add

 Un nouveau type de base: les nombres réels flottants.
 
 Deux annotations pour mieux documenter les relations :
 

fam_add

  La barre verticale symbolise un miroir, elle sépare un couple de relations inverses comme

ParentOf|ChildOf  SalariedOf|EmployerOf
fam_add

  L'encadrement par un tiret symbolise une relation réciproque (bidirectionnelle) comme

-Spouse- -Sibling- -Twin- -Friend- -Associate- -Colleague- -Rival-

Ce que j'ai appris pendant ce mois d'inactivité

J'ai compris qu'il n'y aurait pas d'extension miraculeuse pour rendre ERic plus "intelligent". À partir de maintenant tout ce que j'ai à faire n'est plus que maintenance, documentation, ergonomie, interface graphique, client/serveur,...

En résumé, même s'il reste encore à faire quelques morceaux assez consistants, la matière principale est déjà là. Tout le reste n'est qu'extensions d'un proof-of-concept vers un logiciel complet/efficace/convivial. Est-ce vraiment ce que je souhaitais au départ ? Pas vraiment. Tout en sachant qu'il y avait bien une limite indépassable, je m'étais bercé d'illusions en fantasmant une escalade d'IA toujours plus sophistiquées. En fait d'escalier il ne me reste plus que deux ou trois marches à gravir avant d'arriver à un "plateau" d'intelligence. Tant pis pour la "créativité orgasmique". J'ai fini de m'amuser. Cette fois-ci j'ai vraiment décidé d'aller jusqu'au bout, c'est-à-dire un logiciel utilisable avec comme but ultime la viabilité commerciale. Pas seulement un programme pour me faire plaisir mais pour une fois un programme socialement utile (enfin j'espère).

Si j'arrive finalement à faire de la recherche appliquée en OCaml sans mourir de faim et de froid, ce sera déjà pas si mal.

Quant à ceux (ici ou là), que je suspecte de vouloir faire de la recherche fondamentale, je dis ceci : regardez encore une fois Spiderman II sourire3

SpiceGuid il y a plus d'1 an

Premier problème avec l'extension aux nombres réels flottants.

ERic dit que 2.21 GigaWatt ça n'est pas la même chose que 2210 MegaWatt ou que 2.21e9 Watt parce que :

  • 2.21 ≠ 2210 ≠ 2.21e9 , ça n'est pas le même référent
  • GigaWatt ≠ MegaWatt ≠ Watt , ça n'est même pas le même concept
  • ça n'est pas le même concept ni le même référent ⇒ conclusion de l'IA : ça n'est pas du tout la même chose (tout comme 3 patates ça n'est pas la même chose que 5 carottes)

Crash ERic au tapis. 

En fait le problème existait déjà avec les entiers : 1000 Meter1 KiloMeter. C'est juste que je m'en rends compte que maintenant.

Sbirematqui il y a plus d'1 an

Peut-être une gestion différente des unités pourrait résoudre ce problème... En eux-même, les concepts "Megawatt" "Gigawatt" "watt" sont les même, un unique concept "watt" avec un préfixe "mega" ou un préfixe "giga" ou préfixe "rien du tout"...

http://fr.wikipedia.org/wiki/Pr%C3%A9fixes_du_syst%C3%A8me_international_d%27unit%C3%A9s#Pr.C3.A9fixes_courants

Le principe est là, tu as le concept "GigaWatt", tu peux y reconnaître "Watt" avec un préfixes "Giga", or, si ton concept "Giga" existe déjà et indique à l'IA qu'un "Giga-{quelque chose}" équivaut à un "1000000000 x {quelque chose}", elle pourra identifier que ton "2.21 GigaWatt" est la même chose que ton "2210 MegaWatt" ou même ton "2210000000 Watt".

Dans ta langue simplifié du monde de l'entité-relation, il est peut-être temps d'introduire des suffixes et préfixes pour nuancer relations, concepts et référents, apportant peut-être un petit plus "d'intelligence"...

Beschrelle a écrit :

"

Les préfixes se placent devant le radical et ne changent pas la nature des mots :
Par exemple, ordinaire est un adjectif , il en est de même pour extraordinaire ! De même, voir et revoir sont deux verbes, pluie et parapluie sont deux noms.

Les suffixes se placent derrière le radical et selon le suffixe les mots peuvent changer de nature :
Par exemple, rose et roseraie sont deux noms, peur est un nom et peureux est un adjectif, chant est un nom et chantonner est un verbe, énorme (adjectif) énormément (adverbe).

"

Je lance l'idée comme ça, mais fondamentalement ERic est limité par la richesse de son vocabulaire, l'introduction de préfixes et de suffixes suffisamment bien pensés pourrait aisément multiplier les possibilités de son vocabulaire par simple combinaisons...

(Simple idée en l'air qui me passe par la tête, c'est toi qui fait ce que tu veux...)

Après, sur l'interface client-serveur, y'a quelque chose de (très) rudimentaire à l'aide de deux sockets qui rendrait ERic utilisable dès aujourd'hui :

  1. Un socket qui attend un paquet "instruction", une requête pour ERic, requête de syntaxe strictement équivalente à celle déjà présente dans la ligne de commande.
  2. Un socket qui renvoie à celui qui a envoyé l'instruction à ERic le contenu de la réponse, avec la même syntaxe que celle déjà présente.

C'est fortement archaïque, mais pour un premier pas vers l'utilité, c'est déjà considérable. Après, je dis pas ça en désintéressé, à partir de ce système simple, il est aisé de concevoir quelques fonctions PHP pour interfacer un site web avec un ERic. icon_lol

(Non, je ne suis pas objectif, simplement de passage)

P.S. : Nanaaaan, la recherche fondamentale, c'est devenu bien loin de mon orientation, un peu de sérieux, que diable !

SpiceGuid il y a plus d'1 an

merci

De t'intéresser à mes petites misères informatiques.

Un système de préfixes / suffixes, j'y avais pensé. 

Alors pourquoi est-ce que je ne le fais pas ?

Parce que l'intelligence ce n'est pas seulement l'expressivité. Il y a un compromis à faire entre expressivité et computabilité. Quand tu augmente l'expressivité générale tu diminue la computabilité générale. Or le critère qui compte vraiment c'est la computabilité. Il ne sert à rien de pouvoir tout exprimer si tu ne peux plus rien calculer.

Ceci veut dire que pour retomber sur mes pattes je devrais :

  • créer un sous-système "mesure" pour éviter la contagion de l'expressivité additionnelle à l'ensemble du système
  • lui autoriser les préfixes du genre nano-micro-kilo-méga-giga-tera-... avec la sémantique quantitative adéquate
  • ça ne vaut pas vraiment le coup pour un programme qui ne se veut pas scientifique, qui est incapable d'évaluer 1 + 1 ou 2 > 1

D'autre part la question des préfixes / suffixes est plus générale, avec les concepts Much et Little on peut dériver Too-Much, Too-Little, Very-Much, Very-Little, So-Much, So-Little, How-Much, How-Little, ...

En IA, tant qu'on a pas une solution générale pour le problème général, il vaut mieux ignorer les petits ennuis particuliers. Sinon on multiplierait les rustines jusqu'à détruire toute possibilité de calcul. Et c'est très vite fait car la calculabilité n'est pas universelle, elle n'est pas la règle, elle est l'exception. Bref elle est fragile, il faut la préserver à tout prix.

Si la langue du monde de l'entité-relation est simplifiée, et même simpliste, c'est justement à dessein. Ça n'est pas pour le plaisir de se brider. Le plus important c'est que les limitations soit bien documentées pour que l'utilisateur n'ait pas de mauvaises surprises au dernier moment.

PS: je suis vraiment désolé pour l'absence de chaussettes, si tu veux tu peux aller sur le forum et créer un fil de protestation "On se gèle les pieds, on veut des chaussettes!" Smile

Ou, encore mieux, tu peux contacter les chameliers du SdZ (il y en a tout plein dans autres langages) et leur proposer d'ajouter des chaussettes.

SpiceGuid il y a plus d'1 an

ERic v0.2b : Fait  

Il va me falloir une nouvelle feuille de route Smile

SpiceGuid SpiceGuid il y a plus d'1 an

Juste deux images pour vous montrer l'expressivité d'ERic.

back to the future
back to the future movie

Après si vous préférez UML c'est votre droit le plus entier icon_razz

SpiceGuid SpiceGuid il y a plus d'1 an , modifié il y a plus d'1 an

Vous pouvez à présent consulter la documentation en ligne.

(@TSG attention ça pique les yeux icon_wink)

SpiceGuid SpiceGuid il y a plus d'1 an , modifié il y a plus d'1 an

Bilan provisoire

Presque une semaine après le lancement du projet.

J'ai utilisé à peu près tous les canaux de communications raisonnables, c'est-à-dire sans en faire trop, quitte à ne pas en faire assez.

Pour l'instant :

  • je n'ai eu aucun retour utilisateur
  • j'ai reçu un courriel d'un autodidacte me demandant si ERic est capable de raisonner (la réponse est non évidemment, dans le cas contraire ERic serait un être doté de raison)
  • je suis à cours de feuille de route

Le dernier point est le plus pénible car ERic est un projet que j'aimerais bien poursuivre. Les possibilités d'extension sont multiples mais (à partir de maintenant) elles peuvent s'exclure mutuellement. J'entrevois quatre issues possibles :

  1. décider d'une extension "raisonnable" en faisant le pari que ça ne mène pas à une impasse (impossibilité d'ajouter d'autres extensions)
  2. refactoriser la conception pour rendre ERic "extension neutral", les extensions deviendraient des composants enfichables pour faire un logiciel à la carte (toutefois c'est hyper-complexe et ça pénalise la performance)
  3. faire appel aux conseils d'un gourou (un mentor, une personne reconnue dans le domaine de la représentation des connaissances)
  4. continuer à communiquer, à promouvoir, jusqu'à trouver une niche applicative puis se laisser guider par des demandes communautaristes

Ou bien cinquième option : le projet est mort-né icon_frown

Ertaï il y a plus d'1 an

J'aimerais connaître la bonne réponse à ton choix d'issues, malheureusement je crois que je serais dans la même incertitude si je me retrouvais dans le même cas que toi.

Je pense quand même que j'essaierai de rendre mon programme extensible génériquement. Comme tu peux décider du niveau d'imbrication des extensions dans ton programme principal, tu peux choisir le niveau de complexité ajouté.

Et si tu te retrouves trop limité par une de tes propres extensions, alors rien ne t'empêche de revoir le système d'extension.

SpiceGuid il y a plus d'1 an

Comme l'inaction commençait à trop me peser je viens d'opter pour la requête au(x) gourou(s).

On va bien voir ce que ça donne. Même si un gourou ne se sent pas concerné il a toujours autour de lui une kyrielle d'étudiants/doctorants qui se feront un plaisir de m'expliquer comment ERic est laaaaaaaaaaargement améliorable.

SpiceGuid il y a plus d'1 an

En attendant qu'une féministe du forum (Daenerys es-tu là?) me donne le féminin de gourou (oui j'ai cherché dans un dictionnaire, gourou n'a pas de féminin, c'est carrément sexiste) on va dire que j'ai contacté la Grande-exécutrice des Graphes-conceptuels.

Spoiler (Sélectionnez le texte dans le cadre pointillé pour le faire apparaître)

Guilde : Graphes-conceptuels
Rang : Grande-exécutrice
Faction Préférée : Graphes-biparti
Résidence Préférée : Subsomption, raisonnement automatique
Rôle : Grande-ordonnatrice
Familiers et montures : C++, Java

Un bisou de chameau baveux bisou pour celui ou celle qui trouvera le nom IRL de la Grande-exécutrice des Graphes-conceptuels. Envoyez vos propositions par MP.

Comme je n'ai pas encore reçu de réponse j'en conclus que :

  • je n'en recevrai jamais, ces personnes ne sont jamais vraiment en vacances, elles restent toujours connectées et leur boîte-à-lettres est toujours pleine
  • ces personnes trient leurs courriels au quotidien, si on n'a pas de réponse dans les 24h c'est que le courriel est déjà dans la corbeille

Et vu que ma documentation est 100% en français ça me limite pas mal le nombre de contacts possibles à l'étranger. Donc on va dire qu'il ne me reste plus que 3 options d'évolution. D'autre part je n'ai toujours aucun utilisateur (déclaré) ce qui fait d'ERic un parfait inutilitaire en puissance. Si je ne me bouge pas dans quelques semaines ERic sera un projet zombie. D'ailleurs developpez.net met en archives les projets sans actualité quand le forum est sans activité (sachant que le mien est carrément vide blaicon15 ça se présente mal).

Fausse bonne idée : faire une interface graphique.

Pourquoi c'est une mauvaise idée :

  • parce qu'ERic est une sorte de langage de programmation déclaratif, sa forme naturelle c'est la notation textuelle.
  • à partir de plus d'une vingtaine de boîtes il devient difficile d'arranger les boîtes dans l'espace 2D tout en laissant assez de place pour le cheminement des multiples connexions qui doivent relier les boîtes entre elles. en résumé la forme graphique est intuitive pour la lecture mais contre-intuitive pour l'écriture (pour la notation textuelle c'est le contraire).
  • la définition que se fait un internaute d'une "base de connaissance" ressemble plus à un wiki illustré qu'à une structure de données informatique. par conséquent il est inutile de chercher à convaincre un public qui est perdu par avance.

SpiceGuid SpiceGuid il y a plus d'1 an

fam_user_comment

 Le forum DVP de discussion du projet ERic est maintenant actif.

fam_page_go

Vous y trouverez toutes les informations pour installer / utiliser ERic v0.2a

Sbirematqui il y a plus d'1 an

Yeah, trop bien ! \ô/

*découvre la signature de SpiceGuid*

Yeaaaah, trop bieeeen ! \ô,ô/

*va bouquiner ces articles*

:: Utilisateurs Réfugiés SpiceGuid ► Le projet ERic

© Copyright 2002-2013 Aeriesguard.com - Mentions légales
Aerie's Guard V 7.0
réalisé par Ertaï, designé par Ivaldir, illustré par Izual et Sophie Masure
Famfamfam