Lucene实现中文分词

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算? 本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。 阅读详情

在之前的文章中已经介绍过Lucene了,这里就不多做介绍。

一、中文分词的原理

中文分词是将一个汉字序列切分为一个一个单独的词。分词就是讲连续的字序列安装一定的规范重新组合成词序列的过程。随着机器学习的发展,很多分词的方法都已经被科研人员实现,也越来越精确。分词的精确性一定程度上影响了搜索引擎的查全率与查准率,当然这是在你的中文分词运用在搜索引擎的前提之下。

分词的算法可以分为:基于字符串匹配的分词方法、基于统计的分词方法,很容易理解基于字符串匹配的分词方法有很大的局限性,很难做到准确的分词,因为世界上没有一本最完备的词典,很多专业词汇、人名巴拉巴拉之类很难涉及到。因此显而易见,基于统计的分词方法要更精确同时更复杂。

基于字符串匹配的分词方法又有:正向最大匹配、逆向最大匹配、最少切分等等方法

基于统计的分词方法很大程度上是根据上下文中,相邻的字同时出现的次数,字与字相邻共现的频率之类信息来实现更精确的分词,需要用到统计语言模型,设计很多数学原理,这里就不做更多介绍了,网上有很多资料。

二、关于停用词

停用词是自然语言中关键的组成,对于语义的构成有重要的意义,但是很多时候我们在做搜索是只需要内容的关键词而不是全部词,所以去除停用词是很必要的操作。例如汉语中的:“的”“是”等。

网上有一些汉语中常用停用词的整理,我使用的是GitHub上的一个停用词表

三、代码实现

环境是Lucene4.6

import [图片]java.io.BufferedReader;
import [图片]java.io.File;
import [图片]java.io.FileInputStream;
import [图片]java.io.IOException;
import [图片]java.io.InputStreamReader;
import [图片]java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import [图片]org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
//import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.util.CharArraySet;
import org.apache.lucene.util.Version;

public class SegWordTest {
	//创建一个去除停用词的分析器对象
	public static CharArraySet stopwords = new CharArraySet(Version.LUCENE_46, 3, false);
	public static Analyzer noStopAnalyzer;
	public static void initializeData() throws IOException{
		//读取停用词表格
		File filename = new File("someFiles/stopwords.txt");
		InputStreamReader reader = new InputStreamReader(new FileInputStream(filename));
		BufferedReader br = new BufferedReader(reader);
		String line = "";
		line = br.readLine();
		while(line != null){
			stopwords.add(line);
			line = br.readLine();
		}
		br.close();
		noStopAnalyzer = new SmartChineseAnalyzer(Version.LUCENE_46, stopwords);
	}
	public static void testAnanlyzer(String cont) throws IOException{
		/*
		//不去除停用词的版本
		//创建一个中文分词的分析器对象
		Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_46);
		//从分析器对象中获得tokenStream对象
		TokenStream tokenStream = analyzer.tokenStream("myfield", new StringReader(cont));
		*/
		TokenStream tokenStream = noStopAnalyzer.tokenStream("myfield", new StringReader(cont));
		//设置一个引用,这个引用可以使多种类型,可以是关键词的引用,偏移量的引用等等
		//关键词的引用
		CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
		//偏移量的引用,可以得到词汇开始和结束的位置
		//OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
		tokenStream.reset();	//很关键,不然会报错
		while(tokenStream.incrementToken()){
			System.out.println(charTermAttribute);
		}
		tokenStream.close();
	}
	public static void main(String args[]) throws IOException{
		initializeData();
		String con = "这是一架高空高速飞行的飞机";
		testAnanlyzer(con);
	}
}

Xilinx System Generator多速率系统(Multi-Rate Systems)的使用 在本实验练习中,您将学习在System Generator中如何使用多个时钟域有效地实现具有多个数据速率的设计。 阅读详情

相关推荐

Lucene关于几种中文分词的总结

Lucene关于几种中文分词的总结

Lucene中文分词

1、分析器(Analyzer)的执行过程 如下图是语汇单元的生成过程: 从一个Reader字符流开始,创建一个基于Reader的Tokenizer分词器,经过三个TokenFilter生成语汇单元Tokens。 要看分析器的分析效果,只需要看Tokenstream中的内容就可以了。每个分析器都有一个方法tokenStream,返回一个tokenStream对象。 2、分析器的分词效果 ...

玉爷的博客 811

发票字段检测数据集.zip

