JD解析系列1 之word2vec 使用
JD解析,全程为job description。 随着信息技术的推进,大数据时代的到来,自动化匹配个人求职简历和企业招聘需求技术已经日渐成熟。主要包括jd解析,cv解析,总体上讲,可以分为jd-cv 匹配三大模块。
下面主要先进行jd解析系列
直接步入正题。
详细步骤可参考:http://blog.csdn.net/jj12345jj198999/article/details/11069485
1. 数据预处理
编码转码
cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>" > corpus.txt
利用jieba分词后利用google的强大工具word2vector 将文本转化为词向量。
#! /usr/bin/env python #coding=utf-8 import jieba import json import codecs import sys reload(sys) sys.setdefaultencoding('utf-8') f = codecs.open('../Trip_Inc/jd_100w.json','r',encoding='utf-8') o = open('./train.txt','w') id=1 for line in f: line = json.loads(line) if line['job'].get('job_description',1)!=1: content = line['job']['job_description'].strip().\ replace('\r',' ').replace('\n',' ').replace('\t',' ').replace('。',' ').replace(' ,',' ').replace('、',' ').replace('|',' ').replace(':',' ').split() content = ' '.join(content) if id<=5: print content[:50]+"*"*20 id+=1 seg_list = jieba.cut(content) for item in seg_list: o.write(item.encode('utf-8')+' ')
2. word2vec 使用
./word2vec -train resultbig.txt -output vectors_60.bin -cbow 0 -size 60 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
以上命令表示的是输入文件是train.txt,输出文件是vectors_60.bin,不使用cbow模型,默认为Skip-Gram模型。 每个单词的向量维度是60,训练的窗口大小为5就是考虑一个词前五个和后五个词语(实际代码中还有一个随机选窗口的过程,窗口大小<=5)。不使用NEG方法,使用HS方法。-sampe指的是采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。-binary为1指的是结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)除了以上命令中的参数,word2vec还有几个参数对我们比较有用比如-alpha设置学习速率,默认的为0.025.–min-count设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃。-classes设置聚类个数,看了一下源码用的是k-means聚类的方法。
# PS> 聚类:聚为100类 ./word2vec -train resultbig.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 100
排序输出
sort classes.txt -k 2 -n > classes.sorted.txt
http://blog.csdn.net/zhoubl668/article/details/24314423
http://www.sogou.com/labs/resources.html?v=1
浙公网安备 33010602011771号