Mysql veritabanı üzerinde veri madenciliği

3 Cevap php

I Begin with textmining. I have two database tables with thousands of data..

"beceri kategorilerinde" için "beceri" ve bir tablo için bir tablo

  • Her "beceri" bir beceri kategoride aittir.
  • beceri açıklayan bazı metin var olduğu bir "beceri", veritabanında, physicaly, bir varchar (200) alandır.

İşte beceri tablodan çıkarılan bazı becerileri:

"PHP (good level), Java (intermediaite), C++" "PHP5" "project management and quality management" "begining Javascript" "water engineering" "dfsdf zerze rzer" "cibling customers"

what i want to do is to extract knowledge from those fields, i mean extract only the real skill and ignore the rest of useless text. for the above example i want to get only an array with:

"PHP" "Java" "C++" "PHP5" "project management" "quality management" "Javascript" "water engineering" "cibling customers"

what should i do to extract the skills from tons of data please ? do you know specific algorithms to do this ? ex : k-means ... ?

Şimdiden teşekkürler.

3 Cevap

I (,) virgül ile her şeyden önce bölme, her veri satırı ayrıştırmak için Regex faydalanmak ve daha sonra parantez içinde yapılacak herhangi bir metni kaldırarak, ve boşluk bu parantez neden olur. Önemsiz pharases kaldırılması gibi, belki de kabul edilen bir kelime listesine karşılaştıran?

Ben de anahtar kelime 'VE' İstediğiniz çıktı gidiş, iki ayrı beceri gösterir dikkat edin. Işlemenin bu yöntemi kullanarak sonuçları nedeniyle veriler tüm neccesarily aynı formatta olmamak için biraz kabataslak olabilir.

Bu sıfırdan başlamak çok zor olurdu,

Bir yerden beceri setleri için bazı verileri ayrıştırmak ve bir tabloya onlara yük ve bu tabloya verileri eşleştirmek için çalışırken, referans tablo olarak bu tabloyu kullanmak istiyorum. Aksi takdirde kelime veya cümleleri anlamlı olup olmadığını belirlemek için bir yol var.

Ve her ifade için ben aşağıdaki algoritmayı kullanmak istiyorum

Eğer 5 kelime bir cümle var demek

 "one two three four five"

Bu bir, kontrol yüzden tutmak ve sonraki birine giderseniz, masama var, eğer olmadığını ilk ben kontrol ederdim

 "one two three four" and "two three four five"

ve onlar da, çek maç dont

  "one two three", "two three four", "three four five"

vs ..

Ben biraz dağınık ve uzun bir yol olduğunu biliyorum, ama bu ilk şey aklıma geldi olduğunu.

Umarım yardımcı olur

<?php
$white_list = array(); // Add acceptable words and/or characters
$black_list = array(); // Add unacceptable words and/or characters

$s = '"PHP (good level), Java (intermediaite), C++" "PHP5" "project management and quality management" "begining Javascript" "water engineering" "dfsdf zerze rzer" "cibling customers"';

$words = explode(" ",$s);

$primary = array();
$secondary = array();
foreach($words as $word) {
    $new_word = trim(str_replace($black_list, "", $word));
    if (in_array($new_word,$white_list) == true) {
        $primary[] = $new_word;
    } else {
        $secondary[] = $new_word;
    }
}

$collected = '"' . implode('" "',$primary) . '"';

Sen beyaz ve siyah listeleri bir tablo oluşturmak için böyle bir şey kullanabilirsiniz. Uzun vadede size olumlu ne üzerinde daha iyi kontrole sahip ve ne değildir olacak.