导航:首页 > 源码编译 > java中文分词算法

java中文分词算法

发布时间:2022-06-05 20:11:11

java 怎么用lucenes进行分词

import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.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.LockObtainFailedException;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer;

/**
* 使用IKAnalyzer进行Lucene索引和查询的演示
* 2012-3-2
*
* 以下是结合Lucene4.0 API的写法
*
*/
public class LuceneIndexAndSearchDemo {

/**
* 模拟:
* 创建一个单条记录的索引,并对其进行搜索
* @param args
*/
public static void main(String[] args){
//Lucene Document的域名
String fieldName = "text";
//检索内容
String text = "IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。";

//实例化IKAnalyzer分词器
Analyzer analyzer = new IKAnalyzer(true);

Directory directory = null;
IndexWriter iwriter = null;
IndexReader ireader = null;
IndexSearcher isearcher = null;
try {
//建立内存索引对象
directory = new RAMDirectory();

//配置IndexWriterConfig
IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_40 , analyzer);
iwConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
iwriter = new IndexWriter(directory , iwConfig);
//写入索引
Document doc = new Document();
doc.add(new StringField("ID", "10000", Field.Store.YES));
doc.add(new TextField(fieldName, text, Field.Store.YES));
iwriter.addDocument(doc);
iwriter.close();

//搜索过程**********************************
//实例化搜索器
ireader = DirectoryReader.open(directory);
isearcher = new IndexSearcher(ireader);

String keyword = "中文分词工具包";
//使用QueryParser查询分析器构造Query对象
QueryParser qp = new QueryParser(Version.LUCENE_40, fieldName, analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyword);
System.out.println("Query = " + query);

//搜索相似度最高的5条记录
TopDocs topDocs = isearcher.search(query , 5);
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) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} finally{
if(ireader != null){
try {
ireader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(directory != null){
try {
directory.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

Ⅱ java调用txt文件的路径问题

把代码提出来。
一种方式:把SegCn.java中的Dictionary.txt路径改为绝对路径,例如:d:/src/Dictionary.txt(or d:\\src\\Dictionary.txt )
另一种方式:相对目录,SegCn.java和Dictionary.txt放在一个目录下。

Ⅲ java语言中文分词程序怎么编写

现可以提供两种思路:
1.String或是StringBuffer(建议用)
中的indexOf("中华")方法,查找给定的的字符串中是否有给定词表中的词。
2.借鉴编译原理中的状态装换的思想。
先编写一个状态机,用于测试给定字符串中的词是否满足词表中的内容。
写在最后:1)建议使用第一种方法,因为在java
内部实现的查找操作其实
和你想得思路是相同的,不过他的效率会高些。
2)如果个人的编程能力比较强或是不考虑效率只是想实现专有的分词算法。可以使用第二种方法。
3)以上的两种方法都可以使用多线程来提高程序的效率。

Ⅳ 中文分词的常见项目

功能性能 功能描述:1.新词自动识别
对词典中不存在的词,可以自动识别,对词典的依赖较小;
2.词性输出
分词结果中带有丰富的词性;
3.动态词性输出
分词结果中的词性并非固定,会根据不同的语境,赋予不同的词性;
4.特殊词识别
比如化学、药品等行业词汇,地名、品牌、媒体名等;
5.智能歧义解决
根据内部规则,智能解决常见分词歧义问题;
6.多种编码识别
自动识别各种单一编码,并支持混合编码;
7.数词量词优化
自动识别数量词; 性能介绍:处理器:AMD Athlon II x2 250 3GHZ
单线程大于833KB/s,多线程安全。 一个php函数实现中文分词。使分词更容易,使用如下图:
Paoding(庖丁解牛分词)基于Java的开源中文分词组件,提供lucene和solr 接口,具有极 高效率和 高扩展性。引入隐喻,采用完全的面向对象设计,构思先进。
高效率:在PIII 1G内存个人机器上,1秒可准确分词 100万汉字。
采用基于 不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。
能够对未知的词汇进行合理解析。
仅支持Java语言。 MMSEG4J基于Java的开源中文分词组件,提供lucene和solr 接口:
1.mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2.MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。 盘古分词是一个基于.net 平台的开源中文分词组件,提供lucene(.net 版本) 和HubbleDotNet的接口
高效:Core Duo 1.8 GHz 下单线程 分词速度为 390K 字符每秒
准确:盘古分词采用字典和统计结合的分词算法,分词准确率较高。
功能:盘古分词提供中文人名识别,简繁混合分词,多元分词,英文词根化,强制一元分词,词频优先分词,停用词过滤,英文专名提取等一系列功能。 jcseg是使用Java开发的一个中文分词器,使用流行的mmseg算法实现。
1。mmseg四种过滤算法,分词准确率达到了98.4%以上。
2。支持自定义词库。在lexicon文件夹下,可以随便添加/删除/更改词库和词库内容,并且对词库进行了分类,词库整合了《现代汉语词典》和cc-cedict辞典。
3。词条拼音和同义词支持,jcseg为所有词条标注了拼音,并且词条可以添加同义词集合,jcseg会自动将拼音和同义词加入到分词结果中。
4。中文数字和分数识别,例如:"四五十个人都来了,三十分之一。"中的"四五十"和"三十分之一",并且jcseg会自动将其转换为对应的阿拉伯数字。
5。支持中英混合词的识别。例如:B超,x射线。
6。支持基本单字单位的识别,例如2012年。
7。良好的英文支持,自动识别电子邮件,网址,分数,小数,百分数……。
8。智能圆角半角转换处理。
9。特殊字母识别:例如:Ⅰ,Ⅱ
10。特殊数字识别:例如:①,⑩
11。配对标点内容提取:例如:最好的Java书《java编程思想》,‘畅想杯黑客技术大赛’,被《,‘,“,‘标点标记的内容。
12。智能中文人名识别。中文人名识别正确率达94%以上。
jcseg佩带了jcseg.properties配置文档,使用文本编辑器就可以自主的编辑其选项,配置适合不同应用场合的分词应用。例如:最大匹配分词数,是否开启中文人名识别,是否载入词条拼音,是否载入词条同义词……。 friso是使用c语言开发的一个中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。并且提供了一个php中文分词扩展robbe。
1。只支持UTF-8编码。【源码无需修改就能在各种平台下编译使用,加载完20万的词条,内存占用稳定为14M。】。
2。mmseg四种过滤算法,分词准确率达到了98.41%。
3。支持自定义词库。在dict文件夹下,可以随便添加/删除/更改词库和词库词条,并且对词库进行了分类。
4。词库使用了friso的Java版本jcseg的简化词库。
5。支持中英混合词的识别。例如:c语言,IC卡。
7。很好的英文支持,电子邮件,网址,小数,分数,百分数。
8。支持阿拉伯数字基本单字单位的识别,例如2012年,5吨,120斤。
9。自动英文圆角/半角,大写/小写转换。
并且具有很高的分词速度:简单模式:3.7M/秒,复杂模式:1.8M/秒。

Ⅳ 求java中文分类实现过程代码

这是一个强大的语义+语法+词法分析器,很难很强大
做好了,你可以试试来网络工作

Ⅵ 汉语句子拆分算法 java实现 高手请指教

/*实现单个拆开*/
package dd;
public class Dd {

public static void main(String[] args) {
String kissi="今天,天气比较好";
//将字符串拆成一个char[]数组
//至于tochararray(),请查帮助文档
char[] kiss=kissi.toCharArray();
for(int i=0;i<kiss.length;i++){
System.out.println(kiss[i]);
}

}

}

Ⅶ java word分词器怎样安装在java中

word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。

如果需要安装word分词器可以参考下面的步骤:

1、确保电脑上已经安装了JDK软件和Eclispe工具,没有安装的可以到对应的官网下载安装:

JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html

Eclipse官网:http://www.eclipse.org

2、下载word分词器的相关jar包:

打开word分词器的官方github主页:https://github.com/ysc/word

导入成功之后就可以在自己的项目中使用word分词器了。

Ⅷ java通过中文分词进行网页分类!

分词这个也就是中文的组合。解决办法就是
给出字段之后,进行拆分,分成2个字,3个字,4个字。之后让用户点击,增加词的权重。优化数据库中词的排序。

Ⅸ java编个中文分词的程序

importjava.io.Reader;
importjava.io.StringReader;
importorg.apache.lucene.analysis.*;
importorg.apache.lucene.analysis.cjk.CJKAnalyzer;
importorg.apache.lucene.analysis.cn.ChineseAnalyzer;
importorg.apache.lucene.analysis.standard.StandardAnalyzer;
importorg.mira.lucene.analysis.MIK_CAnalyzer;

publicclassJeAnalyzer{

publicstaticvoidtestStandard(StringtestString){
try{
Analyzeranalyzer=newStandardAnalyzer();
Readerr=newStringReader(testString);
StopFiltersf=(StopFilter)analyzer.tokenStream("",r);
System.err.println("=====standardanalyzer====");
Tokent;
while((t=sf.next())!=null){
System.out.println(t.termText());
}
}catch(Exceptione){
e.printStackTrace();
}
}

publicstaticvoidtestCJK(StringtestString){
try{
Analyzeranalyzer=newCJKAnalyzer();
Readerr=newStringReader(testString);
StopFiltersf=(StopFilter)analyzer.tokenStream("",r);
System.err.println("=====cjkanalyzer====");
Tokent;
while((t=sf.next())!=null){
System.out.println(t.termText());
}
}catch(Exceptione){
e.printStackTrace();
}
}

publicstaticvoidtestChiniese(StringtestString){
try{
Analyzeranalyzer=newChineseAnalyzer();
Readerr=newStringReader(testString);
TokenFiltertf=(TokenFilter)analyzer.tokenStream("",r);
System.err.println("=====chineseanalyzer====");
Tokent;
while((t=tf.next())!=null){
System.out.println(t.termText());
}
}catch(Exceptione){
e.printStackTrace();
}
}

publicstaticStringtransJe(StringtestString,Stringc1,Stringc2){
Stringresult="";
try{
Analyzeranalyzer=newMIK_CAnalyzer();
Readerr=newStringReader(testString);
TokenStreamts=(TokenStream)analyzer.tokenStream("",r);
Tokent;
while((t=ts.next())!=null){
result+=t.termText()+",";
}
}catch(Exceptione){
e.printStackTrace();
}
returnresult;
}

publicstaticvoidmain(String[]args){
try{
StringtestString="中文分词的方法其实不局限于中文应用,也被应用到英文处理,如手写识别,单词之间的空格就很清楚,中文分词方法可以帮助判别英文单词的边界";
System.out.println("测试的语句"+testString);
StringsResult[]=transJe(testString,"gb2312","utf-8").split(",");
for(inti=0;i<sResult.length;i++){
System.out.println(sResult[i]);
}
}catch(Exceptione){
e.printStackTrace();
}
}
}

jar包
lucene-analyzers-2.4.1.jar
lucene-core-2.4.1.jar
IKAnalyzer2.0.2OBF.jar

阅读全文

与java中文分词算法相关的资料

热点内容
windows压缩tar 浏览:397
写作基础pdf 浏览:744
redis30php扩展 浏览:517
小米手机发布源码 浏览:611
程序员一般什么发音 浏览:280
阿里云java服务器 浏览:217
51单片机读取sd卡程序 浏览:821
初中学习单片机知识 浏览:357
安卓手机如何下苹果官网 浏览:37
linuxpython脚本运行 浏览:855
vs中编译在哪 浏览:454
linuxshell安装 浏览:761
qq邮箱发压缩包 浏览:196
做程序员需要跳槽吗 浏览:394
程序员进度考核 浏览:842
单片机编译picc 浏览:974
php获取当前url域名 浏览:338
丁字框架梁处用加密吗 浏览:682
海聊app怎么玩 浏览:211
单文件夹是什么 浏览:238