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

Entrée/Sortie Java Discussion :

Problème d'encodage UTF8 fichier texte


Sujet :

Entrée/Sortie Java

  1. #41
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Bonsoir,

    Le problème c'est que je peux pas trouver une solution autrement ...
    Pour un identificateur de language , je demande toujours à l'utilisateur de taper: le texte à identifier
    quelque soit au niveau console , ou bien à travers un champ input pour les jsf ...

    Pourriez-vous me proposer une autre solution si c'est possible ?

    Merci

  2. #42
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pour la console on a déjà résolu le problème. Pour JSF, il faut reprendre à à tout la chaine d'input output puisque rien ne correspond à ce que tu as décrit jusqu'à présent. Donc va falloit que tu nous renseigne sur toutes tes étapes. Comment le formulaire est généré, quel est son template, où apparaît l'erreur,...

  3. #43
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Bonsoir
    Juste pour votre information que j'utilise primeFaces, les mêmes fonctions sont utilisées , le même principe qu'avec la console ... Un fichier xhtml, contient un champs inputText , qui acccept une chaine de caratère (mot à identifié) et réelement au niveau class bean c'est la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    static String lireChaine() {
            Scanner sc = new Scanner(System.console().readLine());
            System.out.println("Saisissez votre mot: ");
            String mot = sc.nextLine();
            System.out.println("Le mot à identifier sera limité par deux espaces: " + "_" + mot + "_");
            return "_" + mot + "_";
     
        }

  4. #44
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    donne nous ton formulaire jsf, ton bean jsf, ton faces-config si tu en as un, ton web.xml. Une transcription de la requête http qui pose problème serait pas mal non plus (afficahge du formulaire et soumission du formulaire).

  5. #45
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    calsse web.xml:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <context-param>  
            <param-name>primefaces.THEME</param-name>  
            <param-value>sunny</param-value>  
        </context-param>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>faces/index.xhtml</welcome-file>
        </welcome-file-list>
    </web-app>
    pour le xhtml je colle l'interrassant :

    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
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://xmlns.jcp.org/jsf/html"
          xmlns:p="http://primefaces.org/ui"
          xmlns:f="http://xmlns.jcp.org/jsf/core">
        <h:head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <h:outputStylesheet name="css/default.css"/>
            <h:outputStylesheet name="css/cssLayout.css"/>
            <!-- Title here -->
            <title> Plateforme Identification Automatique du Dialectal Tunisien </title>
            <!-- Description, Keywords and Author -->
            <meta name="description" content=""/>
            <meta name="keywords" content=""/>
            <meta name="author" content=""/>
     
            <!-- Google web fonts -->
     
     
            <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     
     
            <!-- Styles -->
            <!-- Bootstrap CSS -->
            <h:outputStylesheet library="css" name="bootstrap.min_rtl.css"  />
     
     
            <!-- Font awesome CSS -->
            <h:outputStylesheet library="css" name="font-awesome.min_rtl.css"  />
     
            <!-- Custom CSS -->
            <h:outputStylesheet library="css" name="style_rtl.css"  />
     
     
     
            <!-- Favicon -->
     
            <style type="text/css">
     
                .ui-selectonemenu .ui-selectonemenu-label {
     
                    width: 100% !important;
     
                }
                .ui-selectonemenu-panel .ui-selectonemenu-list-item {
                    border: 0px none;
                    margin: 1px 0;
                    padding: 3px 20px;
                    text-align: left;
                    white-space: nowrap;
                }
            </style>
        </h:head>
     
        <h:body dir="ltr"   >
            <h:form id="rechercheForm" dir="ltr"  enctype="multipart/form-data">
    ......
    <p:commandButton disabled="#{not classBean.afficheSaisie}" value="OK" icon="ui-icon-check" action="#{classBean.identificationMot()}" update="rechercheForm" style="width: 80px"> </p:commandButton>
                                                   &nbsp;&nbsp; <p:commandButton disabled="#{not classBean.afficheSaisie}" value="Rafraichir" icon="ui-icon-arrowrefresh-1-w" action="#{classBean.reset()}" update="rechercheForm" > </p:commandButton>
     
                                                    <br></br><br></br><br></br>
                                                    <center><h5><b><h:graphicImage  width="20" height="20" library="images" name="iconeVert.png" rendered="#{classBean.estAffiche}"/>
                                                                &nbsp;<p:outputLabel style="color: #00a65a"  rendered="#{classBean.estAffiche}"  value="#{classBean.verifierDialecte()}"></p:outputLabel></b></h5></center>
     
     
     
                                                    <br></br><br></br>
                                                    <i><table><tr><td style="width: 40%" >
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}" value="Le mot à identifier sera limité par deux espaces"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}" value="_#{classBean.motIdentifier}_"></p:outputLabel>   
                                                                </td>
                                                            </tr>
                                                            <tr><td><br></br> </td><td> </td><td> </td></tr>
                                                            <tr> <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}" value="l'extraction de #{classBean.n}-grames est"></p:outputLabel>
                                                                </td> 
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}" value="#{classBean.l}"></p:outputLabel>
                                                                </td> </tr>
                                                            <tr><td><br></br> </td><td> </td><td> </td></tr>
                                                            <tr>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}" value="la fréquence de chaque gramme dans DT"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}" value="#{classBean.grammeFreqDT}"></p:outputLabel>
                                                                </td>
     
                                                            </tr><tr><td><br></br> </td><td> </td><td> </td></tr>
                                                            <tr>
                                                                <td><p:outputLabel rendered="#{classBean.estAffiche}"  value="la fréquence de chaque gramme dans NDT"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td><p:outputLabel rendered="#{classBean.estAffiche}"  value="#{classBean.grammeFreqNDT}"></p:outputLabel>
                                                                </td>
                                                            </tr><tr><td><br></br> </td><td> </td><td> </td></tr>
                                                            <tr>  <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}"  value="la somme des fréqeunce DT"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}"  value="#{classBean.sommeDT}"></p:outputLabel>
                                                                </td>
     
                                                            </tr><tr><td><br></br> </td><td> </td><td> </td></tr>
                                                            <tr><td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}"  value="la somme des fréqeunce NDT"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}"  value="#{classBean.sommeNDT}"></p:outputLabel>
                                                                </td> </tr><tr><td><br></br> </td><td> </td><td> </td></tr>
     
                                                            <tr><td><p:outputLabel rendered="#{classBean.estAffiche}"  value="la proba des fréqeunce DT"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}"  value="#{classBean.probaDT}"></p:outputLabel>
                                                                </td> </tr><tr><td><br></br> </td><td> </td><td> </td></tr>
                                                            <tr>
                                                                <td>  <p:outputLabel rendered="#{classBean.estAffiche}"  value="la proba des fréqeunce NDT"></p:outputLabel>
                                                                </td>
                                                                <td style="width: 5%">
                                                                    <h:graphicImage rendered="#{classBean.estAffiche}" width="20" height="20" library="img" name="ff.png"/>
     
                                                                </td>
                                                                <td>
                                                                    <p:outputLabel rendered="#{classBean.estAffiche}"  value="#{classBean.probaNDT}"></p:outputLabel>
                                                                </td>
                                                            </tr><tr><td><br></br> </td><td> </td><td> </td></tr>
     
                                                        </table></i>
     
    ....
    Au niveau bean (les mêmes fonction utiilisées dans l'appli java):
    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
     public void identificationMot() throws IOException {
     
            String motModifié = "_" + motIdentifier + "_";
            gnerationNGrams(l, motModifié, n); //  génération d'une liste de sous chaine du mot saisie par l'utilisateur
            ExtractionNGram2 EN = new ExtractionNGram2();
            grammeFreqDT = EN.ChercherChaineFichier("monChemin/DT.txt", l); // Map<String, Integer> contient les sous chaine et leurs fréquence d'appartion dans le fichier
            grammeFreqNDT = EN.ChercherChaineFichier("monChemin/NDT.txt", l);    // même chose avec autre fichier
            sommeDT = sommeFrequences(AccésAuFichier("monCheminDT.txt"));      //additionner la somme de tous les fréquences du fichier 1
            sommeNDT = sommeFrequences(AccésAuFichier("monChemin/NDT.txt"));  // même chose 
            probaDT = EN.probabilité(grammeFreqDT, sommeDT);    // somme des proba des sous chaine du mot selon fichier 1
            grammeProbDT = EN.probabilitéMap(grammeFreqDT, sommeDT);   // stocke dans un Map<String, Double> chaque sous chaîne avec la proba selon fichier 1
            probaNDT = EN.probabilité(grammeFreqNDT, sommeNDT);    // somme des proba des sous chaine du mot selon fichier 2
            grammeProbNDT = EN.probabilitéMap(grammeFreqNDT, sommeNDT);   // stocke dans un Map<String, Double> chaque sous chaîne avec la proba selon fich 2
             estAffiche = true;
            if ((!grammeProbDT.isEmpty()) && (!grammeProbNDT.isEmpty())) { // affichage de l'histogramme
                createBarModel(grammeProbDT, grammeProbNDT);
            }
        }

    Comme réponse à la requette , le resultat souhaité est que pour chaque portion de texte (et même qu'elle contient des caractères accentuée) la probabilité d'existance dans mon fichier sera mis dans le map affiché. ()
    Je voudrais donc éliminer les zeros affichés
    Nom : resultat.PNG
Affichages : 434
Taille : 91,4 Ko



    Merci de m'aider s'il vous plaît

  6. #46
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ok donc pas de problème d'encodage à priori. Donc pas le problème qu'en console puisque en console les séries de 3 caractères étaient mauvaise. Tu peux poster un code qu'on peut lancer et qui reproduise ton problème, parce que là sans avoir tout le code je pense que ça va devenir difficile à démêler.

  7. #47
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    je doute que le problème vient du SE , j'essayes prochainement d'exécuter l'application sur une autre machine
    Sinon voulez vous que je dépose tout le projet ? J'ai essayé de mettre le necéssaire car j'ai plus qu'une tâche dans l'application aussi j'ai des fichiers que je les y accéde de ma machine.

  8. #48
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Même sur une autre machine la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(System.console());
    m'a affiché null


  9. #49
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par FaridDelaMorlette Voir le message
    T'as mis 6mins 40 pour faire ça O_o ??
    Ya que moi que ça choque ????
    Concernant le temps d'exécution , merci pour votre remarque
    Mais j'ai constaté que ce n'est pas le temps réél d'exécution du programme plutôt il inclut aussi le temps d'attente jusqu'à que l'utilisateur saisisse un mot au clavier
    le temps réél de l'exécution (quand l'utilisateur tappe le mot directement à la demande )ne dépasse pas:

    Nom : Capture.PNG
Affichages : 166
Taille : 1,5 Ko

    Merci

  10. #50
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu peux poster un code qu'on peut lancer et qui reproduise ton problème, parce que là sans avoir tout le code je pense que ça va devenir difficile à démêler.

  11. #51
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    Bonjour
    Voila :
    ExtractionNGram2.java

    sinon pour le fichier texte , il dépasse la taille autorisée
    Nom : 1.PNG
Affichages : 230
Taille : 7,1 Ko


    Merci pour votre aide

  12. #52
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 181
    Points : 64
    Points
    64
    Par défaut
    bonsoir,

    Voila mon corpus compressé.
    Merci de m'aider à résoudre le problème de l'encodage text.rar

  13. #53
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je viens d'exécuter ton code et de regarder les problèmes.Tu as de gros problèmes d'optimisation comme déjà mentionnés que je te laisse réparer (ouvrir 3 fois un fichier plutot qu'une par exemple). Tu as des problème de consistence (parfois un utile l'api files, parfois les BufferedReader/Writer, parfois les printWriter.

    Enfin pour le problème d'accents, je me réfère à ces deux messages qui n'ont pas été pris en compte dans ton code:

    Citation Envoyé par tchize_ Voir le message
    à chaque fois tu dois systématiquement utiliser UTF-8 dans tes reader / writer à l'ouverture.
    ce qui n'est pas fait quand tu crée tes fichiers DT/NDT, du coup il ne sont pas en utf8. Par contre tu essaie de les relire en utf-8 d'où le 0 match lors du equals avec la valeur au clavier.

    Citation Envoyé par tchize_ Voir le message
    essaie ça, l'encodage devrait etre ok entre java et netbeans sur la lecture clavier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static String lireChaine() {
            return System.console().readLine();
     
        }
    Une fois ce que tu utlise bien console et non Scanner(System.in), tu as bien une lecture correct des accents au clavier. Alors que sans ça sous windows, t'obtiens de la purée en sortie du Scanner.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        static String lireChaine() {
            System.out.println("Saisissez votre mot: ");
    		String mot = System.console().readLine();
            System.out.println("Le mot à identifier sera limité par deux espaces: " + "_" + mot + "_");
            return "_" + mot + "_";
     
        }
    Et une fois que tu écrit correctement en utf=8 et non pas en encodage par défaut tes fichiers DT/NDT, tu as des matchs corrects.
    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
        static void collectStats(BufferedReader file, int nombre) {
            String line = "";
            try {
                line = file.readLine();
                ArrayList<String> nGramsDT = new ArrayList<String>();
                ArrayList<String> nGramsNDT = new ArrayList<String>();
    
                while (line != null) {
                    String[] ss = line.split("\\[");
                    String line1 = ss[0].toLowerCase();
                    String line2 = ss[1];  // DT] ou NDT]
                    String firstChar = line2.substring(0, 1); // avec substring
                    if (firstChar.equals("N")) {
                        gnerationNGrams(nGramsNDT, line1, nombre);
    
                    } else {
                        gnerationNGrams(nGramsDT, line1, nombre);
    
                    }
                    line = file.readLine();
                }
                System.out.println("Le nombre de " + nombre + "-gramme de la liste Non Dialecte Tunisien (NDT) = " + nGramsNDT.size());
                PrintWriter fichNDT = new PrintWriter(Files.newBufferedWriter(Paths.get("Mes corpus/NDT.txt"), StandardCharsets.UTF_8));
                ExtractionNGram2 EN = new ExtractionNGram2();
                fichNDT.print(EN.occurence(nGramsNDT));
                fichNDT.close();
                System.out.println("fichier NDT.txt est créé avec succès!");
    
                //DT
                System.out.println("Le nombre de " + nombre + "-gramme de la liste Dialecte Tunisien (DT) = " + nGramsDT.size());
                BufferedWriter fichDT = Files.newBufferedWriter(Paths.get("Mes corpus/DT.txt"), StandardCharsets.UTF_8);
                fichDT.write(EN.occurence(nGramsDT));
                fichDT.close();
                System.out.println("fichier DT.txt est créé avec succès !");
    
            } catch (Exception e) {
                System.out.println("erreur");
            }
    
        }
    C:\Users\tchize\Downloads>"c:\Program Files\Java\jdk1.8.0_11\bin"\java corpus.ExtractionNGram2
    Saisissez le nombre de gramme : Unigramme (n=1) | Bigramme (n=2) | Trigramme (n=3) n ==>
    3
    Le nombre de 3-gramme de la liste Non Dialecte Tunisien (NDT) = 193657
    fichier NDT.txt est créé avec succès!
    Le nombre de 3-gramme de la liste Dialecte Tunisien (DT) = 225696
    fichier DT.txt est créé avec succès !
    Saisissez votre mot:
    évé
    Le mot à identifier sera limité par deux espaces: _évé_
    l'extraction de 3-grames: [_év, évé, vé_]
    les fréquences de chaque 3-gram dans DT
    trouver _év dans Mes corpus/DT.txt
    trouver évé dans Mes corpus/DT.txt
    trouver vé_ dans Mes corpus/DT.txt
    _év = 0
    évé = 0
    vé_ = 0
    les fréquences de chaque 3-gram dans NDT
    trouver _év dans Mes corpus/NDT.txt
    trouvé _év fréquence=7
    trouver évé dans Mes corpus/NDT.txt
    trouvé évé fréquence=6
    trouver vé_ dans Mes corpus/NDT.txt
    trouvé vé_ fréquence=12
    _év = 7
    évé = 6
    vé_ = 12
    la somme des fréqeunce DT ==225696
    la somme des fréqeunce NDT ==193657
    ******************** DT ********************
    _év = 0.0
    évé = 0.0
    vé_ = 0.0
    **** la somme des proba DT = 0.0 ********
    _év = 3.614638252167492E-5
    évé = 3.0982613590007074E-5
    vé_ = 6.196522718001415E-5
    **** la somme des proba NDT = 1.2909422329169615E-4 ********
    le mot _évé_ est un NDT
    Cp1252
    java.io.Console@74a14482
    et en bonus, je te transforme ton code affreux en N² qui génère ta liste de fréquence après 1 minute de travail intensif en un machin qui te la sort instantanément en temps N. Parce que appeler en boucle Collection.frequency c'est un peu n'importe nawak sur une liste de 200.000 entrées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public String occurence(ArrayList<String> list) {
            StringBuilder sb = new StringBuilder();
            Map<String, Long> counted = list.stream()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
            for (Map.Entry<String,Long> e : counted.entrySet()) {
                long frequency = e.getValue();
                sb.append(e.getKey()).append(":").append(e.getValue()).append("\n");
                listOcc.add((int)frequency);
            }
            return sb.toString();
        }

Discussions similaires

  1. Problème listes chaînées et fichier texte
    Par khayyam dans le forum Pascal
    Réponses: 2
    Dernier message: 24/01/2007, 20h11
  2. Problème d'encodage de fichier
    Par djanggawul dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 03/01/2007, 20h26
  3. Déterminer l'encodage du fichier texte
    Par ze.Ninus dans le forum Langage
    Réponses: 1
    Dernier message: 10/10/2006, 16h43
  4. Problème d'encodage UTF8
    Par vg33 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 19h28
  5. Problème de réouverture de fichier texte
    Par EssaiEncore dans le forum Langage
    Réponses: 15
    Dernier message: 14/12/2005, 10h51

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