Search in sources :

Example 1 with Result

use of org.ansj.domain.Result in project ansj_seg by NLPchina.

the class DicLibraryTest method delete.

/**
	 * 删除关键词
	 */
@Test
public void delete() {
    insertTest();
    DicLibrary.delete(DicLibrary.DEFAULT, "增加新词");
    Result parse = DicAnalysis.parse("这是用户自定义词典增加新词的例子");
    System.out.println(parse);
    boolean flag = false;
    for (Term term : parse) {
        flag = flag || "增加新词".equals(term.getName());
    }
    Assert.assertFalse(flag);
}
Also used : Term(org.ansj.domain.Term) Result(org.ansj.domain.Result) Test(org.junit.Test)

Example 2 with Result

use of org.ansj.domain.Result in project ansj_seg by NLPchina.

the class FilterRecognitionTest method test.

@Test
public void test() {
    String str = "我的小鸡鸡丢了!";
    Result parse = ToAnalysis.parse(str);
    System.out.println(parse);
    StopRecognition fitler = new StopRecognition();
    fitler.insertStopNatures("uj");
    fitler.insertStopNatures("ul");
    fitler.insertStopNatures("null");
    fitler.insertStopWords("我");
    fitler.insertStopRegexes("小.*?");
    Result modifResult = parse.recognition(fitler);
    for (Term term : modifResult) {
        Assert.assertNotSame(term.getNatureStr(), "uj");
        Assert.assertNotSame(term.getNatureStr(), "ul");
        Assert.assertNotSame(term.getNatureStr(), "null");
        Assert.assertNotSame(term.getName(), "我");
        Assert.assertNotSame(term.getName(), "小鸡鸡");
    }
    System.out.println(modifResult);
}
Also used : Term(org.ansj.domain.Term) Result(org.ansj.domain.Result) Test(org.junit.Test)

Example 3 with Result

use of org.ansj.domain.Result in project ansj_seg by NLPchina.

the class NlpDemo method main.

public static void main(String[] args) throws IOException {
    List<String> value = new ArrayList<String>();
    // value.add("《屌丝男士》是搜狐视频自制节目《大鹏嘚吧嘚》除“大鹏剧场秀“之外的第二个衍生品牌,是独立于《大鹏嘚吧嘚》每周播出的迷你剧集,第一季于2012年10月10日首播,每周三更新.该片由赵本山第53位弟子,网络第一主持人大鹏(董成鹏)导演并主演,是一部向德国电视剧《屌丝女士》致敬的喜剧短片.大鹏在片中饰演现实生活中的各种男性,而大鹏的各位明星好友,也在片中有惊喜表演.第一季客串明星:柳岩,李响,刘心,何云伟,李菁,如花李健仁,李亚红,乔衫,修睿,赵铭,于莎莎,司马南,不加V,沈腾等");
    // value.add("二次元乳量大不一定是王道");
    value.add("洁面仪配合洁面深层清洁毛孔 清洁鼻孔面膜碎觉使劲挤才能出一点点皱纹 脸颊毛孔修复的看不见啦 草莓鼻历史遗留问题没辙 脸和脖子差不多颜色的皮肤才是健康的 长期使用安全健康的比同龄人显小五到十岁 28岁的妹子看看你们的鱼尾纹");
    // value.add("搜索日志是理解互联网用户信息的宝贵资源。本文基于搜索日志的特点,提出一种双层识别模型方法识别计算机领域查询串。第一层模型采用贝叶斯模型基于领域词库对查询串进行识别,可以达到较高的准确率,由于日志中查询串长度有限,信息量不足等特点导致一些查询串无法召回;针对如上情况我们提出补充信息维度,即在此基础上对其进行第二层模型训练,主要方法是依据查询串点击的URL信息进行可信度训练,依据查询串召回的URL信息进行行业可信度训练计算,以达到召回了更多计算机领域查询串的目的。实验结果表明,双层模型识别后结果不但在准确率上得到保障,并比第一层模型的召回率提高了20个百分点,达到了78%的召回率和96%的精准率。此方法迅速而准确的识别出计算机类别查询串,对其他领域查询识别及查询意图分类具有借鉴意义。");
    // value.add("贾瑞听了,魂不附体,只说:“好侄儿,只说没有见我,明日我重重的谢你。”贾蔷道:“你若谢我,放你不值什么,只不知你谢我多少?况且口说无凭,写一文契来。”贾瑞道:“这如何落纸呢?\"贾蔷道:“这也不妨,写一个赌钱输了外人帐目,借头家银若干两便罢。”贾瑞道:“这也容易.只是此时无纸笔。”贾蔷道:“这也容易。”说罢翻身出来,纸笔现成,拿来命贾瑞写.他两作好作歹,只写了五十两,然后画了押,贾蔷收起来.然后撕逻贾蓉.贾蓉先咬定牙不依,只说:“明日告诉族中的人评评理。”贾瑞急的至于叩头.贾蔷作好作歹的,也写了一张五十两欠契才罢.贾蔷又道:“如今要放你,我就担着不是.老太太那边的门早已关了,老爷正在厅上看南京的东西,那一条路定难过去,如今只好走后门.若这一走,倘或遇见了人,连我也完了.等我们先去哨探哨探,再来领你.这屋你还藏不得,少时就来堆东西.等我寻个地方。”说毕,拉着贾瑞,仍熄了灯,出至院外,摸着大台矶底下,说道:“这窝儿里好,你只蹲着,别哼一声,等我们来再动。”说毕,二人去了");
    // value.add("接了个小私活,帮一个初中高中连读的中学做一个学生日常考评系统,就是记录迟到、早退、违纪什么的一个系统,由班主任管理记录,还要有什么表扬榜的。对于报价不了解,不知道该报多少,大家说说看,多少合适?");
    // value.add("若雅虎关闭了,我就不访问网站了!");
    // 学习机器是有状态的
    long start = System.currentTimeMillis();
    // 此对象可以公用一个.随着语料的增多可以学习新的词语
    LearnTool learn = new LearnTool();
    // 关闭人名识别
    learn.isAsianName = true;
    // 关闭外国人名识别
    learn.isForeignName = true;
    for (String string : value) {
        Result parse = new NlpAnalysis().setLearnTool(learn).parseStr(string);
        System.out.println(parse);
    }
    System.out.println("这次训练已经学到了: " + learn.count + " 个词!");
    System.out.println(System.currentTimeMillis() - start);
    System.out.println(learn.getTopTree(100));
}
Also used : ArrayList(java.util.ArrayList) NlpAnalysis(org.ansj.splitWord.analysis.NlpAnalysis) LearnTool(org.ansj.dic.LearnTool) Result(org.ansj.domain.Result)

