2010-03-31 64 views
1

我以textmining開頭。 我有成千上萬的數據爲「技能類別」在mysql數據庫上打包數據

  • 每個「技能」兩個數據庫表..

    一表「技能」和一張桌子屬於技能categorie。

  • 「技能」是數據庫中的physicaly,varchar(200)字段,其中有一些描述技能的文本。

下面是從技能上表中提取的一些技巧:

「PHP(良好水平),爪哇(intermediaite),C++」 「PHP5」 「項目管理和質量管理」 「開頭的Javascript 「 ‘水工程’ ‘dfsdf zerze rzer’ ‘cibling客戶’

我想要做的就是從這些領域中提取知識,我的意思是隻提取了真功夫,而忽略無用文字的其餘部分。 對於上面的例子我想只能用數組:

「PHP」 的 「Java」 「C++」 「PHP5」 「項目管理」 「質量管理」 「使用Javascript」 「水工程「 」兄弟客戶「

我該怎麼做才能從噸數據中提取技能? 你知道具體的算法嗎? ex:k-means ...?

在此先感謝。

+0

你能展示一些現實世界的數據例子嗎? – 2010-03-31 13:14:05

+0

任何答案都是可行的解決方案? – 2010-04-02 14:34:04

回答

0

我會利用正則表達式分析每一行數據,首先用逗號(,)分割,然後刪除括號內的任何文本以及通向這些括號的空格。至於刪除垃圾語句,可能是比較接受的單詞列表?

我還注意到,關鍵字'AND'表示兩個單獨的技能,通過您所需的輸出。由於數據並非都是相同格式的,所以使用這種處理方法的結果可能有點簡單。

0

這將是非常困難的從頭開始,

我從什麼地方來解析技能的一些數據,並將它們加載到一個表,並使用該表作爲參考表,試圖從表中的數據相匹配。否則,您無法確定單詞或短語是否有意義。

和每個短語我會使用以下算法

說當你有5個字

"one two three four five" 

短語首先我會查一下我的表是否存在這一個,如果這樣繼續它和去下一個,如果不是,請檢查

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

,如果他們不匹配或者,檢查

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

等等

我知道這是一個有點亂,很長的路要走,但它的第一件事是排在我的腦海裏。

希望它可以幫助

0
<?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) . '"'; 

你可以使用像這樣建立的白名單和黑名單的表。從長遠來看,你可以更好地控制什麼是積極的,哪些不是。