package LIA_topic_seg; import java.util.*; /** * Cette classe prend en charge le calcul des liens lexicaux du texte chargé dans un objet de type DefaultInputData * Les paramètres de calcul sont intégrés dans la configuration. Ils concernent le type de hiatus utilisé, et le * type de représentation du texte. * l'accès aux éléments décisif du texte se fait pour chaque lemme par un tableau qui indique à chaque phrase si il est * présent ou non, et le poids (ou la présence) d'un lien lexical. */ public class DefaultLexicalChainList implements LexicalChainList { int sentenceCount; LemmaDict dict; DefaultConfig config; DefaultInputData input; private static final int NO_HIATUS = 100; private static final int ADAPTIVE_HIATUS = 101; private static final int FIXED_HIATUS = 102; private int _hiatus; private int _hiatusValue; private boolean _useWeight; private boolean _computeChains; private ArrayList _lemmaList = new ArrayList(); //-------------------------------------------------------------------------- /** * Un Lemma est indique la répartition d'un lemme dans le texte, ainsi que la répartition et les * éventuelles pondération de ses liens lexicaux. * C'est cette classe qui se charge en réalité du calcul des liens lexicaux. */ private class Lemma { private LemmaDict.Lemma _ll; boolean[] presenceInSentenceVect; // = new boolean[sentenceCount]; float[] weightInSentenceVect; // = new float[sentenceCount]; //------------------------------------------------------------------------ Lemma(LemmaDict.Lemma ll) { _ll = ll; presenceInSentenceVect = new boolean[sentenceCount]; weightInSentenceVect = new float[sentenceCount]; Arrays.fill(presenceInSentenceVect, false); Arrays.fill(weightInSentenceVect, 0.0f); if (_hiatus == ADAPTIVE_HIATUS) _hiatusValue = ll.localHiatus(); int previousSentenceIdx = -1; int sentenceIdx = 0; int chainLength = 1; int lemmasInChainCount = 0; int lemmaSentenceCount = ll.sentenceCount(); for (int i=0; i 1) { float w = 1.0f; if (_useWeight) w = _ll.maxWeight * lemmasInChainCount * (float)Math.log((float)sentenceCount/(float)chainLength); for (int j=0; j