为什么需要NLP
举个例子,日常生活中,我们总会碰到一些不知道怎么读的生僻字, 这时往往就会去搜索引擎搜索,比如“4 个又念什么”。我们发现,搜索结果一定是向你展示“ 4 个又组成的字”是怎样的,并一旁附上拼音及注释等,而不是“ 4 个又念什么”这几个孤零零的词或者其表面的匹配结果。
这其实就是NLP技术的一个体现了。通过这项技术,人们不必花费大量心力去学习和了解难懂的计算机语言,而是用自己最习惯的语言来使用计算机,并进一步了解这背后的意义。
NLP究竟能用来干什么
大快NLP模块是大快大数据一体化平台的一个组件,用户引用该组件可以有效进行自然语言的处理工作,如进行文章摘要,语义判别以及提高内容检索的精确度和有效性。
自然语言处理如今不仅作为人工智能核心课题来研究,而且也作为新一代计算机的核心课题来研究。从知识产业角度看,专家系统,数据库,知识库,计算机辅助设计系统(CAD)、计算机辅助教学系统(CAI)、计算机辅助决策系统,办公室自动化管理系统,智能机器人等,都需要用自然语言处理,具有篇章理解能力的自然语言理解系统可用于机器自动翻译、情报检索、自动标引、自动文摘、自动写故事小说等领域,都可以用我们的工具类DKNLPBase来处理。
标准分词
方法签名:List<Term> StandardTokenizer.segment(String txt);
返回:分词列表。
签名参数说明:txt:要分词的语句。
范例:下例验证一段话第5个分词是阿法狗。
public void testSegment() throws Exception
????{
????????String text = "商品和服务";
????????List<Term> termList = DKNLPBase.segment(text);
????????assertEquals("商品", termList.get(0).word);
???assertEquals("和", termList.get(1).word);
????????assertEquals("服务", termList.get(2).word);
????????text = "柯杰解说“李世石VS阿法狗第二局” 结局竟是这样";
????????termList = DKNLPBase.segment(text);
????????assertEquals("阿法狗", termList.get(5).word); // 能够识别"阿法狗"
}
关键词提取
方法签名:List<String> extractKeyword(String txt,int keySum);
返回:关键词列表.
签名参数说明:txt:要提取关键词的语句,keySum要提取关键词的数量
范例:给出一段话提取一个关键词是“程序员”。
public void testExtractKeyword() throws Exception
????{
????????String content = "程序员(英文Programmer)是从事程序开发、维护的专业人员。" +
???????????????"一般将程序员分为程序设计人员和程序编码人员," +
???????????????"但两者的界限并不非常清楚,特别是在中国。" +
???????????????"软件从业人员分为初级程序员、高级程序员、系统" +
???????????????"分析员和项目经理四大类。";
????????List<String> keyword = DKNLPBase.extractKeyword(content, 1);
????????assertEquals(1, keyword.size());
????????assertEquals("程序员", keyword.get(0));
????}
短语提取
方法签名:List<String> extractPhrase(String txt, int phSum);
返回:短语
签名参数说明:txt:要提取短语的语句,phSum短语数量
范例:给出一段文字,能代表文章的五个短语,第一个短语是算法工程师。
NLP在最近几年取得了很好的进展,但还有许多的难题需要去解决,所以大快在积极的尝试,不过也正是这样有挑战的问题,才能让更多有才华的人投身到大快来推动它的发展。
原文地址:http://blog.51cto.com/13636660/2091164