| """ |
| Module d'analyse de texte pour détecter automatiquement le type de contrat nécessaire. |
| """ |
|
|
| def analyze_work_description(description): |
| """ |
| Analyse la description fournie par l'utilisateur pour déterminer le type de contrat approprié. |
| |
| Args: |
| description (str): Description fournie par l'utilisateur |
| |
| Returns: |
| list: Liste des types de contrats nécessaires ["Auteur (droits d'auteur)", "Image (droit à l'image)"] |
| """ |
| |
| texte = description.lower() |
| |
| |
| score_auteur = 0 |
| score_image = 0 |
| |
| |
| mots_textuels = ["livre", "roman", "nouvelle", "poème", "article", "essai", "mémoire", "thèse", "scénario", |
| "manuscrit", "rédaction", "texte", "écriture", "publication", "écrit", "éditorial", "blog", |
| "ouvrage", "brochure", "journal", "magazine", "recueil", "rédactionnel"] |
| |
| mots_musicaux = ["musique", "composition", "partition", "chanson", "mélodie", "arrangement", "œuvre musicale", |
| "symphonie", "album", "single", "son", "enregistrement", "morceau", "opus", "instrumental", |
| "concert", "orchestration", "chant", "lyrics", "paroles", "refrain", "harmonie", "acoustique", |
| "piano", "guitare", "violon", "batterie", "chanter", "interprétation musicale"] |
| |
| mots_graphiques = ["peinture", "dessin", "illustration", "graphisme", "logo", "infographie", "design", |
| "tableau", "esquisse", "croquis", "fresque", "œuvre plastique", "affiche", "aquarelle", |
| "sculpture", "gravure", "sérigraphie", "street art", "graffiti", "photographie artistique", |
| "collage", "estampe", "lithographie", "pochette", "couverture"] |
| |
| mots_numeriques = ["logiciel", "site web", "application", "code", "programme", "script", "algorithme", |
| "jeu vidéo", "développement", "appli", "interface", "plateforme", "solution digitale", |
| "nft", "token", "crypto", "blockchain", "web3", "intelligence artificielle", "ia", |
| "données", "base de données", "système", "api", "plugin", "extension", "widget"] |
| |
| mots_architecturaux = ["plan", "maquette", "conception architecturale", "design d'espace", "modélisation 3D", |
| "architecture", "structure", "bâtiment", "édifice", "monument", "urbanisme", |
| "aménagement", "paysagisme", "intérieur", "déco", "décoration"] |
| |
| mots_autres_auteur = ["concept", "idée", "invention", "savoir-faire", "méthode", "formule", "base de données", |
| "compilation", "collection", "œuvre", "création", "synthèse", "travail", "production", |
| "droit d'auteur", "propriété intellectuelle", "copyright", "brevet"] |
| |
| |
| mots_image_personne = ["photographie", "portrait", "silhouette", "apparence", "visage", "corps", "identité visuelle", |
| "selfie", "avatar", "photo d'identité", "figure", "physionomie", "traits", "mannequin", |
| "modèle photo", "acteur", "actrice", "comédien", "comédienne", "figurant", "témoignage vidéo"] |
| |
| mots_image_contexte = ["pose", "séance photo", "shooting", "mannequin", "modèle", "figurant", "mise en scène", |
| "studio photo", "apparition", "photoshoot", "objectif", "capturer", "appareil photo", |
| "caméra", "filmer", "enregistrer", "photographier", "filmer", "enregistrer"] |
| |
| mots_image_visibilité = ["identifiable", "reconnaissable", "apparaître", "figurer", "posant", "visible", |
| "présent", "participation", "exposé", "exhibé", "montré", "droit à l'image", |
| "consentement", "image", "vidéo"] |
| |
| mots_image_supports = ["photo", "image", "pellicule", "cliché", "instantané", "polaroid", "négatif", |
| "diapositive", "tirage", "impression photographique", "portrait", "photomaton"] |
| |
| |
| mots_videos = ["vidéo", "film", "court-métrage", "clip", "documentaire", "reportage", "captation", "tournage", |
| "filmé", "filmage", "enregistrement vidéo", "séquence", "rushes", "montage vidéo", "movie", |
| "cinéma", "réalisation", "vidéaste", "youtubeur", "youtubeuse", "influenceur", "influenceuse", |
| "vlog", "tiktok", "instagram", "content creator", "créateur de contenu"] |
| |
| mots_performances = ["performance", "spectacle", "concert", "prestation", "apparition", "interprétation", |
| "récital", "show", "émission", "interview", "représentation", "apparition publique", |
| "scène", "plateaux", "théâtre", "danse", "chorégraphie", "ballet", "opéra", "music-hall", |
| "one man show", "stand-up", "humoriste", "conférence", "conférencier"] |
| |
| mots_digital_personnel = ["stream", "livestream", "webinaire", "podcast vidéo", "tutoriel vidéo", "cours filmé", |
| "formation vidéo", "diffusion en direct", "chaîne youtube", "vlog", "direct", |
| "twitch", "live", "enregistrement zoom", "vidéoconférence", "stories", "reels"] |
| |
| mots_œuvres_mixtes = ["œuvre audiovisuelle", "multimédia", "installation artistique interactive", |
| "réalité virtuelle", "réalité augmentée", "performance audiovisuelle", "mapping vidéo", |
| "projection", "hologramme", "expo interactive", "jeu immersif"] |
| |
| |
| for mot in mots_textuels + mots_musicaux + mots_graphiques + mots_numeriques + mots_architecturaux + mots_autres_auteur: |
| if mot in texte or any(m in texte for m in mot.split()): |
| score_auteur += 1 |
| |
| |
| for mot in mots_image_personne + mots_image_contexte + mots_image_visibilité + mots_image_supports: |
| if mot in texte or any(m in texte for m in mot.split()): |
| score_image += 1 |
| |
| |
| for mot in mots_videos + mots_performances + mots_digital_personnel + mots_œuvres_mixtes: |
| if mot in texte or any(m in texte for m in mot.split()): |
| score_auteur += 1 |
| score_image += 1 |
| |
| |
| if "chant" in texte or "chante" in texte or "chanson" in texte: |
| score_auteur += 1 |
| if any(mot in texte for mot in ["vidéo", "film", "enregistrement vidéo", "youtube", "clip"]): |
| score_image += 1 |
| |
| if "exposit" in texte: |
| score_auteur += 1 |
| if any(mot in texte for mot in ["photo", "portrait", "modèle", "personne"]): |
| score_image += 1 |
| |
| |
| if "voix" in texte: |
| score_auteur += 1 |
| if "visage" in texte or "image" in texte or "vidéo" in texte: |
| score_image += 1 |
| |
| |
| types_contrat = [] |
| if score_auteur > 0: |
| types_contrat.append("Auteur (droits d'auteur)") |
| if score_image > 0: |
| types_contrat.append("Image (droit à l'image)") |
| |
| |
| if not types_contrat: |
| return ["Auteur (droits d'auteur)", "Image (droit à l'image)"] |
| |
| return types_contrat |
|
|
|
|
| def get_explanation(detected_types): |
| """ |
| Génère une explication claire des types de contrats détectés. |
| |
| Args: |
| detected_types (list): Types de contrats détectés |
| |
| Returns: |
| str: Explication pour l'utilisateur |
| """ |
| if len(detected_types) == 2: |
| return """ |
| J'ai détecté que vous avez besoin d'un **contrat combiné de cession de droits d'auteur et de droits à l'image**. |
| |
| Ce type de contrat est adapté lorsque: |
| - L'œuvre est protégée par le droit d'auteur (texte, musique, design, etc.) |
| - ET l'image d'une personne est visible et exploitée (vidéo, photo, etc.) |
| |
| Vous pouvez modifier cette sélection si nécessaire. |
| """ |
| |
| elif "Auteur (droits d'auteur)" in detected_types: |
| return """ |
| J'ai détecté que vous avez besoin d'un **contrat de cession de droits d'auteur** uniquement. |
| |
| Ce type de contrat est adapté pour les œuvres protégées comme: |
| - Textes, livres, articles |
| - Musiques, compositions |
| - Dessins, peintures, designs |
| - Logiciels, sites web |
| - Et autres créations originales |
| |
| Si votre projet implique également l'image reconnaissable d'une personne, vous pourriez aussi avoir besoin d'un contrat de droits à l'image. |
| """ |
| |
| elif "Image (droit à l'image)" in detected_types: |
| return """ |
| J'ai détecté que vous avez besoin d'un **contrat de cession de droits à l'image** uniquement. |
| |
| Ce type de contrat est adapté lorsque: |
| - L'image ou la vidéo d'une personne est utilisée |
| - La personne est identifiable ou reconnaissable |
| - Il n'y a pas d'œuvre originale protégée par le droit d'auteur |
| |
| Si votre projet implique également une œuvre originale, vous pourriez aussi avoir besoin d'un contrat de cession de droits d'auteur. |
| """ |
| |
| else: |
| return """ |
| Je n'ai pas pu déterminer automatiquement le type de contrat nécessaire. |
| |
| Veuillez sélectionner manuellement: |
| - Contrat de droits d'auteur: pour les œuvres originales (textes, musiques, designs, etc.) |
| - Contrat de droits à l'image: pour l'utilisation de l'image d'une personne |
| - Les deux: si les deux aspects sont présents |
| """ |
|
|