Удаление массива нежелательных слов из строки - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть массив «мусорных слов», которые я хочу удалить из списка терминов.

Цель состоит в том, чтобы найти наиболее часто встречающиеся термины в объявлении о работе.Я хочу найти фактический текст и вычеркнуть такие слова, как «функция», «и», «или», «а» и т. Д.

Это будет включено в букмарклет.

Сценарий, который у меня есть, удаляет некоторые из них, но не все!

Я перепробовал все предложенные ссылки на StackOverflow, и до сих пор все были короткими - я, вероятно, что-то упустил, ноиз идей.

javascript:var page=window.location.href;
var counts={};
var text=document.body.textContent||document.body.innerText||'';

var garbageString = ["of", "the", "in", "on", "at", "to", "a", "is", "and", "function", "open", "drop", "be"];
var text = text.split(" ");
for(var i=0; i < garbageString.length; i++){
    for(var j=0; j < text.length; j++){
        if(text[j].toLowerCase() === garbageString[i]){
            text.splice(j, 1);
        }
    }
}
text = text.join(" ");


var words=text.split(/\b/).filter(function(word){return word.match(/^\w+$/)!==null});

words.forEach(function(word){counts['_'+word.toLowerCase()]=(counts['_'+word]||0)+1});
var sorted=Object.keys(counts).sort(function(a,b){return counts[b]-counts[a]});
var message=sorted[0]===undefined?'No words found!':'<center><b>For the page: <i><font color=\"#0000FF\" size=\"-2\">'+page+'<\/i><\/font><br\/>The Top 20 words are:<\/center><\/b><br>';
sorted.forEach(function(word,index){
if(index>19||word===undefined)return;message+='\n#'+(index+1)+': '+word.substring(1)+' ('+counts[word]+' occurrences)<br>'});
w=window.open('','Word Mode','scrollbars,resizable,width=250,height=500');
w.document.write(message);

Когда я тестирую букмарклет на URL-адресе, таком как:

https://jobs.jpmorganchase.com/ShowJob/Id/208140/VP,%20Software%20Engineering%20%E2%80%93%20Agile%20Coach

Я хотел бы увидеть списоктерминов, которые относятся к объявлению о работе и навыкам;не это:

  1. до (51 вхождение)
  2. и (43 вхождения) функция
  3. (29 вхождений)
  4. a (28 вхождений)
  5. open (28 вхождений)
  6. drop (28 вхождений)
  7. из (20 вхождений)
  8. be (19 вхождений)
  9. var (14 вхождений)
  10. is (14 вхождений)

1 Ответ

0 голосов
/ 12 апреля 2019

Использовать фильтр.

var text=document.body.textContent||document.body.innerText||'';

var garbageString = ["of", "the", "in", "on", "at", "to", "a", "is", "and", "function", "open", "drop", "be"];

var words = text.split(" ");

var filteredWords = words.filter(function(word) {
   return garbageString.indexOf(word.toLowerCase()) === -1;
}).sort();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...