// Path: apex/src/main/java/com/sixthsolution/apex/nlp/dict/Dictionary.java
// public class Dictionary extends HashMap<String, Tags> {
//     private static final Tags NONE_TAG;
// 
//     static {
//         NONE_TAG = new Tags();
//         NONE_TAG.add(new TagValue(Tag.NONE, "", Entity.NONE));
//     }
// 
//     public void addAll(String[] words, Tag tag, Object value, Entity entity) {
//         TagValue tagValue = new TagValue(tag, value, entity);
//         for (String word : words) {
//             update(word, tagValue);
//         }
//     }
// 
//     public void update(String word, TagValue tagValue) {
//         Tags posting = getOrEmpty(word);
//         posting.add(tagValue);
//         put(word, posting);
//     }
// 
//     public Tags getOrEmpty(String word) {
//         if (!containsKey(word)) {
//             return new Tags();
//         }
//         return get(word);
//     }
// 
//     public Tags getRelatedTags(String word, boolean caseInsensitive) {
//         if (caseInsensitive) {
//             return getTags(word.toLowerCase());
//         }
//         return getTags(word);
//     }
// 
//     private Tags getTags(String word) {
//         Tags tags = getOrEmpty(word);
//         if (!tags.isEmpty()) {
//             return tags;
//         }
//         return NONE_TAG;
//     }
//     
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/dict/DictionaryBuilder.java
// public class DictionaryBuilder {
// 
//     private Dictionary dictionary = new Dictionary();
// 
//     public Dictionary build() {
//         return dictionary;
//     }
// 
//     public TagEntryBuilder tag(Tag tag, Entity entity) {
//         return new TagEntryBuilder(dictionary, tag, entity);
//     }
// 
//     public static class TagEntryBuilder {
//         private final Dictionary dictionary;
//         private final Tag tag;
//         private final Entity entity;
// 
//         TagEntryBuilder(Dictionary dictionary, Tag tag, Entity entity) {
//             this.dictionary = dictionary;
//             this.tag = tag;
//             this.entity = entity;
//         }
// 
//         public TagEntryBuilder e(Object value, String... words) {
//             dictionary.addAll(words, tag, value, entity);
//             return this;
//         }
// 
//         public TagEntryBuilder e(String... words) {
//             dictionary.addAll(words, tag, "", entity);
//             return this;
//         }
//     }
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/event/SeekBy.java
// public enum SeekBy {
//     MIN, HOUR
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/dict/Tag.java
// public enum Tag {
//     NONE(97),
//     NUMBER(98),
//     PREPOSITION(99),
//     RELATIVE_PREPOSITION(100),
//     RELATIVE_SUFFIX(101),
//     //LOCATION
//     LOCATION_PREFIX(102),
//     LOCATION_SUFFIX(103),
//     LOCATION_NAME(137),
//     //TIME
//     TIME_PREFIX(104),                //e.g. at, in ,the
//     TIME_START_RANGE(105),       //e.g. from
//     TIME_RANGE(106),
//     TIME_RELATIVE_PREFIX(107),   //e.g. for
//     TIME_RELATIVE(108),              //e.g. morning
//     TIME_RELATIVE_INDICATOR(109),   //e.g. before,after
//     TIME_HOUR(110),                 //e.g. hour
//     TIME_MIN(111),                   //e.g. minutes
//     TIME_SEC(112),                   //e.g. seconds
//     TIME_MERIDIEM(113),            //e.g am, pm
//     TIME_SEPARATOR(114),             //e.g :, .
//     //DATE
//     DATE_PREPOSITION(115),
//     DATE_SEEKBY(116),
//     DATE_START_RANGE(117),
//     DATE_SUFFIX(118),
//     DATE_DURATION_SUFFIX(119),
//     DATE_SEPARATOR(120),
//     WEEK_DAY(121),
//     MONTH_NAME(122),
//     SEASON(123),
//     DATE_PREFIX(124),
//     //RECURRENCE
//     REC_WEEK_DAYS(125),
//     NAMED_DATE(126),
//     GLOBAL_PREPOSITION(127),
//     DATE_RECURRENCE(128),
//     DATE_RANGE(129),
//     DATE_FOREVER_KEY(130),
//     THE_PREFIX(131),
//     DATE_BAND(132),
//     YEAR_SEEK(133),
//     MONTH_SEEK(134),
//     WEEK_SEEK(135),
//     DAY_SEEK(136),
//     CURRENT(138);
// 
//     public int id;
// 
//     Tag(int id) {
//         this.id = id;
//     }
// 
//     @Override
//     public String toString() {
//         return String.valueOf((char) id);
//     }
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/ner/Entity.java
// public enum Entity {
//     TIME, DATE, LOCATION, NONE
// }


import com.sixthsolution.apex.nlp.dict.Dictionary;
import com.sixthsolution.apex.nlp.dict.DictionaryBuilder;
import com.sixthsolution.apex.nlp.event.SeekBy;
import static com.sixthsolution.apex.nlp.dict.Tag.*;
import static com.sixthsolution.apex.nlp.ner.Entity.*;
import static com.sixthsolution.apex.nlp.ner.Entity.LOCATION;
import static com.sixthsolution.apex.nlp.ner.Entity.NONE;
package com.sixthsolution.apex.nlp.persian;



/**
 * Created by rozhin on 7/26/2017.
 */
