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

调用依存语法分析接口CRFDependencyParser.compute(sentence);出现返回结果死循环情况 #730

Closed
1 task done
iwangkang opened this issue Jan 2, 2018 · 2 comments

Comments

@iwangkang
Copy link

iwangkang commented Jan 2, 2018

注意事项

请确认下列注意事项:

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

版本号

当前最新版本号是:1.5.2
我使用的版本是:hanlp-portable-1.5.2.jar

我的问题

调用依存语法分析接口CRFDependencyParser.compute(sentence);出现返回结果死循环情况
返回结果中id为5的CoNLLWord的head为6,id为6的CoNLLWord的head为5。

复现问题

没有修改源码直接调用CRFDependencyParser.compute(sentence)接口;

触发代码

    public void testCompute() throws Exception
    {
        String sentence = "男子从厦门游泳到金门";
        CoNLLSentence cs = CRFDependencyParser.compute(sentence);
        System.out.println(cs.word[4].HEAD.ID);
        System.out.println(cs.word[5].HEAD.ID);
    }

期望输出

0
5

实际输出

6
5
@hankcs
Copy link
Owner

hankcs commented Jan 3, 2018

感谢反馈,这是个老问题了:#650

  1. 线性链CRF做句法分析的理论基础非常薄弱,一阶CRF这个标注模型根本无法阻止环的产生。
  2. 这份实现也没有复现论文的结果,参考 http://www.hankcs.com/nlp/parsing/crf-sequence-annotation-chinese-dependency-parser-implementation-based-on-java.html
  3. 在理论和工程上更合理的parser是com.hankcs.hanlp.dependency.nnparser.NeuralNetworkDependencyParser

综上,我决定在下个版本废弃com.hankcs.hanlp.dependency.CRFDependencyParser这个模块。

@iwangkang
Copy link
Author

非常感谢给予回复。

hankcs added a commit that referenced this issue Jan 4, 2018
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