我有一个大型简历数据库(CV),以及某个表技能对所有用户技能进行分组。
在该表格中有一个字段 skill_text ,用于描述全文技能。
我正在寻找一种算法/软件/方法来从该表中提取重要的术语/短语,以便建立一个具有标准化技能的新表格。
以下是从数据库中提取的一些示例技能:
输出应该是这样的:
如您所见,只有技能不存在其他表示文字。
我知道这可以使用文本挖掘技术,但如何做到这一点? 数据库真的很大..这是一件好事,因为我们可以计算文本频率并决定它是真正的技能还是只是无意义的文本...... 最大的问题是......如何确定“blablabla”是一项技能?
编辑: 请不要告诉我使用标准的东西,如文本tokinzer,或正则表达式..因为用户以非常随意的方式输入技能!!
感谢
答案 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技能中决定哪些技能必须映射到其他技能(Indesign
和In-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 entries和Algorithms to detect phrases and keywords from text的答案。