`
strayly
  • 浏览: 97894 次
  • 性别: 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);

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

分享到:
评论

相关推荐

    wvtool官方文档

    除了作为Java库使用外,WVTool还可以与数据挖掘平台RapidMiner集成,实现更高级的数据处理和分析功能。 1. **安装**:安装RapidMiner插件以支持WVTool操作符。 2. **使用WVTool操作符**:利用RapidMiner提供的WVTool...

    文本矢量生成工具java

    每个文档对应一个向量,向量的每个维度对应一个词汇项,值则由该词汇项的TF-IDF值给出。这种表示方式使得我们可以用数学方法比较和操作文本,比如通过余弦相似度计算两个文档的相似度,或者作为机器学习模型的输入。...

    DeepSeek入门宝典:赋能开发者实战的高性能AI解决方案

    内容概要:本文档详细介绍了 DeepSeek 这一高效、经济的人工智能解决方案,旨在为企业端、产品端以及开发者提供深度技术支持。对于企业而言,DeepSeek 带来了显著的成本效益和生产效率提升;而对于具体的产品和服务,它增强了用户体验的质量。特别是针对开发者,文档深入浅出地讲解了如何利用 DeepSeek 实现自动化代码生成、改写等辅助开发功能,并且提供了具体的步骤指导以满足不同环境下的部署需求,包括直接通过官方API接入、本地私有化部署或借助云平台进行托管的方式。 适合人群:希望降低开发门槛,提高工作效率的软件工程师和技术团队。 使用场景及目标:开发者可以根据自身条件选择最适合自己的部署方案来整合 DeepSeek 技术,进而达到优化编码过程、减少人为错误的目的。 其他说明:文中还包括了许多实际操作的例子,如通过代码改写的实例来展示如何改进现有程序段落,还有详细的API使用指南帮助初学者快速上手DeepSeek。此外,还提供了大量外部参考资料链接以便进一步扩展知识和技能范围。

    lusted_3cd_01_0318.pdf

    lusted_3cd_01_0318

    开源AI工具下载——Cherry-Studio-1.0.1-MACOS arm64版

    Cherry Studio是一款支持多模型服务的 Windows/macOS GPT 客户端。通过与Ollama搭配,搭建个人本地AI大模型

    chromedriver-win64-136.0.7058.0.zip

    chromedriver-win64-136.0.7058.0.zip

    matlab程序代码项目案例:使用 Simulink 进行自适应 MPC 设计

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    mellitz_3cd_01_1116.pdf

    mellitz_3cd_01_1116

    基于MATLAB的牛顿迭代法实现

    基于MATLAB的牛顿迭代法实现

    steenman_01_0908.pdf

    steenman_01_0908

    [AB PLC例程源码][MMS_047737]System Time 64Bit Interpreted AOI.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    stone_3ck_01a_0518.pdf

    stone_3ck_01a_0518

    [AB PLC例程源码][MMS_041473]Input Time Stamping.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    lusted_3cd_01_1117.pdf

    lusted_3cd_01_1117

    2010-2023年 上市公司-管理层情感语调数据.zip

    管理层情感语调,或称为管理层语调,是一个在财务与会计领域中常用的概念,特别是在分析上市公司信息披露质量时。它主要指的是管理层在上市公司文字信息披露过程中,用词所体现出的情感倾向和可理解性。 本数据复刻了《财经研究》《中南财经政法大学学报》等顶级期刊的核心解释变量的做法。情感语调对企业未来盈余和未来绩效具有较强解释力、降低会计信息误定价、为分析师预测提供增量信息,而投资者也会对管理层情感语调做出积极反应。 情感语调1=(正面词汇数量-负面词汇数量)/词汇总量;数值越大,情感倾向越偏向正面积极。 情感语调2=(正面词汇数量-负面词汇数量)/(正面词汇数量+负面词汇数量);数值越大,情感倾向越偏向正面积极。 指标 证券代码、企业代码、年份、证券简称、行业代码、行业名称、正面词汇数量、负面词汇数量、词汇总量、句子数量、文字数量、情感语调1、情感语调2。

    mellitz_3cd_02_0318.pdf

    mellitz_3cd_02_0318

    moore_01_0909.pdf

    moore_01_0909

    lusted_3ck_02a_0119.pdf

    lusted_3ck_02a_0119

    pimpinella_3cd_01_0916.pdf

    pimpinella_3cd_01_0916

    [AB PLC例程源码][MMS_041392]Mill feed and Auxilary Control.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

Global site tag (gtag.js) - Google Analytics