大型数据库上的文本挖掘(数据挖掘)

You*_*sef 2 database data-mining text-mining

我有一个大型数据库的简历(CV),并有一定的表的技巧把所有用户的技能.

在该表中,有一个字段skill_text,用于描述全文技能.

我正在寻找一种算法/软件/方法来从该表中提取重要的术语/短语,以便构建一个具有标准化技能的新表.

以下是从DB中提取的一些示例技能:

  • 部门和竞争分析
  • 业务发展(包括国际环境)
  • 具体结构和道路设计软件 - Microstation,澳门,AutoCAD(基础知识)
  • 创意作品(Photoshop,In-Design,Illustrator)
  • 检查并报告活动进度
  • 组织和参加活动和展览
  • 开发:Aptana Studio,PHP,HTML,CSS,JavaScript,SQL,AJAX
  • 学科:一对一营销,电子营销(SEO和SEA,展示,电子邮件,联盟计划)混合营销,病毒式营销,社交网络营销.

输出应该是这样的:

  • 部门和竞争分析
  • 业务发展
  • 具体结构和道路设计软件 -
  • 澳门
  • AutoCAD的
  • Photoshop中
  • 在-设计
  • 插画
  • 组织活动
  • 发展
  • Aptana工作室
  • PHP
  • HTML
  • CSS
  • JavaScript的
  • SQL
  • AJAX
  • 混合营销
  • 病毒式营销
  • 社交网络营销
  • 电子邮件
  • SEO
  • 一对一营销

如你所见,只有技能仍然没有其他表示文字.

我知道这可以使用文本挖掘技术,但如何做到这一点?数据库真的很大..这是一件好事,因为我们可以计算文本频率并决定它是真正的技能还是只是无意义的文本......最大的问题是......如何确定"blablabla"是一种技能?

编辑:请不要告诉我使用标准的东西,如文本tokinzer,或正则表达式..因为用户以非常随意的方式输入技能!!

谢谢

And*_*ndy 5

如果我以编程方式执行此操作,我会:

将所有标点符号分隔的数据(或者可能只是括号和逗号)提取到一个新表中(没有主键,只有技能)所以Creative work (Photoshop, In-Design, Illustrator)变为

 Skill            
 -------------
 Creative work    
 Photoshop        
 In-Design        
 Illustrator      
Run Code Online (Sandbox Code Playgroud)

然后,在您继续所有简历之后,查询最常用的技能(这是MySQL)

SELECT skill, COUNT(1) cnt FROM newTable GROUP BY skill ORDER BY cnt DESC;
Run Code Online (Sandbox Code Playgroud)

这可能看起来像这个人为的例子

 Skill            Cnt
 ---------------------
 Photoshop        3293
 Illustrator      2134
 Creative work     932
 In-Design         123
Run Code Online (Sandbox Code Playgroud)

然后你决定,从顶部X的技能,你想捕捉,必须映射到其他技能(Indesign以及In-design使用数据映射应映射到相同的技能,例如)和丢弃,那么脚本的进程.

使用数据映射写入新的单词频率表(这次是skill_id,技能,频率),第二次解析数据时也写入查找表(cv_id,skill_id).然后,您的数据将处于这样的状态:每个CV都映射到许多技能,每个技能都映射到多个CV.您可以查询最受欢迎的技能,符合特定标准的简历等.