ansj

nlp,英文全称Natural Language Processing,自然语言处理
有自然语言处理工程师,虽然没接触过想必很多程序员都听说过
自然语言:就是人的语言,自然语言处理就是分析人的语言的一门技术,
被广泛应用到人机交互领域,机器人,语言识别等等
在自然语言处理中必然要用到分词技术
前段时间在项目中用到了ansj分词器,以下作简单介绍:
1.官方地址
项目的github地址:https://github.com/NLPchina/ansj_seg
项目的文档地址:http://nlpchina.github.io/ansj_seg/
ansj的作者是孙健,一位自然语言处理,数据挖掘方面的大神,在此向这位开源作者表示感谢
这里补充一点:类Analysis还有子类DicAnalysis,所以文档中分词方式还有这一种
2.配置maven
在maven项目的pom中配置ansj的dependency:
<dependency>
<groupId>org.ansj</groupId>
<artifactId>ansj_seg</artifactId>
<version>5.1.1</version>
</dependency>
3.项目中的运用:
主要是自定义分词
贴代码:

public class TestCategoryDic {
public static void load() {
DicLibrary.insert(DicLibrary.DEFAULT, "熊猫","category", 1000);
DicLibrary.insert(DicLibrary.DEFAULT, "河马","category", 1000);
}
}
public class TestAnsjZdy {
public static void main(String[] args) {
String longStr = "小学生问:熊猫是猫科动物吗?老师说:不是猫科动物,这个问题比较复杂,下节课再说";
ansjLongStr(longStr);
}
public static void ansjLongStr(String longStr) {
TestCategoryDic.load();
Result matchResult = DicAnalysis.parse(longStr);
List<Term> matchList = matchResult.getTerms();
if (matchList == null || matchList.size() <= 0) {
return ;
}
for (Term term : matchList) {
String natureStr = term.getNatureStr();
String name = term.getName();
int offe = term.getOffe();
String realName = term.getRealName();
System.out.println("词性:"+natureStr+" "+"名称:"+name+" "+"offe:"+String.valueOf(offe)+" "+"realName:"+realName);
}
}
}

运行:
词性:n 名称:小学生 offe:0 realName:小学生
词性:v 名称:问 offe:3 realName:问
词性:null 名称:: offe:4 realName::
词性:category 名称:熊猫 offe:5 realName:熊猫
词性:v 名称:是 offe:7 realName:是
词性:n 名称:猫 offe:8 realName:猫
词性:n 名称:科 offe:9 realName:科
词性:n 名称:动物 offe:10 realName:动物
词性:y 名称:吗 offe:12 realName:吗
词性:null 名称:? offe:13 realName:?
词性:n 名称:老师 offe:14 realName:老师
词性:v 名称:说 offe:16 realName:说
词性:null 名称:: offe:17 realName::
词性:c 名称:不是 offe:18 realName:不是
词性:n 名称:猫 offe:20 realName:猫
词性:n 名称:科 offe:21 realName:科
词性:n 名称:动物 offe:22 realName:动物
词性:null 名称:, offe:24 realName:,
词性:r 名称:这个 offe:25 realName:这个
词性:n 名称:问题 offe:27 realName:问题
词性:d 名称:比较 offe:29 realName:比较
词性:a 名称:复杂 offe:31 realName:复杂
词性:null 名称:, offe:33 realName:,
词性:f 名称:下 offe:34 realName:下
词性:n 名称:节 offe:35 realName:节
词性:n 名称:课 offe:36 realName:课
词性:v 名称:再说 offe:37 realName:再说
offe:词在字符串中的位置索引
各个词性什么意思:可以在官方文档里查看
查看可以取出自定义词性的词:词性:category 名称:熊猫 offe:5 realName:熊猫
这样可以取出自定义的分词
需求:如果我们要看字符串中是不是同时含有多个不同的词,就可以自定义多个分词,获取词性natureStr
然后去匹配,可以用于敏感词过滤....

 

转载于:https://www.cnblogs.com/jaro/p/8696252.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值