HanLP icon indicating copy to clipboard operation
HanLP copied to clipboard

1.x

Open xiaoheizai opened this issue 4 years ago • 8 comments

增加流的读取方式

xiaoheizai avatar Oct 29 '20 08:10 xiaoheizai

感谢贡献。能谈一谈为什么需要InputStream吗?目前已经有了自定义IO的接口:

https://github.com/hankcs/HanLP/blob/6817646a344e77f27ae4649a3c222c91e061355b/src/main/java/com/hankcs/hanlp/corpus/io/ResourceIOAdapter.java#L19

hankcs avatar Oct 29 '20 15:10 hankcs

谢谢回复 场景是这样的: 我利用hanlp训练crf模型后,模型文件比较小,我就直接放在了jar包里; 读取jar包的资源文件时,用流的方式比较方便,无法直接定位到jar包里的资源文件的路径,因而无法用String的方式; 但是发现crf读取文件的模式只有String模式,无法利用流的读取方式,因而希望增加流的读取方式 万分感谢

xiaoheizai avatar Oct 30 '20 03:10 xiaoheizai

在这种情景下,你应该用IO适配器。

https://github.com/hankcs/HanLP/blob/1.x/src/main/java/com/hankcs/hanlp/HanLP.java#L212-L216

hankcs avatar Oct 30 '20 04:10 hankcs

毕竟Portable版的文件也是打包在jar里,HanLP已经有一套完善的自定义接口。

hankcs avatar Oct 30 '20 04:10 hankcs

请问我该怎么使用这个IO适配器来获取crf的bin模型呢? // 如何读取已经训练好的bin文件? CRFSegmenter segmenter = new CRFSegmenter(输入文件路径);

xiaoheizai avatar Oct 30 '20 05:10 xiaoheizai

https://github.com/hankcs/HanLP/blob/portable/src/main/java/com/hankcs/hanlp/HanLP.java#L217

hankcs avatar Oct 30 '20 05:10 hankcs

你好,我尝试了,还是有些问题 如果我没有理解错误,那么可以用如下方式读取 IIOAdapter IoAdapter = new ResourceIOAdapter(); InputStream is = IoAdapter.open("xxx.bin"); 然而接下来我该如何加载模型呢? CRFSegmenter并没有提供流的参数传入 我还是创建不了模型CRFSegmenter,请问利用IIOAdapter读取文件后,我该如何加载呢?是不是还有其他方式可以加载模型

xiaoheizai avatar Oct 30 '20 05:10 xiaoheizai

http://haoyuanliu.github.io/2020/07/03/Sprint-Boot-%E5%B7%A5%E7%A8%8B%E4%B8%ADHanLP%E9%85%8D%E7%BD%AE%E8%B7%AF%E5%BE%84BUG%E8%A7%A3%E5%86%B3/

hankcs avatar Oct 30 '20 15:10 hankcs