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:
parent
fd5d3a08ce
commit
a36fa21f25
@ -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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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());
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user