一、基础信息数据集名称:发票字段检测数据集图片数量:- 训练集:393张图片- 验证集:89张图片- 测试集:45张图片- 总计:527张发票相关图片分类类别:- 账单地址(Billing Address)- CIN号码(CIN number)- 折扣(Discount)- 到期日期(Due Date)- 消费税(GST)- 消费税识别号(GSTIN)- 发票日期(Invoice Date)- 发票描述(Invoice Description)- 发票号码(Invoice Number)- 净额(Net Amount)- 客户名称(Party name)- 服务费(Service charges)- 送货地址(Shipping Address)- 送货费(Shipping charges)- 预扣税(TDS)- 应税金额(Taxable Amount)- 总金额(Total Amount)标注格式:YOLO格式,包含边界框和类别标签,适用于目标检测任务。数据来源:来源于真实发票文档图像,支持关键字段的定位与识别。二、适用场景1. 自动化发票处理系统开发:数据集支持目标检测任务,帮助构建AI模型自动提取发票中的关键字段(如金额、日期、地址),用于财务软件或ERP系统,实现高效数据录入和错误减少。1. 财务与会计AI应用:集成至企业报销工具或审计系统中,提供实时字段识别功能,自动化发票分类、验证和报告生成,提升业务流程效率。1. 文档智能研究:支持计算机视觉与文档处理的交叉研究,助力学术论文在OCR、表格理解或结构化数据提取领域的创新。1. 企业流程优化工具:适用于物流、零售或制造业的发票管理解决方案,通过AI模型快速解析大量发票,优化供应链和财务操作。三、数据集优势1. 精准标注与高覆盖性:所有图片均标注YOLO格式边界框,确保字段定位精确;覆盖17个关键发票字段,包括地址、金额、税务等,全面反映真实业务场景。1. 任务适配性强:数据直接兼容主流目标检测框架(如YOLO),支持端到端模型训练;适用于从字段检测扩展到文档分类或信息提取等多任务需求。1. 实际应用价值突出:专注于发票核心字段的识别,减少人工干预,提升数据处理速度和准确性;样本来源于多样化发票类型,增强模型在真实环境中的泛化能力。1. 即用性与效率:标注格式标准化,便于快速集成到现有AI流水线;数据集规模适中但高度聚焦,能有效支持模型迭代和部署。

Lucene中文切分原理及其他常见切分算法

1、 什么是中文分词学过英文的都知道,英文是以单词为单位的,单词与单词之间以空格或者逗号句号隔开。而中文则以字为单位,字又组成词,字和词再组成句子。所以对于英文,我们可以简单以空格判断某个字符串是否为一个单词,比如I love China,love 和 China很容易被程序区分开来;但中文“我爱中国”就不 一样了,电脑不知道“中国”是一个词语还是“爱中”是一个词语。把中文的句子切分成有意义的词,就

ayi_5788的专栏 6873

Lucene 中文分词器概述 与 Ik-Analyzer 使用教程

目录 Ik-Analyzer 简介 GoogleCode 官网介绍 IK Analyzer 2012 特性 版本兼容 Ik-Analyzer 使用 Ik-Analyzer 下载 导入开发包 创建索引 查询索引 官方示例 Ik-Analyzer 简介 GoogleCode 开源项目 :http://code.google.com/p/ik-analyzer/,开发包下载地址:...

蚩尤后裔-汪茂雄 3万+

Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示

前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用smartcn中文分词器以及对结果的高亮显示。1. 中文分词使用中文分词的话,首先到添加中文分词的jar包。<!-- lucene中文分词器 --> <dependency> <groupId>

1万+

lucene中使用ictclas算法 实现中文分词索引

lucene中使用ictclas算法<br />分词研究2010-03-29 16:38:51阅读132评论0  字号:大中小 订阅给Lucene加入性能更好的中文分词 <br />      Lucene本身的StandardAnalyzer提供了中文分词接口,不过其采用的为1-gram. 这种分词方法虽然不会损失任何索引信息,但是造成的索引垃圾太多,用户得到的查询结果中垃圾也是很多. 经过认真研究了Lucene的Analysis包,我写了一个TjuChineseAnalyzer,效果不错. <br /

华工智能计算实验室评论挖掘团队的专栏 903

Lucene支持中文分词代码实现

支持中文分词 分析器(Analyzer)的执行过程 如下图是语汇单元的生成过程: 从一个Reader字符流开始,创建一个基于Reader的Tokenizer分词器,经过三个TokenFilter生成语汇单元Token。 要看分析器的分析效果,只需要看Tokenstream中的内容就可以了。每个分析器都有一个方法tokenStream,返回一个tokenStream对象。 分析器的分...

学亮编程手记 1269

.NET使用Lucene.Net和盘古分词类库实现中文分词

