Pregunta

Tengo una gran base de datos de hojas de vida (CV), y una cierta tabla habilidades agrupar todas las habilidades de los usuarios.

Dentro de esa mesa hay un campo skill_text que describe la habilidad en el texto completo.

Estoy buscando un / software / método de algoritmo para extraer términos significativos / frases de esa tabla con el fin de construir una nueva tabla con habilidades estandarizado ..

Estos son algunos ejemplos habilidades extraídos de la base de datos:

  • sectorial y análisis de la competencia
  • Desarrollo de Negocios (incl. En el ámbito internacional)
  • Estructura específica y software de diseño de carreteras - Microstation, Macao, AutoCAD (conocimientos básicos)
  • El trabajo creativo (Photoshop, In-Design, Illustrator)
  • comprobación y sobre los progresos campaña de informes
  • organizar y asistir a eventos y exposiciones
  • Desarrollo: Aptana Studio, PHP, HTML, CSS, JavaScript, SQL, AJAX
  • La disciplina:. Uno a uno marketing, e-marketing (SEO y MAR, pantalla, correo electrónico, programa de afiliados) Mezcla de marketing, marketing viral, marketing de redes sociales

La salida shoud ser algo como:

  • sectorial y análisis de la competencia
  • Desarrollo de Negocios
  • Estructura específica y diseño de carreteras de software -
  • Macao
  • AutoCAD
  • Photoshop
  • In-Design
  • Illustrator
  • organización de eventos
  • Desarrollo
  • Aptana Studio
  • PHP
  • HTML
  • CSS
  • JavaScript
  • SQL
  • AJAX
  • Marketing Mix
  • marketing viral
  • comercialización de la red social
  • envío por correo electrónico
  • SEO
  • Uno a uno comercialización

Como se puede ver sólo las habilidades queda ningún otro texto representación.

Sé que esto es posible utilizando técnicas de minería de texto, pero la forma en que lo haga? la base de datos es realmente grande .. que es algo bueno porque podemos calcular la frecuencia de texto y decidir si se trata de una habilidad real o sólo texto sin sentido ... El gran problema es .. cómo determin que "blablabla" es una habilidad?

Editar: Por favor, no me diga a usar cosas como un estándar tokinzer texto o expresiones regulares .. porque las habilidades de entrada de los usuarios de una manera muy arbitraria !!

gracias

¿Fue útil?

Solución

Si yo estaba haciendo esto mediante programación que lo haría:

extraer todos los datos de puntuación delimitado (o tal vez sólo soportes y comas) en una nueva tabla (sin clave principal, justo habilidad) por lo que se convierte en Creative work (Photoshop, In-Design, Illustrator)

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

A continuación, después de haber proceder todos los CV, consulta de las habilidades más comunes (esto es MySQL)

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

Lo que puede parecer a este ejemplo artificial

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

A continuación, se decide, a partir de las habilidades de alto X, que desea capturar, que deben correlacionarse con otras habilidades (Indesign y In-design deben corresponderse con una misma habilidad, por ejemplo) y cuáles descartar, entonces la escritura el procedimiento utilizando un mapa de datos.

Usar el mapa de datos para escribir una nueva tabla de frecuencia de palabras (esta vez skill_id, habilidad, frecuencia) y la segunda vez cuando se analizan los datos también escribir en una tabla de búsqueda (cv_id, skill_id). Sus datos estará entonces en un estado donde cada CV está asignada a una serie de habilidades, y cada habilidad a un número de CVs. Se pueden realizar consultas de las habilidades más populares, CV a juego con ciertos criterios, etc.

Otros consejos

Muchas bases de datos lo hará por usted a través de su funcionalidad de búsqueda de texto completo. Sé que la búsqueda de texto completo de PostgreSQL sería capaz de hacer esto fácilmente con la ayuda de un diccionario personalizado.

Como alternativa, se puede usar strtok o equivalente para indexar el texto de PHP. Una vez puesto en un índice se puede comparar con el diccionario, o simplemente utilizar los casos para crear una hoja por sí mismo. Nubes de la palabra se hacen de una manera similar.

Hacer esto también requiere el conocimiento; de lo contrario lo que hay que contar "la organización de eventos" es una 'habilidad', mientras que "el trabajo creativo" no es? Pero un programa estúpida puede tomar un primer corte en el que mediante el análisis de las estadísticas de colocaciones: ver las respuestas a ¿Cómo extraer común / frases significativas de una serie de entradas de texto y algoritmos para detectar frases y palabras clave de texto .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top