Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java空指针中的锤子NaiveBayes分类器

Java空指针中的锤子NaiveBayes分类器
EN

Stack Overflow用户
提问于 2019-07-30 16:14:16
回答 1查看 25关注 0票数 1

我正在尝试实例化一个朴素贝叶斯分类器来对文本块进行分类(使用预定义的分类)。下面的例子只是尝试对男性/女性执行此操作。我已经尝试从文件(CSVloader)加载数据,并在下面创建实例。问题是trainer.train()方法抛出了一个空指针异常。这似乎是因为targetDictionary为空。数据字典已填充。如何在实例上强制填充targetDictionary?

我的实际目标是将数据库中的论文摘要分类为“科学、政治、法律、健康等”。看起来贝叶斯分类器是正确的选择。

我迭代了加载的instanceList,它似乎被正确填充了,dataDictionary也被填充了,但是TargetDictionary是空的。

在windows上使用Mallet 2.0.8

代码语言:javascript
运行
AI代码解释
复制
public TestMallet() throws IOException {

ArrayList<Pipe> pipelist = new ArrayList<Pipe>();

    pipelist.add (new CharSequenceLowercase() ) ;
    pipelist.add (new CharSequence2TokenSequence(Pattern.compile("\\p{L}[\\p{L}\\p{P}]+\\p{L}")) ) ;

    pipelist.add (new TokenSequenceRemoveStopwords (new File ("c:\\test\\config\\stopwords_en.txt"), "UTF-8", false, false, false) ) ;
    pipelist.add (new TokenSequence2FeatureSequence()) ;
    pipelist.add (new FeatureSequence2FeatureVector()) ; // Added but doesnt make any difference

    InstanceList instances = new InstanceList (new SerialPipes(pipelist)) ;

    Instance instance0 = new Instance("Hello World I am here and i am male my name is roger",   "Male",   "roger", "test") ;
    Instance instance1 = new Instance("Hello World I am here and i am male my name is phil",    "Male",   "phil",  "test") ;
    Instance instance2 = new Instance("Hello World I am here and i am male my name is joe",     "Male",   "joe",   "test") ;
    Instance instance3 = new Instance("Hello World I am here and i am female my name is vira",  "Female", "vira",  "test") ;
    Instance instance4 = new Instance("Hello World I am here and i am female my name is josie", "Female", "josie", "test") ;

    instances.addThruPipe (instance0) ;
    instances.addThruPipe (instance1) ;
    instances.addThruPipe (instance2) ;
    instances.addThruPipe (instance3) ;
    instances.addThruPipe (instance4) ;

    // Using Instance List to train
    // ----------------------------

    ClassifierTrainer trainer = new NaiveBayesTrainer();
    trainer.train(instances); 

// Null pointer exception here ( debugging, it looks like TargetDictionary is null) 

}

期望培训师能正确分析。

EN

回答 1

Stack Overflow用户

发布于 2019-07-31 15:30:14

分类器学习根据输入特征预测输出。在这两种情况下,我们通常都需要将字符串转换为数字表示形式。您将告诉Mallet如何对输入特性执行此转换,而不是告诉输出标签。

添加一个Target2Label()管道应该可以做到这一点,参见the Csv2Vectors class获取示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57275934

