ANSJ分词工具的具体操作!
来源:互联网 发布:帝吧出征事件2016数据 编辑:程序博客网 时间:2024/05/21 03:19
零时插入,浅层深度学习的自然语言处理下一篇再讲。
首先,必须要感谢ansjsun的无私奉献,给我们提供了一款这么优秀的分词工具,具体的链接
https://github.com/ansjsun,其次,这篇博客没有太高深的技术,就是做了一个实验,算是自己的一个记录吧,下面讲一下具体的操作步骤:
1、下载JAR包。
我是在这里下载的,http://download.csdn.net/detail/jj12345jj198999/6020541
2、创建项目
这一步就不用过多叙述了,都是基本的操作。
3、添加保留词
ansjsun提供了三种方法,https://github.com/ansjsun/ansj_seg/wiki/%E7%94%A8%E6%88%B7%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AF%8D%E5%85%B8%E8%B7%AF%E5%BE%84%E8%AE%BE%E7%BD%AE。
我在Eclipse采用了第一种方法,在Netbeans采用了第二种方法。
首先,作者需要建立自己的词典,命名为userLibrary.dic,词典的格式:ansj中文分词 userdefine 1000,中间用tab键,后面两个属性可以自己定义,保存格式utf-8,放在library\userLibrary里面。
对于Eclipse,需要创建library.properties,里面添加内容:
#path of userLibrary this is default library
userLibrary=library/userLibrary/userLibrary.dic
ambiguityLibrary=library/ambiguity.dic
#this have diff library by analysis
userLibraryPath=library/dics
然后将这个文件放在bin里面,就成功添加了保留词典,添加成功之后就可以运行程序了,具体的程序如下:
import java.util.HashSet; import java.util.List; import java.util.Set; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringReader; import java.util.Iterator; import love.cq.util.IOUtil; import org.ansj.app.newWord.LearnTool; import org.ansj.domain.Term; import org.ansj.recognition.NatureRecognition; import org.ansj.splitWord.Analysis; import org.ansj.splitWord.analysis.NlpAnalysis; import org.ansj.splitWord.analysis.ToAnalysis; import org.ansj.util.*; import org.ansj.recognition.*; import org.ansj.library.UserDefineLibrary;public class main {//public static final String TAG_START_CONTENT = ""; //public static final String TAG_END_CONTENT = ""; public static void main(String[] args) {// TODO Auto-generated method stubString temp = null ; BufferedReader reader = null; PrintWriter pw = null; try { reader = IOUtil.getReader("D:/testing/Java/Segmentation/Corpus.txt", "UTF-8") ; pw = new PrintWriter("D:/testing/Java/Segmentation/testresultbig.txt"); long start = System.currentTimeMillis() ; int allCount =0; int termcnt = 0; int temptermcount=0; int linecount=0; Set<String> set = new HashSet<String>(); while((temp=reader.readLine())!=null){ temp = temp.trim(); //if (temp.startsWith(TAG_START_CONTENT)) { // int end = temp.indexOf(TAG_END_CONTENT); String content = temp; //System.out.println(content); if (content.length() > 0) { allCount += content.length() ; List<Term> result = ToAnalysis.parse(content); linecount=linecount+1; pw.print("Thrpos"+linecount+" "); for (Term term: result) { String item = term.getName().trim(); if (item.length() > 0) { termcnt++; pw.print(item.trim() + " "); set.add(item); temptermcount++; if (temptermcount>999) { temptermcount=0; break; } } } temptermcount=0; pw.println(); } //调试用的文件 if (linecount>=40) break; } long end = System.currentTimeMillis() ; System.out.println("共" + termcnt + "个term," + set.size() + "个不同的词,共 " +allCount+"个字符,每秒处理了:"+(allCount*1000.0/(end-start))); } catch (IOException e) { e.printStackTrace(); } finally { if (null != reader) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != pw) { pw.close(); } } } }
对于Netbeans,需要采用第二种方法,在程序中增加一句:
MyStaticValue.userLibrary=[你的路径]
路径可以是具体文件也可以是一个目录 如果是一个目录.那么会扫描目录下的dic文件自动加入词典userLibrary=[你的路径]。
当你看到,运行过程中出现:
init user userLibrary ok path is : D:\workplace\WordSegmentation\library\userLibrary\userLibrary.dic
init ambiguityLibrary ok!
证明你的保留词典已经成功添加。
实验结果,我这里就添加了一个保留词在保留词典里面:ansj中文分词 userdefine 1000。
为添加保留词典的时候:
ansj 中文 分词 开 两会 仅 发 只 国产 手表 ,.......
添加保留词典之后:
ansj中文分词 开 两会 仅 发 只 国产 手表 ,.......
整体感觉分词速度很快,但是词还是切得有点碎。
- ANSJ分词工具的具体操作!
- 基于java的中文分词工具ANSJ
- 分词工具-ansj
- ansj分词器的配置
- solr的ansj分词使用
- Ansj中文分词的使用
- ansj 分词系统的词性
- ansj 分词
- ansj 分词
- Ansj分词
- ansj分词
- Java中文分词器Ansj的使用
- 用于solr5的ansj分词插件扩展
- 利用ansj进行简单的分词
- ansj 分词系统的词性说明
- ansj的分词系统过滤词性
- 利用Ansj中文分词工具对段落进行切词
- 开源中文分词工具探析(三):Ansj
- PHP 时间相加/减、当前时间/时间格式转换
- MyEleclipse使用常见问题
- 梵蒂冈包v刹吧的规范第三个发的
- shell编程 case语句
- 过法大使馆反倒是规范第三个发的
- ANSJ分词工具的具体操作!
- 开学季,守住最初的自己
- php---引入文件的函数之间的效率对比
- 华为S5700基础配置命令
- WRK中全部访问DebugPort的函数总汇
- Wow! Velocity.js
- 奇异矩阵和非奇异矩阵,伪逆矩阵
- Java基本数据类型
- Why Recovering a Deleted Ext3 File Is Difficult . . .