// Path: src/main/java/org/xm/xmnlp/corpus/document/word/CompoundWord.java
// public class CompoundWord implements IWord {
//     private static Logger logger = LogManager.getLogger();
//     /**
//      * 由这些词复合而来
//      */
//     public List<Word> innerList;
// 
//     public String label;
// 
//     @Override
//     public String getValue() {
//         StringBuilder sb = new StringBuilder();
//         for (Word word : innerList) {
//             sb.append(word.value);
//         }
//         return sb.toString();
//     }
// 
//     @Override
//     public String getLabel() {
//         return label;
//     }
// 
//     @Override
//     public void setLabel(String label) {
//         this.label = label;
//     }
// 
//     @Override
//     public void setValue(String value) {
//         innerList.clear();
//         innerList.add(new Word(value, label));
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder sb = new StringBuilder();
//         sb.append('[');
//         int i = 1;
//         for (Word word : innerList) {
//             sb.append(word.toString());
//             if (i != innerList.size()) {
//                 sb.append(' ');
//             }
//             ++i;
//         }
//         sb.append("]/");
//         sb.append(label);
//         return sb.toString();
//     }
// 
//     /**
//      * 转换为一个简单词
//      *
//      * @return
//      */
//     public Word toWord() {
//         return new Word(getValue(), getLabel());
//     }
// 
//     public CompoundWord(List<Word> innerList, String label) {
//         this.innerList = innerList;
//         this.label = label;
//     }
// 
//     public static CompoundWord create(String param) {
//         if (param == null) return null;
//         int cutIndex = param.lastIndexOf('/');
//         if (cutIndex <= 2 || cutIndex == param.length() - 1) return null;
//         String wordParam = param.substring(1, cutIndex - 1);
//         List<Word> wordList = new LinkedList<Word>();
//         for (String single : wordParam.split(" ")) {
//             if (single.length() == 0) continue;
//             Word word = Word.create(single);
//             if (word == null) {
//                 logger.warn("使用参数" + single + "构造单词时发生错误");
//                 return null;
//             }
//             wordList.add(word);
//         }
//         String labelParam = param.substring(cutIndex + 1);
//         return new CompoundWord(wordList, labelParam);
//     }
// }
// 
// Path: src/main/java/org/xm/xmnlp/corpus/document/word/IWord.java
// public interface IWord extends Serializable {
//     String getValue();
// 
//     String getLabel();
// 
//     void setLabel(String label);
// 
//     void setValue(String value);
// }
// 
// Path: src/main/java/org/xm/xmnlp/corpus/document/word/Word.java
// public class Word implements IWord {
//     private static Logger logger = LogManager.getLogger();
//     /**
//      * 单词的真实值，比如“程序”
//      */
//     public String value;
//     /**
//      * 单词的标签，比如“n”
//      */
//     public String label;
// 
//     @Override
//     public String toString() {
//         return value + '/' + label;
//     }
// 
//     public Word(String value, String label) {
//         this.value = value;
//         this.label = label;
//     }
// 
//     /**
//      * 通过参数构造一个单词
//      *
//      * @param param 比如 人民网/nz
//      * @return 一个单词
//      */
//     public static Word create(String param) {
//         if (param == null) return null;
//         int cutIndex = param.lastIndexOf('/');
//         if (cutIndex <= 0 || cutIndex == param.length() - 1) {
//             logger.warn("使用 " + param + "创建单个单词失败");
//             return null;
//         }
// 
//         return new Word(param.substring(0, cutIndex), param.substring(cutIndex + 1));
//     }
// 
//     @Override
//     public String getValue() {
//         return value;
//     }
// 
//     @Override
//     public String getLabel() {
//         return label;
//     }
// 
//     @Override
//     public void setLabel(String label) {
//         this.label = label;
//     }
// 
//     @Override
//     public void setValue(String value) {
//         this.value = value;
//     }
// }


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.xm.xmnlp.corpus.document.word.CompoundWord;
import org.xm.xmnlp.corpus.document.word.IWord;
import org.xm.xmnlp.corpus.document.word.Word;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
package org.xm.xmnlp.corpus.document;





/**
 * 文档
 */
public class Document implements Serializable {
    private static Logger logger = LogManager.getLogger();
    public List<Sentence> sentenceList;

    public Document(List<Sentence> sentenceList) {
        this.sentenceList = sentenceList;
    }

