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

时间:2010-04-13 22:16:16

标签: database data-mining text-mining

我有一个大型简历数据库(CV),以及某个表技能对所有用户技能进行分组。

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

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

以下是从数据库中提取的一些示例技能:

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

输出应该是这样的:

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

如您所见,只有技能不存在其他表示文字。

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

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

感谢

3 个答案:

答案 0 :(得分:5)

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

将所有标点符号分隔的数据(或者只是括号和逗号)提取到新表中(没有主键,只有技能),因此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技能中决定哪些技能必须映射到其他技能(IndesignIn-design应该映射到相同的技能,例如)以及丢弃,然后使用数据映射编写进程脚本。

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

答案 1 :(得分:0)

许多数据库将通过其全文搜索功能为您完成此操作。我知道PostgreSQL的全文搜索可以通过自定义词典轻松完成。

或者,您可以使用PHP的strtok或同等词来索引文本。索引后,您可以与字典进行比较,或者只是使用出现次数为自己创建工作表。词云以类似的方式制作。

答案 2 :(得分:0)

做好这一点需要知识;否则说“组织事件”是一种“技能”而“创造性工作”不是什么?但是,一个愚蠢的程序可以通过分析搭配的统计数据来首先减少它:查看How to extract common / significant phrases from a series of text entriesAlgorithms to detect phrases and keywords from text的答案。