21. februar 2018 - 10:35Der er
9 kommentarer og 1 løsning
Optælling af ord.
Hej. Jeg sidder og laver et web site med artikler. Jeg vil gerne have en slags ord optælling, hvor jeg har 10 ord, som jeg gerne vil se hvor mange gange bliver nævnt i de forskellige artiklers headline og snippet (som jeg har kaldt underoverskriften). Jeg har lidt svært ved at finde ud af hvordan jeg gør dette, er der nogen der kan vise et eksempel? Tak :)
Altså noget kode er jo ikke så intelligent, så den kan sige: Tæl kun ord i "artiklerne". Så du kan vel udtrække de artikler du ønsker og behandle dem en for en og samle resultaterne.
Ja, det er selvfølgelig rigtigt.. problemet er så bare at artiklerne opdaterer løbende, så når der kommer nyere til ville det være fedt ikke at skulle behandle dem manuelt hele tiden!
Nu er det svært at gætte hvad dit setup er. Men hvis jeg havde en hjemmeside, så ville jeg jo kunne lave:
//optællings-side
//udtræk data fra X artikler
//ord der skal tælles
//optæl ord i de artikler der er interessante
//vis resultat
og dermed skal det jo ikke laves manuelt. Det kan sagtens laves automatisk, men det kræver du giver noget input. Pt gætter jeg på hvad vi har med at gøre. Jeg aner ikke om du har en wordpress blog, en statisk html side eller noget helt tredje.
Har en HTML side, og arbejder primært med HTML og Javascript. Jeg kan ikke rigtig udvælge artikler, da de bliver opdateret løbende, og derfor ikke bliver på siden særlig længe ad gangen. Derfor vil jeg gerne have en optælling der opdaterer sammen med artiklerne. Artiklerne får jeg ind via en API, så tænkte at man måske kunne sætte ord-tællings funktionen sammen med API'en. Dette er den kode jeg har arbejdet med, men den virker ikke rigtig, men det er i hvert fald mit udgangspunkt:
function splitString(stringToSplit, separator) { var arrayOfStrings = stringToSplit.split(separator); } var space = " "
var wordOne = 0; var trump = 0 var olympics = 0 var russia = 0 var korea = 0 var yellow = 0 var politics = 0 var sports = 0 var year = 0 var weather = 0
var array = [];
var headlines = document.getElementsByTagName("h2");
for (var i = 0; i < headlines.length; i++) { var str = headlines[i].innerHTML var res = str.split(" "); if(res == "police"){ wordOne++;
Hvis du loader artiklerne via et api, så giver det bedre mening at lave denne optælling inden du laver "html" af dit output fra dette api. Det var noget med en US avis, var det ikke ?
Det er via New York Times, dette er lavet i en JavaScript fil, da det er her min API også indgår! Jeg er bare ikke sikker på hvordan koden til en optælling skal se ud.
Du får lige et bryg i vba - kan måske give ideer til implementation i javascript.
Function words(filename) As Dictionary Set words = New Dictionary Dim match, word For Each match In regex("\b[a-zA_ZæøåÆØÅ]+\b").Execute(fileInputString(filename)) word = LCase(match.value) If words.Exists(word) Then words.item(word) = words.item(word) + 1 Else words.Add word, 1: End If: Next End Function
Function maxwords(filename, ByVal wCnt) Dim dic As New Dictionary, higest, i Set dic = words(filename)
higest = reduce(dic.Items, max) While wCnt For Each i In dic.Keys If dic(i) = higest Then push maxwords, i & ": " & higest wCnt = wCnt - 1 If wCnt = 0 Then Exit Function End If Next higest = higest - 1: Wend End Function
teksten i dit spørgsmål er gemt i d:\text.txt jl maxwords("text.txt",10) 'jl: join lines jeg: 7 har: 3 og: 2 et: 2 vil: 2 gerne: 2 ord: 2 hvor: 2 som: 2 der: 2
Der er anvendt library kald af egen bryg, men da det blot er til inspiration til javascript implementering er disse ikke med her.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.