Scripts 学盟
标题:
记一次向 Linux 移植的悲催意外
[打印本页]
作者:
混混@普宁.中国
时间:
2011-9-29 00:44:15
标题:
记一次向 Linux 移植的悲催意外
问题的抛出
最近学习研究那个 ictclas4j 分词。学习研究,学习研究哈。。程序的运行测试一直正常,ictclas 分词效果也比较不错
当项目转移到 linux 上继续学习研究的时候
恐怖了
分词完全失灵!!!
任何语句,都被拆分为一个个的单字,比如:"我们都是好孩子" 被拆分为 "我", "们", "都", "是", "好", "孩", "子"
这哪是分词,分明是分字。
作者:
混混@普宁.中国
时间:
2011-9-29 00:45:59
第一反应
字符编码问题, 于是乎 搜索代码代码中所有类似于 stringObject.getBytes() 及 new String(bytes) 的代码。
一律显式指定 charset
改为 stringObject.getBytes("GBK") 和 new String(bytes, "GBK")
马上测试。。。。
OH YEAH! 效果满意
事情还远远没有结束。。。。。。。。。。。。。。。。。。。。。。。
为了排除万一,继续和 win 上的程序进行 对比测试
我的妈呀。。。。
分词结果不一致。。。。。
作者:
混混@普宁.中国
时间:
2011-9-29 00:55:01
还有什么问题呢?
冥思苦想下,记起,涉及到 字符集问题的都是 io 操作。。。
又一个于是乎,搜索一下,代码中的 InputStreamRead 和 InputStreamWriter
找到一处
new InputStreamReader( inputStreamObject )
修改为
new InputStreamReader( inputStreamObject, "GBK" );
这下还不被我找着。 哼哼
仍然,win/linux 对比测试
为嘛结果还不一致
作者:
混混@普宁.中国
时间:
2011-9-29 01:09:57
茫然鸟。。。
难道代码转到 linux 上会发生变化。。。。 这不太可能吧
但苦于无计可施,只好把 linux 上代码传回来,和原来 win 机器上代码进行文件比对。
包括词库,二进制比较,结构内容。。。。。完全一致
但怎就运行结果不一样呢。。。
难道有随机因素在里头。。。。不对啊,如果单独在 win , 或者单独在 linux ,无论运行多少次,结果都是统一的
仍然是苦于无计可施。虽然自己觉得滑稽,但还是搜索一下代码 "Math.random", "Random" 等字眼,无果.....
作者:
混混@普宁.中国
时间:
2011-9-29 01:28:14
意志力几乎磨灭,差点要放弃纠缠此问题
又是无计,又是不耐烦鸟,怀疑起 sun jre 来,哦,是 oracle jre , 肯定这鸟毛东东无法保证 java 程序在不同平台运行时的一致性
唉,就算是 jre 的问题,咱们也应该在程序里做兼容处理。。。。还是再纠缠纠缠吧
再于是乎,只好,不停断点,不停启动运行,不停查看调用堆栈。。。。
那错综复杂的程序流程啊。。。
那什么什么结点计算啊。。。
那什么什么概率计算啊。。。
那什么什么边长计算啊。。。
那什么什么平滑度计算啊。。。
那什么什么路径计算啊。。。
什么什么的。。。
经过什么什么小时后的来回,没有问题。。。
作者:
混混@普宁.中国
时间:
2011-9-29 01:38:38
最后再来一轮。。。其它非核心流程的调试
那是又是不停的断点,不停的运行,不停的查看,不停的写一些测试代码。。。
终于发现了。。。
在linux 跑时,在加载词典的时候,其中的一个词典加载失败
很低级啊。。。。,资源文件名大小写错误!
windows 不敏感
linux 敏感
作者:
混混@普宁.中国
时间:
2011-9-29 02:07:10
总结
1. 当我们的程序中涉及字符和byte序列,转换时
为提高可移植性,请显式指定 charset, 如 stringObj.getBytes("GBK"), new String(bytes, "GBK")....
2. 当程序不能以预期效果运行时,应该适时 throw 出 exception,至少要有所提示或者日志
原来的分词代码中,当词典加载错误时,程序中并没有抛出异常,也没有任何提示. 而是往后跳过此词典的使用。
像这种看起来 “高容错”的程序, 实际中却带来不小的麻烦。 像此次事件,平台一更换,词典加载错误,因为问题没有被抛出,不正常分词结果只会让人莫名其妙
作者:
momo
时间:
2011-9-30 15:14:10
看咱有才群主的文章就是精彩
作者:
那个谁
时间:
2011-10-11 07:43:05
写的精彩。。。语文谁教的啊。。。
作者:
混混@普宁.中国
时间:
2011-10-11 21:01:26
那个谁 发表于 2011-10-11 07:43
写的精彩。。。语文谁教的啊。。。
学盟培养出来的混混
欢迎光临 Scripts 学盟 (http://www.iscripts.org/)
Powered by Discuz! X2