[Projet : Écriture automatique] Problème algorithmique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Projet : Écriture automatique] Problème algorithmique

Re: [Projet : Écriture automatique] Problème algorithmique

par tigo » 18 mai 2016, 12:31

Ce que tu veux faire est passionnant, ça me fait penser aux robots qui maintenant rédigent les articles simples à la place des journalistes pour les poster sur internet (entendu à la radio).
Par contre ça ce classe dans la catégorie intelligence artificielle. A l'époque j'avais pas trouvé trop d'infos sur comment ils implémentent ça concrètement.
La seule chose avec laquelle j'ai pu expérimenter et qui ce rapproche un peu c'est l'algorithme TF-IDF qui permet de classer des textes par catégories... la c'est abordable même pour les novices mais sans doute très insuffisant.

Peut-être que si tu postais l'adresse de ton blog on trouverait plus de solutions pour t'aider en voyant concrètement quel est le niveau de difficulté à surmonter?

[Projet : Écriture automatique] Problème algorithmique

par zork » 05 mai 2016, 12:37

Bonjour à vous tous,

Je suis entrain de développer un "petit" projet personnel, et je rencontre un soucis. Permettez-moi de vous présenter cela en plusieurs étapes.

Le but de ce billet est double pour moi :
- Coucher en phrases mon projet et mes soucis me permettra peut-être d'y voir plus clair,
- Trouver de l'aide, de bonnes idées, voir des solutions à mon souci.

Le projet : Écrire du contenu automatiquement

Ce projet est né de deux raisons :
- mon envie de reprendre le développement, mais deux obstacles sont présents : je n'ai jamais été vraiment un bon développeur, et j'ai des connaissances en mathématique plus que limités.
- automatiser un processus qui me prend vraiment beaucoup de temps, et que j'estime fortement répétitif.

À partir de plusieurs sites, je fais régulièrement des billets de blog, en regroupant ces éléments sous la forme de listing. Le but étant de faire des regroupements "logiques" entre ces différents éléments venus d'autres sites. Après plusieurs années à faire cela, je ne me suis aperçu que ce travail était plus que répétitif, et l'idée de l'automatiser m'est venu.

Chaque élément du listing obtenu fonctionne toujours de la même manière :
- une capture d'écran,
- le titre de l'élément,
- un descriptif d'environ ~600 mots.

C'est sur la partie "descriptif" que je travail en ce moment.

Je me suis aperçu que je travaillais toujours de la même manière pour faire ce descriptif :
- je regroupe différentes URLs en fonction d'une thématique (qui varie le plus possible),
- je m'appuie sur ce le texte présent,
- je recherche les éléments discriminant du texte (ce qui distingue cet élément des autres),
- je crée mon texte en fonction de la thématique, et de ce que je peux à la fois dire de l'élément que je traite, mais aussi des autres éléments présents dans mon listing, histoire de pas me répéter plus que cela.

Pour information, je me contente d'être capable de générer du texte dans une thématique que j'ai "locké". J'entends par la que l'introduction de la notion de contenu généré à partir d'une thématique non déterminée à l'avance est la deuxième étape pour moi. À l'heure actuelle, je maitrise cette thématique, et il est fait à partir d'un élément qui n'influence pas le dit contenu.

Après des centaines de billets écris, une conclusion s'impose, tout cela fini par tourner en rond. Non pas que cela soit négatif en soit, mais cela est à la fois lassant, et je fini par me dire qu'une machine ferait aussi bien ce travail que moi.

Je ne suis ni un génie de la programmation, ni des maths. Donc quand je parle de créer du contenu "automatiquement", je ne prêtant pas à ce que ce texte soit créé ex nihilo.

L'idée d’algorithme de base

L'idée en soit ne me semblait pas terriblement complexe :
- J'ai des phrases préfabriquées,
- J'analyse chaque éléments,
- Je fais matcher les bonnes phrases au bon éléments.