复制
相关文章
为什么我在 Linux 上使用 exa 而不是 ls?
我们生活在一个繁忙的世界里,当我们需要查找文件和数据时,使用 ls 命令可以节省时间和精力。但如果不经过大量调整,默认的 ls 输出并不十分舒心。当有一个 exa 替代方案时,为什么要花时间眯着眼睛看黑白文字呢?
用户1880875
2021/09/06
2K0
为什么 wait/notify/notifyAll 在 Object 类定义而不是 Thread 类?
作者:Yujiaao 来源:segmentfault.com/a/1190000019962661
Java技术栈
2020/06/16
1.5K0
如何使用 Vue 命名插槽创建多个模板插槽?
这是最基本的示例,如果我们不提供父级的任何slot 内容,则我们将<slot>放在其中的任何内容都会作为后备内容。
前端小智@大迁世界
2022/06/15
2.8K0
如何使用 Vue 命名插槽创建多个模板插槽?
为什么 useState 返回的是 array 而不是 object?
这里可以看到 useState 返回的是一个数组,那么为什么是返回数组而不是返回对象呢?我们在自定义 hook 时应该返回什么类型呢?
小鑫
2022/04/26
2.3K0
为什么 build 方法放在 State 中而不是在 StatefulWidget 中
为什么 build 方法放在 State 中而不是在 StatefulWidget 中呢?其中前2点是源代码的注释中给出的原因,最后一点是我的一点个人理解。
老孟Flutter
2021/01/28
9470
如何优雅的在SpringBoot中编写选择分支,而不是大量if else?
部门编号通常由公司或组织的管理人员根据实际情况进行规划和安排,各个部门的编号应当具有独立性、唯一性和易于记忆等特点,以方便在日常管理活动中使用。
Designer 小郑
2023/08/01
2750
如何优雅的在SpringBoot中编写选择分支,而不是大量if else?
和智能机器一起工作,而不是惧怕它们
如果我们想利用科技,就必须直面恐惧。 ——加里·卡斯帕罗夫 卡斯帕罗夫 生于1963年 前苏联、俄罗斯国际象棋棋手 22岁成为世界上最年轻的国际象棋冠军 接下来的职业生涯里 他获得了一连串冠军头衔 直到2005年退役 但是 幸运也是不幸 让他真正“家喻户晓”的 是历史课本里 1997年5月11日 他作为人类的代表 与IBM计算机“深蓝”的一次对弈 那一次 人类输了 此后的20年 人类好像一直在输 到了2017年 IBM已经有了能赢取智力竞赛节目的Watson 而距离谷歌用AlphaGo震惊世界 也已
企鹅号小编
2018/01/16
7300
和智能机器一起工作,而不是惧怕它们
「译文」常见的SLO陷阱以及如何避免它们
如今,在线服务需要接近 100% 的正常运行时间。这种需求使 DevOps 团队越来越需要维护关键业务应用程序的性能和可靠性。构建服务水平目标 (SLO)以及服务水平协议和服务水平指标,是团队评估和衡量错误预算范围内的软件性能的好方法。但是存在SLO陷阱。因此,在创建SLO时,避免这些常见错误非常重要,这些错误可能会给您的DevOps团队带来更多麻烦。
东风微鸣
2022/12/01
6730
在应用开发中,我为什么选择 Flutter 而不是 React Native ?
作为一位开发人员,我想在本文中与大家聊聊跨平台开发领域的两大核心选项——Flutter 与 React Native 框架,并介绍我自己为什么更偏爱 Flutter。
逆锋起笔
2021/01/28
3.4K0
vue2.0 插槽不是响应性的
项目中自定了组件 widget,作为容器,其中 header 部分做了预置插槽 slot,用于信息的展示;在实际使用过程中,header 内容需要根据不同条件展示不同信息。至此,问题出现了~~~
奋飛
2023/01/13
8140
vue2.0 插槽不是响应性的
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
链表和数组相比,数组可以通过下标快速定位,或者通过二分查找,查询复杂度为O(logn),而链表只能按照顺序挨个查找,复杂度为O(n)。
大忽悠爱学习
2023/03/23
2.4K0
innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree
如何丝滑的在React中使用插槽
每个组件交互逻辑是一样的,但是由于用途不一样,每个组件的样式和内容区别较大,比如普通弹窗只需要放置一个关闭按钮,但是用于选择时间的弹窗除了需要确定和关闭按钮,还需要清空按钮。
Jou
2023/05/31
2.3K0
如何丝滑的在React中使用插槽
创建型-Prototype
如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式,来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式,简称原型模式。
acc8226
2022/05/17
3100
为什么我们的机器学习平台支持Python,而不是R
有很多文章比较了Python和R在数据科学方面的相对优点。但是这并不在这篇文章的讨论范围。这篇文章是关于数据分析师和机器学习工程师的分歧,以及他们对编程语言的不同需求。
HuangWeiAI
2020/03/18
6980
为什么我们的机器学习平台支持Python,而不是R
为什么建议你用nullptr而不是NULL?
在C语言中,我们常常用NULL作为指针变量的初始值,而在C++中,却不建议你这么做。
编程珠玑
2019/08/28
9.6K0
为什么建议使用你 LocalDateTime ,而不是 Date?
多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat对象 => 创建和销毁对象的开销大 - 对使用format和parse方法的地方进行加锁 => 线程阻塞性能差 - 使用ThreadLocal保证每个线程最多只创建一次SimpleDateFormat对象 => 较好的方法
芋道源码
2019/10/23
1.6K0
为什么使用OPA而不是原生的Pod安全策略?
https://www.magalix.com/blog/enforce-pod-security-policies-in-kubernetes-using-opa
CNCF
2020/09/04
1.2K0
为什么特征工程要用 SQL 而不是 Python
我们常说机器学习是一门实验科学。所以相比较传统工程而言,机器学习分成两个大的阶段:
用户2936994
2022/05/18
8350
为什么特征工程要用 SQL 而不是 Python
JDBC为什么要使用PreparedStatement而不是Statement
前言 这篇博客不是我写的,是由刘志军大大翻译的,真心觉得很棒,而且是必学要掌握的东西,所以就转载过来了,我个人的第一篇转载文章。 开始 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时Prepar
roobtyan
2018/06/04
1.4K0
JDBC为什么要使用PreparedStatement而不是Statement
PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。下面是一个例子:
哲洛不闹
2018/09/19
9580
JDBC为什么要使用PreparedStatement而不是Statement

相似问题

haskell如何管理递归函数调用的内存?

13

Haskell递归和内存使用

31

Haskell向构造函数添加约束

12

在模板Haskell中定义递归函数

18

Haskell:递归定义函数值的有效计算

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文