code: public static List<EnumItem<NR>> roleObserve(List<Vertex> wordSegResult)
      {
          List<EnumItem<NR>> tagList = new LinkedList<EnumItem<NR>>();
          Iterator<Vertex> iterator = wordSegResult.iterator();
          iterator.next();
          tagList.add(new EnumItem<NR>(NR.A, NR.K)); //  始##始 A K
          while (iterator.hasNext())
          {
              Vertex vertex = iterator.next();
              EnumItem<NR> nrEnumItem = PersonDictionary.dictionary.get(vertex.realWord);
              if (nrEnumItem == null)
              {
                  Nature nature = vertex.guessNature();
                  if (nature == nr)
                  {
                      // 有些双名实际上可以构成更长的三名
                      if (vertex.getAttribute().totalFrequency <= 1000 && vertex.realWord.length() == 2)
                      {
                          nrEnumItem = new EnumItem<NR>();
                          nrEnumItem.labelMap.put(NR.X, 2); // 认为是三字人名前2个字=双字人名的可能性更高
                          nrEnumItem.labelMap.put(NR.G, 1);
                      }
                      else
                          nrEnumItem = new EnumItem<NR>(NR.A, PersonDictionary.transformMatrixDictionary.getTotalFrequency(NR.A));
                  }
                  else if (nature == nnt)
                  {
                      // 姓+职位
                      nrEnumItem = new EnumItem<NR>(NR.G, NR.K);
                  }
                  else
                  {
                      nrEnumItem = new EnumItem<NR>(NR.A, PersonDictionary.transformMatrixDictionary.getTotalFrequency(NR.A));
                  }
              }
              tagList.add(nrEnumItem);
          }
          return tagList;
      }
docs: 角色观察(从模型中加载所有词语对应的所有角色,允许进行一些规则补充)
  @param wordSegResult 粗分结果
  @return