lucene Ngram 划分词语

最近在做一个有关文本挖掘的项目,需要用到Ngram模型已经相对应的向量匹配相似度的技术

Ngram分词的程序

有位网友在问我,想了想写在这里吧,至于那些jar包也很好找,lucene jar ,在百度搜索都能找到

package edu.fjnu.huanghong;

import java.io.IOException;
import java.io.StringReader;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.ngram.NGramTokenizer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionLengthAttribute;
import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
import org.apache.lucene.util.Version;
/*
 *
 * import org.apache.lucene.analysis.ngram.Lucene43EdgeNGramTokenizer;
   import org.apache.lucene.analysis.ngram.Lucene43NGramTokenizer;
 * */

public class Ngram {
	public static void main(String[] args) {
		String s = "捡 白色 iphone6 手机 壳 透明 失主 方式 15659119418  ";
		String[] str = s.split(" ");
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < str.length; i++){
			sb.append(str[i]);
		}
		System.out.println(sb.toString());
		StringReader sr = new StringReader(sb.toString());
		//N-gram模型分词器
		Tokenizer tokenizer = new NGramTokenizer(Version.LUCENE_45,sr);
		testtokenizer(tokenizer);
	}

	private static void testtokenizer(Tokenizer tokenizer) {

		try {		

			tokenizer.reset();
			while(tokenizer.incrementToken())
		<span style="white-space:pre">	</span>{
				CharTermAttribute charTermAttribute=tokenizer.addAttribute(CharTermAttribute.class);
			)
				System.out.print(charTermAttribute.toString()+"|");
			}
			tokenizer.end();
			tokenizer.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

不知道有没有 哪位前辈有关于qgram的相关知识- - ,翻墙了都找不到,如有希望能私信我,不胜感激

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-04 16:20:32

lucene Ngram 划分词语的相关文章

Lucene导读

Lucene导读 1.1结构化数据和非结构化数据 我们生活中的数据总体分为两种:结构化数据和非结构化数据. ? 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等. ? 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等. ? 例如:磁盘上的文件 1.2对结构化数据的搜索 对数据库的搜索,用SQL语句.再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等. 1.3对非结构化数据的搜索 (1)顺序扫描法(Serial Scanning) 所谓顺序

lucene、lucene.NET详细使用与优化详解

lucene.lucene.NET详细使用与优化详解 2010-02-01 13:51:11 分类: Linux 1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品. 1.2 lucene能做什么要 回答这个问题,先要了解lucene的本质.实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜

Lucene实践之Query

检索过程中可能会面临各种各样的复杂条件检索,今天学习一下lucene各种Query,并通过多个Query的合并使用实现多条件的检索. Game Starts 参考文档 1) Package org.apache.lucene.search Description 2) Lucene整理4-各种Query(转) 依赖的jar包 1)lucene-core.jar 2)lucene-analyzer-common 3)lucene-queryParser 主要的类 1)Term Term表示的就是一

lucene使用与优化

lucene使用与优化 1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品.1.2 lucene能做什么 要回答这个问题,先要了解lucene的本质.实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里.知道了这个本质,你就可以发挥想象做任何符合这个

Lucene用法10个小结

1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品. 1.2 lucene能做什么 要回答这个问题,先要了解lucene的本质.实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里.知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了.你可以把

Lucene简介

1 lucene简介1.1 什么是lucene    Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品.2 lucene的工作方式    lucene提供的服务实际包含两部分:一入一出.所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除:所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源.2.1写入流程    源字符串首先经过anal

Lucene入门的基本知识(四)

刚才在写创建索引和搜索类的时候发现非常多类的概念还不是非常清楚,这里我总结了一下. 1 lucene简单介绍 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它仅仅是提供了一种工具让你能实现这些产品. 1.2 lucene能做什么 要回答这个问题,先要了解lucene的本质.实际上lucene的功能非常单一.说究竟,就是你给它若干个字符串.然后它为你提供一个全文搜索服务,告诉你你要

【转】Lucene.NET详细使用与优化详解

1 lucene简介1.1 什么是luceneLucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品. 1.2 lucene能做什么要 回答这个问题,先要了解lucene的本质.实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你 你要搜索的关键词出现在哪里.知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了.你可以把站

Lucene教程(转)

Lucene教程 1 lucene简介1.1 什么是lucene    Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品.2 lucene的工作方式    lucene提供的服务实际包含两部分:一入一出.所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除:所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源.2.1写入流程    源字符