在mysql数据库上进行数据挖掘

时间:2010-03-31 13:03:47

标签: php mysql data-mining

我从文本开始。 我有两个包含数千个数据的数据库表。

“技能”表和“技能类别”表

  • 每个“技能”属于技能类别。
  • “技能”是数据库中的varchar(200)字段,其中有一些描述技能的文本。

以下是从技能表中提取的一些技能:

“PHP(优秀级别),Java(intermediaite),C ++” “PHP5” “项目管理和质量管理” “开始使用Javascript” “水工程” “dfsdf zerze rzer” “cibling customers”

我想要做的是从这些领域中提取知识,我的意思是只提取真正的技能而忽略剩下的无用文本。 对于上面的例子,我想只得到一个数组:

“PHP” “Java” 的 “C ++” “PHP5” “项目管理” “质量管理” “使用Javascript” “水工程” “cibling customers”

我应该怎么做才能从大量数据中提取技能? 你知道具体的算法吗?例如:k-means ......?

提前致谢。

3 个答案:

答案 0 :(得分:0)

我会使用正则表达式来解析每一行数据,首先用逗号(,)拆分,然后删除括号内的任何文本,以及导致这些括号的空格。至于删除垃圾法,也许与已接受的单词列表相比较?

我还注意到关键字“AND”表示两个独立的技能,按您想要的输出。使用这种处理方法的结果可能有点粗略,因为数据并非全部都是相同的格式。

答案 1 :(得分: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"

等...

我知道它有点凌乱而且很长,但这是我脑子里想到的第一件事。

希望有所帮助

答案 2 :(得分: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) . '"';

你可以使用这样的东西建立一个白色和黑色列表。从长远来看,你可以更好地控制什么是积极的,什么不是。

相关问题