2010-03-31 5 views
1

Я начинаю с текстовой обработки. У меня есть две таблицы базы данных с тысячами данных ..Datamining в базе данных mysql

таблицы для «навыков» и стола для «навыков категории»

  • каждое «мастерство» относится к категории навыков.
  • «умение» - это физическое поле varchar (200) в базе данных, где есть текст, описывающий навык.

Вот некоторые навыки, извлеченные из навыков таблицы:

"PHP (хороший уровень), Java (intermediaite), C++" "управление проектами и управление качеством" "PHP5" «начинающуюся Javascript " „Гидротехника“ „dfsdf zerze rzer“ „cibling клиенты“

то, что я хочу сделать, это извлечь знания из этих полей, я имею в виду извлечь только реальные навыки и игнорировать остальную часть бесполезного текста. для приведенного выше примера я хочу получить только массив:

"PHP" "Java" "C++" "управление проектами" "PHP5" "управление качеством" "Javascript" «вода инженерные " " cibling customers "

Что мне делать, чтобы извлечь навыки из тонны данных, пожалуйста? Вы знаете конкретные алгоритмы для этого? ex: k-означает ...?

Заранее спасибо.

+0

Можете ли вы показать примеры реальных данных в реальном мире? –

+0

Любое из ответов - жизнеспособное решение? –

ответ

0

Я бы использовал Regex для синтаксического анализа каждой строки данных, прежде всего разделения на запятую (,), а затем удаления любого текста, заключенного в скобки, и пробелов, ведущих к этим скобкам. Что касается удаления нежелательных фаразий, возможно, по сравнению с принятым списком слов?

Я также заметил, что ключевое слово «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) . '"'; 

Вы могли бы использовать что-то вроде этого, чтобы построить таблицу белых и черных списки. В конечном итоге вы сможете лучше контролировать то, что позитивно, а что нет.

Смежные вопросы