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
结束语
欢迎大家使用。如果你认为分词不好,可以给我留言,我会尽量补修不足的地方。如果你认为不错,也可以发信息给我,鼓励一下下。
分享到:
相关推荐
【标题】: "基于HTTP协议的开源中文分词系统,php演示" 涉及的知识点 在IT领域,中文分词是自然语言处理(NLP)中的关键步骤,尤其对于中文文本的理解和分析至关重要。这里提到的是一个开源项目,它提供了一个基于...
【标题】中的“工具查询开源中文分词系统 HTTPCWS 1.0.0 PHP演示程序”揭示了我们要讨论的核心内容:一个基于PHP的开源项目,名为HTTPCWS,用于中文分词。这个系统提供了对中文文本进行词汇切分的能力,是自然语言...
原生IK中文分词是从文件系统中读取词典,es-ik本身可扩展成从不同的源读取词典。目前提供从sqlite3数据库中读取。es-ik-plugin-sqlite3使用方法: 1. 在elasticsearch.yml中设置你的sqlite3词典的位置:ik_analysis...
在IT领域,中文分词是自然语言处理(NLP)的一个重要步骤,它涉及到将连续的汉字序列切分成具有独立语义的词汇单元,这对于信息检索、文本分析、机器翻译等多个应用领域至关重要。 这个系统可能是一个开源项目,这...
用纯C语言开发了一个中文分词系统,速度大约1万字/1秒,大小100K(免费+开源+86万词库+操作示意图+测试用例) 用法很简单,比如:你把中文分词系统解压后保存到D:\那你直接在 dos 窗口下输入: d:\cfenci.exe 然后回车...
IK Analyzer 是一个开源的,基于 java 语言开发的轻量级的中文分词工具包。从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析...
java开源分词系统主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典。我们先后精心打造五年,内核升级7次,目前已经升级到了ICTCLAS2009 用户词典接口扩展用户可以动态增加、删除用户词典...
分词,顾名思义,是将连续的汉字序列切分成具有独立语义的词语,这是理解和分析中文文本的第一步。对于机器来说,中文没有明显的空格或标点符号来指示单词边界,因此分词显得尤为关键。Faster分词软件就是这样一款...
IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文...
开源新闻发布系统是一个面向初学者和开发者的项目,它允许用户创建、管理和发布新闻内容。这样的系统通常基于Web,采用开放源代码模式,鼓励社区参与和改进。以下是对这个主题的详细解析: 一、开源概念 开源意味着...
SCWS(Simple Chinese Word Segmentation)是一个开源且免费的简易PHP中文分词系统,由华大的黄海广先生开发。这个系统主要针对简体中文文本进行分词处理,旨在为PHP开发者提供一种轻量级、高效的中文处理工具,使得...
此外,开源社区的活跃度和用户反馈也是评价一个分词组件的重要指标,通过Readme.txt文件,我们可以获取到关于组件的最新信息,如版本更新、使用注意事项以及社区支持情况。 使用Rainsoft.WordSeg时,开发者需要了解...
盘古分词是基于C#开发的,专门针对中文文本的分词系统,它以其高效、准确的特性在信息检索、文本分析等领域广泛应用。 2PanGuSegment是盘古分词的核心组件,负责进行实际的分词工作。开发者可以通过调用这个组件来...
中文分词是自然语言处理(NLP)中的基础步骤,由于中文没有明显的空格或标点符号来区分单词边界,因此需要通过特定算法将连续的汉字序列切分成一个个有意义的词语。中文分词的准确度直接影响到信息检索、文本分类、...
【Java开源企业考勤系统】是一个专为企业设计的考勤管理解决方案,它基于Java编程语言,为企业的员工考勤提供了一套完整的系统。这个开源项目旨在帮助企业管理员工的上下班时间,自动计算迟到、早退、请假等情况,...
4. **分词准确率**:衡量一个分词系统好坏的重要指标就是准确率,即正确切分出的词语占总词语数量的比例。较高的准确率意味着分词结果更接近人工标注的结果,对于后续的NLP任务有积极的影响。 5. **运行速度**:在...
Friso是一个使用C语言开发的开源中文分词器,它基于mmseg算法实现,支持多种分词模式,并具有良好的性能和扩展性。Friso中文分词系统不仅适用于中文分词,还支持英文分词和混合语言分词,具有广泛的应用场景。 ## ...
盘古分词是一个知名的开源中文分词工具,它采用了高效的分词算法,包括逆向最大匹配法,能够提供准确且快速的分词服务。盘古分词支持多种分词模式,如精确模式、全模式和搜索引擎模式,以满足不同应用场景的需求。 ...
SCWS(Simple Chinese Word Segmentation)是一个开源且免费的简易PHP中文分词系统,由华大的Xunsearch团队开发。这个系统旨在为PHP开发者提供一个轻量级、高效的中文分词解决方案,使得在PHP环境中处理中文文本变得...