采用Stanford CoreNLP实现英文单词词形还原

最近有个小的任务,根据英文单词的过去分词或现在分词或复数形式获取词语的原形,本来我的思路是:对于不规则变化的词语,建立不规则词表,直接从词表中查询;对于规则的词形变化,自己写规则进行还原。后来发现有些变化涉及到单词的发音,如重读闭音节要双写最后一个单词再变化,这样逆推的话就不好处理,从网上查询获取单词音标也没有实现好的结果。于是从网上搜索资料发现了Stanford CoreNLP这个工具。此工具是基于Java开发的开源工具,可以在自己的项目中直接使用。下载地址是:http://nlp.stanford.edu/software/corenlp.shtml。现在后解压文件,将ejml-0.19-nogui.jar,joda-time.jar,jollyday.jar,stanford-corenlp-3.2.0.jar,stanford-corenlp-3.2.0-models.jar,xom.jar放于自己的项目下。代码片段为:

[java]  view plain  copy
  1. Properties props = new Properties();  
  2. props.put("annotators""tokenize,ssplit,pos, lemma");  
  3. StanfordCoreNLP pipeline = new StanfordCoreNLP(props);  
  4. Annotation document = new Annotation(txtWord);  
  5. pipeline.annotate(document);  
  6. List<CoreMap> sentences = document.get(SentencesAnnotation.class);  
  7. for(CoreMap sentence: sentences) {  
  8. for (CoreLabel token: sentence.get(TokensAnnotation.class)) {  
  9.      String word = token.get(TextAnnotation.class);  
  10.      String lema = token.get(LemmaAnnotation.class);  
  11.      logger.info(word+","+lema);  
  12.      originWord = lema;  
  13.      originFlag = true;  
  14.    }  
  15.  }  

其中 txtWord是待处理的文本,

[java]  view plain  copy
  1. props.put("annotators""tokenize,ssplit,pos, lemma");  

分别是分词、分句、词性标注和次元信息。

[java]  view plain  copy
  1. String word = token.get(TextAnnotation.class);  

获取单词信息

[java]  view plain  copy
  1. String lema = token.get(LemmaAnnotation.class);  

获取对应上面word的词元信息,即我所需要的词形还原后的单词。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值