UNPKG

@landscape/wordlab

Version:

Wordlab is a vector3D text classifier that allow you to sort indexs by distance writted for French

149 lines (114 loc) 5.78 kB
# WordLab <img src="./assets/wordlab.svg" style="width:200px;" width="200"> > Attention! > WordLab est une approche totalement expérimentale de traitement d'indexes sur des jeux de textes. > Je n'assure aucune maintenance du package bien que je l'utilise pour mes propres besoins ## C'est quoi ? > Pour commencer ce README est en Français, étonant non ? > > WordLab c'est un moyen de Classifier des données textuelles dans la langue de Molière... ## Comment ça fonctionne ? > Tu envoies un gros JSON avec ton bordel en entrée > Et WordLab te retourne un tout petit object en sortie avec l'ensemble de tes Textes classés par index sous forme de vecteurs 3D. > C'est une sorte de mix entre Word2Vec et un KNN > Maintenant que tu as ton jeu de données spacial, tu peux demander à WordLab pas mal de trucs comme : > - Donne moi les textes les plus proches d'une recherche par mots clés > - Liste moi les textes par ordre de similitude > - Et beaucoup d'autres trucs plutôt cool dont nous parlerons sur https://bige-start.web.app > Le principal UseCase de WordLab c'est d'orienter des contenus selon le contexte d'utillisateurs > En somme ça permet de déplacer des vecteurs et de connaître leurs positionnement dans un espace 3D > Donc on peu avec WordLab créer différents contexts de façon à toujours répondre de façon pertinente > Et sans appels réseau surtout, WordLab ça sert à savoir quoi afficher à quel moment et pour qui... > Pour plus d'infos je suis en train d'écrire un article sur WordLab ici : > [LIRE L'ARTICLE](https://bige-start.web.app/feeds/wordlab-la-base-de-donnee-vectorielle-cree-specialement-pour-bige) ## installation > Classique tu ajoute le package à ton projet ``` npm i @landscape/wordlab --save ``` ## Exemple > Ce qu'il te faut c'est un jeu de données en entrée pour donner à manger à WordLab > donc admettons tu as des articles de blogs dans un json qui ressemble à ça : ```javascript const articles = [ { "id": 1, "label": "Nom de ton premier article", "short_deescription": "description courte de ton permier article", "intro": "Long texte d'introduction de ton premier article", "categorie": "Ta catégorie 1" }, { "id": 2, "label": "Nom de ton second article", "short_deescription": "description courte de ton second article", "intro": "Long texte d'introduction de ton second article", "categorie": "Ta catégorie 2" }, ... ] ``` > Avec ton jeu de données tu vas créer ton dataset (des vecteurs 3D relatifs) ```javascript const DB = new WordLab( articles, { scale: 100, // la taille de tes indexs keywords: ["label", "short_description", "intro"], // la liste des labels de type String à parser layers: { // les calques souhaités categories: "category" }, // words is setted by default index: "categories", // le nom de ton index (lorsqu'il n'y en a qu'un seul, oui oui on peu en avoir plusieurs...) clean: true // boolean that return only last position or each vectors evolutions }, function(e, val) { console.log("WordLab Logger => ", e, val); }.bind(this) ); this.wordLabDataset = this.DB.trainDataset(); ``` > Maintenant que le plus difficile est fait, imagine que tu cherche un article par mot clé ```javascript let order = DB.search("second"); ``` > le fait de rechercher le mot "second" va te retourner un objet comme suit : ```json { "2": { "distance":0, "weight":100 }, "1": { "distance":100, "weight":0 } } ``` > C'est tout, WordLab te retourne tes articles classés par ID ordonancés par distance et poids de l'index > Forcément ici on a que deux articles donc on a des poids marqués à l'extrême 0 ou 100... <div style="display:inline-flex"> <img src="./assets/wordlab_bilateration.svg" style="width:200px;" width="200"/> <img src="./assets/wordlab_trilateration.svg" style="width:200px;" width="200"/> <img src="./assets/wordlab_quadrilateration.svg" style="width:200px;" width="200"/> <img src="./assets/wordlab_search_resuult.svg" style="width:200px;" width="200"/> </div> ## WordLab offre le bon contenu au bon moment au bon utiliisateur > Lorsque WrodLab est monté sur un front-end, vous pouvez y ajouter différents vecteurs à la demande par exemple un utilisateur, > considérons qu'un utilisateur entre sur votre site et commence à naviguer il va lire un article ou taper unue recherche ou encore effectuer tout autre type d'opérations > vous pourriez essayer de traiter ça en envoyant des paquets de données sur sa navigation et orienter vos contenus en fonction, > seulement ça sous entend de faire des traitements lourds côté serveur et comme (je vous le souhaite) votre serveur est déjà en bout de piste > ça peut rapidiement devenir très couteux... > WordLab va orienter vos utiliisateurs sans traitements serveur en le déplaçant de façon logique au travers de vos contenus. <div style="display:inline-flex"> <img src="./assets/wordlab_user_1.svg" width="200"/> <img src="./assets/wordlab_user_2.svg" width="200"/> <img src="./assets/wordlab_user_3.svg" width="200"/> <img src="./assets/wordlab_user_4.svg" width="200"/> </div> ## WordLab travaille aussi sur des indexes multiples > Rechercher sur un index c'est cool mais sur une multitude c'est encore mieux ! > C'est en cours de test mais imaginez la pertinence d'une liste d'articles sur un site e-commerce sans utiliser de puissance de calcul sur votre serveur ! > C'est ce que Bige WordLab est en train de tester pour vous... <img src="./assets/wordlab_complex_indexes.svg"/> > Author : Simon Delamarre > License : MIT