Berechnen Sie die Schlüsselwortdichte jedes einzigartigen Elements in der Liste in Java?Java

Java-Forum
Anonymous
 Berechnen Sie die Schlüsselwortdichte jedes einzigartigen Elements in der Liste in Java?

Post by Anonymous »

Ich kann die Schlüsselwortdichte eines Textbuchs unter Verwendung des folgenden Codes berechnen: < /p>

Code: Select all

HashMap frequencies = new HashMap();

String[] splitTextArr = StringX.splitStrIntoWordsRtrnArr(text);

int articleWordCount = splitTextArr.length;

for (String splitText : splitTextArr) {

if (frequencies.containsKey(splitText)) {

Integer previousInt = frequencies.get(splitText);
Integer newInt = ++previousInt;
frequencies.put(splitText, newInt);
} else {

frequencies.put(splitText, 1);
}
}
< /code>
Ich sortiere dann die Liste der Schlüsselwortdichte in den meisten auftretenden Schlüsselwörtern auf die am wenigsten vorkommenden Schlüsselwörter mit dem folgenden Aufruf: < /p>
    Map sortedMap = new LinkedHashMapX().sortByValueInDescendingOrder(frequencies);
Der obige Code funktioniert wie erwartet, aber ich muss nun eine eindeutige Anforderung implementieren. /> Beispiel: Angenommen, ich habe die folgenden 5 Titel in Form eines LinkedHashMap :

Code: Select all

title1: canon photo printer
title2: canon camera canon
title3: wireless mouse
title4: wireless charger
title5: mouse trap
wobei der Schlüssel die titId (d. H., title1 , title2 usw. darstellt und der Wert den tatsächlichen Titel darstellt. /> Canon: 2 | Maus: 2 | Wireless: 2 | Kamera: 1 | Ladegerät: 1 | Foto: 1 | Drucker: 1 | Trap: 1
Hinweis: Jedes Schlüsselwort wird nur einmal pro Titel gezählt. Obwohl das Schlüsselwort Canon dreimal erscheint, da es zweimal im gleichen Titel erscheint (d. H. Title2 ), wird es nur einmal gezählt. Da jeder Titel genau durch ein Schlüsselwort dargestellt werden muss, können beide Titel durch das Schlüsselwort Canon dargestellt werden. Es ist nicht erforderlich, die anderen Schlüsselwörter aus title1 und title2 (wie: foto , drucker und camera ) aufzunehmen, da jeder Titel mit genau einem Schlüsselwort (nicht mehr) dargestellt werden sollte. Obwohl wir die Technologie dafür entscheiden, title1 und title2 die Schlüsselwörter Foto und camera zu repräsentieren (oder Drucker und camera ) - da dies die Gesamtzahl der notwendigen Schlüsselwörter erhöht, die notwendig sind, sind nicht gewünscht. Mit anderen Worten, möchten wir alle Titel nach der geringsten Anzahl von Schlüsselwörtern möglich . Wenn wir anstelle von 5 Titeln eine Liste von 100 Titeln hatten, in denen das Schlüsselwort foto 95 Mal erschien (d. H. Mehrmals als das Keyword Canon ), würde das Schlüsselwort foto verwendet, um das Schlüsselwort zu ersetzen Canon . Zwei oder mehr Schlüsselwörter können die gleiche Anzahl von Titeln darstellen. Wir würden den ersten in alphabetischer Reihenfolge auswählen. Somit würde das Schlüsselwort Maus verwendet, um Titel title3 und title5 anstelle des Keyword Wireless darzustellen. In ähnlicher Weise würde die title4 das Schlüsselwort Ladegerät verwendet, da der Buchstabe c vor dem Buchstaben W im Alphabet stimmt (dies ist wahr, obwohl das Keyword Wireless zweimal erscheint und das Schlüsselwort nur einmal erscheint, da das Schlüsselwort das Schlüsselwort enthält, das das Schlüsselwort enthält, das das Schlüsselwort enthält, das das Schlüsselwort enthält. Maus und nicht nach dem Schlüsselwort Wireless können wir das erste Schlüsselwort im Alphabet verwenden, wenn zwei Schlüsselwörter die gleiche Anzahl von Titeln darstellen.

Code: Select all

LinkedHashMap
Danke < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post