我是
靠谱客的博主
自由香水,最近开发中收集的这篇文章主要介绍
采用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放于自己的项目下。代码片段为:
- Properties props = new Properties();
- props.put("annotators", "tokenize,ssplit,pos, lemma");
- StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
- Annotation document = new Annotation(txtWord);
- pipeline.annotate(document);
- List<CoreMap> sentences = document.get(SentencesAnnotation.class);
- for(CoreMap sentence: sentences) {
- for (CoreLabel token: sentence.get(TokensAnnotation.class)) {
- String word = token.get(TextAnnotation.class);
- String lema = token.get(LemmaAnnotation.class);
- logger.info(word+","+lema);
- originWord = lema;
- originFlag = true;
- }
- }
其中 txtWord是待处理的文本,
- props.put("annotators", "tokenize,ssplit,pos, lemma");
分别是分词、分句、词性标注和次元信息。
- String word = token.get(TextAnnotation.class);
获取单词信息
- String lema = token.get(LemmaAnnotation.class);
获取对应上面word的词元信息,即我所需要的词形还原后的单词。
最后
以上就是自由香水为你收集整理的采用Stanford CoreNLP实现英文单词词形还原的全部内容,希望文章能够帮你解决采用Stanford CoreNLP实现英文单词词形还原所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复