public final class PersianVocabulary {
    public static Dictionary build() {
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/dict/Dictionary.java
// public class Dictionary extends HashMap<String, Tags> {
//     private static final Tags NONE_TAG;
// 
//     static {
//         NONE_TAG = new Tags();
//         NONE_TAG.add(new TagValue(Tag.NONE, "", Entity.NONE));
//     }
// 
//     public void addAll(String[] words, Tag tag, Object value, Entity entity) {
//         TagValue tagValue = new TagValue(tag, value, entity);
//         for (String word : words) {
//             update(word, tagValue);
//         }
//     }
// 
//     public void update(String word, TagValue tagValue) {
//         Tags posting = getOrEmpty(word);
//         posting.add(tagValue);
//         put(word, posting);
//     }
// 
//     public Tags getOrEmpty(String word) {
//         if (!containsKey(word)) {
//             return new Tags();
//         }
//         return get(word);
//     }
// 
//     public Tags getRelatedTags(String word, boolean caseInsensitive) {
//         if (caseInsensitive) {
//             return getTags(word.toLowerCase());
//         }
//         return getTags(word);
//     }
// 
//     private Tags getTags(String word) {
//         Tags tags = getOrEmpty(word);
//         if (!tags.isEmpty()) {
//             return tags;
//         }
//         return NONE_TAG;
//     }
//     
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/dict/DictionaryBuilder.java
// public class DictionaryBuilder {
// 
//     private Dictionary dictionary = new Dictionary();
// 
//     public Dictionary build() {
//         return dictionary;
//     }
// 
//     public TagEntryBuilder tag(Tag tag, Entity entity) {
//         return new TagEntryBuilder(dictionary, tag, entity);
//     }
// 
//     public static class TagEntryBuilder {
//         private final Dictionary dictionary;
//         private final Tag tag;
//         private final Entity entity;
// 
//         TagEntryBuilder(Dictionary dictionary, Tag tag, Entity entity) {
//             this.dictionary = dictionary;
//             this.tag = tag;
//             this.entity = entity;
//         }
// 
//         public TagEntryBuilder e(Object value, String... words) {
//             dictionary.addAll(words, tag, value, entity);
//             return this;
//         }
// 
//         public TagEntryBuilder e(String... words) {
//             dictionary.addAll(words, tag, "", entity);
//             return this;
//         }
//     }
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/event/SeekBy.java
// public enum SeekBy {
//     MIN, HOUR
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/dict/Tag.java
// public enum Tag {
//     NONE(97),
//     NUMBER(98),
//     PREPOSITION(99),
//     RELATIVE_PREPOSITION(100),
//     RELATIVE_SUFFIX(101),
//     //LOCATION
//     LOCATION_PREFIX(102),
//     LOCATION_SUFFIX(103),
//     LOCATION_NAME(137),
//     //TIME
//     TIME_PREFIX(104),                //e.g. at, in ,the
//     TIME_START_RANGE(105),       //e.g. from
//     TIME_RANGE(106),
//     TIME_RELATIVE_PREFIX(107),   //e.g. for
//     TIME_RELATIVE(108),              //e.g. morning
//     TIME_RELATIVE_INDICATOR(109),   //e.g. before,after
//     TIME_HOUR(110),                 //e.g. hour
//     TIME_MIN(111),                   //e.g. minutes
//     TIME_SEC(112),                   //e.g. seconds
//     TIME_MERIDIEM(113),            //e.g am, pm
//     TIME_SEPARATOR(114),             //e.g :, .
//     //DATE
//     DATE_PREPOSITION(115),
//     DATE_SEEKBY(116),
//     DATE_START_RANGE(117),
//     DATE_SUFFIX(118),
//     DATE_DURATION_SUFFIX(119),
//     DATE_SEPARATOR(120),
//     WEEK_DAY(121),
//     MONTH_NAME(122),
//     SEASON(123),
//     DATE_PREFIX(124),
//     //RECURRENCE
//     REC_WEEK_DAYS(125),
//     NAMED_DATE(126),
//     GLOBAL_PREPOSITION(127),
//     DATE_RECURRENCE(128),
//     DATE_RANGE(129),
//     DATE_FOREVER_KEY(130),
//     THE_PREFIX(131),
//     DATE_BAND(132),
//     YEAR_SEEK(133),
//     MONTH_SEEK(134),
//     WEEK_SEEK(135),
//     DAY_SEEK(136),
//     CURRENT(138);
// 
//     public int id;
// 
//     Tag(int id) {
//         this.id = id;
//     }
// 
//     @Override
//     public String toString() {
//         return String.valueOf((char) id);
//     }
// }
// 
// Path: apex/src/main/java/com/sixthsolution/apex/nlp/ner/Entity.java
// public enum Entity {
//     TIME, DATE, LOCATION, NONE
// }


// Path: persian-nlp/src/main/java/com/sixthsolution/apex/nlp/persian/PersianVocabulary.java
import com.sixthsolution.apex.nlp.dict.Dictionary;
import com.sixthsolution.apex.nlp.dict.DictionaryBuilder;
import com.sixthsolution.apex.nlp.event.SeekBy;
import static com.sixthsolution.apex.nlp.dict.Tag.*;
import static com.sixthsolution.apex.nlp.ner.Entity.*;
import static com.sixthsolution.apex.nlp.ner.Entity.LOCATION;
import static com.sixthsolution.apex.nlp.ner.Entity.NONE;

package com.sixthsolution.apex.nlp.persian;



/**
 * Created by rozhin on 7/26/2017.
 */
public final class PersianVocabulary {
    public static Dictionary build() {
        DictionaryBuilder vb = new DictionaryBuilder();