code: public CoNLLSentence parse(List<Term> termList, int beamWidth, int numOfThreads)
      {
          String[] words = new String[termList.size()];
          String[] tags = new String[termList.size()];
          int k = 0;
          for (Term term : termList)
          {
              words[k] = term.word;
              tags[k] = term.nature.toString();
              ++k;
          }
  
          Configuration bestParse;
          try
          {
              bestParse = parser.parse(words, tags, false, beamWidth, numOfThreads);
          }
          catch (Exception e)
          {
              throw new RuntimeException(e);
          }
          CoNLLWord[] wordArray = new CoNLLWord[termList.size()];
          for (int i = 0; i < words.length; i++)
          {
              wordArray[i] = new CoNLLWord(i + 1, words[i], tags[i]);
          }
          for (int i = 0; i < words.length; i++)
          {
              wordArray[i].DEPREL = parser.idWord(bestParse.state.getDependent(i + 1));
              int index = bestParse.state.getHead(i + 1) - 1;
              if (index < 0 || index >= wordArray.length)
              {
                  wordArray[i].HEAD = CoNLLWord.ROOT;
              }
              else
              {
                  wordArray[i].HEAD = wordArray[index];
              }
          }
          return new CoNLLSentence(wordArray);
      }
docs: 执行句法分析
  
  @param termList     分词结果
  @param beamWidth    柱搜索宽度
  @param numOfThreads 多线程数
  @return 句法树