CWSS是一个开源的中文分词系统,其中它有两个版本。一个是提供对lucene3.0的支持。一个是纯中文分词,主要是为了方便大家使用。
CWSS1.0由来
一个星期疯狂啃读中科院和paoding分词过程中,突然想开发一套中文分词。
CWSS1.0的特性:
1、采用了中科院的做法,断句处理,原子处理。
2、基于“词库”切词。
3、支持简繁体。
下载地址
http://code.google.com/p/cwss/
测试地址
http://www.agrilink.cn/cwss.jsp
分词效果示例
原文
CWSS是一个开源的,基于java语言开发的轻量级的中文分词工具包,并提供对lucene3.0的支持。目前正在测试阶段,暂不开源代码.测试完毕.在以GPL开源协议发布.
分词后
CWSS/是/一个/开源/的/基于/java/语言/开发/的/轻量级/量级/的/中文/分词/工具/工具包/并/提供/对/lucene3.0/的/支持/目前/前/正在/测试/阶段/暂/不开/源代码/代码/./测试/完毕/.在以/GPL/开源/协议/发布/./
原文
作者博客:loiy.iteye.com 电子邮件:lzj0470@163.com
分词后
作者/博客/loiy.iteye.com/电子/邮件/lzj0470@163.com/
原文
甘刑一终字第200号
分词后
甘刑一/终字/第/200/号/
原文
北大学生活动
分词后
北大/学生/活动/
原文
的的确确实实在在
分词后
的的确确/的确/实实在在/实在/
原文
我和你都很棒
分词后
我/和/你/都很/很棒/
原文
永和服装饰品有限公司
分词后
永和/服装/饰品/有限/公司/
原文
你欠我一万九千八百零五毛
分词后
你/欠/我/一万九千八百零五/毛/
原文
你到底喜不喜欢我
分词后
你/到底/喜/不/喜欢/我/
原文
你说不说,不说打PP
分词后
你/说不说/不说/打/PP/
lucene3.0示例
package wss.analysis.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.util.Version;
import wss.analysis.analyzer.wssAnalyzer;
public class testLucene {
private Analyzer analyzer = new wssAnalyzer();
/**
* content文件夹存在两个文件。文件内容分别是
* 1、朝鲜队小组必出线内幕:赛前全队必读知音和故事会
* 2、CWSS是一个开源的,基于java语言开发的轻量级的中文分词工具包,并提供对lucene3.0的支持。目前正在测试阶段,暂不开源代码.测试完毕. 在以GPL开源协议发布.
* 3、世界杯朝鲜输掉了
*/
private String getString(Reader input) throws IOException{
BufferedReader buf;
buf = new BufferedReader(input);
String str;
StringBuffer sb = new StringBuffer();
while ((str = buf.readLine()) != null) {
sb.append(str);
}
str = sb.toString();
sb = null;
return str;
}
private void index() throws CorruptIndexException, LockObtainFailedException, IOException{
File indexDir=new File("D:/luceneIndex/");
//需要建立索引的文档集合的位置
File docDir = new File("D:/content/");
//创建索引器(核心)
IndexWriter standardWriter = new IndexWriter(FSDirectory.open(indexDir), analyzer, true , IndexWriter.MaxFieldLength.LIMITED);//new IndexWriter(FSDirectory.open(indexDir),analyzer, true, IndexWriter.MaxFieldLength.LIMITED);
//不建立复合式索引文件,默认的情况下是复合式的索引文件
standardWriter.setUseCompoundFile(false);
//为原文档集合中的每个文档的相关信息建立索引
for (File fileSrc : docDir.listFiles()) {
//Lucene的文档结构
Document doc = new Document();
//文件名称,可查询,不分词
String fileName=fileSrc.getName().substring(0,fileSrc.getName().indexOf("."));
doc.add(new Field("name",fileName, Field.Store.YES, Field.Index.NOT_ANALYZED));
//文件路径,可查询,不分词
String filePath=fileSrc.getPath();
doc.add(new Field("path", filePath, Field.Store.YES, Field.Index.NOT_ANALYZED));
//文件内容,需要检索
doc.add(new Field("content", getString(new FileReader(fileSrc)),Field.Store.YES,Field.Index.ANALYZED));
//使用索引器对Document文档建索引
standardWriter.addDocument(doc);
}
//关闭索引器,并写入磁盘索引文件
standardWriter.optimize();
standardWriter.close();
}
private void search(String keyword){
File indexDir=new File("D:/luceneIndex/");
Directory directory;
IndexSearcher isearcher = null;
//实例化搜索器
try {
directory = FSDirectory.open(indexDir);
isearcher = new IndexSearcher(directory);
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "content",
analyzer);
//使用IKQueryParser查询分析器构造Query对象
Query query = parser.parse(keyword);
//搜索相似度最高的5条记录
TopDocs topDocs = isearcher.search(query, 2);
System.out.println("命中:" + topDocs.totalHits);
//输出结果
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
for (int i = 0; i < topDocs.totalHits; i++){
Document targetDoc = isearcher.doc(scoreDocs[i].doc);
System.out.println("内容:" + targetDoc.toString());
}
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
testLucene lucene = new testLucene();
lucene.index();
lucene.search("java");
lucene.search("朝鲜");
}
}
建立索引与搜索结果。
命中:1
内容:Document<stored,indexed<name:2> stored,indexed<path:D:\content\2.txt> stored,indexed,tokenized<content:CWSS是一个开源的,基于java语言开发的轻量级的中文分词工具包,并提供对lucene3.0的支持。目前正在测试阶段,暂不开源代码.测试完毕. 在以GPL开源协议发布.>>
命中:2
内容:Document<stored,indexed<name:3> stored,indexed<path:D:\content\3.txt> stored,indexed,tokenized<content:世界杯朝鲜输掉了>>
内容:Document<stored,indexed<name:1> stored,indexed<path:D:\content\1.txt> stored,indexed,tokenized<content:朝鲜队小组必出线内幕:赛前全队必读知音和故事会>>
讨论群
75484225
结束语
欢迎大家使用。如果你认为分词不好,可以给我留言,我会尽量补修不足的地方。如果你认为不错,也可以发信息给我,鼓励一下下。
分享到:
相关推荐
综上所述,cwss是一个灵活的中文分词工具,允许用户自定义分词规则,其开源特性为开发者提供了深入研究和扩展的可能性。通过提供的博客链接和压缩包文件,我们可以学习到更多关于如何使用和定制该工具的信息,以及它...
wdaaaaaaaaaafwawfw
scratch少儿编程逻辑思维游戏源码-十字鸭子.zip
Android移动应用开发_ViewFlow自定义控件CircleFlowIndicator指示器网络图片加载缓存自动循环滚动手势滑动交互_横向循环平滑滚动广告条Banne
前端开发_基于jQuery和EasyUI框架_企业级Web应用UI组件库与后台管理系统模板_提供GPL开源版本和商业授权版本的双重授权模式_适用于快速构建响应式管理后台和复杂数据可
《C++编程实例100篇》是一本深入实践、极具价值的编程教程,它针对C++编程语言提供了丰富的实例,旨在帮助读者更好地理解和掌握C++的各项特性与编程技巧。这本书的经典之处在于它将理论与实践相结合,通过100个精心设计的编程实例,覆盖了C++的各个核心领域,包括基础语法、面向对象编程、模板、异常处理、STL(标准模板库)等。 我们来探讨C++的基础语法。C++是C语言的增强版,它保留了C语言的高效性和灵活性,并引入了类、对象和继承等面向对象编程概念。基础语法包括变量声明、数据类型、运算符、控制结构(如if语句、for循环、while循环)、函数的定义和调用等。在实例中,你可能会遇到如何编写简单的程序,如计算两个数的和,或者实现一个简单的猜数字游戏。 C++的面向对象编程是其一大特色。通过类和对象,你可以构建复杂的软件系统。类是对象的蓝图,它定义了对象的属性和行为。实例化一个类,就是创建一个具体的对象。继承允许你创建新的类,这些类从现有的类派生,共享其属性和方法,同时可以添加新的功能。多态性是面向对象的另一个关键特性,它使得不同类型的对象可以对同一消息作出不同的响应。这些概念在实例中会以各种形式展现,例如设计一个图形界面的类层次,或实现一个简单的模拟游戏。 接下来是模板,C++的模板功能让代码更加通用,可以处理不同类型的数据。模板分为函数模板和类模板,前者可以创建泛型函数,后者可以创建泛型类。通过模板,你可以编写出高效且灵活的代码,比如实现一个通用的排序算法。 异常处理是C++中用于处理程序运行时错误的机制。当程序出现异常情况时,可以抛出一个异常,然后在适当的点捕获并处理这个异常。这使得代码能够优雅地处理错误,而不是让程序崩溃。实例中可能会有涉及文件操作或网络通信时可能出现的异常处理示例。
scratch少儿编程逻辑思维游戏源码-忍者无限跑者.zip
少儿编程scratch项目源代码文件案例素材-战斗机游戏.zip
手工DIY行业_微信小程序云开发_手工坊预约管理系统_基于腾讯云开发技术的手工DIY行业线上线下结合解决方案_包含手工项目展示预约管理签到核销数据统计等完整功能_支持后台时段设置人
内容概要:本文档汇总了FFmpeg工具的多个实用命令示例,涵盖音频和视频处理的各个方面。包括但不限于:音频采样率转换、音频格式转为raw、查询音频文件时长与音量检测、调整音频音量大小、改变音频播放速度、视频逆序播放(针对无音频视频)、精准视频片段截取、音频片段截取、视频与音频合并处理、调整视频宽高比等。每个命令都提供了具体的参数设置方法; 适合人群:音视频编辑爱好者、多媒体处理领域的初学者或有一定经验的技术人员; 使用场景及目标:①在音频处理方面,可以完成从格式转换到音质调整的任务;②在视频处理上,能够实现基本的剪辑操作如切割、翻转、合并等;③为用户提供了一站式的解决方案,帮助用户快速掌握FFmpeg命令行工具的基本用法,提高工作效率; 阅读建议:本指南以命令实例为主,建议读者结合实际需求选择相应的命令进行尝试,在实践中理解各个参数的作用并灵活运用。
一、毕业设计的技术背景和设计依据 计算机硬盘驱动器作为一种存储数据信息的设备,在目前的计算机系统中起着不可替代的作用,读写的快慢对整个计算机系统的性能无疑占有重要地位。硬盘式电子计算机磁记录机构中最为精密的一类微机电系统设备,它对振动的敏感性是由其结构决定的,而其控制尚未很好的解决,针对硬盘展开建模及控制有着重要的实际应用价值。 二、毕业设计的任务 现代硬盘一般有 1 - 5 个盘片,以常见的 3.5 英寸硬盘为例,盘片直径约为 95mm,厚度约为 0.635mm。磁头数量通常与盘片数量相关,每面盘片有一个磁头,比如一个 3 盘片的硬盘就有 6 个磁头。缓存大小可能为 32MB、64MB 或 128MB 等,如某普通硬盘缓存为 64MB,电机功率一般在 2 - 5W,像转速为 7200RPM(转每分钟)的电机功率约 3W。数据写入时,磁头在电机带动下,以平均寻道速度约 10 - 15m/s 定位磁道。以一块顺序写入数据的硬盘为例,当写入连续大文件,如 1GB 的视频文件时,在 SATA3.0 接口下,理论传输带宽为 6Gb/s(约 750MB/s),实际可达 500 - 600MB/s。读取时,磁头感应盘片磁场变化,如读取小文件(1MB 大小),若磁头寻道距离平均为 1000 个磁道,每次寻道时间约 8 - 12ms,读取速度会因寻道而下降到 10 - 20MB/s。 本设计选取硬盘驱动器作为研究对象,假设电机扭矩为 0.3N・m,盘片转动惯量为 0.003kg・m²,轴承摩擦力矩为 0.03N・m。在稳定旋转阶段,转速波动范围设为额定转速的 ±0.5%,即 ±36RPM。首先通过对该系统分析建立了其物理模型,然后针对以音圈电机作为伺服机构的硬盘磁头定位伺服系统的性能要求,对音圈电机的控制设计采用三种控制器方案,即极点配置法、PID控制方法、线性二次型调节器方法,分别比较分
scratch少儿编程逻辑思维游戏源码-猫猫冲刺.zip
大数据处理_全文搜索引擎_ElasticSearch中文发行版_基于最新稳定版ElasticSearch预集成中文分词插件及常用配置的开箱即用解决方案_专为中文开发者优化的免配置高
离散数学_逻辑演算系统_真值表生成器_主范式计算器_最简范式求解器_王浩算法实现_等值演算工具_命题逻辑分析平台_基于Web的交互式逻辑运算系统_用于离散数学教学与研究的综合性逻辑
商业智能_SpringBoot_MQ_AIGC_React_智能数据分析_可视化图表_自动分析_数据集处理_用户诉求解析_数据降本增效_基于人工智能的商业智能分析平台_通过自然语言
少儿编程scratch项目源代码文件案例素材-爪猫小车.zip
少儿编程scratch项目源代码文件案例素材-拽猫挥剑.zip
kuishou68_neteaseMusic_32152_1745866029873
少儿编程scratch项目源代码文件案例素材-种族叛徒.zip
scratch少儿编程逻辑思维游戏源码-色彩交换.zip