博客学习
Eclipse下JGibbLDA使用总结
IKAnalyzer2012进行分词处理
学习过程
IKAnalyzer中已学习到这一步,前面步骤中好多地方找不到对应位置,LDA学习中先用这个来进行分词处理,IKA是进行分词处理的机器。两篇博客很难,一步步的跟着(中间有跳的步骤)。
LDA学习进行到运行lda这一步,去进行分词处理了。
IKAnalyzer进行分词处理已初步创建好文件夹,new—file----文件名,即可创建。IKA学习到此位置,不懂创建txt后后续操作。
警示符号没有出来,不知道如何添加文本进入文件。
分词学习过程中要改的代码部分:
分词处理遇到的问题
1.所放文件需要分析的路径名要对应
2.一些东西要注释掉:可以第27行32到34行38行用//屏蔽掉
3.自动分行目前也还不懂。
4.代码微小部分的改动。
5.注意:“空格换行空格”的话是表示识别出“换行”这个分词,代码中仅有“换行”才会使结果自动换行。
6.分词弹幕的时候ext.和stopwords.中不能放任何常用停用词和扩展词,才能运行出完整的分词结果。
import java.io.*;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class IKAnalyzerTest {
public static void main(String[] args) throws IOException {
String filePath ="D:\\弹幕.txt";
String news=new String();
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF8"));
String str;
String strs;
while ((str = in.readLine()) != null) {
strs=str+"换行";
news+=strs;
}
in.close();
//System.out.println(news);
IKAnalyzer analyzer = new IKAnalyzer(true);
StringReader reader = new StringReader(news);
TokenStream ts = analyzer.tokenStream(" ", reader);
CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
while(ts.incrementToken()){
System.out.print(term.toString()+" ");
}
analyzer.close();
reader.close();
System.out.println();
StringReader re = new StringReader(news);
IKSegmenter ik = new IKSegmenter(re,true);
Lexeme lex = null;
File f = new File("D://success.txt");
f.delete();
String path="D://success.txt"; //%%%%%%
while((lex=ik.next())!=null){
// System.out.print(lex.getLexemeText()+" ");
try {
FileWriter fw=new FileWriter(path,true);
PrintWriter pw=new PrintWriter(fw);
pw.print((lex.getLexemeText().replace("换行","\n")+" ").replace("\n ","\n"));
//pw.print(lex.getLexemeText()+" ")
pw.close();
//bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); }
}
}
}
运行LDA中的问题(已解决)
1.要将已分词的txt放进去(注意要将其换成UTF-8格式);
2.配置中Main要一致;
3.配置中要非常注意空格字母问题,张瑞老师的配置的代码出结果很快;(-est -alpha 1 -beta 0.01 -ntopics 30 -niters 1 -savestep 1 -twords 6 -dir models\casestudy-vi -dfile “success.txt”)
4.查看结果是在…final.towords.里边查看的。
或者这样用张老师的直接出结果
关于eclipse中分词结果呈现的乱码(虽然是utf-8的格式仍乱码),是eclipse中默认gbk打开文件(eclipse一般默认GBK格式的编码,但是有些项目需要UTF-8编码,此时文本就会乱码。解决方法非常简单,右键txt文件,直接修改property,resource中的编码格式为GBK即可。)
即运行成功!!!!!