`

作为java的一个库来使用wvtool

阅读更多

该WVTool可作为一个独立的Java库或RapidMiner环境的一个插件来使用。在这里,我们将主要讨论WVTool作为一个java库来使用是如何实现的。

1.1 安装
作为Java库使用WVTool,首先从SourceForge上WVTool/ homepage1上下载wvtool包 ,解压缩档案,并把wvtool.jar文件和所有的jar文件放置到lib子目录中。

要使WVTool能应用起来,需要处理两种基本步骤:

1.         从给定的一组文本文件来创建一个词表(定义向量空间的维度);

2.         基于创建的词表创建向量空间。词表中包含的所有词条连同一些统计数字(例如,在有多少文件,词条)都被用来矢量化 。矢量化的词表中的词条用来决定向量空间的维度和权值。

以上两个步骤需要两个基本输入参数。首先,输入样本文件清单,告诉系统处理哪些文本文件;第二,配置对象,它告诉系统各个步骤所使用的处理方法。

1.2 定义Input
Input列表告诉WVTool哪些学习文本文件应该处理。列表中每项包含以下信息:

 

l         URI的文本资源。目前,这可以是本地文件/目录或网址

如果是本地目录文件,在此目录中的所有文件都被处理(包含子目录) 。作为WVTool的扩展,其他类型的URI也可以处理的很好,只要用户提供了一个方法来处理它们(见2.3 )

l         文本的语言类型(可选)

l         文件类型(可选)

文件类型分为文本文件(txt)、pdf文件(pdf)、网页文件(htm/html)和xml文件(xml)

l         解析文本的字符集比如UTF-8(可选)

l         对象位置序号(可选)

文本将被处理成为对象,如主题。这种信息通常是用于文本自动分类,但也可以用来作为和词条关联做他用。这个对象序号范围从0到M - 1 ,其中m是对象数目

 

在下面的例子中,Input列表通过调用addEntry创建了三个对象,三个对象是建立两个指向文件的本地文件系统和一个指向一个网页。

//创建三个对象,初始化Input列表

WVTFileInputList list = new WVTFileInputList(3);

//添加对象

list.addEntry( new WVTDocumentInfo("data/alt.atheism","txt",English,0));

list.addEntry( new WVTDocumentInfo("data/soc.religion.christian","txt",English,1));

list.addEntry( new WVTDocumentInfo(

"http://www-ai.cs.uni-dortmund.de","html",English,2));

每个入口都被定义为一个对象。

1.3 配置
WVTool作为一个模块化的设计方式,允许最大的灵活性和可扩展性。总的思路是,矢量和词表由固定的步骤顺序建立。对于每一步的矢量化过程中,用户可以通过Java来实现每个步骤。这个类可以是一个已经包含在这个工具里或一个自己创建一个新的类来替换。唯一的制约因素是,它必须引用已经定义好的相应接口来实现。下面,将详细说明这些步骤的Java实现:

l         TextLoader "

该TextLoader负责打开一个流的处理文件。目前,wvtool提供了一个加载器能够读取本地文件和网址。相应的类被称为UniversalLoader,应该可以满足大多数应用。

UniversalLoader –从本地文件或者url地址载入文本流(默认)

l         Decoder "

如果文字被编码/封包(例如,在HTML代码) ,它必须在矢量化前被解码为纯文本。目前,只有纯文本(没有解码必要)和XML / HTML全文基于标记语言(标签会被忽略)的支持。

SimpleTagIgnoringReader –从没有解码的文本中去除标签。

XMLInputFilter –解码文件并从中去除XML标签

TextInputFilter 读取纯文本文件.

PDFInputFilter –对PDF格式中的文本部分解压缩。

SelectingInputFilter –根据文件的扩展名自动匹配文件过滤器(默认)。

 

在这里特别指出:对于编码器,包括PDFInputFilter ,所有的Input列表资料都通过编码器进行编码,如果没有指定,系统将使用默认的编码器进行编码对文件进行解析。

请注意,目前的编码器不能自动决定的XML和HTML文件。

l         CodeMapper

在某些情况下,编码的内容需要映射成为另外一种编码。例如:人们可能要从法文文本删除所有的地方口音。在这一步。目前只有一个虚构的对象支持。

DummyCharConverter ,没有采取任何行动(默认) 。

l         Tokenizer "

Tokenizer用来对整个文档进行分词使之成为独立的单位。

Tokenization在整个任务过程中是最重要的。虽然矢量化往往只需要一个简单的启发就足够了。目前,只有一个tokenizer可以利用,它使用的Unicode是格式来决定是一个字符还是一个字母。所有非字母字符都被假定为分隔符,因此分词的结果只能包含字符。此外,有一个tokenizer 可以记录这个分词的特征。

SimpleTokenizer -基于字母和非字母分词(默认) 。

NGramTokenizer创建字符特征项。

l         WordFilter "

In this step, tokens that should not be considered for vectorization are filtered. These are usually tokens appearing very often (referred to as 搒topwords? Standard English and German stopword lists are included. You may also specify the stopwords using a file.

StopWordFilterFile -reads stopwords from a file.

StopWordsWrapper -a standard English stopword list (default).

StopWordsWrapperGerman -a standard German stopword list.

DummyWordFilter -does not filter anything.

CombinedWordFilter -combines two or more word filters in a disjunctive way.

在这个步骤中,不应被视为是对矢量过滤。这些通常是常常出现(称为停用词?标准英语和德语停用词名单也包括在内。您也可以指定停用词使用的文件。

StopWordFilterFile从档案读取停用词。

StopWordsWrapper ,一个标准的英文停用词列表(默认) 。

StopWordsWrapperGerman ,一个标准的德国停用词清单。

DummyWordFilter ,不过滤什么。

CombinedWordFilter ,在析取的方式上结合了两个或两个以上的词过滤器。

l         Stemmer/Reducer

一般的,这个通常是用来映射不同的文法格式。目前,该系统融合了几种不同的算法:stemmer

LovinsStemmerWrapper  lovings stemmer(默认)

PorterStemmerWrapper –porter stemmer

SnowballStemmerWrapper –snowball stemmer

ToLowerCaseConverter -转换中的所有字符的成为小写

DictionaryStemmer ,使用手动指定的字典字,减少了基础形式(见4.2.1的更多信息)

DummyStemmer ,没有采取任何行动

WordNetHypernymStemmer用途词一个词来取代其杂交pernym (见4.2.2的更多信息)

WordNetSynonymStemmer用途词一个词来取代的代表性元素的synset (见4.2.2的更多信息)

l         VectorCreation

在分词完成计数之后。向量空间就得被创建。有几种不同的方案来实现,他们是基于下面的计数方式:

fij:在J个文档中的i个词条的数量。

fdj:在j个文件中的整个词条数量

fti:在所有文档中i个词条至少出现一次

基于这些计算,目前4个对象可以实现:

1、  TFIDF;

2、  TermFrequency ;

3、  TermOccurrences;

4、  BinaryOccurrences 。

l         Output

输出步骤决定生成向量写入的目标。目前,只有通过文件支持。这一步必须设定因为没有默认情况下写的载体。

 

该WVTool可以通过指定其中的Java类用于某一特定的步骤。这项工作可以在一个静态的方式(每个文件相同的Java类是使用)或动态( Java类的选择取决于属性的文件,如语言或编码) 。以下两个例子说明这一进程。第一个例子设置Java类的产出一步一个静态方法。

FileWriter outFile = new FileWriter(wv.txt"); "

WordVectorWriter wvw = new WordVectorWriter(outFile, true);

config.setConfigurationRule(WVTConfiguration.STEP_OUTPUT,

new WVTConfigurationFact(wvw));

 

第二个例子选择算法产生动态的,根据语言文字的书面文件中:

final WVTStemmer dummyStemmer = new DummyStemmer();

final WVTStemmer porterStemmer = new PorterStemmerWrapper();

config.setConfigurationRule(WVTConfiguration.STEP_STEMMER, new WVTConfigurationRule() {

public Object getMatchingComponent(WVTDocumentInfo d) throws Exception {

if(d.getContentLanguage().equals(english"))

return porterStemmer;

 else

return dummyStemmer; } });

 

写你自己的对象(执行相应的接口)您可以使用自己的方法,而不是那些提供的工具。

1.4 Using Predefined Word Lists
在某些情况下,有必要准确界定向量空间的维度,WVTool不能缺少词条的计数和文件的。要做到这一点,通过下面的例子可以来描述如何通过创建词条列表(创造一个单词表,只有两个项目) :

List dimensions = new Vector();

dimensions.add(apple");

dimensions.add("pc"); "

wordList = wvt.createWordList(list, config, dimensions, false);

最后的参数决定是否附加条款中出现的文本应增加词表。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/steelbar/archive/2009/02/04/3861270.aspx

分享到:
评论

相关推荐

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...

    最新JAVA运行库,一个运行JAVA的环境

    这个最新的版本——"最新JAVA运行库"——确保了用户能够执行最新的Java应用程序,提供了一个稳定且安全的环境来运行这些程序。Java运行库包含了Java虚拟机(JVM)、Java类库以及其他必要的组件,使得开发者编写的一...

    JAVA WEB 题库管理系统

    总结来说,JAVA WEB题库管理系统通过JAVA技术实现服务器端功能,结合MySql数据库管理题目数据,提供丰富的题目编辑、答题和管理功能,是教育领域的一个实用工具。对于开发者来说,这样的系统设计既锻炼了JAVA WEB...

    Java项目开源源码,共111个

    * 使用selenium库来实现浏览器自动化操作。 Java项目应用场景 这些Java项目源码可以应用于多种场景,例如: * web爬虫:使用这些源码可以爬取指定网页的内容。 * 数据采集:使用这些源码可以采集指定网页的数据。...

    JNI--java调用不同平台的动态链接库,dll,so,完美,全教程

    我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦...使用 JNA ,不需要再编写适配用的 .dll/.so ,只需要在 Java 中编写一个接口和一些代码,作为 .dll/.so 的代理,就可以在 Java 程序中调用 dll/so 。

    企业知识库管理系统(java源码)

    综上所述,企业知识库管理系统是一个涵盖了Java编程、EJB、MVC架构、数据库管理、前端技术、API设计、权限控制、全文搜索和版本控制等多个方面的复杂项目。通过这些技术的整合,系统实现了高效、安全、易用的企业...

    ip查询库java版(含IP地址库)

    标题中的“ip查询库java版(含IP地址库)”指的是一个Java实现的IP查询库,它包含了一个IP地址数据库,可以用于根据输入的IP地址获取对应国家、地区和详细地址等信息。这样的库在Web应用、网络安全分析或者网络日志...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    GMSSL的java调用(JNI库和调用实例).zip

    1. **构建JNI库**:根据GMSSL的C/C++源码和API,创建一个动态链接库,包含对SM2、SM3和SM4的调用接口。 2. **编写Java头文件**:使用`javah`工具生成JNI接口的C/C++头文件,该文件定义了Java方法的C/C++实现。 3. **...

    全国计算机二级java题库

    考试内容: 一、 Java语言的特点和实现机制 二、 Java体系结构 1. JDK目录结构。 2. Java的API结构。 3. 开发环境设置。 4. Java程序结构。 三、 Java语言中面向对象的特性。 1. 面向对象编程的基本要领和特征。 2. ...

    Java实现ocr图片识别(PaddleOCR)飞桨

    在本项目中,我们将探讨如何利用Java集成PaddleOCR,一个由飞桨(PaddlePaddle)框架支持的开源OCR系统,来实现高效且精准的图像文字识别。 首先,PaddleOCR是百度公司推出的深度学习OCR工具,它具有轻量级、高精度...

    基于Java的RTSP服务源码

    Java中可以使用Java Media Framework (JMF) 或者 Xuggler等开源库来处理多媒体数据。JMF提供了对RTSP和RTP的API支持,而Xuggler则是一个强大的音视频处理库,可以方便地进行编码、解码以及流处理。 4. RTP/TCP与RTP...

    基于java开发环境的WebRTC 点对点视频通话系统

    总结来说,这个基于Java开发环境的WebRTC点对点视频通话系统是一个综合性的项目,涵盖了Java与WebRTC的集成、信令处理、媒体流管理等多个技术层面。开发者需要具备扎实的Java基础、良好的网络通信知识,以及对WebRTC...

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    在Java通过JNA调用DLL时,如果DLL函数需要一个回调函数作为参数,那么Java需要定义一个接口,该接口的方法将作为回调函数的实现,JNA会处理这个接口的调用转换。 4. **Spring Boot**:Spring Boot是基于Spring框架...

    曲线拟合计算(java实现)

    在Java中,可以使用Apache Commons Math库来进行曲线拟合。这个库提供了多种拟合方法,包括线性回归、多项式拟合、非线性最小二乘拟合等。用户需要提供数据点,选择合适的拟合模型,然后调用相应的函数来计算拟合...

    java实现聊天室功能(全部代码,有界面)

    Java 实现聊天室功能是通过使用 Java 语言和 Swing 库来创建一个多人聊天室系统。该系统支持群聊、公聊、私聊等功能,並支持刷新好友列表。 title: Java 实现聊天室功能(全部代码,有界面) description: 该项目...

    java生成一维码

    如果你不想使用外部库,也可以考虑Java Advanced Imaging (JAI) API,它是一个由Sun Microsystems开发的图像处理库。然而,JAI并不直接支持一维码的生成,通常需要配合其他库一起使用,例如Barbecue,一个基于Java的...

    Java开发技术大全(500个源代码).

    HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 示例描述:本章介绍开发Java的基础语法知识。 ...

    Java2Pas Java代码转pas代码

    总的来说,Java2Pas是一个方便的工具,能够帮助开发者跨越Java和Pascal之间的语言障碍,提高代码复用和学习新语言的效率。对于那些需要在项目中结合这两种语言或者进行技术迁移的团队来说,它无疑是一个有价值的资源...

    开源java神经网络组件Joone、Encog和Neuroph的简单使用

    最后,Neuroph是一个轻量级的Java神经网络库,设计用于快速原型开发和教育目的。Neuroph支持多种网络模型,包括MLP、Perceptron、Kohonen和Hopfield网络。解决XOR问题时,你可以创建一个两层的MLP网络,使用反向传播...

Global site tag (gtag.js) - Google Analytics