Mais... Parce qu'il y a un mais, sinon ce ne serait pas drôle, je ne souhaite pas qu'un même élément se "dirige" toujours vers la même phrase. Il faut que le texte généré puisse être différent à chaque génération de texte, et qu'en plus, il tienne compte des autres éléments qui constituerons l'ensemble final.

Où j'en suis...
Mon code est capable de récupérer les URLs par lui-même, et de venir récupérer tout le contenu que j'estime intéressant pour la prise de décision.
Ce contenu est parsé pour venir constitué un très gros tableau "décisionnel". Pourquoi ce tableau ? Car j'ai tenté de comprendre comment je fonctionnais pour trouver ce dont j'aillais parler dans chaque thème. Hormis la problématique de la contextualisation par la thématisation, je me suis rendu compte que je faisais un travail mental qui reposais toujours sur le même schéma : je regroupe et priorise les informations que je peux récupérer. Par exemple :
- À qui s'adresse cet élément ?
- À quel type de métier ?
- Que puis-je faire avec ?
- Que me propose de faire cet élément ?
- Que puis-je en faire ?
- ...

J'ai synthétisé tout cela avec des mots que je recherche dans mon contenu. Chaque "question" est un sous-tableau, qui contient une liste de mot. Une fonction me permet de savoir si ce mot est présent, et si c'est le cas, je crée une entrée dans un autre tableau, qui lui en plus de me dire que ce mot est présent, me dit où il a été trouvé. En effet, je recherche ce texte à différent endroits comme :
- le titre de la page,
- la meta-description de la page,
- la partie descriptive,
- des endroits particuliers (comme des colonnes de ces pages qui vont par exemple me donner la catégorie dans laquelle se trouve cet élément).

Je me retrouve à la fin avec un "tableau décisionnel" qui peut varier du tableau "énorme", au tableau pas vraiment balèze.

Je reviens sur ce tableau décisionnel dans un instant.

De l'autre côté, j'ai mes phrases. Histoire que s'y j'ai à "parler" plusieurs fois de la même chose et faire en sorte de ne pas me répéter, j'ai adopté cette stratégie :
- Soit je parle en principale de cette élément discriminant, soit je ne fais que l'aborder rapidement, soit je le regroupe sous une forme de listing.
- J'ai donc plusieurs entrés pour le même élément.
- En plus, j'ai découpé les phrases en plusieurs morceaux, histoire de pouvoir faire des assemblages différents au grès du vent (je rigole, mais pas tant que cela, car pour l'instant, c'est en mode random).

Mon problème
Je souhaite être en mesure de lire ce tableau décisionnel, qu'une fonction me dise l'élément sur lequel faire un focus, ceux qu'ils seraient bien d'aborder aussi, ceux qui pourraient faire l'objet d'un "listing", tout en tenant compte de tous les autres éléments constituant mon billet final.

Mais là, je suis complètement perdu, car ce n'est pas qu'un simple choix en mode random. Je dois à la fois tenir compte de ce qui a "de la valeur", ce qu'il est intéressant de dire sur cet élément, tout en faisant en sorte à la fois de tenir compte de l'ensemble, et en plus de pouvoir être différent si je rappel la création de contenu sur la même liste d'éléments...

Peut-être que randomiser l'ensemble serait une solution... Je ne sais pas. J'ai l'impression que j'aurais une manière plus intelligente de procéder... Plus "logique"... Impression que je n'arrive pas du tout à concrétiser pour l'instant.

Mouarf...

Un grand merci aux rares qui vont lire tout ce que j'ai écris... Parce que ça doit être un peu chiant #-o

Si quelqu'un à des idées, des questions, des réponses... :mrgreen:

PS : Par pitié, ne me parlez pas d'algorithme génétique, ou de réseau de neurones... J'ai tenté d'en comprendre le fonctionnement, mais je suis largement dépassé par le concept même, alors de là à l'implémenter :oops: