Bir metin içinde en çok geçen kelimeleri javascript ile bulmak istiyorum nasıl yapacağımı bilmiyorum.. Şöyle bir kaynak buldum amabu benim istediğim değil ben atıyorum bir metin içinde en çok kullanılan 20 kelimeyi bulmak istiyorum..

http://www.breakingpar.com/bkp/home.nsf/0/873ED81809E5398687256F8600343B58

soruldu: 10 May '14, 15:01

hasnhasan's gravatar image

hasnhasan
206131318
cevap kabul oranı: 50%

Fikri olan yokmu arkadaşlar :(

(11 May '14, 12:55) hasnhasan hasnhasan's gravatar image

Şöyle bir şey yaptım. Ayrıca bu linke fidle'ini koydum. Sanırım işini görecektir. Noktalama işaretlerinin replace edildiği yere dğer özel karakterleri de eklemen gerekir :

var cumle = 'Yalnız yaşamanın bir tek amacı vardır sanıyorum; o da daha başıboş, daha rahat yaşamak. Fakat her zaman, buna hangi yoldan varacağımızı pek bilmiyoruz. Çok kez insan dünya işlerini bıraktığını sanır; oysaki bu işlerin yolunu değiştirmekten başka bir şey yapmamıştır. Bir aileyi yönetmek bir devleti yönetmekten hiç de kolay değildir. Ruh nerde bunalırsa bunalsın, hep aynı ruhtur; ev işlerinin az önemli olmaları, daha az yorucu olmalarını gerektirmez. Bundan başka, saraydan ve pazardan el çekmekle hayatımızın baş kaygılarından kurtulmuş olmuyoruz.';

var kelimeler = cumle.split(" ");
var adet = new Array(kelimeler.length);  
var index = new Array(20);  
var divnesne = document.getElementById('sonuc');

for (var i = 0; i < index.length-1; i++) 
{
    index[i]=0;
}
for (var i = 0; i < kelimeler.length - 1; i++) 
{
    adet[i] = 0;
    kelimeler[i]=kelimeler[i].replace('.','').replace(',','').replace(':','').replace(';','');
}

for (var i = 0; i < kelimeler.length - 1; i++) 
{
    for (var k = 0; k < kelimeler.length - 1; k++) 
    {    
        if(kelimeler[i] == kelimeler[k])
        {
            adet[i]++;                   
        }
    }        
}

for (var k = 0; k < kelimeler.length - 1; k++) 
{
    kelimeler[k]=adet[k] + '@@##' + kelimeler[k];
}

kelimeler.sort();
kelimeler.reverse();

for (var k = 0; k < kelimeler.length - 1; k++) 
{    
    if(kelimeler[k] != kelimeler[k+1])
    {
        var flag  = true;
        for (var i = 0; i < index.length-1; i++) 
        {
            if(index[i] == 0 && flag == true)
            {
                index[i] = k;  
                flag  = false;
            }
        }

    }    
}

for (var i = 0; i < index.length-1; i++) 
{
    divnesne.innerHTML  = divnesne.innerHTML + '<br/>' + kelimeler[index[i]].split('@@##')[1];
}
permanent link

cevaplandı: 11 May '14, 16:59

osmanraifgunes's gravatar image

osmanraifgunes
2.4k81736
cevap kabul oranı: 31%

değiştirildi: 11 May '14, 17:08

Cevabınız için teşekkür ederim.Fakat Şöyle bir sorun var 20 kelime yoksa aynı kelimeyi 20 defa yazıyor.Birde En çok kullanılana göre listelemiyor. Bu konuda da yardımcı olursanız sevinirim

http://jsfiddle.net/azV6b/1/

(12 May '14, 07:01) hasnhasan hasnhasan's gravatar image

Amacım bir editorde yazılan metinin içerisindeki en çok kullanılan kelimeleri seçip kişiye şu kelimeleri kullanabilirsin demem lazım bir nevi otomatik seo için makaledeki kelimeleri çıkartıcak

(12 May '14, 09:35) hasnhasan hasnhasan's gravatar image

Birinci problemi düzelttim. Yani tek kelime olayını. Ancak en çok geçen kelimeyi getirmediğini ben tespit edemedim : http://jsfiddle.net/osmanraifgunes/azV6b/3/

(12 May '14, 09:45) osmanraifgunes osmanraifgunes's gravatar image

Şöyle biraz düzenledim kodu elinize sağlık. http://jsfiddle.net/azV6b/4/ Ençok çıkanlarda sorun :(

(12 May '14, 14:11) hasnhasan hasnhasan's gravatar image
1

sanırım sıralamnın doğru olmadığını düşündüren iki şey var :

1- önemli kelimesinin gelmesi : Ancak önemli kelimesi bir defa geçiyor ve yaşamanın, yaşamak, yapmamıştır kelimeleri de bir defa geçiyor. Bu nedenle öenmli kelimesinin görümesi hatalı bir durum değil. Hatta paragrafta daha önce geldiği için diğer birer defa geçenlere nispeten önceliğer sahip. Eğer sondakileriin gelmesini istersen for döngüleri ile oynaman gerekecek.

(12 May '14, 14:35) osmanraifgunes osmanraifgunes's gravatar image

2: ilk kelimenin üç, ikincisinin dört defa geçmesi. Bu da hata değil. Çünkü 45. satırdaki for 0 dan başlıyor ve ilkini es geçiyor ancak ikinci yan k=1 döngüsünde yakalnıyor. Zaten ilk 20yi gösterdiğin için sorun olmaz. Eğer sadece ilkini gösterecek olsaydın o zaman problem olurdu.

(12 May '14, 14:35) osmanraifgunes osmanraifgunes's gravatar image

bu arada 77.satırda ki select2 komutu nedir ? Yeni bir şeyse öğrenmek isterim.

(12 May '14, 14:36) osmanraifgunes osmanraifgunes's gravatar image

Yardımların için teşekkür ederim

(12 May '14, 14:57) hasnhasan hasnhasan's gravatar image
8 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×137

Soruldu: 10 May '14, 15:01

Görüntüleme: 1,011 kez

Son güncelleme: 12 May '14, 14:57

powered by BitNami OSQA