зеркало из
https://github.com/M82-project/DIMA.git
synced 2025-10-29 05:04:18 +02:00
Коммит
fb8ef33b28
@ -86,6 +86,8 @@ const DIMA_ENHANCED_KEYWORDS = {
|
||||
],
|
||||
},
|
||||
temporal: ["imminent", "proche", "bientôt", "soon", "approaching"],
|
||||
formal: ["situation critique", "état d'urgence", "alerte maximale"],
|
||||
informal: ["c'est la cata", "on est foutu", "ça craint"],
|
||||
},
|
||||
patterns: [
|
||||
/(?:alerte|alert|warning|attention)\s+(?:rouge|red|maximum)/i,
|
||||
@ -126,6 +128,43 @@ const DIMA_ENHANCED_KEYWORDS = {
|
||||
/(?:expire|ends?)\s+(?:bientôt|soon|today|demain|tomorrow)/i,
|
||||
],
|
||||
},
|
||||
TE0251: {
|
||||
core: ["tout le monde", "consensus", "everyone", "la plupart", "most people", "nous pensons", "we think"],
|
||||
variants: {
|
||||
universal_claims: [
|
||||
"personne ne peut nier",
|
||||
"nobody can deny",
|
||||
"c'est du bon sens",
|
||||
"it's common sense",
|
||||
"chacun sait que",
|
||||
"everyone knows"
|
||||
],
|
||||
majority_appeals: [
|
||||
"la majorité pense",
|
||||
"the majority thinks",
|
||||
"l'opinion générale",
|
||||
"most agree"
|
||||
]
|
||||
},
|
||||
patterns: [
|
||||
/(?:tout le monde|everyone)\s+(?:sait|knows?|dit|says?)/i,
|
||||
/(?:la plupart|most)\s+(?:des gens|people)\s+(?:pensent|think)/i
|
||||
],
|
||||
},
|
||||
|
||||
TE0422: {
|
||||
core: ["autorité", "authority", "expert", "spécialiste", "specialist", "professeur", "professor", "docteur", "doctor", "officiel"],
|
||||
variants: {
|
||||
titles: ["Dr.", "Pr.", "Prof.", "PhD", "expert reconnu", "spécialiste renommé"],
|
||||
institutions: ["selon Harvard", "université de", "une étude de", "des chercheurs de"],
|
||||
appeal_phrases: ["selon les experts", "la science prouve", "études montrent", "scientifiquement prouvé"]
|
||||
},
|
||||
patterns: [
|
||||
/(?:selon|according to)\s+(?:les?\s+)?(?:experts?|spécialistes?)/i,
|
||||
/(?:étude|study|research)\s+(?:révèle|shows?|démontre)/i,
|
||||
/(?:Dr\.|Prof\.|PhD)\s+\w+\s+(?:affirme|says?)/i
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
const CONTEXT_PATTERNS = {
|
||||
|
||||
@ -121,6 +121,8 @@ const DIMA_TECHNIQUES = [
|
||||
"case",
|
||||
"témoignage",
|
||||
"testimony",
|
||||
"histoire vraie", "true story", "vécu", "expérience", "prenons l'exemple",
|
||||
"take the example","illustration", "démonstration", "spécimen", "par exemple", "for example"
|
||||
],
|
||||
weight: 1.0,
|
||||
type: "technique",
|
||||
@ -132,10 +134,8 @@ const DIMA_TECHNIQUES = [
|
||||
phase: "Detect",
|
||||
description: "Répétition pour créer une familiarité artificielle",
|
||||
mots_cles: [
|
||||
"encore",
|
||||
"again",
|
||||
"toujours",
|
||||
"always",
|
||||
"encore et toujours",
|
||||
"again and again",
|
||||
"répétition",
|
||||
"repetition",
|
||||
"familier",
|
||||
@ -159,6 +159,8 @@ const DIMA_TECHNIQUES = [
|
||||
"frequent",
|
||||
"épidémie",
|
||||
"epidemic",
|
||||
"sans cesse", "constantly", "en permanence", "all the time", "se répand", "spreading",
|
||||
"prolifère", "multiplies", "tendance", "trend", "phénomène", "phenomenon", "on en parle partout"
|
||||
],
|
||||
weight: 1.1,
|
||||
type: "technique",
|
||||
@ -174,8 +176,7 @@ const DIMA_TECHNIQUES = [
|
||||
"same as",
|
||||
"cela rappelle",
|
||||
"déjà vu",
|
||||
"par ailleurs",
|
||||
"contexte",
|
||||
"dans ce contexte",
|
||||
],
|
||||
weight: 0.9,
|
||||
type: "technique",
|
||||
@ -198,6 +199,8 @@ const DIMA_TECHNIQUES = [
|
||||
"shocking",
|
||||
"inhabituel",
|
||||
"unusual",
|
||||
"surprenant", "surprising", "inattendu", "unexpected", "anormal", "abnormal", "hors norme", "extraordinary",
|
||||
"stupéfiant", "mind-blowing", "hallucinant", "unbelievable", "jamais vu", "never seen", "renversant"
|
||||
],
|
||||
weight: 1.3,
|
||||
type: "technique",
|
||||
@ -232,8 +235,11 @@ const DIMA_TECHNIQUES = [
|
||||
phase: "Detect",
|
||||
description: "Mise en avant de l'unicité pour marquer les esprits",
|
||||
mots_cles: [
|
||||
"unique",
|
||||
"seul",
|
||||
"uniquement",
|
||||
"seuleument",
|
||||
"rien de comparable",
|
||||
"sans comparaison",
|
||||
"sans équivalent",
|
||||
"only",
|
||||
"exclusif",
|
||||
"exclusive",
|
||||
@ -453,6 +459,9 @@ const DIMA_TECHNIQUES = [
|
||||
"selon une étude",
|
||||
"un témoignage",
|
||||
"un témoin",
|
||||
"prenons l'exemple de", "regardez le cas de", "voici l'histoire de", "j'ai un ami qui", "mon voisin",
|
||||
"cela prouve que", "this proves that", "la preuve c'est que", "comme le montre", "cet exemple illustre",
|
||||
"une connaissance", "dans ma famille", "someone I know", "consider the case of"
|
||||
],
|
||||
weight: 1.4,
|
||||
type: "technique",
|
||||
@ -483,15 +492,13 @@ const DIMA_TECHNIQUES = [
|
||||
"stéréotype",
|
||||
"les étrangers",
|
||||
"les immigrants",
|
||||
"all the",
|
||||
"toujours",
|
||||
"always",
|
||||
"jamais",
|
||||
"never",
|
||||
"en général",
|
||||
"in general",
|
||||
"les français",
|
||||
"americans",
|
||||
"tous les", "toutes les", "every single", "sans exception", "généralement", "typically",
|
||||
"ils sont tous", "comme tous les", "usually they", "systématiquement", "invariablement",
|
||||
"à chaque fois", "every time", "c'est toujours comme ça", "always the same", "c'est typique des"
|
||||
],
|
||||
weight: 1.6,
|
||||
type: "technique",
|
||||
@ -544,6 +551,9 @@ const DIMA_TECHNIQUES = [
|
||||
"suffit de",
|
||||
"just need to",
|
||||
"solution",
|
||||
"basique", "basic", "élémentaire", "elementary", "logique", "logical", "naturel", "natural",
|
||||
"sans effort", "effortless", "automatique", "automatic", "c'est simple", "it's simple",
|
||||
"il suffit de", "la solution est simple", "the solution is simple"
|
||||
],
|
||||
weight: 1.3,
|
||||
type: "technique",
|
||||
@ -659,7 +669,9 @@ const DIMA_TECHNIQUES = [
|
||||
"sources confirment",
|
||||
"rien ne démontre",
|
||||
"hasard ?",
|
||||
"les faits",
|
||||
"les faits rapportés",
|
||||
"selon certains", "some say", "il paraît que", "apparently", "on dit que", "they say",
|
||||
"j'ai entendu dire", "I heard", "des experts", "some experts", "certaines sources", "various sources"
|
||||
],
|
||||
weight: 1.2,
|
||||
type: "technique",
|
||||
@ -692,6 +704,9 @@ const DIMA_TECHNIQUES = [
|
||||
"image",
|
||||
"imaginez",
|
||||
"supposons",
|
||||
"visualisez", "visualize", "pensez à", "think about", "ne trouvez-vous pas", "don't you think",
|
||||
"n'est-ce pas", "isn't it", "si jamais", "what if", "dans l'hypothèse", "hypothetically",
|
||||
"cela rappelle", "this reminds", "picture this"
|
||||
],
|
||||
weight: 1.1,
|
||||
type: "technique",
|
||||
@ -715,6 +730,9 @@ const DIMA_TECHNIQUES = [
|
||||
"i was right",
|
||||
"évident",
|
||||
"obvious",
|
||||
"valide", "validates", "corrobore", "corroborates", "je le savais", "I knew it", "exactement", "exactly",
|
||||
"forcément", "inevitably", "logiquement", "logically", "cela confirme", "this confirms",
|
||||
"comme attendu", "as anticipated", "évidemment", "obviously"
|
||||
],
|
||||
weight: 1.5,
|
||||
type: "technique",
|
||||
@ -770,6 +788,7 @@ const DIMA_TECHNIQUES = [
|
||||
description: "Mise en avant des bénéfices personnels pour motiver l'action",
|
||||
mots_cles: [
|
||||
"vous bénéficiez",
|
||||
"vous gagnez",
|
||||
"you benefit",
|
||||
"votre avantage",
|
||||
"your advantage",
|
||||
@ -828,11 +847,13 @@ const DIMA_TECHNIQUES = [
|
||||
"confident",
|
||||
"sûr",
|
||||
"sure",
|
||||
"certain",
|
||||
"capable",
|
||||
"expert",
|
||||
"maîtrise",
|
||||
"mastery",
|
||||
"assuré", "assured", "convaincu", "convinced", "spécialiste", "specialist", "professionnel", "professional",
|
||||
"indubitable", "undoubtable", "incontestable", "unquestionable", "je suis sûr", "i am sure",
|
||||
"sans aucun doute", "without a doubt", "évidemment", "obviously"
|
||||
],
|
||||
weight: 1.2,
|
||||
type: "technique",
|
||||
@ -852,6 +873,9 @@ const DIMA_TECHNIQUES = [
|
||||
"invest more",
|
||||
"ne pas abandonner",
|
||||
"don't give up",
|
||||
"persévérer", "persevere", "tenir bon", "hold on", "doubler la mise", "double down",
|
||||
"aller plus loin", "go further", "s'engager", "commit", "ne pas lâcher", "don't quit",
|
||||
"continue à", "continue to", "keep going", "coûte que coûte", "quoi qu'il en coûte"
|
||||
],
|
||||
weight: 1.1,
|
||||
type: "technique",
|
||||
@ -893,6 +917,9 @@ const DIMA_TECHNIQUES = [
|
||||
"status quo",
|
||||
"comme ça",
|
||||
"as is",
|
||||
"stabilité", "stability", "équilibre", "balance", "préserver", "preserve", "garder", "keep",
|
||||
"résister au changement", "resist change", "mieux vaut rester", "better to stay",
|
||||
"ne changeons rien", "let's not change", "comme avant", "as before"
|
||||
],
|
||||
weight: 1.0,
|
||||
type: "technique",
|
||||
|
||||
@ -130,8 +130,21 @@ class ContentExtractor {
|
||||
"advertisement",
|
||||
"social",
|
||||
"share",
|
||||
"cookie", "popup", "modal", "overlay", "banner", "newsletter",
|
||||
"related", "suggest", "recommend", "widget", "promo", "promotion",
|
||||
"comment", "rating", "review", "breadcrumb", "pagination", "tag",
|
||||
"metadata", "byline", "author-bio", "subscription", "paywall"
|
||||
];
|
||||
const skipIds = ["nav", "menu", "footer", "header", "sidebar", "comments","cookie-banner", "newsletter", "popup", "modal", "overlay",
|
||||
"related-articles", "advertisement", "social-sharing"];
|
||||
const skipAttributes = [
|
||||
'data-module="Advertisement"',
|
||||
'data-component="SocialShare"',
|
||||
'data-track-component="Newsletter"',
|
||||
'role="banner"',
|
||||
'role="navigation"',
|
||||
'role="complementary"'
|
||||
];
|
||||
const skipIds = ["nav", "menu", "footer", "header", "sidebar", "comments"];
|
||||
|
||||
const className = element.className?.toLowerCase() || "";
|
||||
const id = element.id?.toLowerCase() || "";
|
||||
@ -139,7 +152,10 @@ class ContentExtractor {
|
||||
return (
|
||||
skipClasses.some((skip) => className.includes(skip)) ||
|
||||
skipIds.some((skip) => id.includes(skip)) ||
|
||||
skipAttributes.some((attr) => element.getAttribute(attr.split('=')[0]) === attr.split('=')[1]?.replace(/"/g, '')) ||
|
||||
element.getAttribute("aria-hidden") === "true" ||
|
||||
element.getAttribute("role") === "banner" ||
|
||||
element.getAttribute("role") === "navigation" ||
|
||||
getComputedStyle(element).display === "none"
|
||||
);
|
||||
}
|
||||
|
||||
@ -378,6 +378,17 @@ class TechniqueAnalyzer {
|
||||
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
||||
}
|
||||
|
||||
calculatePositionWeight(position, textLength) {
|
||||
const relativePosition = position / textLength;
|
||||
// Boost pour les éléments en début de texte (titres, accroches)
|
||||
if (relativePosition < 0.15) return 1.4;
|
||||
// Boost modéré pour le premier tiers
|
||||
if (relativePosition < 0.33) return 1.1;
|
||||
// Boost pour la fin (conclusions, appels à l'action)
|
||||
if (relativePosition > 0.85) return 1.2;
|
||||
// Poids normal pour le milieu
|
||||
return 1.0;
|
||||
}
|
||||
calculateRiskLevel(score) {
|
||||
if (score < 15) return "Faible";
|
||||
if (score < 30) return "Modéré";
|
||||
|
||||
Загрузка…
x
Ссылка в новой задаче
Block a user