博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用ICTCLAS对复旦语料库分词
阅读量:6810 次
发布时间:2019-06-26

本文共 2532 字,大约阅读时间需要 8 分钟。

ICTCLAS提供C/C++,Java,C#接口。我发现在ubuntu上使用时,配置文件Configure.xml不起作用,因为不管<Tagger>设为On还Off,C版的总是加词性标注,而JNI版的总是不加词性标注。而<GranularityContorl>设为开或关结果都一样。

先给一个C++版的:

#include 
#include
#include
#include "/home/orisun/SoftWare/ICTCLAS50_Linux_RHAS_32_C/API/ICTCLAS50.h"int main(int argc, char *argv[]){ char *initPath = "/home/orisun/master/ICTCLAS50_Linux_RHAS_32_C/API"; if (!ICTCLAS_Init(initPath)) { printf("Init fails\n"); return -1; } ICTCLAS_FileProcess(argv[1],argv[2],CODE_TYPE_UTF8, 1); //argv[1]是待分词的文件,argv[2]是输出文件 ICTCLAS_Exit(); return 0;}

注意怎么编译:

g++ ws.c -o ws -L/home/orisun/master/ICTCLAS50_Linux_RHAS_32_C/API -lICTCLAS50 -D OS_LINUX

Java版的

/** * Author: Orisun * Date: Nov 1, 2011 * FileName: WordSeg.java * Function: 用ICTCLAS进行中文分词. */import java.io.File;import ICTCLAS.I3S.AC.ICTCLAS50;public class WordSeg {	// 注意一次分词的数目不要太多,控制在一两千,否则会中途崩溃而退出。	public void wordSeg(File srcFile) {		if (srcFile.isDirectory()) {			File[] childFiles = srcFile.listFiles();			for (File child : childFiles) {				wordSeg(child);			}		} else if (srcFile.isFile()) {			try {				ICTCLAS50 ictc = new ICTCLAS50();				// 指定Configure.xml和Data directory的存储位置				String argu = "/home/orisun/master/ICTCLAS50_Linux_RHAS_32_JNI/API";				if (ictc.ICTCLAS_Init(argu.getBytes("GB2312")) == false) {					System.out.println("Init Fail!");					return;				}				// 加入用户词典				String usrDict = "/home/orisun/master/ICTCLAS50_Linux_RHAS_32_JNI/API/userdict";				byte[] dictB = usrDict.getBytes();				ictc.ICTCLAS_ImportUserDictFile(dictB, 3);				// 保存用户词典				ictc.ICTCLAS_SaveTheUsrDic();				// 对文件进行分词,分词后的结果保存在新文件中				File parent = new File(srcFile.getParent() + "_ws/");				parent.mkdir();				String name = srcFile.getName();				File ResFile = new File(parent, name);				ResFile.createNewFile();				// 这里的参数“3”指定了待分词的文件是UTF-8编码				if (ictc.ICTCLAS_FileProcess(srcFile.getAbsolutePath()						.getBytes(), 3, 0, ResFile.getAbsolutePath().getBytes()) == false) {					System.out.println(srcFile + "文件分词失败.");					return;				}				ictc.ICTCLAS_Exit(); // 释放分词组件资源			} catch (Exception e) {				e.printStackTrace();			}		}	}	public static void main(String[] args) {		WordSeg inst=new WordSeg();		File file=new File("/home/orisun/master/fudan_corpus/train/C39-Sports");		inst.wordSeg(file);	}}

说明一下代码中添加的用户词典内容如下:

收稿@@v

盛唐@@n
二次@@adj
仿真@@n
与时俱进@@adv
原刊@@n
期号@@n
页号@@n
欧几里德@@n
地大物博@@adj

ICTCLAS5.0的文档中说“系统内核全新升级。支持多线程调用。”可是当我试图开两个线程来分别对训练集和测试集进行分词时,JVM发生致命错误。还没有尝试C/C++版的是否支持多线程。

转载地址:http://anwzl.baihongyu.com/

你可能感兴趣的文章
一个Java架构进阶必修体系图(只要思想不滑坡,方法总比困难多) ...
查看>>
MySQL 是如何解决幻读的
查看>>
Some methods of deep learning and dimensionality reduction
查看>>
天马行空脚踏实地,阿里巴巴有群百里挑一的天才应届生 ...
查看>>
「镁客早报」高通称若没有苹果订单无需每年升级芯片;小米进行第二次回购 ...
查看>>
生产实践Kafka与ELK
查看>>
Eclipse的PropertiesEditor切换大小写
查看>>
Android多线程源码详解一:handler、looper、message、messageQueue
查看>>
SaaS加速器II 能力中心:互利互补 共享商业红利
查看>>
病毒木马防御与分析实战
查看>>
分布式工作流任务调度系统Easy Scheduler正式开源
查看>>
Flutter实战(一)写一个天气查询的APP
查看>>
Golang 入门系列(十) mysql数据库的使用
查看>>
Python零基础学习笔记(十二)—— 字符串及其常用方法
查看>>
数据脱敏平台-大数据时代的隐私保护利器
查看>>
区块链教程Fabric1.0源代码分析ledgerID数据库-兄弟连区块链教程
查看>>
轻松上云系列之二:其他云数据迁移至阿里云
查看>>
sql server 高可用性技术总结
查看>>
Robot Framework之分层测试流程
查看>>
学习ASP.NET Core Razor 编程系列七——修改列表页面
查看>>