IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Nettoyage des mots de liaisons dans un texte


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de menoulette
    Inscrit en
    Août 2009
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 320
    Points : 111
    Points
    111
    Par défaut Nettoyage des mots de liaisons dans un texte
    Bonsoir à vous tous
    Je prépare une application de text Mining et je souhaite faire un nettoyage du text il sagit de supprimer tous les mots de liaisons existants dans un text donné pour ce faire j'ai crée une base de données nomé (mots_liaison ) sur Mysql qui contient une table s'appelle nettoyage cette dernière contient tous les mots de liaison qui existent dans la langue française par exemple (moi ,toi ,leur,ect,a,à..) se son des mots cencés à être ignoré lors du mining du text alors j'ai établit 4 classes jusqu'à maintenant :
    Word_Ex=>pour l'extraction des mots
    TestConnection=>pour la connexion à la base de données
    Interface=>la classe contenant l'interface et la partie qui traite le nettoyage
    la classe IO_Files=>pour gérer le bouton pour le téléchargement d'un fichier
    et la classe main le voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
     
    import java.sql.Connection;
     
     
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    import java.sql.*;
     
    public class TestConnection {
    	static Connection connectionMySql;
    	static public ResultSet results;
    	static ResultSetMetaData rsmd; 
     
    	 public static void ping()throws Exception {      
    		Class.forName("com.mysql.jdbc.Driver" );
    		//Declaration de l'dress de driver
    		System.out.println(" Connexion ...");
    		String urlMysql= "jdbc:mysql://127.0.0.1:3306/mots_liaison";
    		connectionMySql = DriverManager.getConnection(urlMysql,"root", "");
    		if (connectionMySql != null)
    			System.out.println(" Connexion OK!");
        	else  System.err.println(" Pas de connexion"); 
    	//mvc pattrener	
        } 
     
     
    	public static void executeRequete(String requete) {
    		try {
    		Statement stmt = connectionMySql.createStatement();
    		results = stmt.executeQuery(requete);
    		}
    		catch (SQLException e) {
    		System.out.println("Erreur requête : " + e.getMessage());
    		}
    		} 
     
     
     
    	/*public static void main(String[] arg)throws Exception{
    		ping();
     
    		//TestConnection tt=new TestConnection();
    		//tt.ping();
     
    //	tt.executeRequete("INSERT INTO `web_ontology_fr` ( `wiki_name` , `topic_name` , `id` , `class_type` , `object_type` , `oreginal_type` )VALUES ('wiki', 'topic', '18', 'ctype', 'obtyp', 'ori');");
     
     
    	} */
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
     
     
    import java.io.BufferedInputStream;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
     
     
    public class IO_Files {
     
    	public String OpenFile(String path)
    	{
    		DataInputStream Ob;
    		String result = "";
    		try{
    			Ob = new DataInputStream(new BufferedInputStream(new FileInputStream(new File(path))));
    			String s;
    			while((s = Ob.readLine()) != null)
    			{
    				result += s + "\n";
    			}
    			return result;
    		}
    		catch (Exception e) {
    			return e.getMessage();
    		}
    	}
    }



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
     
     
    import java.util.Vector;
     
    public class Word_Ex {
     
    	private String text; 
    ////////////////////////////////////////////////////////////////////////////////////////////	
    	public void setText(String text)
    	{
    		this.text = text;
    	}
    ///////////////////////////////////////////////////////////////////////////////
    	public Vector<String> Extract()
    	{
    		Vector<String> list = new Vector<String>();		
     
    		for(int i=0;i<text.length();i++)
    		{
    			String s="";
    			while(i<text.length() && text.charAt(i) != ' ')
    			{				
    				s += text.charAt(i);
    				i++;
    			}
    			if(s != "")
    				list.add(s);
    		}
    		return list;
    	}
    }



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
     
     
     
     
     
    import java.awt.BorderLayout;
     
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import java.awt.Dimension;
    import javax.swing.JTextArea;
    import java.awt.Rectangle;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JTextField;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.SQLException;
    import java.util.Vector;
     
    public class Interface extends JFrame implements ActionListener {
     
     
     
    	private JPanel jContentPane = null; //declaration de notre panel
     
    	private JTextArea jTextArea = null; //pr la zone de text
     
    	private JButton jButton = null;// dclaration de notre boutton
     
    	private JButton jButton1 = null;// dclaration de notre boutton
     
    	private JLabel jLabel = null;
     
    	private JTextField jTextField = null;
     
    	private JButton jButton2 = null; // dclaration de notre boutton
     
    	private JButton jButton3 = null; // dclaration de notre boutton
     
    	private JList jList = null;
     
    	private Vector<String> vw = null; //declaration d'un vecteur j'en ai besoin pr le stockage des mots qui se trouve dans notre zone de text
     
     
    	/**
             * Declaration de constructeur
             */ 
    	public Interface() {
     
    		initialize();
    	}
     
    	/**
             * 
             * 
             * Methode d'intialisation
             */
    	private void initialize() {
    		this.setSize(771, 630);
    		this.setContentPane(getJContentPane());
    		this.setTitle("Ma fenêtre ");
    	}
     
    	/**
             *methode qui initialise notre panneau 
             * 
             * 
             */
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jLabel = new JLabel();
    			jLabel.setBounds(new Rectangle(15, 152, 124, 29));
    			jLabel.setText("  ");
    			jContentPane = new JPanel();
    			jContentPane.setLayout(null);
    			jContentPane.setBackground(new Color(242, 228, 116));
    			jContentPane.add(getJTextArea(), null);
    			jContentPane.add(getJButton(), null);
    			jContentPane.add(getJButton1(), null);
    			jContentPane.add(jLabel, null);
    			jContentPane.add(getJTextField(), null);
    			jContentPane.add(getJButton2(), null);
    			jContentPane.add(getJButton3(), null);
    			jContentPane.add(getJList(), null);
    		}
    		return jContentPane;
    	}
     
    	/**
             * 
             *      
             * methode initialiser textArea 
             */
    	private JTextArea getJTextArea() {
    		if (jTextArea == null) {
    			jTextArea = new JTextArea();
    			jTextArea.setBounds(new Rectangle(322, 99, 418, 461));
    		}
    		return jTextArea;
    	}
     
     
     
     
     
     
     
    	private JList getJList() {
    		if (jList == null) {
    			jList = new JList();
    			jList.setBounds(new Rectangle(14, 270, 220, 500));
    		}
    		return jList;
    	}
     
    	/**
             * methode initailisation JButton       
             *      
             * 
             */
    	private JButton getJButton() {
    		if (jButton == null) {
    			jButton = new JButton();
    			jButton.setBounds(new Rectangle(340, 49, 83, 37));
    			jButton.setForeground(new Color(51, 51, 98));
    			jButton.setFont(new Font("Dialog", Font.BOLD, 14));
    			jButton.setText("Clear");
    			jButton.addActionListener(this);
    		}
    		return jButton;
    	}
     
    	/**
             *methode initailisation JButton1       
             *      
             *      
             */
    	private JButton getJButton1() {
    		if (jButton1 == null) {
    			jButton1 = new JButton();
    			jButton1.setBounds(new Rectangle(464, 49, 155, 38));
    			jButton1.setText("Extract entities");
    			jButton1.addActionListener(this);
    		}
    		return jButton1;
    	}
     
    	/**
             *      
             *      
             * méthode pr initialiser les textField        
             */
    	private JTextField getJTextField() {
    		if (jTextField == null) {
    			jTextField = new JTextField();
    			jTextField.setBounds(new Rectangle(6, 189, 212, 31));
    		}
    		return jTextField;
    	}
     
    	/**
             * methode pr initialiser les boutton2
             */
    	private JButton getJButton2() {
    		if (jButton2 == null) {
    			jButton2 = new JButton();
    			jButton2.setBounds(new Rectangle(221, 188, 98, 31));
    			jButton2.setText("Parcourir...");
    			jButton2.addActionListener(this);
    		}
    		return jButton2;
    	}
     
    	/**
             *      
             *      
             * methode pr initialiser jButton3
             */
    	private JButton getJButton3() {
    		if (jButton3 == null) {
    			jButton3 = new JButton();
    			jButton3.setBounds(new Rectangle(14, 228, 121, 33));
    			jButton3.setText("Netoyage");
    			jButton3.addActionListener(this);
     
    		}
    		return jButton3;
    	}
     
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
     
    		if(arg0.getSource()==jButton1){
    			Word_Ex w=new Word_Ex();
    			w.setText(jTextArea.getText());
    			vw = w.Extract();//voilà ici j'ai affecté tous les mot du text entrée dans le vecteur vw
    			jList.setListData(vw);
     
    		}
    		// TODO Auto-generated method stub
     
    		if(arg0.getSource()==jButton){
    			jTextArea.setText(null);
    		}
     
    		if(arg0.getSource() == jButton2)
    		{			
    			JFileChooser	dialogue=new JFileChooser();		
    				int returnVal = dialogue.showOpenDialog(this);	 	    	   
     
    				if(returnVal == JFileChooser.APPROVE_OPTION) {
     
    					IO_Files iof = new IO_Files();
    					jTextArea.setText(iof.OpenFile(dialogue.getSelectedFile().getPath()));				
     
    				}			
    		}
     
    		if(arg0.getSource() == jButton3){
    			Vector<String> result = new Vector<String>();
     
    			for(int i=0;i<vw.size();i++)
    			{
    				String req ;
    				req = "SELECT *FROM `nettoyage` WHERE mot = '" + vw.elementAt(i) + "'";
    				TestConnection.executeRequete(req);
     
    				try {
    					if(!TestConnection.results.wasNull())
    						result.add(vw.elementAt(i));
    				} catch (SQLException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
     
    			}
     
    			jList.setListData(result);
    		}
     
    	}
     
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
     
     
    public class Main {
    	public static void main(String[] args) {
     
    Interface in =new Interface();
    in.setVisible(true);
     
    try {
    	TestConnection.ping();
    } catch (Exception e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    }
     
     
    }
    }

    alors tous marchent bien à part le nettoyage qui se trouve ds la classe Interface au niveau de la méthode actionPerformed lors du test if(arg0.getSource() == jButton3)..????normalement ma logique marche trés bien je récupère les mot du text dans un vecteur wv et pour tout mot de mon text je fais une requête ; je selectionne tous les mots de liaison dans la base de données je boucle dans mon vecteur wv et je test si le mot est égal à un mot de liaison existant dans la table alors le résultat n'est pas null y'a un test si le resultat est null je met le mot dans un vecteur nommé resultat et là ça vagarder que les mots digne à ne pas être ignoré mais l'algorithme ne fonctionne pas Je sais pas ou se trouve le problème merci d'avance pour votre aide

  2. #2
    Membre actif Avatar de Mamypirate
    Homme Profil pro
    Samouraï
    Inscrit en
    Mai 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Samouraï
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2011
    Messages : 108
    Points : 211
    Points
    211
    Par défaut
    Bonjour,

    C'est peut être une erreur de recopie mais il ne manquerais pas un espace entre ton * et ton FROM ?
    A part ça, rien ne me saute aux yeux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
    findSignature();
    } catch(InspirationNotFoundException e) {
    e.printStackTrace();
    }

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for(int i=0;i<text.length();i++) {
      String s="";
      while(i<text.length() && text.charAt(i) != ' ') {				
        s += text.charAt(i);
        i++;
      }
      if(s != "") list.add(s);
    }
    Ca pique
    • Remplace le type de s par un StringBuilder
    • Mieux gère des "tranches" avec substring
    • Il faut éviter de comparer les chaînes avec les opérateurs "==" et "!=". Ici ca ne marche que grâce à une optimisation de la JVM. Il faut utiliser la méthode equals.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for(int i=0;i<vw.size();i++) {
      String req ;
      req = "SELECT *FROM `nettoyage` WHERE mot = '" + vw.elementAt(i) + "'";
      TestConnection.executeRequete(req);
     
      try {
        if(!TestConnection.results.wasNull()) result.add(vw.elementAt(i));
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    • Utilises un PreparedStatement
    • Je bouclerai pas sur les mots de ton vecteur car un même mot peut s'y trouver plusieurs fois. Pour resterait simple, je pencherai plutôt pour charger l'ensemble des nettoyage.mot dans un Set. Ensuite je parcourais mes mots via un itérateur et pour chaque je regarderai s'il est dans le set de nettoyage. Si c'est le cas, j'appelle la méthode remove de l'itérateur.
    • Utilises LinkedList plutôt que Vector
    • La méthode wasNull ne peut être appelée qu'après avoir récupérée une valeur avec l'une de méthodes "get*" qui elle-mêmes ne peuvent être appelées qu'après un "mouvement du curseur. En plus cette méthode n'indique pas s'il y a des données dans le curseur mais indique si la dernière valeur récupérée est NULL.
    • Tu ne fermes ni le Statement, ni le ResultSet


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void ping()throws Exception {      
    		Class.forName("com.mysql.jdbc.Driver" );
    		//Declaration de l'dress de driver
    		System.out.println(" Connexion ...");
    		String urlMysql= "jdbc:mysql://127.0.0.1:3306/mots_liaison";
    		connectionMySql = DriverManager.getConnection(urlMysql,"root", "");
    		if (connectionMySql != null)
    			System.out.println(" Connexion OK!");
        	else  System.err.println(" Pas de connexion"); 
    	//mvc pattrener	
        }
    La connection ne sera jamais nulle, tu auras toujours une exception.
    La connection n'est jamais fermée !
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre des mots en surbrillance dans un texte
    Par Moloc'h dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 19h03
  2. Comment éviter que google répete des mots qui sont dans la description du meta tag
    Par tese84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/09/2006, 07h55
  3. Cryptage des mot de passe dans Tomcat
    Par kedare dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 19/06/2006, 16h49
  4. prob affichage mot en gras dans un texte
    Par klik dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 13/07/2005, 08h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo