Controlla la densità delle parole all'interno di un documento

2

Ecco la situazione: Ho un Document(d) e un set di keywords (Set<String> keywords) . Mi piace controllare la densità di ogni parola da set keywords con d . Ho poche soluzioni ma non molto bene. per esempio: (NOTA l'implementazione è in java.)

Map<String,Integer> map
for each word in keywords do :
 d1 = d;
 int count=0;
 while(d1!=null) do:
    int next=firstOccurrenceOF word;
    if(next==-1){
      d1=null;
      continue;
    }
    d1=substring(firstOccurentOf word + word.length, d1.length())
    count++;
 od
 map.put(word,count);
od;

Questa soluzione funziona ma è molto lenta se il documento è grande e sono necessarie molte parole chiave da controllare.

NOTA: le parole chiave impostate possono contenere parole chiave con più parole

Questo è più un problema algoritmico piuttosto che una programmazione.

    
posta nafas 10.10.2014 - 17:18
fonte

1 risposta

1

Per la massima efficienza, utilizza il set di parole chiave per creare un Pattern , ad es.

Pattern p = Pattern.compile("circle|ellipse|parabola|hyperbola|conic\s*section");  
Matcher m = p.matcher(text)
while (m.find()) { ... }

Questo è il più veloce possibile in Java.

    
risposta data 10.10.2014 - 18:08
fonte

Leggi altre domande sui tag