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给过滤掉了,所以大家注意第4个Token直接startOffset从5开始.
如果改用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是用来走访Token的iterator(迭代器)
看一下其源代码:
public abstract class TokenStream ...{
public abstract Token next() throws IOException;
public void close() throws IOException ...{}
}
一个Tokenizer,is-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 ...{
分享到:
相关推荐
Ingenuity Pathway Analysis是一款通路分析软件,包含网络分析,核心通路分析,上游调控因子分析,疾病及功能分析等。
中文情感分析_sentiment_analysis,python程序,包含中文酒店用户评论数据。
Wireshark 分析 RTP 丢包率 Wireshark 是一个功能强大且广泛应用的网络协议分析工具,能够帮助我们分析和解决网络中的问题。今天,我们将使用 Wireshark 分析 RTP 丢包率。 RTP(Real-time Transport Protocol)是...
脑电研究中ERP分析的工具包,很有使用价值
数学分析(Analysis III) 数学分析是数学的一个重要分支,它研究函数、极限、微积分、序列、级数等概念和理论。该领域的知识点非常广泛,本文将从给定的文件信息中提取相关知识点,详细说明标题、描述、标签和部分...
Nanoscope-Analysis是一款AFM数据离线分析软件,能够对AFM测试数据进行离线分析和处理。本文将对Nanoscope-Analysis软件的简易使用方法进行详细介绍。 一、安装和设置 首先,需要从ftp://202.38.246.199:2100/上的...
slow feature analysis 慢特征分析matlab源代码,参考文献:Wiskott, L. and Sejnowski, T.J. (2002), "Slow Feature Analysis:Unsupervised Learning of Invariances",
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 ...
sql-analysis慢sql分析组件设计源码:该项目基于Java开发,包含54个文件,主要使用Java语言。该设计源码是一款针对大促和日常系统稳定性隐患的慢sql分析和排查工具,基于Mybatis插件设计。它不同于基于慢sql日志分析...
这个数据集名为“Sentiment Analysis Dataset”,来源于Kaggle平台,主要用于情感分析领域的研究。这个数据集的特点是训练数据是通过自动化方式创建的,而不是人工标注推文的情感。具体方法是假设所有包含正面表情...
Autodesk Ecotect Analysis软件是一款功能全面,适用于从概念设计到详细设计环节的可持续设计分析工具,其中包含一系列基于桌面和web服务*平台的仿真和分析功能。该软件具有强大且基于web的整体建筑能效、水耗及碳...
Introduction to the Design and Analysis of Algorithms 算法分析与设计基础 官方答案 适用于本书第二版 不是有些复制,粘贴到word里的答案,包含题目tips和详细分析 仅限1-10章
主要包含4本WireShark相关数据分析数据: 1、Practical Packet Analysis, 2nd Edition.pdf 2、Wireshark 数据包分析实战%28第2版%29.pdf 3、Wireshark 数据包分析实战(第2...4、Wireshark数据抓包分析(网络协议篇).pdf
蓝牙 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平台的开源项目依赖项中的安全和许可证方面的内容。使用插件要使用此插件,需要为 2.1或更高版本添加以下脚本片段: plugins { id ...
swot数据分析模板,SWOT分析在EXCEL怎么展示出来,SWOT 分析法是什么?SWOT 分析法,也称态势分析法或道斯矩阵,分别包含:优势( Strength )、劣势( Weakness )、机会( Opportunity )、威胁( Threats )。优势...
这是一个elasticsearch的插件elasticsearch-analysis-ik-6.2.4的zip包,安装在elasticsearch的plugins下,重启elasticsearch就可以使用IK分析器了
Introduction To Numerical Analysis - Stoer 3rd ed,数值分析导论第三版,Stoer编著。包含误差分析、插值、线性方程求解、差分方程等
这个数据集是在大学时代收集的。数据集主要包含来自朋友和家人的数据。此数据集具有人们遵循的健身实践类型的调查数据。 fitness analysis.csv
timeseries-analysis, NPM软件包Timeseries分析,噪声去除,统计. . Timeseries分析一个可以链接的timeseries分析工具。转换你的数据,过滤它,平滑它,去除噪音,获取统计数据,获取数据的预览图表- - 。这个库是...