首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行SEMAFOR语义解析器抛出IllegalArgumentException

运行SEMAFOR语义解析器抛出IllegalArgumentException
EN

Stack Overflow用户
提问于 2015-11-27 05:26:52
回答 1查看 440关注 0票数 0

对于我目前正在进行的一个项目,我需要使用FrameNet注释来注释句子。SEMAFOR语义解析器(https://github.com/Noahs-ARK/semafor)很好地实现了这一点。我按照git存储库中的描述安装和配置了这个工具。但是,如果我在cygwin终端上运行runSemafor.sh脚本,它会抛出和IllegalArgumentException,表明无法解析生成的pos.tagged文件。

以下是cygwin中的完整控制台输出(在windows上运行它):

代码语言:javascript
运行
复制
$ ./runSemafor.sh D:/XFrame/Libs/Semafor/semafor/temp/sample.txt  D:/XFrame/Libs/Semafor/semafor/temp/output 2

**********************************************************************
Tokenizing file: D:/XFrame/Libs/Semafor/semafor/temp/neu.txt

real    0m0.140s
user    0m0.015s
sys     0m0.108s
Finished tokenization.
**********************************************************************


**********************************************************************
Part-of-speech tagging tokenized data....
/cygdrive/d/XFrame/Libs/Semafor/semafor/scripts/jmx/cygdrive/d/XFrame/Libs/Semafor/semafor/bin
Read 11692 items from tagger.project/word.voc
Read 45 items from tagger.project/tag.voc
Read 42680 items from tagger.project/tagfeatures.contexts
Read 42680 contexts, 117558 numFeatures from tagger.project/tagfeatures.fmap
Read model tagger.project/model : numPredictions=45, numParams=117558
Read tagdict from tagger.project/tagdict
*This is MXPOST (Version 1.0)*
*Copyright (c) 1997 Adwait Ratnaparkhi*
Sentence: 0 Length: 9 Elapsed Time: 0.007 seconds.

real    0m0.762s
user    0m0.046s
sys     0m0.171s
/cygdrive/d/XFrame/Libs/Semafor/semafor/bin
Finished part-of-speech tagging tokenized data.
**********************************************************************
**********************************************************************
Converting postagged input to conll.
Exception in thread "main" java.lang.IllegalArgumentException:
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.SentenceCodec.decode(Sentence                                                                              Codec.java:83)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.SentenceCodec$SentenceIterato                                                                              r.computeNext(SentenceCodec.java:115)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.SentenceCodec$SentenceIterato                                                                              r.computeNext(SentenceCodec.java:100)
    at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractI                                                                              terator.java:143)
    at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.j                                                                              ava:138)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.ConvertFormat.convertStream(C                                                                              onvertFormat.java:94)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.ConvertFormat.main(ConvertFor                                                                              mat.java:76)
 Caused by: java.lang.IllegalArgumentException: PosToken must have 2 "_"-separate                                                                              d fields
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java                                                                              :92)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.Token.fromPosTagged(Token.jav                                                                              a:248)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.SentenceCodec$2.decodeToken(S                                                                              entenceCodec.java:28)
    at edu.cmu.cs.lti.ark.fn.data.prep.formats.SentenceCodec.decode(Sentence                                                                              Codec.java:79)
    ... 6 more

作为注释的示例文件,我使用存储库中的示例文件:

代码语言:javascript
运行
复制
This is a test for SEMAFOR, a frame-semantic parser.
This is just a dummy line.
There's a Santa Claus!

但是,生成的pos.tagged文件看起来没有错误。为什么会发生这种异常?

代码语言:javascript
运行
复制
This_DT is_VBZ a_DT test_NN for_IN SEMAFOR_NNP ,_, a_DT frame-semantic_JJ parser_NN ._. 
This_DT is_VBZ just_RB a_DT dummy_JJ line_NN ._. 
There_EX 's_VBZ a_DT Santa_NNP Claus_NNP !_. 
EN

回答 1

Stack Overflow用户

发布于 2016-10-27 09:37:54

我遇到了与您所说的完全相同的问题,并在不久前自己解决了它。这是因为解析器只接受每行一个句子的正确格式化的输入文件。

您需要做的是:在将每个句子写入文件时,在您的代码中添加以下行,以删除断行符或制表符。那么你应该可以走了!

代码语言:javascript
运行
复制
line = line.replace('\n', '')
line = line.replace('\t', '')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33947240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档