2010-08-13 5 views
2

나는 웹 페이지의 모든 텍스트를 세는 북마크릿을 만들고, 절대적으로 위치한 div에 가장 적은 것부터 가장 적은 것까지 결과를 표시하고 싶습니다.단어 빈도를 계산하는 북마크릿 작성하기

모든 Google 검색은 양식 또는 텍스트 영역 또는 알려진 div ID의 총 단어 수를 계산하는 것에 대해 이야기했습니다. 그건 내가 원하는 것이 아니야. 각각의/w가 전체 웹 페이지에 나타나는 횟수를 원합니다.

나는 이것을 수행하는 방법을 모른다는 것을 알기에 충분한 자바 스크립트를 알고있다. 이 같은

+0

https://www.squarefree.com/bookmarklets/seo.html을보고 싶을 수도 있습니다. 거기에 단어 빈도 북마크 렛이 꽤 잘 작동합니다. –

+0

귀하의 google-fu가 실패하고 있습니다. 'bookmarklet word frequency'와'seo bookmarklet word frequency '를 검색하십시오. 나는 많은 좋은 안타를 본다. –

답변

2

뭔가 작업을해야합니다 :

function countWordFrequency() { 
    var freq={}; 
    // Traverse the DOM looking for text nodes. 
    recurseTextNodes(function(textNode) { 
    // Split the text into words, removing punctuation. 
    var words = textNode.data.replace(/[^\w\s]/g, '').split(/\s+/) 
     , len = words.length; 
    // Count the word frequency. 
    for (var i=0; i<len; i++) { 
     // if (freq[words[i]]) { bug if one of the words is "constructor"! 
     if (typeof freq[words[i]] === 'number') { 
     freq[words[i]] += 1; 
     } else { 
     freq[words[i]] = 1; 
     } 
    } 
    }); 
    return freq; 
} 

이 솔루션은 방법으로 지나치게 간단 할 수는 구두점을 제거하고 단어의 구문을 분석하지만, 아이디어를 설명해야한다고. 또한 recurseTextNodes 함수는 독자에게 연습 문제로 남아 있습니다. 이 루틴을 북마크릿으로 저장하는 방법 (예 : 결과를 최종 사용자에게 표시하는 방법)의 의미도 있지만, 다시 한 번 수행 할 방법에 대한 아이디어가 있다고 가정합니다.

+1

안녕하세요, 코드가 거의 완벽하지만 텍스트에 예를 들어 "생성자"라는 단어가 포함되어 있으면 버그가 있습니다. Douglass Crockford의 설명을 보려면 http://oreilly.com/javascript/excerpts/javascript-good-parts/awful-parts.html#object를 참조하십시오. –

관련 문제