Package medite :: Package MediteAppli :: Module feng :: Class algoFeng
[hide private]
[frames] | no frames]

Class algoFeng

source code

Classe effectuant la comparaison des textes en utilisant la methode définie par S. Feng et R. Manmatha

Instance Methods [hide private]
 
__init__(self, txt1, txt2, ignorerSeparateurs=False, ignorerCase=True, ignorerDiacritiques=False, p2=2, calculDep=True, lenMinBlocDep=4, debugLevel=4)
Constructeur de l'objet
source code
 
aligne(self)
Effectue la comparaison des textes, fonction principale...
source code
 
__lanceHMMPhase2(self, bornesAncres, listeMots1, listeMots2)
Lance la phase 2 de l'algo.
source code

([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...]),([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...])

__alignePhase3(self, motsAlignes, bornesAncres, listeMots1, listeMots2)
Lance la Phase 3 de l'algo
source code

([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...]),([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...])

__lanceHMMPhase3(self, liste1, liste2)
Crée les listes de caracteres et effectue la comparaison HMM sur ces 2 listes
source code
 
__creerListeMots(self, texte)
effectue la séparation des mots du texte
source code
 
__creerDico(self, liste)
Crée pour chaque mot un dictionnaire comportant son nombre d'occurences et ses positions
source code
 
__creerListes(self, dicoTexte1, dicoTexte2)
Cree les listes de la phase 1.(a) et 1.(b) de l'algo
source code
 
__filtrageApareillementsIdentiques(self, aligneHMM, listeMots1, listeMots2)
determine l'alignement une fois que le HMM a renvoyé les blocs considérés comme alignés
source code
 
__regrouperBlocs(self, listeBlocs, txt, ignorerPonctuation=False)
regroupe les blocs adjacents d'une liste de blocs
source code
 
__creerListesFeng(self, dicoTexte1, dicoTexte2, listeMots1, listeMots2) source code
 
__filtrerListe(self, liste, dicoTexte1, dicoTexte2, listeMots1, listeMots2) source code
 
__filtrageApareillementsIdentiquesOld(self, aligneHMM, listeMots1, listeMots2)
determine l'alignement une fois que le HMM a renvoyé les blocs considérés comme alignés /!\ EFFECTUE DES EFFETS DE BORD SUR aligneHMM /! renvoie la liste des blocs alignés, et le cas échéant la liste des blocs insérés sous forme de liste de (posDeb,posFin)
source code
Method Details [hide private]

__init__(self, txt1, txt2, ignorerSeparateurs=False, ignorerCase=True, ignorerDiacritiques=False, p2=2, calculDep=True, lenMinBlocDep=4, debugLevel=4)
(Constructor)

