我从文本挖掘开始。我有两个有数千个数据的数据库表。
“技能”表和“技能类别”表
以下是从“技能”表中提取的一些技能:
"PHP (良好水平),Java (中间层),C++“"PHP5”“项目管理和质量管理”“启动Javascript”“水工程”"dfsdf zerze rzer“”混淆客户“
我想要做的是从这些领域中提取知识,我的意思是只提取真正的技能,而忽略其余无用的文本。对于上面的示例,我只想获得一个数组:
"PHP“、"C++”、"PHP5“、”项目管理“、”质量管理“、"Javascript”、“水工程”、“联系客户”
我该怎么做才能从海量的数据中提取技能呢?你知道做这件事的具体算法吗?例:K-意思是.?
提前谢谢。
发布于 2010-03-31 13:10:19
我将使用Regex解析每一行数据,首先用逗号(,)分割,然后删除括号中的任何文本,以及导致这些方括号的空格。至于删除垃圾药品,也许与公认的单词列表相比?
我还注意到,关键字‘’和‘表示两个独立的技能,根据您想要的输出。结果使用这种方法处理数据可能有些粗略,因为数据并非都是相同格式的。
发布于 2010-03-31 13:17:38
从零开始很难,
我会解析来自某个地方的技能集的一些数据,并将它们加载到一个表中,并使用该表作为引用表,试图匹配该表中的数据。否则,你就无法确定这些单词或短语是否有意义。
对于每一个短语,我都会使用以下算法
说你有一个五个词的短语
"one two three four five"首先,我会检查我的表中是否存在这个,如果是的话,保存它,然后转到下一个,如果没有,检查
"one two three four" and "two three four five"如果它们也不匹配,请检查
"one two three", "two three four", "three four five"等等。
我知道这是有点混乱和漫长的道路,但这是第一件事在我的脑海中。
希望它能帮上忙
发布于 2010-03-31 14:18:33
<?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) . '"';您可以使用类似的东西来构建一个由白色和黑色列表组成的表。从长远来看,你会更好地控制什么是积极的,什么是不积极的。
https://stackoverflow.com/questions/2553078
复制相似问题