package org.algorithm.test;

import org.algorithm.core.RuleCheckMachine;
import org.algorithm.core.cnn.entity.Lemma;
import org.algorithm.core.cnn.entity.Triad;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: bijl
 * @Date: 2019/9/7 15:49
 * @Description:
 */
public class TestRuleCheckMachine {

    public static void main(String[] args) {
        List<Triad> triads = new ArrayList<>();

        Triad triad = null;
        Lemma l_1 = null;
        Lemma l_2 = null;

//        l_1 = new Lemma();
//        l_1.setPosition("3,4");
//        l_1.setText("剧烈");
//
//        l_2 = new Lemma();
//        l_2.setPosition("5,6");
//        l_2.setText("胸痛");
//
//        triad = new Triad();
//        triad.setL_1(l_1);
//        triad.setL_2(l_2);
//        triads.add(triad);
//
//        l_1 = new Lemma();
//        l_1.setPosition("7,8");
//        l_1.setText("头痛");
//        l_1.setProperty("部位");
//
//        l_2 = new Lemma();
//        l_2.setPosition("9,10");
//        l_2.setText("失眠");
//        l_1.setProperty("反义");
//
//        triad = new Triad();
//        triad.setL_1(l_1);
//        triad.setL_2(l_2);
//        triads.add(triad);
//
//        for (int i=0; i < 500; i++)
//            triads.add(triad);

//        String sentence = "肝脏外形饱满，包膜光整，肝实质回声增强细密，分布欠均匀，血管网显示欠清晰，未见明显占位，左右肝内胆管未见明显扩张";
//        l_1 = new Lemma();
//        l_1.setPosition("0,1");
//        l_1.setText("肝脏");
//        l_1.setProperty("部位");
//
//        l_2 = new Lemma();
//        l_2.setPosition("9,10");
//        l_2.setText("光整");
//        l_2.setProperty("属性值");
//
//        triad = new Triad();
//        triad.setL_1(l_1);
//        triad.setL_2(l_2);
//        triads.add(triad);

//        String sentence = "双卵巢大小正常，内各见十数个小卵泡回声，沿周边排列，大小约0.5-0.7cm";
//        l_1 = new Lemma();
//        l_1.setText("十");
//        l_1.setPosition("11,11");
//        l_1.setProperty("");
//
//        l_2 = new Lemma();
//        l_2.setText("排列");
//        l_2.setPosition("23,24");
//        l_2.setProperty("辅检其他");
//
//        triad = new Triad();
//        triad.setL_1(l_1);
//        triad.setL_2(l_2);
//        triads.add(triad);

//        String sentence = "粘液糊澄清，量少";
//        l_1 = new Lemma();
//        l_2 = new Lemma();
//
//        l_1.setText("澄清");
//        l_2.setText("量少");
//
//        l_1.setPosition("3,4");
//        l_2.setPosition("6,7");
//
//        l_1.setProperty("属性值");
//        l_2.setProperty("辅检其他");
//
//        triad = new Triad();
//        triad.setL_1(l_1);
//        triad.setL_2(l_2);
//        triads.add(triad);

        String sentence = "甲状腺右叶体积增大，左叶大小形态尚可，双侧叶可见多发结节，右叶较大一个位于下极大小约2.94*1.71m，呈蜂窝状，界清，形态规则，内回声欠均，另测得右叶中部一囊实性结节，大小约2.17*1.50cm，界清，形态规则，另测得右叶中部腹侧面一低回声结节，大小约0.41*0.38*0.40cm，界欠清，边缘略毛糙，内见强光点，未见明显血流信号，左叶较大一个位于中部近腹侧面，大小约0.73*0.53cm，呈蜂窝状，界清，形态规则，未见明显钙化，血供稍丰富，余甲状腺实质回声欠均";
        l_1 = new Lemma();
        l_2 = new Lemma();

        l_1.setText("增大");
        l_2.setText("形态");

        l_1.setPosition("7,8");
        l_2.setPosition("209,210");

        l_1.setProperty("属性值");
        l_2.setProperty("属性");

        triad = new Triad();
        triad.setL_1(l_1);
        triad.setL_2(l_2);
        triads.add(triad);

        for (int i=0; i < 500; i++)
            triads.add(triad);

        for (int i = 0; i < sentence.length() - 1; i++)
            System.out.print("" + i + sentence.substring(i, i + 1) + " ");

        System.out.println();
        System.out.println("size of triads " + triads.size());
        RuleCheckMachine ruleCheckMachine = new RuleCheckMachine();
        long startTime=System.currentTimeMillis();
        ruleCheckMachine.checkAndRemove(sentence, triads);
        long endTime=System.currentTimeMillis();

        System.out.println("当前程序耗时："+(endTime-startTime) +"ms");

        System.out.println("size of triads " + triads.size());
    }
}