source code 
Constructeur de l'objet
Parameters:
  • txt1 (String) - la premiere version du texte a comparer
  • txt1 (String) - la premiere version du texte a comparer
  • ignorerSeparateurs (Bool) - Optionnel,Définit si l'on souhaite ou non ignorer les separateurs (ponctuations etc..), Faux par defaut
  • ignorerCase (bool) - ignore la casse
  • ignorerDiacritiques (bool) - sensibilité aux accents
  • p2 (integer) - paramètre ratio des remplacements pour insertions/suppressions
  • calculDep (Bool) - Optionnel, defininit si l'on souhaite ou non calculer les deplacements
  • lenMinBlocDep (integer) - longueue minimale bloc déplacé
  • debugLevel (Integer) - Optionnel,definit le niveau de log, les valeurs suivantes sont utilisées : logging.INFO = tres peu verbeux (affichage du debut et fin de l'algo seulement) logging.DEBUG = peu verbeux 4 verbeux (affichage de certaines variables, affichage des textes, affichage de la progression générale du hmm) 3 tres verbeux (affichage dans les boucles / methodes) 2 tres tres verbeux (affichage des tableaux etc...), tres peu lisible 1 maxi debug (affichage de tous les contenus des appels du fichier HMM.py) /!\ les dictionaires de 150 termes c'est pas joli a voir, ne pas utiliser !!

aligne(self)

source code 

Effectue la comparaison des textes, fonction principale

Renvoie un tuplet ((blocsAlignes1,blocsAlignes2),(blocsSupprimés Texte1,blocs Ajouté Texte 2),
    (dep1,dep2),(corespondances entre Dep),(remp1,remp2))

@return: blocs sur lesquels on aligne pour le texte1 et texte2, blocs supprimés, blocs ajoutés, blocs deplacés du texte1, blocs deplacés du texte2
@type: ([(posAligneTxt1Debut,posAligneTxt1Fin),...],[(posAligneTxt2Debut,posAligneTxt2Fin),...]),([(posSupprTxt1Debut,posSupprTxt1Fin),...],[(posAjoutTxt2Debut,posAjoutTxt2Fin),...]),([(posDepTxt1Debut,posDepTxt1Fin),...],[(posDepTxt2Debut,posDepTxt2Fin),...]),([(paires de blocs déplacés)]), ([(posRempTxt1Debut,posRempTxt1Fin),...],[(posRempTxt2Debut,posRempTxt2Fin),...]) avec pos des Integers

__lanceHMMPhase2(self, bornesAncres, listeMots1, listeMots2)

source code 

Lance la phase 2 de l'algo.

Ici on lance la comparaison HMM au niveau des MOTS
Parameters:
  • listeMots1 - la liste de blocs pour le texte1
  • listeMots2 - la liste de blocs pour le texte2
  • bornesAncres (

    [(borneGaucheListeMots1,borneGaucheListeMots2),(borneDroiteListeMots1,borneDroiteListeMots2)]) - les bornes pour l'alignement, sur lequel on va couper les listeMots

Returns:
liste des blocs alignes, liste des blocs ajoutes

__alignePhase3(self, motsAlignes, bornesAncres, listeMots1, listeMots2)

source code 

Lance la Phase 3 de l'algo

Alignement au niveau des caracteres
Parameters:
  • motsAlignes ([(posListeMots1,posListeMots2)...]) - la liste des mots alignés en phase 2
  • bornesAncres (

    [(borneGaucheListeMots1,borneGaucheListeMots2),(borneDroiteListeMots1,borneDroiteListeMots2)]) - les bornes entre lesquelles on travaille

  • listeMots1 - la liste des blocs du texte 1
  • listeMots2 - la liste des blocs du texte 2
Returns:

([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...]),([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...])

liste de blocs alignés, liste des blocs ajoutes

__lanceHMMPhase3(self, liste1, liste2)

source code 

Crée les listes de caracteres et effectue la comparaison HMM sur ces 2 listes

recherche les blocs ajoutes / supprimes
Parameters:
  • liste1 - les elements du texte1 que l'on souhaite aligner
  • liste2 - les elements du texte2 que l'on souhaite aligner
Returns:

([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...]),([(DebutBlocTxt1,FinBlocTxt1)...],[(DebutBlocTxt2,FinBlocTxt2)...])

liste de blocs alignés, liste des blocs ajoutes

__creerListeMots(self, texte)

source code 
effectue la séparation des mots du texte
Parameters:
  • texte (String) - le texte que l'on souhaite separer
Returns:
liste de bloc(hash,posdebut,posfin+1,posListeMots)

__creerDico(self, liste)

source code 
Crée pour chaque mot un dictionnaire comportant son nombre d'occurences et ses positions
Parameters:
  • liste (liste de bloc(hash,posdebut,posfin+1,posListeMots)) - la liste a traiter
Returns:
le dictionnaire des mots présentds dans la liste

__creerListes(self, dicoTexte1, dicoTexte2)

source code 

Cree les listes de la phase 1.(a) et 1.(b) de l'algo

liste des apax : termes uniques dans chaque texte et communs aux 2 textes
Parameters:
  • dicoTexte1, dicoTexte2 - les dictionnaires pour les deux textes

__filtrageApareillementsIdentiques(self, aligneHMM, listeMots1, listeMots2)

source code 

determine l'alignement une fois que le HMM a renvoyé les blocs considérés comme alignés

/!\ EFFECTUE DES EFFETS DE BORD SUR aligneHMM /! renvoie la liste des blocs alignés, et le cas échéant la liste des blocs insérés sous forme de liste de (posDeb,posFin)
Parameters:
  • aligneHMM ([(posBlocAligné1,posBlocAligné2)...]) - le resultat de l'alignement HMM */!\_MODIFIE EN RETOUR PAR CETTE METHODE_/!\*
  • listeMots1, listeMots2 - les listes de mots pour les textes

__regrouperBlocs(self, listeBlocs, txt, ignorerPonctuation=False)

source code 

regroupe les blocs adjacents d'une liste de blocs

/!\ EFFECTUE UN EFFET DE BORD SUR listeBlocs /!
Parameters:
  • listeBlocs ([(posDebut,posFin+1)]) - la liste des blocs
  • txt (String) - le texte correspondant

__creerListesFeng(self, dicoTexte1, dicoTexte2, listeMots1, listeMots2)

source code 

Deprecated: nous n'utilisons pas les methodes definies dans le papier de Feng & Manmatha, qui s'averent tres contraignantes sur les HMM

See Also: __creerListes

__filtrageApareillementsIdentiquesOld(self, aligneHMM, listeMots1, listeMots2)

source code 
determine l'alignement une fois que le HMM a renvoyé les blocs considérés comme alignés /!\ EFFECTUE DES EFFETS DE BORD SUR aligneHMM /! renvoie la liste des blocs alignés, et le cas échéant la liste des blocs insérés sous forme de liste de (posDeb,posFin)

Deprecated: cette fonction est moche (mais vraiment tres moche en fait) :(

See Also: __filtrageApareillementsIdentiques