docs: private Viterbi<PersonNode> getPersonNodeViterbi(Term[] terms) {
          Term first;
          PersonNatureAttr fPna;
          Term second;
          Term third;
          Term from;
          for (int i = 0; i < terms.length - 1; i++) {
              first = terms[i];
  
              if (first == null) {
                  continue;
              }
  
              fPna = getPersonNature(first);
              setNode(first, A);
  
              if (fPna.getY() > 0) {
                  setNode(first, Y);
              }
  
              if (!fPna.isActive()) {
                  continue;
              }
  
              second = first.to();
              if (second.getOffe() == terms.length || second.getName().length() > 2) { //说明到结尾了,或者后面长度不符合规则
                  continue;
              }
  
              third = second.to();
              from = first.from();
  
  
              //XD
              if (first.getName().length() == 2) {
                  setNode(from, K);
                  setNode(from, M);
                  setNode(first, X);
                  setNode(second, D);
                  setNode(third, M);
                  setNode(third, L);
                  continue;
              }
  
              setNode(from, K);
              setNode(from, M);
              setNode(first, B);
              setNode(third, M);
              setNode(third, L);
              //BZ
              if (second.getName().length() == 2) {
                  setNode(second, Z);
                  continue;
              } else {//BE
                  setNode(second, E);
              }
  
  
              if (third.getOffe() == terms.length || third.getName().length() > 1) { //说明到结尾了,或者后面长度不符合规则
                  continue;
              }
  
              //BCD
              setNode(first, B);
              setNode(second, C);
              setNode(third, D);
              setNode(third.to(), M);
              setNode(third.to(), L);
  
          }
          PersonNatureAttr begin = DATDictionary.person("BEGIN");
  
          nodes[0][6] = null;
          nodes[0][4] = new PersonNode(4, "B", -Math.log(begin.getK()));
          nodes[0][10] = new PersonNode(10, "B", -Math.log(begin.getA()));
  
          PersonNatureAttr end = DATDictionary.person("END");
          nodes[terms.length][5] = new PersonNode(5, "E", -Math.log(end.getL()));
          nodes[terms.length][6] = null;
          nodes[terms.length][10] = new PersonNode(10, "E", -Math.log(end.getA()));
  
          return new Viterbi<PersonNode>(nodes, new Values<PersonNode>() {
              @Override
              public int step(Node<PersonNode> node) {
                  return node.getObj().name.length();
              }
  
              @Override
              public double selfSscore(Node<PersonNode> node) {
                  return node.getObj().score;
              }
  
          });
      }