MAJ 4.4.2 - Réglage du coef de similitude minimale pour la recherche

d'un paragraphe par son contenu. Nouveau coef minimal 0.1
This commit is contained in:
pablo rodriguez 2023-01-09 19:11:58 +01:00
parent fd5d3a08ce
commit a36fa21f25
11 changed files with 40 additions and 60 deletions

View File

@ -12,6 +12,6 @@
<classpathentry kind="lib" path="C:/Users/pabr6/git/analyseWriter/MEPTL/miglayout15-swing.jar"/>
<classpathentry kind="lib" path="jgoodies-forms-1.8.0.jar" sourcepath="jgoodies-forms-1.8.0-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/pabr6/eclipse-workspace/Exportation documentation analyseWriter/plugins/documentation.analyseWriter_1.0.0.202212032022.jar"/>
<classpathentry kind="lib" path="C:/Users/pabr6/eclipse-workspace/cXML.jar"/>
<classpathentry kind="lib" path="C:/Users/pabr6/eclipse-workspace/cXML.jar" sourcepath="/cXML"/>
<classpathentry kind="output" path="bin"/>
</classpath>

Binary file not shown.

Binary file not shown.

View File

@ -2,6 +2,7 @@ package MEPTL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -34,6 +35,7 @@ public class rechercherUnNodeStudent {
node nodStudent =null;
//************************************************************************************************
//** Recherche le node par le contenu exact du node en intégrant les contenus des nodes enfants **
@ -42,7 +44,7 @@ public class rechercherUnNodeStudent {
if(nodSujet.getAttributs().get("recherche_contenu_exact")!=null){
if(nodSujet.getAttributs().get("recherche_contenu_exact").contentEquals("true")) {
nodStudent = findNodeParContenuEXACT(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a);
if(nodStudent!=null) return nodStudent;
return nodStudent;
}
}
@ -53,19 +55,11 @@ public class rechercherUnNodeStudent {
if(nodSujet.getAttributs().get("recherche_contenu_plus_proche_voisin")!=null && nodSujet.retourneLesContenusEnfants("").length()>2){
if(nodSujet.getAttributs().get("recherche_contenu_plus_proche_voisin").equals("true")){
nodStudent = findNodeParContenuPlusProcheVoisin(nameNode, nodSujet, nod0Student, nod1Student, nod2Student, a);
if(nodStudent != null) {
// System.out.println("A trouvé le node "+ nameNode + " par le plus proche voisin avec le contenu =" + nodSujet.retourneLesContenusEnfants(""));
return nodStudent;
}else {
// System.out.println("N'a pas trouvé le node "+ nameNode + " par le plus proche voisin avec le contenu =" + nodSujet.retourneLesContenusEnfants(""));
}
return nodStudent;
}
}
//***********************************
//** Recherche le node par l'index **
//***********************************
@ -75,7 +69,7 @@ public class rechercherUnNodeStudent {
return nodStudent;
}
}
//**********************************************************************************************************
@ -88,8 +82,7 @@ public class rechercherUnNodeStudent {
if(nodStudent!=null) return nodStudent;
}
//*****************************************************************
//** Recherche le node text:p par les différents contenu du node **
@ -278,15 +271,15 @@ public class rechercherUnNodeStudent {
if(nodStudent!=null) return nodStudent;
//méthode par le calcul de la distance de levenshtein
if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod2Student.getNodes(), valueAttribut, nameNode,0.75,null);
if(nod2Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod2Student.getNodes(), valueAttribut, nameNode,0.1,null);
if(nod2Student!=null) if(nodStudent==null) {
ArrayList<node> tousLesfreres = nod2Student.retourneTousLesFreres();
for(int i = 0 ; i < tousLesfreres.size();i++) {
if(tousLesfreres.get(i)!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(tousLesfreres.get(i).getNodes(), nameNode,valueAttribut,0.75,null);
}
}
if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod1Student.getNodes(), valueAttribut, nameNode,0.75,null);
if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod0Student.getNodes(), valueAttribut, nameNode,0.75,null);
if(nod1Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod1Student.getNodes(), valueAttribut, nameNode,0.1,null);
if(nod0Student!=null) if(nodStudent==null) nodStudent = a.retourneLeNodeByContentPlusProche(nod0Student.getNodes(), valueAttribut, nameNode,0.1,null);
}else {
@ -698,13 +691,8 @@ public class rechercherUnNodeStudent {
}
/**
* Recherche le node style:tab-stop par style:position.</br>
* Un tolérance de 0.05 est appliquée sur la valeur de la position.</br>
* On peut utiliser les intervalles dans la valeur de l'attribut style:position.</br>
* Recherche le node style:position pour les stop de tabulation.</br>
* @param nameNode
* @param nodSujet
* @param nod0Student
@ -726,10 +714,6 @@ public class rechercherUnNodeStudent {
if(m3.find()) {
valueAttribut = (valueAttribut.substring(m3.start(), m3.end()));
}else {
System.out.println("Tolérance par défaut du tab-stop");
System.out.println("La valeur du tab-stop du sujet est =" + valueAttribut);
System.out.println("Problème de pattern");
System.out.println("no match avec la valeur du tab-stop du sujet.");
JOptionPane.showMessageDialog(null, "Le fichier d'analyse possède une erreur dans la valeur du tab-stop."
+"\r\nLa valeur est " + valueAttribut+
"\r\nProblème de pattern.","Erreur",JOptionPane.ERROR_MESSAGE);
@ -739,8 +723,6 @@ public class rechercherUnNodeStudent {
valueAttribut = String.valueOf(evaluation.TraitementIntervaleRetourneValeurMaximale(valueAttribut) - tolerance);
}
}else {
System.out.println("Erreur avec la valeur du tab-stop du sujet.");
System.out.println("Valeur du tab-stop du sujet ="+valueAttribut);
JOptionPane.showMessageDialog(null, "Le fichier d'analyse possède une erreur dans la valeur du tab-stop."
+"\r\nLa valeur est " + valueAttribut,"Erreur",JOptionPane.ERROR_MESSAGE);
}
@ -750,9 +732,6 @@ public class rechercherUnNodeStudent {
try {
ValeurSujet = Double.valueOf(valueAttribut);
}catch (Exception e) {
System.out.println("La valeur du tab-stop du sujet est =" + valueAttribut);
System.out.println("Problème de cast en type double");
System.out.println("Valeur tab-stop="+ValeurSujet);
JOptionPane.showMessageDialog(null, "Le fichier d'analyse possède une erreur dans la valeur du tab-stop."
+"\r\nLa valeur est " + valueAttribut+
"\r\nImpossible de convertir la valeur en type Double.", "Erreur",JOptionPane.ERROR_MESSAGE);
@ -771,9 +750,6 @@ public class rechercherUnNodeStudent {
if(m3.find()) {
valueAttributStudent = (valueAttributStudent.substring(m3.start(), m3.end()));
}else {
System.out.println("La valeur du tab-stop du student est =" + valueAttributStudent);
System.out.println("Problème de pattern");
System.out.println("no match avec la valeur du tab-stop du student.");
JOptionPane.showMessageDialog(null, "Le fichier de l'étudiant possède une erreur dans la valeur du tab-stop."
+"\r\nLa valeur est " + valueAttribut+
"\r\nProblème de pattern.","Erreur",JOptionPane.ERROR_MESSAGE);

View File

@ -884,8 +884,8 @@ public class evaluation {
/**
* Compare deux chaînes de caractères avec un seuil de similitude (79% par défaut).<br>
* Lorsque les deux chaînes de caractères partages 79% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne TRUE.<br>
* Lorsque les deux chaînes de caractères partages moins de 79% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne FALSE.<br>
* Lorsque les deux chaînes de caractères partages 90% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne TRUE.<br>
* Lorsque les deux chaînes de caractères partages moins de 90% des caractères comparés par groupe de 2 ou 3 ou 4. Alors retourne FALSE.<br>
* Les Chaînes de caractères doivent avoir au moins 6 caractères, après néttoyage du texte avec la méthode NetTexte().<br>
* Sinon le seuil de tolérance est de 99.99%.<br>
* <ul>
@ -900,7 +900,7 @@ public class evaluation {
* @return TRUE ou FALSE en fonction de la comparaison et du seuil de tolérance.
*/
private static boolean similitudeString(String A, String Modele, Double tolerance_text) {
if(tolerance_text==null) tolerance_text = 0.79 ;
if(tolerance_text==null) tolerance_text = 0.9 ;
Modele = NetTexte(Modele);
A = NetTexte(A);

View File

@ -121,7 +121,7 @@ public class attributs extends JFrame {
panelDroite.add(btnIntervalle);
JButton btnTextClean = new JButton("Text clean");
btnTextClean.setToolTipText("<html>Texte nettoyé de tous les caractères spéciaux, chiffres et ignore la casse (équivalent à allContent=\"environ\").<br>Cette fonction ne peut pas être combinée avec les autres fonctions ci-dessous.<br>Ce n'est pas un opérateur OU contrairement à l'opérateur ↕.<br>La tolérance de texte (79% de similitude avec le texte de la consigne) paramètre dans les setting. (exemple : ¢‽2) </html>");
btnTextClean.setToolTipText("<html>Texte nettoyé de tous les caractères spéciaux, chiffres et ignore la casse (équivalent à allContent=\"environ\").<br>Cette fonction ne peut pas être combinée avec les autres fonctions ci-dessous.<br>Ce n'est pas un opérateur OU contrairement à l'opérateur ↕.<br>La tolérance de texte (90% de similitude avec le texte de la consigne) paramètre dans les setting. (exemple : ¢‽2) </html>");
btnTextClean.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

View File

@ -148,7 +148,7 @@ public class actNewFichierAnalyse extends AbstractAction{
Enumeration<node> pages = Collections.enumeration(nod.getNodes());
while(pages.hasMoreElements()) {
node nodLaPage = pages.nextElement();
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:span$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
ArrayList<String> listTextesInPage = new ArrayList<String>();
for(int i = 0 ; i < nodLaPage.getNodes().size();i++) {
Matcher m = p.matcher(nodLaPage.getNodes().get(i).getNomElt());
@ -173,7 +173,7 @@ public class actNewFichierAnalyse extends AbstractAction{
Enumeration<node> pages = Collections.enumeration(nod.getNodes());
while(pages.hasMoreElements()) {
node nodLaPage = pages.nextElement();
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
Pattern p = Pattern.compile("^text:p$|^text:h$|^text:span$|^text:list$|^text:list-item$|^text:line-break$|^text:span$|^text:tab$"); //le node qui peuvent rechercher par le contenu textuel
ArrayList<String> listTextesInPage = new ArrayList<String>();
for(int i = 0 ; i < nodLaPage.getNodes().size();i++) {
Matcher m = p.matcher(nodLaPage.getNodes().get(i).getNomElt());

View File

@ -14,29 +14,33 @@ public class listeDesNodesAllContent {
String nameNode = nod.getNomElt();
switch (nameNode) {
case "text:p": return true;
case "text:span": return true;
case "text:list": return true;
case "text:tab":return true;
case "text:title":return true;
case "text:subject":return true;
case "page":return true;
case "text:time":return true;
case "structurepage":return true;
if(nameNode.equals("text:title")) return true;
if(nameNode.equals("text:subject")) return true;
if(nameNode.equals("page")) return true;
if(nameNode.equals("text:date")) return true;
if(nameNode.equals("text:time")) return true;
case "number:text":return false;
case "text:page-count":return false;
case "OU":return false;
case "text:conditional-text":return false;
case "text:bookmark":return false;
case "style:tab-stop":return false;
case "style:text-properties":return false;
case "style:paragraph-properties":return false;
case "style:style":return false;
case "style:default-style\"":return false;
if(nameNode.equals("structurepage")) return true;
if(nameNode.equals("number:text")) return false;
if(nameNode.equals("text:page-number")) return false;
if(nameNode.equals("text:page-count")) return false;
if(nameNode.equals("OU")) return false;
if(nameNode.equals("text:conditional-text")) return false;
if(nameNode.contains("text:bookmark")) return false;
if(nameNode.contains("text:bookmark")) return false;
if(nameNode.equals("style:tab-stop")) return false;
default: return true;
}
// if(nod.retourneLesContenusEnfants("").length()<=0) return false;
if(nameNode.contains("text:")) return true;
return true;
}