Example 4 with Result

use of org.ansj.domain.Result in project ansj_seg by NLPchina.

the class Test method main.

public static void main(String[] args) throws Exception {
    // 构造一个用户词典
    Forest forest = Library.makeForest("library/default.dic");
    forest = new Forest();
    // 增加新词,中间按照'\t'隔开
    DicLibrary.insert(DicLibrary.DEFAULT, "ansj中文分词", "userDefine", 1000);
    Result terms = ToAnalysis.parse("我觉得Ansj中文分词是一个不错的系统!我是王婆!");
    System.out.println("增加新词例子:" + terms);
    // 删除词语,只能删除.用户自定义的词典.
    DicLibrary.delete(DicLibrary.DEFAULT, "ansj中文分词");
    terms = ToAnalysis.parse("我觉得ansj中文分词是一个不错的系统!我是王婆!");
    System.out.println("删除用户自定义词典例子:" + terms);
    // 歧义词
    Value value = new Value("济南下车", "济南", "n", "下车", "v");
    System.out.println(ToAnalysis.parse("我经济南下车到广州.中国经济南下势头迅猛!"));
    AmbiguityLibrary.insert(AmbiguityLibrary.DEFAULT, value);
    System.out.println(ToAnalysis.parse("我经济南下车到广州.中国经济南下势头迅猛!"));
    // 多用户词典
    String str = "神探夏洛克这部电影作者.是一个dota迷";
    System.out.println(ToAnalysis.parse(str));
    // 两个词汇 神探夏洛克 douta迷
    Forest dic1 = new Forest();
    Library.insertWord(dic1, new Value("神探夏洛克", "define", "1000"));
    Forest dic2 = new Forest();
    Library.insertWord(dic2, new Value("dota迷", "define", "1000"));
    System.out.println(ToAnalysis.parse(str, dic1, dic2));
}
Also used : Value(org.nlpcn.commons.lang.tire.domain.Value) Forest(org.nlpcn.commons.lang.tire.domain.Forest) Result(org.ansj.domain.Result)

Example 5 with Result

use of org.ansj.domain.Result in project ansj_seg by NLPchina.

the class NatureRecognition method guessNature.

/**
	 * 通过规则 猜测词性
	 * 
	 * @param word
	 * @return
	 */
public static TermNatures guessNature(String word) {
    String nature = null;
    SmartForest<String[]> smartForest = SUFFIX_FOREST;
    int len = 0;
    for (int i = word.length() - 1; i >= 0; i--) {
        smartForest = smartForest.get(word.charAt(i));
        if (smartForest == null) {
            break;
        }
        len++;
        if (smartForest.getStatus() == 2) {
            nature = smartForest.getParam()[0];
        } else if (smartForest.getStatus() == 3) {
            nature = smartForest.getParam()[0];
            break;
        }
    }
    if ("nt".equals(nature) && (len > 1 || word.length() > 3)) {
        return TermNatures.NT;
    } else if ("ns".equals(nature)) {
        return TermNatures.NS;
    } else if (word.length() < 5) {
        Result parse = ToAnalysis.parse(word);
        for (Term term : parse.getTerms()) {
            if ("nr".equals(term.getNatureStr())) {
                return TermNatures.NR;
            }
        }
    } else if (ForeignPersonRecognition.isFName(word)) {
        return TermNatures.NRF;
    }
    return TermNatures.NW;
}
Also used : Term(org.ansj.domain.Term) Result(org.ansj.domain.Result)

Aggregations

Result (org.ansj.domain.Result)16 Term (org.ansj.domain.Term)8 Test (org.junit.Test)5 ArrayList (java.util.ArrayList)4 LearnTool (org.ansj.dic.LearnTool)1 TermNatures (org.ansj.domain.TermNatures)1 NatureRecognition (org.ansj.recognition.impl.NatureRecognition)1 SynonymsRecgnition (org.ansj.recognition.impl.SynonymsRecgnition)1 NlpAnalysis (org.ansj.splitWord.analysis.NlpAnalysis)1 Forest (org.nlpcn.commons.lang.tire.domain.Forest)1 Value (org.nlpcn.commons.lang.tire.domain.Value)1