Анализ текста в большой базе данных (интеллектуальный анализ данных)

У меня есть большая база резюме (CV) и определенная таблица навыки, в которой сгруппированы все навыки пользователей.

внутри этой таблицы есть поле skill_text, которое описывает навык в полном тексте.

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

Вот несколько примеров навыков, извлеченных из БД:

  • Отраслевой и конкурентный анализ
  • Развитие бизнеса (в т.ч. в международном масштабе)
  • Специальное программное обеспечение для проектирования конструкций и дорог - Microstation, Macao, AutoCAD (базовые знания)
  • Творческая работа (Photoshop, In-Design, Illustrator)
  • проверка и отчетность о ходе кампании
  • организация и посещение мероприятий и выставок
  • Разработка: Aptana Studio, PHP, HTML, CSS, JavaScript, SQL, AJAX.
  • Дисциплина: индивидуальный маркетинг, электронный маркетинг (SEO и SEA, медийная реклама, электронная почта, партнерская программа), смешанный маркетинг, вирусный маркетинг, маркетинг в социальных сетях.

Результат должен быть примерно таким:

  • Отраслевой и конкурентный анализ
  • Развитие бизнеса
  • Специальное программное обеспечение для проектирования конструкций и дорог -
  • Макао
  • AutoCAD
  • Фотошоп
  • В дизайне
  • Иллюстратор
  • организация мероприятий
  • Разработка
  • Аптана Студия
  • PHP
  • HTML
  • CSS
  • JavaScript
  • SQL
  • AJAX
  • Смешанный маркетинг
  • Вирусный маркетинг
  • Маркетинг в социальных сетях
  • электронная почта
  • SEO
  • Индивидуальный маркетинг

Как видите, остаются только навыки, никакого другого текста представления.

Я знаю, что это возможно с использованием техники интеллектуального анализа текста, но как это сделать? база данных очень большая ... это хорошо, потому что мы можем вычислить частоту текста и решить, реальный ли это навык или просто бессмысленный текст ... Большая проблема ... как определить, что "blablabla" - это навык?

Изменить: пожалуйста, не говорите мне использовать стандартные вещи, такие как текстовый токинзер или регулярное выражение ... потому что пользователи вводят навыки очень произвольно !!

Благодарность


person Youssef    schedule 13.04.2010    source источник
comment
пожалуйста, не говорите мне использовать стандартные вещи, такие как текстовый токинзер или регулярное выражение ... потому что пользователи вводят навыки очень произвольно, то есть, другими словами, вы что-то ищете, но не знаете, что это, но вы знаю, что его можно найти. Удачи. Если вам нужен кто-то с навыками, я эксперт в бесцветных зеленых идеях, которые яростно спят.   -  person msw    schedule 14.04.2010
comment
Вы пробовали майнинг часто встречающихся наборов элементов?   -  person Has QUIT--Anony-Mousse    schedule 31.01.2013


Ответы (3)


Если бы я делал это программно, я бы:

Извлеките все данные с разделителями пунктуации (или, возможно, просто скобки и запятые) в новую таблицу (без первичного ключа, только навык), так что Creative work (Photoshop, In-Design, Illustrator) станет

 Skill            
 -------------
 Creative work    
 Photoshop        
 In-Design        
 Illustrator      

Затем, после того, как вы обработаете все резюме, запросите наиболее распространенные навыки (это MySQL)

SELECT skill, COUNT(1) cnt FROM newTable GROUP BY skill ORDER BY cnt DESC;

Что может выглядеть как этот надуманный пример

 Skill            Cnt
 ---------------------
 Photoshop        3293
 Illustrator      2134
 Creative work     932
 In-Design         123

Затем вы выбираете из X верхних навыков, которые вы хотите захватить, которые должны соответствовать другим навыкам (например, Indesign и In-design должны соответствовать одному и тому же навыку), а какие отбрасывать, а затем сценарий процесса с использованием карты данных.

Используйте карту данных, чтобы написать новую таблицу частотности слов (на этот раз skill_id, skill, frequency) и второй раз при синтаксическом анализе данных также записать в таблицу поиска (cv_id, skill_id). После этого ваши данные будут в состоянии, в котором каждое резюме сопоставляется с несколькими навыками, а каждое навык - с несколькими резюме. Вы можете запросить самые популярные навыки, резюме, соответствующие определенным критериям и т. Д.

person Andy    schedule 13.04.2010
comment
Да, программно, это лучшая практика ... но вот некоторые данные, которые делают невозможным использование вашего алгоритма: Чувствительность к культурным различиям и привыкание к работе в международной среде Испанский: чтение и беседа Координация и распределение маркетинговых инструментов по странам Руководство продавцов в стратегии продаж и разработке аргументов в пользу продаж продукта это навыки, извлеченные из БД. - person Youssef; 14.04.2010
comment
Сопоставьте эти предложения с международным / культурным опытом, испанским (чтение), испанским (разговорным), международным / культурным маркетингом, опытом продаж (немаркетинговый) и т. Д. Ваши разнородные данные затрудняют выполнение этого любым другим способом, если вы не можете найти карта набора навыков CV или какой-нибудь другой фантастический документ. Это трудоемкая задача - после того, как вы определили свой базовый набор навыков (как в приведенных выше примерах), вы можете передать карту для создания работы в MechanicalTurk или аналогичном. - person Andy; 14.04.2010

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

Кроме того, вы можете использовать strtok PHP или аналогичный для индексации текста. После индексации вы можете сравнить со словарем или просто использовать вхождения для создания таблицы для себя. Словесные облака созданы аналогичным образом.

person asnyder    schedule 13.04.2010
comment
Спасибо за быстрый ответ, проблема в том, что у меня нет словаря для сравнения. - person Youssef; 14.04.2010
comment
Есть словарь по умолчанию, например, в PostgreSQL есть словарь, который исключает такие вещи, как, a и т. Д. В противном случае вы будете просто анализировать слова и их появление. Вам необходимо составить таблицу навыков, чтобы точно разобрать, что происходит. Вы можете создать эту таблицу, подсчитав, как указано выше, и вырезать из них те навыки, которые вам нужны. - person asnyder; 14.04.2010

Чтобы сделать это хорошо, нужны знания; иначе что сказать, что «организация мероприятий» - это «навык», а «творческая работа» - нет? Но глупая программа может сделать первый шаг, проанализировав статистику словосочетаний: см. Ответы на Как извлечь общие / важные фразы из серии текстовых записей и Алгоритмы для обнаружения фраз и ключевых слов из текста.

person Darius Bacon    schedule 19.04.2010