    public static Document create(String param) {
        Pattern pattern = Pattern.compile(".+?((。/w)|(！/w )|(？/w )|\\n|$)");
// Path: src/main/java/org/xm/xmnlp/corpus/document/word/CompoundWord.java
// public class CompoundWord implements IWord {
//     private static Logger logger = LogManager.getLogger();
//     /**
//      * 由这些词复合而来
//      */
//     public List<Word> innerList;
// 
//     public String label;
// 
//     @Override
//     public String getValue() {
//         StringBuilder sb = new StringBuilder();
//         for (Word word : innerList) {
//             sb.append(word.value);
//         }
//         return sb.toString();
//     }
// 
//     @Override
//     public String getLabel() {
//         return label;
//     }
// 
//     @Override
//     public void setLabel(String label) {
//         this.label = label;
//     }
// 
//     @Override
//     public void setValue(String value) {
//         innerList.clear();
//         innerList.add(new Word(value, label));
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder sb = new StringBuilder();
//         sb.append('[');
//         int i = 1;
//         for (Word word : innerList) {
//             sb.append(word.toString());
//             if (i != innerList.size()) {
//                 sb.append(' ');
//             }
//             ++i;
//         }
//         sb.append("]/");
//         sb.append(label);
//         return sb.toString();
//     }
// 
//     /**
//      * 转换为一个简单词
//      *
//      * @return
//      */
//     public Word toWord() {
//         return new Word(getValue(), getLabel());
//     }
// 
//     public CompoundWord(List<Word> innerList, String label) {
//         this.innerList = innerList;
//         this.label = label;
//     }
// 
//     public static CompoundWord create(String param) {
//         if (param == null) return null;
//         int cutIndex = param.lastIndexOf('/');
//         if (cutIndex <= 2 || cutIndex == param.length() - 1) return null;
//         String wordParam = param.substring(1, cutIndex - 1);
//         List<Word> wordList = new LinkedList<Word>();
//         for (String single : wordParam.split(" ")) {
//             if (single.length() == 0) continue;
//             Word word = Word.create(single);
//             if (word == null) {
//                 logger.warn("使用参数" + single + "构造单词时发生错误");
//                 return null;
//             }
//             wordList.add(word);
//         }
//         String labelParam = param.substring(cutIndex + 1);
//         return new CompoundWord(wordList, labelParam);
//     }
// }
// 
// Path: src/main/java/org/xm/xmnlp/corpus/document/word/IWord.java
// public interface IWord extends Serializable {
//     String getValue();
// 
//     String getLabel();
// 
//     void setLabel(String label);
// 
//     void setValue(String value);
// }
// 
// Path: src/main/java/org/xm/xmnlp/corpus/document/word/Word.java
// public class Word implements IWord {
//     private static Logger logger = LogManager.getLogger();
//     /**
//      * 单词的真实值，比如“程序”
//      */
//     public String value;
//     /**
//      * 单词的标签，比如“n”
//      */
//     public String label;
// 
//     @Override
//     public String toString() {
//         return value + '/' + label;
//     }
// 
//     public Word(String value, String label) {
//         this.value = value;
//         this.label = label;
//     }
// 
//     /**
//      * 通过参数构造一个单词
//      *
//      * @param param 比如 人民网/nz
//      * @return 一个单词
//      */
//     public static Word create(String param) {
//         if (param == null) return null;
//         int cutIndex = param.lastIndexOf('/');
//         if (cutIndex <= 0 || cutIndex == param.length() - 1) {
//             logger.warn("使用 " + param + "创建单个单词失败");
//             return null;
//         }
// 
//         return new Word(param.substring(0, cutIndex), param.substring(cutIndex + 1));
//     }
// 
//     @Override
//     public String getValue() {
//         return value;
//     }
// 
//     @Override
//     public String getLabel() {
//         return label;
//     }
// 
//     @Override
//     public void setLabel(String label) {
//         this.label = label;
//     }
// 
//     @Override
//     public void setValue(String value) {
//         this.value = value;
//     }
// }


// Path: src/main/java/org/xm/xmnlp/corpus/document/Document.java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.xm.xmnlp.corpus.document.word.CompoundWord;
import org.xm.xmnlp.corpus.document.word.IWord;
import org.xm.xmnlp.corpus.document.word.Word;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

package org.xm.xmnlp.corpus.document;





/**
 * 文档
 */
public class Document implements Serializable {
    private static Logger logger = LogManager.getLogger();
    public List<Sentence> sentenceList;

    public Document(List<Sentence> sentenceList) {
        this.sentenceList = sentenceList;
    }

    public static Document create(String param) {
        Pattern pattern = Pattern.compile(".+?((。/w)|(！/w )|(？/w )|\\n|$)");
        Matcher matcher = pattern.matcher(param);