tar -xvf SogouCA.tar
再将生成的txt文件归并到SogouCA.txt中,取出其中包含content的行并转码,得到语料corpus.txt,大小为2.7G
cat *.txt > SogouCA.txt
cat SogouCA.txt | iconv -f gbk -t utf-8 -c | grep "" > corpus.txt
(windows下的文件复制到linux下时常会乱码,windows下文件编码为GBK,linux下默认文件编码为UTF-8,故需要iconv命令转码
。-f 原始文件编码; -t 输出编码; -c从输出中忽略无效的字符)
四、分词
用ANSJ对corpus.txt进行分词,得到分词结果resultbig.txt,大小为3.1G
wget ftp://cp01-dm-003.cp01.baidu.com//home/forum/daihuan/resultbig.txt --user xxx --password xxx
需要内存较大的机器
五、配置ansj环境
下载第三方的jar包:http://maven.ansj.org/org/
测试的时候用到了3个:ansj_seg-0.9.jar;nlp-lang-0.2.jar;tree_split-1.4.jar
------------------------------------------------------
test.java
--------
String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!";
System.out.println(ToAnalysis.parse(str));
--------------------------------------------------------------------
linux命令行java加载第三方包:(现在jar包和java程序放在同一个目录下,生成的class文件也在同一个目录)
javac -cp ansj_seg-0.9.jar:nlp-lang-0.2.jar:tree_split-1.4.jar: ./test.java
java -cp ansj_seg-0.9.jar:nlp-lang-0.2.jar:tree_split-1.4.jar:./ test
-------------------------------------------------------
需要注意的几点:
1.编译的时候,需要使用-cp环境变量来引入外部jar的地址.
2.运行过程中,环境变量-cp中一定要加入编译时候生成的class文件的路径.并且用冒号分隔.
-----------------------------------------------------------
开始分词:http://blog.csdn.net/jj12345jj198999/article/details/11069485#comments
使用这里面的分词程序:注意写入文件的时候使用utf8编码. 对较大文件,会存在内存不够,分词失败的情况
最后生成resultbig.txt文件
六、本地运行word2vec进行分析
1.计算相似的词
nohup ./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1 &
这里指定输出为vectors.bin文件,便于以后重复利用,处理2.2G的词集合需要接近半个小时的时间.
./distance vectors.bin
输入计算距离的命令,计算与每个词最接近的词
----由于word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高
-----./distance可以看成计算词与词之间的距离,把词看成向量空间上的一个点,distance看成向量空间上点与点的距离
2.潜在的语言学规律
对demo-analogy.sh修改后 测试:vector("法国")-vector("巴黎")+vector("巴黎")---->vector("伦敦")
???具体如何修改,待测试
3.聚类命令:
将经过分词后的语料resultbig.txt的词聚类开按照类别排序:
nohup ./word2vec -train resultbig.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500 &
sort classes.txt -k 2 -n > classes.sorted.txt
4.短语分析:
先利用经过分词的语料resultbig.txt中得出包含词和短语的文件sogouca_phrase.txt,再训练该文件中词与短语的向量标识
/word2phrase -train resultbig.txt -output sogouca_phrase.txt -threshold 500 -debug 2
./word2vec -train sogouca_phrase.txt -output vectors_sogouca_phrase.bin -cbow 0 -size 300 -window 10 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1