nouvele base
This commit is contained in:
parent
40a222510c
commit
045e613ff2
|
|
@ -1,5 +1,7 @@
|
|||
package Main;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Avis {
|
||||
private String commentaire;
|
||||
private int positif;
|
||||
|
|
@ -13,24 +15,43 @@ public class Avis {
|
|||
url = u;
|
||||
}
|
||||
|
||||
public static int Analyse(Avis a, Dictionnaire dico) {
|
||||
String[] motsCommentaire = a.getCommentaire().split("\\W+");
|
||||
int total = 0;
|
||||
public static int Analyse(List<String> a, Dictionnaire dico) {
|
||||
int moyenne = 0;
|
||||
int sommenote = 0;
|
||||
|
||||
for (String m : motsCommentaire) {
|
||||
m = m.toLowerCase();
|
||||
m = Dictionnaire.normaliserMot(m);
|
||||
for (String commentaire : a) {
|
||||
String[] motsCommentaire = commentaire.split("\\W+");
|
||||
int score = 0;
|
||||
|
||||
if (Dictionnaire.isStopWord(m)) continue;
|
||||
if (!dico.getDico().containsKey(m)) continue;
|
||||
for (String m : motsCommentaire) {
|
||||
double a1 = 0.0;
|
||||
m = m.toLowerCase();
|
||||
m = Dictionnaire.normaliserMot(m);
|
||||
|
||||
total += dico.getDico().get(m).getSentiment();
|
||||
System.out.println(total);
|
||||
if (Dictionnaire.isStopWord(m)) continue;
|
||||
if (!dico.getDico().containsKey(m)) continue;
|
||||
|
||||
score += dico.getDico().get(m).getSentiment();
|
||||
System.out.println(score);
|
||||
|
||||
if (score >= 1000) a1 = 5;
|
||||
else if (score >= 500 ) a1 = 4.0 + (score - 7) / 3.0;
|
||||
else if (score >= 0) a1 = 3.0 + (score - 4) / 3.0;
|
||||
else if (score <0) a1 = 2.0 + (score - 1) / 3.0;
|
||||
|
||||
|
||||
sommenote += a1;
|
||||
System.out.println(a+"taille");
|
||||
}
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
// Calcul de la moyenne, en s'assurant de ne pas diviser par 0
|
||||
if (!a.isEmpty()) {
|
||||
moyenne = (int) (sommenote / a.size());
|
||||
}
|
||||
|
||||
return moyenne;
|
||||
}
|
||||
|
||||
public String getCommentaire() {
|
||||
return commentaire;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
public class ListeAvis {
|
||||
private List<Avis> listeAvis;
|
||||
private static List<Avis> listeAvis;
|
||||
|
||||
public ListeAvis(String csvPath) {
|
||||
listeAvis = new ArrayList<>();
|
||||
|
|
@ -22,14 +22,13 @@ public class ListeAvis {
|
|||
while ((ligne = br.readLine()) != null) {
|
||||
String[] valeurs = ligne.split(";", 4);
|
||||
|
||||
|
||||
if (valeurs.length != 4) {
|
||||
System.err.println("Ligne ignorée (format incorrect) : " + ligne);
|
||||
continue;
|
||||
}
|
||||
|
||||
try {
|
||||
int numeroFilm = Integer.parseInt(valeurs[0].trim());
|
||||
int numeroFilm = Integer.parseInt(valeurs[1].trim());
|
||||
String url = valeurs[1].trim();
|
||||
String commentaire = valeurs[3].trim();
|
||||
int polarite = Integer.parseInt(valeurs[2].trim());
|
||||
|
|
@ -58,4 +57,19 @@ public class ListeAvis {
|
|||
public List<Avis> getListeAvis() {
|
||||
return listeAvis;
|
||||
}
|
||||
|
||||
|
||||
public static List<String> getCommentairesParFilm(int numeroFilm) {
|
||||
List<String> commentaires = new ArrayList<>();
|
||||
|
||||
for (Avis avis : listeAvis) {
|
||||
if (avis.getFilm() == numeroFilm) {
|
||||
commentaires.add(avis.getCommentaire());
|
||||
}
|
||||
}
|
||||
|
||||
return commentaires;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,24 +3,26 @@ package Main;
|
|||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
|
||||
/* String cheminFichierExcel = "C:\\Users\\Qpelu\\Downloads\\big.csv";
|
||||
String cheminSauvegarde = "C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv";
|
||||
// String cheminFichierExcel = "C:\\Users\\Qpelu\\Downloads\\big.csv";
|
||||
// String cheminSauvegarde = "C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv";
|
||||
|
||||
ListeAvis listeAvis = new ListeAvis(cheminFichierExcel);
|
||||
// ListeAvis listeAvis = new ListeAvis(cheminFichierExcel);
|
||||
|
||||
|
||||
Dictionnaire dictionnaire = new Dictionnaire();
|
||||
Dictionnaire dictionnaire = new Dictionnaire("C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv");
|
||||
|
||||
Avis a = new Avis(0, "szzn", "salut je suis un gros con", 0);
|
||||
Avis a = new Avis(0, "szzn", "salut j'ai adoré ce film magnifique", 0);
|
||||
|
||||
Avis.Analyse(a, dictionnaire);
|
||||
|
||||
|
||||
/* Avis.Analyse(a, dictionnaire);
|
||||
|
||||
|
||||
dictionnaire.apprentissageSentiment(listeAvis.getListeAvis());
|
||||
|
||||
dictionnaire.sauvegarderDictionnaireCSV(cheminSauvegarde);
|
||||
dictionnaire.sauvegarderDictionnaireCSV(cheminSauvegarde);*/
|
||||
|
||||
}*/Dictionnaire d =new Dictionnaire("C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv");
|
||||
System.out.println(d);
|
||||
///Dictionnaire d =new Dictionnaire("C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv");
|
||||
//System.out.println(d);
|
||||
}
|
||||
}
|
||||
|
|
@ -194,62 +194,15 @@ public class inter extends JFrame {
|
|||
rafraichirPanel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Analyse un commentaire et calcule une note sur 5
|
||||
*/
|
||||
/*private int analyserCommentaire(String commentaire) {
|
||||
if (commentaire == null || commentaire.trim().isEmpty()) {
|
||||
return 3; // Note moyenne par défaut
|
||||
}
|
||||
private int calculerNoteMoyenne(int filmNumber) {
|
||||
int totalNotes= 0;
|
||||
Dictionnaire dico=new Dictionnaire("C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv");
|
||||
|
||||
StringTokenizer tokenizer = new StringTokenizer(commentaire.toLowerCase(), " ,.!?;:()\n\t\"'");
|
||||
|
||||
int totalSentiment = 0;
|
||||
int nbMots = 0;
|
||||
|
||||
while (tokenizer.hasMoreTokens()) {
|
||||
String mot = tokenizer.nextToken();
|
||||
|
||||
Integer sentiment = dictionnaireSentiments.get(mot);
|
||||
if (sentiment != null) {
|
||||
totalSentiment += sentiment;
|
||||
nbMots++;
|
||||
}
|
||||
}
|
||||
|
||||
if (nbMots == 0) {
|
||||
return 3; // Note moyenne par défaut
|
||||
}
|
||||
|
||||
// Calculer la note
|
||||
double moyenneSentiment = (double) totalSentiment / nbMots;
|
||||
int note = (int) Math.round(moyenneSentiment * 5 / 100);
|
||||
|
||||
// Limiter entre 1 et 5
|
||||
return Math.max(1, Math.min(5, note));
|
||||
}/*
|
||||
|
||||
/**
|
||||
* Calcule la note moyenne d'un film basée sur tous ses commentaires
|
||||
*/
|
||||
private int calculerNoteMoyenne(int filmNumber) {
|
||||
|
||||
Dictionnaire dico = new Dictionnaire();
|
||||
List<String> commentaires = commentairesFilms.get(filmNumber);
|
||||
|
||||
if (commentaires == null || commentaires.isEmpty()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int totalNotes = 0;
|
||||
|
||||
for (String commentaire : commentaires) {
|
||||
Avis com =new Avis(filmNumber,"cd",commentaire,0);
|
||||
totalNotes += Avis.Analyse(com, dico);
|
||||
totalNotes += Avis.Analyse(ListeAvis.getCommentairesParFilm(filmNumber), dico);
|
||||
System.out.println(totalNotes);
|
||||
}
|
||||
|
||||
return Math.round((float) totalNotes / commentaires.size());
|
||||
|
||||
return totalNotes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -437,13 +390,15 @@ public class inter extends JFrame {
|
|||
/**
|
||||
* Ajoute un commentaire à un film et met à jour l'interface
|
||||
*/
|
||||
private void ajouterCommentaire(int filmNumber, String commentaire) {
|
||||
private void ajouterCommentaire(int filmNumber, String c) {
|
||||
// Récupérer la liste des commentaires
|
||||
List<String> commentaires = commentairesFilms.get(filmNumber);
|
||||
commentaires.add(commentaire);
|
||||
ListeAvis lavis = new ListeAvis("C:\\Users\\Qpelu\\Downloads\\big.csv");
|
||||
Dictionnaire dico = new Dictionnaire("C:\\Users\\Qpelu\\Downloads\\dictionnaire.csv");
|
||||
List<String> commentaires = ListeAvis.getCommentairesParFilm(filmNumber);
|
||||
commentaires.add(c);
|
||||
|
||||
// Calculer la nouvelle note moyenne
|
||||
int noteMoyenne = calculerNoteMoyenne(filmNumber);
|
||||
int noteMoyenne = Avis.Analyse(commentaires, dico);
|
||||
notesFilms.put(filmNumber, noteMoyenne);
|
||||
|
||||
// Mettre à jour l'interface
|
||||
|
|
|
|||
Loading…
Reference in New Issue