huaban / jieba-analysis

结巴分词(java版)
https://github.com/huaban/jieba-analysis
Apache License 2.0
2.55k stars 835 forks source link

Spark(部署在AWS上)无法导入自定义词典,用的是scala写的 #91

Open z-yin opened 5 years ago

z-yin commented 5 years ago

代码是这样的:

val filename = "s3://zhaoyin1/gamb.csv"
val path = Paths.get(filename)
WordDictionary.getInstance().loadUserDict(path)

但是在console我看到了user dict load failure,请问怎样才能正确读取?

catBigcat commented 5 years ago

你可以试试将文件格式修改为utf-8 无bom头编码格式。

z-yin commented 5 years ago

image dict文件已经是utf-8编码格式了

catBigcat commented 5 years ago

不好意思。没有细看你代码,path传入的是一个目录,并且,数据不是csv格式,并且,数据文件格式后缀是.dict

z-yin commented 5 years ago

直接传path的话会报错:

[error]  found   : String
[error]  required: java.nio.file.Path
[error]                 WordDictionary.getInstance().loadUserDict(filename)

代码是这样的:

val filename = "resources/dict/customized_words.dict"
WordDictionary.getInstance().loadUserDict(filename)
catBigcat commented 5 years ago

val filename = "resources/dict/" WordDictionary.getInstance().loadUserDict(filename)

catBigcat commented 5 years ago

应该可以行了吧

z-yin commented 5 years ago

直接放string还是不行,我用了这个代码:

val filename = "s3://zhaoyin1/dict/"
val path = Paths.get(filename)
WordDictionary.getInstance().loadUserDict(path)

这样子编译就通过了,本机也可以load dict(之前也可以的),但是我在AWS上试了一下还是不行,提示dict load failure 但是我看到多了个stdout: main dict load finished, time elapsed 1404 ms

catBigcat commented 5 years ago

没试过。实在不行,你去改源码吧。

donglianghan commented 4 years ago

这个是Path地址解析有问题, val url = this.getClass.getClassLoader.getResource("data").getPath 应该修改 wordDictionary.loadUserDict(path) image 改为 loadUserDict (file: String) 然后用 loadDict 的实现方式 下面的是没有问题的 image

zjiwen commented 3 years ago

你好,现在这个问题解决了吗?我也碰到了同样的问题,我本地做测试的时候加载本地的自定义词典没问题,可是把词典放到HDFS上就不行了。

williamPENG1 commented 3 years ago

这里要重写源码的方法了