Home >Database >Mysql Tutorial >word2vec实践及对关键词聚类

word2vec实践及对关键词聚类

WBOY
WBOYOriginal
2016-06-07 15:17:541709browse

在搜索领域query的处理变得越来越重要,其中分类就是很重要的一环,对query分类是比较难的工程,因为query普遍较短,含有的信息(熵)很少,所以很难进行分类,普遍的方法是对query进行扩展,例如抓取搜索引擎的结果,或是直接将query扩展到对应的doc,然后

   在搜索领域query的处理变得越来越重要,其中分类就是很重要的一环,对query分类是比较难的工程,因为query普遍较短,含有的信息(熵)很少,所以很难进行分类,普遍的方法是对query进行扩展,例如抓取搜索引擎的结果,或是直接将query扩展到对应的doc,然后对doc进行分类,对doc分类就变得容易了,而且准确率比较高,最近看到word2vec很火,使用的是无监督的机器学习,也就是不需要标注数据,于是就研究了一下,看是否可以使用结果用于query分类扩展。

where is word2vec?

https://code.google.com/p/word2vec/

可以在上面下载具体的代码进行编译,生成相关的分析工具,上面的C代码写的有些“抽象”,以下有C++版本,看起来比较直观

https://github.com/jdeng/word2vec

训练语料获取

可以在搜狗试验室中获取一些新闻数据,尽管比较老但是将就着用,其实感觉微博的数据会好些,一是数据量大,二是信息含量比较高(新鲜东西比较多),新闻的语料可以在

http://www.sogou.com/labs/dl/ca.html 上获取,只要简单的注册一下就可以,在windows下下载还是比较麻烦的,需要用ftp工具,实际上可以用windows自带的ftp.exe就可以下载。

word2vec实践及对关键词聚类


1、在cmd窗口下执行 ftp ftp.labs.sogou.com

2、输入注册生成的用户名

3、输入注册生成的密码,然后就可以连接到ftp上

4、cd到对应的目录,执行dir或ls就可以看到具体的文件

5、get news_tensite_xml.full.tar.gz 就可以下载文件到个人文档目录了

处理语料及分词

语料是xml结构的,需要将新闻内容清洗出来

cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>" | sed 's\<content>\\' | sed 's\</content>\\' > news.txt</content>

这样就可以将新闻内容清洗出来,一行一篇文章,接下来就对对语料进行分词了,找了一些开源的分词,java版本的有些比较难用,有时莫名其妙的乱码问题就要折腾半天,这里就是用了中科院的分词ICTCLAS,C++版本的,在linux下运行比较简单,我已经写好了分词的程序,放到CSDN上,需要的可以直接下载,包括库,分词词典,还有二进制程序,分词工具,点此进入下载。ICTCLAS分词器相关资料可以查看http://hi.baidu.com/drkevinzhang/


        语料总计有1143394篇文章,分词后数据文件有2.2G,分词后的情况如下:

word2vec实践及对关键词聚类


运行word2vec进行分析

./word2vec -train out.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1

word2vec实践及对关键词聚类

这个过程可能需要一段时间的等待,运行完成后,会生成vectors.bin文件,接着就可以利用提供的余弦计算工具查看关键词的相关词了

执行./distance vectors.bin 然后输入想看的查询词就可以看到效果了。

word2vec实践及对关键词聚类


word2vec实践及对关键词聚类


word2vec实践及对关键词聚类


可以看到针对实体名称,分析的结果还是很靠谱的,如果针对语料做些预处理相信结果会更好。

可以通过

./word2vec -train out.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500

对分析结果进行聚类用于query方面的分类,结果如下:

word2vec实践及对关键词聚类

将单词去除后,结果还是比较可观的。


参考:

http://blog.csdn.net/zhaoxinfan/article/details/11069485

https://code.google.com/p/word2vec/




请关注我的博客 word2vec实践及对关键词聚类

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn