小编Seb*_*ndt的帖子

自然语言处理中的二值化

二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例.

如果我们将句子"猫吃狗"二进制化,我们可以先为每个单词分配一个ID(例如cat-1,ate-2,the-3,dog-4),然后简单地将单词替换为它的ID给出了矢量<3,1,2,3,4>.

给定这些ID,我们还可以通过给每个字四个可能的槽创建二进制向量,并将对应于特定单词的槽设置为1,给出向量<0,0,1,0,1,0,0,0 ,0,1,0,0,0,0,0,1>.据我所知,后一种方法通常被称为词袋方法.

现在,对于我的问题,一般来说,描述自然语言处理的特征,特别是基于转换的依赖解析(使用Nivres算法)时,最好的二值化方法是什么?

在这种情况下,我们不希望编码整个句子,而是编码解析的当前状态,例如堆栈中的顶部单词和输入队列中的第一个单词.由于订单具有高度相关性,因此排除了词袋方法.

有了最好的,我指的是,使数据的最可理解的分类方法,而无需使用了不必要的内存.例如,如果只有2%的双子星实际存在,我不想要一个单词bigram使用4亿个特征来获得20000个独特单词.

由于答案也取决于特定的分类器,我最感兴趣的是最大熵模型(liblinear),支持向量机(libsvm)和感知器,但是也欢迎适用于其他模型的答案.

nlp classification machine-learning libsvm

11
推荐指数
1
解决办法
2314
查看次数

JDBC的性能问题

我目前面临的问题是,在我的Java应用程序中,特定的SQL查询需要大约30秒才能发出,而在SQL客户端(SQL Developer)中则需要<1秒.

在问题中,
JDBC中的Java查询慢而不是其他系统(TOAD),建议使用绑定到java变量的PreparedStatement可以使查询执行速度远远慢于SQL客户端(在这种情况下为TOAD)因为Oracle对使用哪些索引感到困惑.这可能是没有参数的PreparedStatement的问题吗?

否则可能是什么问题?

查询看起来像

select 
sum(col1),
sum(col2),
max(select ...)
from view_
where time_id = get_time_id(to_date('2010-10-10','yyyy-mm-dd'))
Run Code Online (Sandbox Code Playgroud)

其中view_是一个包含表和其他复杂视图聚合的复杂视图.查询作为PreparedStatement执行,但没有任何参数.我们是使用预准备语句还是仅使用普通语句似乎没有区别.

由于执行计划非常庞大,我不能在这里发布所有内容,但相关的差异似乎是:

UNION-ALL 
TABLE ACCESS FULL GVC_WH.PLAYER_FACT_DAILY TABLE 37 6717151 596,934.317 19940 240 7621178231 19502 
UNION-ALL 
TABLE ACCESS BY INDEX ROWID GVC_WH.PLAYER_FACT_DAILY TABLE 38 2657 236.120 2429 30 20544658 2428 
INDEX RANGE SCAN GVC_WH.PK_AGG_PLAYER INDEX (UNIQUE) 37 2657 16 1 638743 16 

第一个片段来自使用JDBC瘦客户端运行时的第二个片段,第二个片段来自在SQL Developer中运行时的片段.当使用JDBC瘦客户端作为语句(无论我是否使用预准备语句)运行时,它没有获取正确的索引.第一个时间差为30秒,第二个时间为0.5秒.

可能是因为使用函数get_time_id禁止在使用JDBC时使用索引,即使它不是列上的函数,即使它似乎在SQL Developer中工作?

oracle jdbc

9
推荐指数
1
解决办法
5519
查看次数

将对象从Java传递到Jython时保留Java类型

我想知道当你把它们放在Java ArrayList中时,是否有可能没有 jython automagicaly将java对象转换为python类型.

从jython-console复制的示例:

>>> b = java.lang.Boolean("True");
>>> type(b)
<type 'javainstance'>
>>> isinstance(b, java.lang.Boolean);
1
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好,但如果我把对象放在ArrayList中

>>> l = java.util.ArrayList();
>>> l.add(b)
1
>>> type(l.get(0))
<type 'int'>
Run Code Online (Sandbox Code Playgroud)

该对象被转换为类似python的布尔值(即int)和...

>>> isinstance(l.get(0), java.lang.Boolean)
0
Run Code Online (Sandbox Code Playgroud)

这意味着我再也看不到这曾经是java.lang.Boolean.

澄清

我想真正想要实现的是在将对象从Java传递到Python时摆脱从Java类型到Python类型的隐式转换.我将举一个澄清的例子.

一个Python模块:

import java

import IPythonModule

class PythonModule(IPythonModule):

    def method(self, data):
        print type(data);
Run Code Online (Sandbox Code Playgroud)

以及使用此模块的Java类:

import java.util.ArrayList;

import org.python.core.PyList;
import org.testng.annotations.*;

import static org.testng.AssertJUnit.*;

public class Test1 {

    IPythonModule m;

    @BeforeClass
    public void setUp() {
        JythonFactory jf = JythonFactory.getInstance();
        m = (IPythonModule) jf.getJythonObject(
                "IPythonModule", …
Run Code Online (Sandbox Code Playgroud)

python java jython

5
推荐指数
1
解决办法
2846
查看次数

JGroups吃着记忆

我目前的jgroups配置有问题,导致数千条消息卡在NAKACK.xmit_table中.实际上所有这些似乎最终都在xmit_table中,而几个小时后的另一个转储表明它们从未打算离开...

这是协议栈配置

UDP(bind_addr=xxx.xxx.xxx.114;
bind_interface=bond0;
ip_mcast=true;ip_ttl=64;
loopback=false;
mcast_addr=228.1.2.80;mcast_port=45589;
mcast_recv_buf_size=80000;
mcast_send_buf_size=150000;
ucast_recv_buf_size=80000;
ucast_send_buf_size=150000):
PING(num_initial_members=3;timeout=2000):
MERGE2(max_interval=20000;min_interval=10000):
FD_SOCK:
FD(max_tries=5;shun=true;timeout=10000):
VERIFY_SUSPECT(timeout=1500):
pbcast.NAKACK(discard_delivered_msgs=true;gc_lag=50;retransmit_timeout=600,1200,2400,4800;use_mcast_xmit=true):
pbcast.STABLE(desired_avg_gossip=20000;max_bytes=400000;stability_delay=1000):UNICAST(timeout=600,1200,2400):
FRAG(frag_size=8192):pbcast.GMS(join_timeout=5000;print_local_addr=true;shun=true):
pbcast.STATE_TRANSFER
Run Code Online (Sandbox Code Playgroud)

启动消息......

2010-03-01 23:40:05,358 INFO  [org.jboss.cache.TreeCache] viewAccepted(): [xxx.xxx.xxx.35:51723|17] [xxx.xxx.xxx.35:51723, xxx.xxx.xxx.36:53088, xxx.xxx.xxx.115:32781, xxx.xxx.xxx.114:32934]
2010-03-01 23:40:05,363 INFO  [org.jboss.cache.TreeCache] TreeCache local address is 10.35.191.114:32934
2010-03-01 23:40:05,393 INFO  [org.jboss.cache.TreeCache] received the state (size=32768 bytes)
2010-03-01 23:40:05,509 INFO  [org.jboss.cache.TreeCache] state was retrieved successfully (in 146 milliseconds)
Run Code Online (Sandbox Code Playgroud)

...表示到目前为止一切都很好.

设置为警告级别的日志并不表示除了某种情况之外出现了问题

2010-03-03 09:59:01,354 ERROR [org.jgroups.blocks.NotificationBus] exception=java.lang.IllegalArgumentException: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

我猜的是不相关的,因为早在没有内存记忆问题的情况下就已经看到了它.

我一直在挖掘其中一台机器的两个内存转储器以找到奇怪的东西,但到目前为止还没有.除了可能来自不同协议的一些统计数据

UDP有

num_bytes_sent 53617832
num_bytes_received 679220174
num_messages_sent 99524
num_messages_received 99522
Run Code Online (Sandbox Code Playgroud)

虽然NAKACK有...... …

jgroups

5
推荐指数
1
解决办法
2860
查看次数

Android ADT Eclipse插件,parseSDKContent失败

我刚刚建立了我的第一个Android开发环境

  • Eclipse 3.5
  • Mac OSX 10.5
  • 适用于x86 mac的Android SDK
  • ADT Eclipse插件0.9.6

我已经将$ PATH设置为我的SDK/tools目录(如果我只使用Eclipse,这应该无关紧要?)并启动Eclipse,但是当我尝试在Eclipse中设置SDK的路径时,我收到错误" parseSdkContent失败".抛出异常的堆栈跟踪是

java.lang.IllegalArgumentException: http://www.w3.org/2001/XMLSchema
at javax.xml.validation.SchemaFactory.newInstance(SchemaFactory.java:181)
at com.android.ide.eclipse.adt.internal.sdk.LayoutDevicesXsd.getValidator(Unknown Source)
at com.android.ide.eclipse.adt.internal.sdk.LayoutDeviceManager.parseLayoutDevices(Unknown Source)
at com.android.ide.eclipse.adt.internal.sdk.LayoutDeviceManager.loadDefaultLayoutDevices(Unknown Source)
at com.android.ide.eclipse.adt.internal.sdk.LayoutDeviceManager.loadDefaultAndUserDevices(Unknown Source)
at com.android.ide.eclipse.adt.internal.sdk.Sdk.<init>(Unknown Source)
at com.android.ide.eclipse.adt.internal.sdk.Sdk.loadSdk(Unknown Source)
at com.android.ide.eclipse.adt.AdtPlugin$13.run(Unknown Source)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Run Code Online (Sandbox Code Playgroud)

我无法看到我在设置过程中遗漏了任何内容,根据说明它应该基本上只是开箱即用.关于为什么会失败的任何想法?

eclipse android adt

5
推荐指数
3
解决办法
2万
查看次数

告诉Java不要将对象推入交换空间

是否有可能告诉JVM提示操作系统某个对象最好不会被推出交换空间?

java memory-management virtual-memory

3
推荐指数
1
解决办法
1081
查看次数