.NET中文分词实现http://http://使用Lucene.Net.dll http://www.apache.org/dist/incubator/lucene.net/binaries/2.9.4g-incubating/PanGu.dll http://pangusegment.codeplex.com/releases/view/50811PanGu.Lucene.Analyzer.

李君老师的BLOG 1万+

php结合lunece_IKAnalyzer结合Lucene实现中文分词(示例讲解)

1、基本介绍随着分词在信息检索领域应用的越来越广泛,分词这门技术对大家并不陌生。对于英文分词处理相对简单,经过拆分单词、排斥停止词、提取词干的过程基本就能实现英文分词,单对于中文分词而言,由于语义的复杂导致分词并没英文分词那么简单,一般都是通过相关的分词工具来实现,目前比较常用的有庖丁分词以及IKAnalyzer等。这里我们主要通过一个简单的Demo聊聊IKAnalyzer的基本使用。IKAnal...

weixin_39529903的博客 171

lucene 与IKAnalyzer实现中文分词查询 (最新jar及实现代码)

资源地址:http://download.csdn.net/detail/qq540061627/4063916 lucene3.5 IKAnalyzer3.2.5 实例中文分词通过,目前在网上找的lucene 和IKAnalyzer 的最新版本测试通过。内含:示例代码,以及最新jar包。 lucene lucene3.5 IKAnalyzer IKAnalyzer3.2.

qq540061627的专栏 4256

IKAnalyzer结合Lucene实现中文分词

1、基本介绍   随着分词在信息检索领域应用的越来越广泛,分词这门技术对大家并不陌生。对于英文分词处理相对简单,经过拆分单词、排斥停止词、提取词干的过程基本就能实现英文分词,单对于中文分词而言,由于语义的复杂导致分词并没英文分词那么简单,一般都是通过相关的分词工具来实现,目前比较常用的有庖丁分词以及IKAnalyzer等。这里我们主要通过一个简单的Demo聊聊IKAnalyzer的基本使用。IK...

weixin_30824599的博客 124

lucene集成IK实现中文分词检索

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34319640的博客 163

lucene MMAnalyzer 实现中文分词

先上代码: import java.io.IOException; import jeasy.analysis.MMAnalyzer; /** * 此次测试使用的是Lucene2.2 * @author 李晗 * */ public class Test { public static void main(String[] args) { ...

JAVA for GIS 421

lucene三---中文分词

1.1. 中文分析器 1.1.1.  Lucene自带中文分词器 l  StandardAnalyzer: 单字分词:就是按照中文一个字一个字地进行分词。如:“我爱中国”, 效果:“我”、“爱”、“中”、“国”。 l  CJKAnalyzer 二分法分词:按两个字进行切分。如:“我是中国人”,效果:“我是”、“是中”、“中国”“国人”。   上边两个分词器无法满足需求。 l  S

youfashion的博客 1060

Lucene使用(四)中文分词器smartcn

Lucene自带多种分词器,其中对中文分词支持比较好的是smartcn。 1. 标准分词器StandardAnalyzer 在演示smartcn中文分词器之前,先来看看Lucene标准分词器对中文分词的效果。需要的jar为\lucene-5.5.5\core\下的lucene-core-5.5.5.jar和\lucene-5.5.5\analysis\common\下的lucene-analy

xxpsw的博客 7301

(五)Lucene——中文分词

1. 什么是中文分词器 对于英文,是安装空格、标点符号进行分词 对于中文,应该安装具体的词来分,中文分词就是将词,切分成一个个有意义的词。 比如:“我的中国人”,分词:我、的、中国、中国人、国人。 2. Lucene自带的中文分词器 StandardAnalyzer:     单字分词:就是按照中文一个字一个字地进行分词。如:“我爱中国”,    效果:“我”、“爱”、“中”、...

weixin_33711647的博客 193

lucene7.6.0中文分词+权重设置

最近项目需要使用到中文分词,所以想到了使用lucene+ik分词来实现。 使用技术为 lucene7.6.0

weixin_46422238的博客 1018

lucene--5.支持中文分词

1      分析器 1.1.  分析器(Analyzer)的执行过程 如下图是语汇单元的生成过程:    从一个Reader字符流开始,创建一个基于Reader的Tokenizer分词器,经过三个TokenFilter生成语汇单元Tokens。 要看分析器的分析效果,只需要看Tokenstream中的内容就可以了。每个分析器都有一个方法tokenStream,返回一个tokenStre

村西头的俏寡妇 1412
上一篇: 基于极值区域与连通区域的图片中文本区域定位
下一篇: Windows平台下利用WampServer搭建服务器
網上邻居
博客等级 码龄10年 6粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值