`
strayly
  • 浏览: 97998 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

作为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);

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

分享到:
评论

相关推荐

    java ceb转pdf demo

    可能的方法包括通过JNI(Java Native Interface)调用本地库,或者利用像JNA(Java Native Access)这样的库来与操作系统底层交互。 2. **c2p_dll 2.dll**:这是一个动态链接库文件,很可能是用来处理CEB到PDF转换...

    java实现office、wps转pdf,pdf转word

    在Java中,可以使用Apache POI库来处理Microsoft Office的文件(如Word、Excel和PowerPoint),而Kingsoft WPS也有相应的API接口供开发者使用。Apache POI提供了对Office文件的低级别访问,允许读取和写入文件内容。...

    Java中Excel转图片工具包(纯java)

    "Java中Excel转图片工具包(纯java)"就是这样一个解决方案,它实现了将Excel文件通过PDF中间格式转化为图片的功能。 首先,让我们了解一下这个工具包的工作原理。Excel文件本身并不直接支持转换为图片格式,但可以...

    java转js工具

    综上所述,"java转js工具"是一个重要的开发辅助工具,它帮助开发者在Java和JavaScript之间架起桥梁,使得跨平台开发变得更加便捷。然而,使用时需要注意语言特性的差异,以及转换过程中可能出现的问题和挑战。

    java 语音合成PCM转MP3

    在Java中,我们通常会利用TTS(Text To Speech)库来实现这一功能。PCM(Pulse Code Modulation)是数字音频的基本表示形式,它直接对模拟信号进行采样、量化和编码。MP3则是广泛使用的音频压缩格式,具有较高的压缩...

    JAVA语音转文字

    在你的项目中,你可以利用这些资源来构建一个高效的语音识别系统。以下是对"JAVA语音转文字"这一主题的详细解释。 1. **语音识别基础** 语音识别是将人类的语音信号转换为文本的过程,它是自然语言处理(NLP)的一...

    Java2Pas Java代码转pas代码

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

    使用java将office word pdf excel ppt文件转换成html文件

    Java作为一种强大的编程语言,提供了多种库和工具来帮助开发者实现这样的转换。本篇文章将深入探讨如何使用Java将Office Word、PDF、Excel和PPT文件转换为HTML文件。 首先,我们需要了解的是,Java中的文件转换通常...

    java list和xml互转例子

    这里,我们使用的库是dom4j-1.6.1.jar,这是一个强大的Java XML处理库。 首先,让我们详细了解一下List和XML。List是Java集合框架的一部分,它是一个有序的集合,可以存储多个元素,且允许有重复元素。XML...

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

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

    在java程序中实现wav文件转MP3

    LAME是一个高效的MP3编码器,广泛用于各种音频处理项目。 首先,你需要在你的项目中包含LAME库。在这个例子中,`lame.exe`是LAME的命令行工具,通常在Windows环境下使用。在Linux或Mac系统中,你需要对应的可执行...

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

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

    Java实现XML文档到word文档转换

    使用DOM4J库来解析XML文档,并从中提取节点属性。关键在于正确读取和设置字体格式参数,为后续内容的写入做好准备。下面是一个简单的解析示例代码片段: ```java public void readFromXML() { SAXReader reader = ...

    通过java将word文档转换成html页面

    Java作为一种广泛使用的编程语言,提供了多种库来实现这种转换。在你提到的场景中,我们使用了一个名为JACOB(Java COM Bridge)的库,它允许Java程序调用COM组件,如Microsoft Office,来进行文件格式转换。 JACOB...

    wvtool官方文档

    WVTool作为一个Java库,可以通过以下步骤集成到Java项目中: 1. **安装**:下载WVTool并将其添加到项目的类路径中。 2. **配置**:根据需求定义输入数据格式及参数配置。 3. **词向量生成**:调用API生成文档的词...

    python转java

    文件名 "p2j-master" 可能是指一个名为 "P2J"(Python to Java)的项目或者工具的主分支。这个工具可能包含了 Python 解析器、Java 代码生成器以及相关配置和示例。使用这样的工具,开发者可以尝试将 Python 代码...

    java讯飞语音转文字

    - 讯飞API返回的结果通常是JSON格式,Java可以使用Gson、Jackson或org.json库来解析这些数据,提取出识别的文字结果。 8. **异步调用与回调**: - 为了提高用户体验,可以使用异步方式调用API,当识别完成时通过...

    .net 与Java间RSA加密的转换

    由于两种平台使用不同的加密库和API,因此需要进行相应的转换工作。本话题将深入探讨如何在.NET与Java间进行RSA加密的转换,以及涉及到的相关类。 RSA是一种非对称加密算法,它基于两个密钥:公钥和私钥。公钥可以...

    java调用openssl生成证书

    首先,OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现工具包,它提供了多种功能,包括证书创建、加密解密、密钥管理等。在Java中调用OpenSSL,我们需要了解如何在Java程序中执行系统命令,这通常...

    java实现图片转pdf文件

    Java作为一个强大的后端开发语言,提供了多种库来实现这样的功能。在这个场景下,我们使用了名为iText的Java库,它是一个专门用于处理PDF文档的开源库。 首先,我们需要了解iText库的基本概念。iText是一个强大的...

Global site tag (gtag.js) - Google Analytics