`
fuyangchang
  • 浏览: 146332 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Analysis包分析

阅读更多

Analysis包分析

算法和数据结构分析:

由于Analysis包比较简单,不详述了!

算法:基于机械分词 1-gram,2-gram,HMM(如果使用ICTCLAS接口的话)

数据结构:部分源码用到了Set ,HashTable,HashMap

认真理解Token

Lucene中的Analysis包专门用于完成对于索引文件的分词.Lucene中的Token是一个非常重要的概念.

看一下其源码实现:

public final class Token ...{

  String termText;                        
// the text of the term

  
int startOffset;                           // start in source text

  
int endOffset;                            // end in source text

  String type 
= "word";                        // lexical type

  
private int positionIncrement = 1;

  
public Token(String text, int start, int end)

  
public Token(String text, int start, int end, String typ)

  
public void setPositionIncrement(int positionIncrement)

  
public int getPositionIncrement() ...return positionIncrement; }

  
public final String termText() ...return termText; }

  
public final int startOffset() ...return startOffset; }

public void setStartOffset(int givenStartOffset)

  
public final int endOffset() ...return endOffset; }

public void setEndOffset(int givenEndOffset)

  
public final String type() ...return type; }

  
public String toString()

 }


下面编一段代码来看一下

TestToken.java

package org.apache.lucene.analysis.test;

import org.apache.lucene.analysis.*;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import java.io.*;

public class TestToken

...{

  
public static void main(String[] args)

  
...{

    String string 
= new String("我爱天大,但我更爱中国");

//Analyzer analyzer = new StandardAnalyzer();

Analyzer analyzer 
= new TjuChineseAnalyzer();

//Analyzer analyzer= new StopAnalyzer();

    TokenStream ts 
= analyzer.tokenStream("dummy",new StringReader(string));

    Token token;

    
try

    
...{

      
int n=0;

      
while ( (token = ts.next()) != null)

      
...{

        System.out.println((n
++)+"->"+token.toString());

      }


    }


    
catch(IOException ioe)

    
...{

      ioe.printStackTrace();

    }


 

  }


}


注意看其结果如下所示

0->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,0,1,<CJK>,1)

1->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,1,2,<CJK>,1)

2->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,2,3,<CJK>,1)

3->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,3,4,<CJK>,1)

4->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,5,6,<CJK>,1)

5->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,6,7,<CJK>,1)

6->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,7,8,<CJK>,1)

7->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,8,9,<CJK>,1)

8->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,9,10,<CJK>,1)

9->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,10,11,<CJK>,1)

注意:其中”,”StandardAnalyzer给过滤掉了,所以大家注意第4Token直接startOffset5开始.

如果改用StopAnalyzer()

0->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(我爱天大,0,4,word,1)

1->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(但我更爱中国,5,11,word,1)

改用TjuChineseAnalyzer(我写的,下文会讲到如何去写)

0->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,3,4,word,1)

1->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(天大,6,8,word,1)

2->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,19,20,word,1)

3->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(,22,23,word,1)

4->Token's (termText,startOffset,endOffset,type,positionIncrement) is:(中国,25,27,word,1)

讲明白了Token,咱们来看以下其他的东西

一个TokenStream是用来走访Tokeniterator(迭代器)

看一下其源代码:

public abstract class TokenStream ...{

  
public abstract Token next() throws IOException;

  
public void close() throws IOException ...{}

}


一个Tokenizeris-a TokenStream(派生自TokenStream),其输入为Reader

看一下其源码如下:

public abstract class Tokenizer extends TokenStream ...{

  
protected Reader input;

  
protected Tokenizer() ...{}

  
protected Tokenizer(Reader input) ...{

    
this.input = input;

  }


  
public void close() throws IOException ...{

    input.close();

  }


}


一个TokenFilter is–a TokenStream(派生自TokenStream),其义如名就是用来完成对TokenStream的过滤操作,譬如

StopWords,将Token变为小写等。

源码如下:

public abstract class TokenFilter extends TokenStream ...{
分享到:
评论
1 楼 gloomylilac 2008-03-28  
为什么没看见列出TjuChineseAnalyzer源码?

相关推荐

    IPA-Ingenuity Pathway Analysis

    Ingenuity Pathway Analysis是一款通路分析软件,包含网络分析,核心通路分析,上游调控因子分析,疾病及功能分析等。

    中文情感分析_sentiment_analysis.rar

    中文情感分析_sentiment_analysis,python程序,包含中文酒店用户评论数据。

    wireshark分析RTP丢包率.pdf

    Wireshark 分析 RTP 丢包率 Wireshark 是一个功能强大且广泛应用的网络协议分析工具,能够帮助我们分析和解决网络中的问题。今天,我们将使用 Wireshark 分析 RTP 丢包率。 RTP(Real-time Transport Protocol)是...

    脑电分析工具包

    脑电研究中ERP分析的工具包,很有使用价值

     Analysis III-Herbert Amann, Joachim Escher.pdf

    数学分析(Analysis III) 数学分析是数学的一个重要分支,它研究函数、极限、微积分、序列、级数等概念和理论。该领域的知识点非常广泛,本文将从给定的文件信息中提取相关知识点,详细说明标题、描述、标签和部分...

    AFM数据离线分析软件Nanoscope-Analysis简易使用方法(PPT文档).ppt

    Nanoscope-Analysis是一款AFM数据离线分析软件,能够对AFM测试数据进行离线分析和处理。本文将对Nanoscope-Analysis软件的简易使用方法进行详细介绍。 一、安装和设置 首先,需要从ftp://202.38.246.199:2100/上的...

    matlb 慢特征分析

    slow feature analysis 慢特征分析matlab源代码,参考文献:Wiskott, L. and Sejnowski, T.J. (2002), "Slow Feature Analysis:Unsupervised Learning of Invariances",

    NLP 情感分析 方面情感分析包

    Aspect Based Sentiment Analysis The task is to classify the sentiment of potentially long texts for several aspects. The key idea is to build a modern NLP package which supports explanations of model ...

    基于Java的sql-analysis慢sql分析组件设计源码

    sql-analysis慢sql分析组件设计源码:该项目基于Java开发,包含54个文件,主要使用Java语言。该设计源码是一款针对大促和日常系统稳定性隐患的慢sql分析和排查工具,基于Mybatis插件设计。它不同于基于慢sql日志分析...

    Sentiment Analysis Dataset情感分析数据集

    这个数据集名为“Sentiment Analysis Dataset”,来源于Kaggle平台,主要用于情感分析领域的研究。这个数据集的特点是训练数据是通过自动化方式创建的,而不是人工标注推文的情感。具体方法是假设所有包含正面表情...

    Autodesk Ecotect Analysis2011

    Autodesk Ecotect Analysis软件是一款功能全面,适用于从概念设计到详细设计环节的可持续设计分析工具,其中包含一系列基于桌面和web服务*平台的仿真和分析功能。该软件具有强大且基于web的整体建筑能效、水耗及碳...

    Introduction to the Design and Analysis of Algorithms 算法分析与设计基础 官方答案

    Introduction to the Design and Analysis of Algorithms 算法分析与设计基础 官方答案 适用于本书第二版 不是有些复制,粘贴到word里的答案,包含题目tips和详细分析 仅限1-10章

    Network protocol analysis

    主要包含4本WireShark相关数据分析数据: 1、Practical Packet Analysis, 2nd Edition.pdf 2、Wireshark 数据包分析实战%28第2版%29.pdf 3、Wireshark 数据包分析实战(第2...4、Wireshark数据抓包分析(网络协议篇).pdf

    Frontline Protocol Analysis Software 15.16

    蓝牙 HCI log 抓包工具 CPAS Frontline Protocol Analysis Software 15.16 (18.11.17745.23596) for Windows 7 (32-bit & 64-bit), Windows 8.1 (32-bit & 64-bit), Windows 10 (32-bit & 64-bit)

    java-dependencies-analysis:分析项目开发中的开放源代码依存关系。 分析开源项目的依赖项中的安全性和许可方面的内容,适用于Java平台

    java-dependencies-analysis 分析项目开发中的开放源代码依存关系。 分析适用于Java平台的开源项目依赖项中的安全和许可证方面的内容。使用插件要使用此插件,需要为 2.1或更高版本添加以下脚本片段: plugins { id ...

    swot数据分析模板swot分析模板swot-analysis.xlsx

    swot数据分析模板,SWOT分析在EXCEL怎么展示出来,SWOT 分析法是什么?SWOT 分析法,也称态势分析法或道斯矩阵,分别包含:优势( Strength )、劣势( Weakness )、机会( Opportunity )、威胁( Threats )。优势...

    analysis-ik.zip

    这是一个elasticsearch的插件elasticsearch-analysis-ik-6.2.4的zip包,安装在elasticsearch的plugins下,重启elasticsearch就可以使用IK分析器了

    Introduction To Numerical Analysis - Stoer 3rd ed

    Introduction To Numerical Analysis - Stoer 3rd ed,数值分析导论第三版,Stoer编著。包含误差分析、插值、线性方程求解、差分方程等

    Fitness Analysis 健身分析-数据集

    这个数据集是在大学时代收集的。数据集主要包含来自朋友和家人的数据。此数据集具有人们遵循的健身实践类型的调查数据。 fitness analysis.csv

    timeseries-analysis, NPM软件包Timeseries分析,噪声去除,统计. ..zip

    timeseries-analysis, NPM软件包Timeseries分析,噪声去除,统计. . Timeseries分析一个可以链接的timeseries分析工具。转换你的数据,过滤它,平滑它,去除噪音,获取统计数据,获取数据的预览图表- - 。这个库是...

Global site tag (gtag.js) - Google Analytics