Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ch03的ngram_segment.py方法print(CoreBiGramTableDictionary.getBiFrequency("商品", "和"))返回频次不对 #1320

Closed
1 task done
panda2019-ai opened this issue Nov 8, 2019 · 3 comments

Comments

@panda2019-ai
Copy link

注意事项

请确认下列注意事项:

  • 我已仔细阅读下列文档,都没有找到答案:
  • 我已经通过Googleissue区检索功能搜索了我的问题,也没有找到答案。
  • 我明白开源社区是出于兴趣爱好聚集起来的自由社区,不承担任何责任或义务。我会礼貌发言,向每一个帮助我的人表示感谢。
  • 我在此括号内输入x打钩,代表上述事项确认完毕。

版本号

当前最新版本号是:hanlp-1.7.5
我使用的版本是:hanlp-1.7.5

我的问题

直接git clone到本地的pyhanlp,运行Ch03的ngram_segment.py,返回的1-gram频次为2,2-gram频次为0,Java版的输出是正确的,返回【商品】的词频:2,【商品@和】的频次:1

复现问题

未对代码做修改

步骤

  1. 直接在Pycharm中运行的ngram_segment.py

触发代码

   print(CoreDictionary.getTermFrequency("商品"))
   print(CoreBiGramTableDictionary.getBiFrequency("商品", "和"))

期望输出

期望输出1-gram频次为2,2-gram频次为1

实际输出

实际输出1-gram频次为2,2-gram频次为0

其他信息

微信截图_20191108212057
微信截图_20191108212350

@panda2019-ai
Copy link
Author

猜了一下,可能是编码的问题,看了一下,win下运行训练的时候输出的“my_cws_model.ngram.txt”的编码是GB2312的,把文件改成utf-8的编码,同时删除my_cws_model.ngram.txt.table.bin后,再运行代码得到正确结果了。

@panda2019-ai
Copy link
Author

我看在DictionaryMaker.java中保存模型时加了UTF-8参数
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(IOUtil.newOutputStream(path), "UTF-8"));
但是在NGramDictionaryMaker.java中保存模型时都没有加UTF-8参数
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(IOUtil.newOutputStream(path)));
希望作者可以加一个

@hankcs
Copy link
Owner

hankcs commented Nov 8, 2019

感谢反馈,如果之后还有类似问题,欢迎继续提出。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants