Sentence.java 2.85 KB
package LIA_topic_seg;

import java.util.*;

/**
 * Cette classe représente les informations contenues dans une phrase, c'est à dire un texte brut
 * et un ensemble de lemmes pondérés.
 */
class Sentence
{
  //--------------------------------------------------------------------------
  /**
   * Cette classe permet de conserver les informations sur un lemme, c'est à dire son rang d'accès 
   * dans le dictionnaire des lemmes, et le poids qui lui est attribué dans le fichier d'entrée.
   */
	class Lemma
  {
  	int   code;
  	float weight;

  	Lemma(int c, float w)
  	{
  	  code = c;
  	  weight = w;
  	}
  }
  //--------------------------------------------------------------------------
  String content;
  private ArrayList<Lemma> _lemmaList = new ArrayList<Lemma>();
  //private Hashtable<Integer, Integer> _dict
  //                   = new Hashtable<Integer, Integer>(); // code + occurences
  private int _wordCount;
  private boolean _wordCountDefined = false;
  //--------------------------------------------------------------------------

 /**
  * Cette fonction permet de signaler la présence d'un lemme dans une phrase
  * @param code : le code issu du dictionnaire des lemmes
  * @param weight : le poids attribué au lemme dans la phrase
  */ void addLemma(int code, float weight)
  {
    //int occurences = 1;
    //Integer xocc = _dict.get(code);
    //if (xocc != null)
    //  occurences = xocc.intValue()+1;
    //_dict.put(code, occurences);
    _lemmaList.add(new Lemma(code, weight));
  }
  //--------------------------------------------------------------------------
  /**
   * Cette fonction permet de calculer de manière basique le nombre de mots du texte brut de la phrase
   * les séparateurs de mots utilisés sont les caractères d'espacement.
   * @return : retourne le nombre de mots de la phrase
   */
  int wordCount()
  {
    if (!_wordCountDefined)
    {
      _wordCount = new StringTokenizer(content, " '\t\n\r\f").countTokens();
      _wordCountDefined = true;
    }
    return _wordCount;
  }
  //--------------------------------------------------------------------------
  /**
   * Cette fonction renvoie le nombre de lemmes associés à la phrase
   * @return le nombre de lemmes
   */
  int lemmaCount()
  {
    return _lemmaList.size();
  }
  //--------------------------------------------------------------------------
  /**
   *Cette fonction permet d'accéder à un lemme de la phrase en fonction de son rang dans la phrase
   *@return un objet de type Lemma (défini par un code dans le dictionnaire des lemmes et un poids) 
   */
  
  Lemma lemmaObject(int lemmaIdx)
  {
    return _lemmaList.get(lemmaIdx);
  }
  //--------------------------------------------------------------------------
  //int lemmaOccurences(int lemmaCode)
  //{
  //  return _dict.get(lemmaCode);
  //}
  //--------------------------------------------------------------------------
}