// Path: src/main/java/io/aif/language/ner/noun/IProperNounSet.java
// @FunctionalInterface
// public interface IProperNounSet extends IFuzzySet<IWord> {
// 
//   public static IProperNounSet getDefault() {
//     return Type.TITLECASE_PROPER_NOUN_CALCULATOR.getInstance();
//   }
// 
//   public static enum Type {
// 
//     TITLECASE_PROPER_NOUN_CALCULATOR(new TitleCaseProperNounSet());
// 
//     private final IProperNounSet instance;
// 
//     private Type(final IProperNounSet instance) {
//       this.instance = instance;
//     }
// 
//     public IProperNounSet getInstance() {
//       return instance;
//     }
// 
//   }
// 
// }
// 
// Path: src/main/java/io/aif/language/ner/numeral/SimpleNumeralSet.java
// public class SimpleNumeralSet implements IFuzzySet<IWord> {
// 
//   @Override
//   public FuzzyBoolean contains(final IWord element) {
//     final long count = element.getAllTokens().stream().map(this::isNumeral).count();
//     return new FuzzyBoolean((double) count / (double) element.getAllTokens().size());
//   }
// 
//   private FuzzyBoolean isNumeral(final String token) {
//     final long count = token.chars()
//         .mapToObj(ch -> (char) ch)
//         .filter(Character::isDigit)
//         .count();
//     return new FuzzyBoolean((double) count / (double) token.length());
//   }
// 
// }
// 
// Path: src/main/java/io/aif/language/word/IWord.java
// public interface IWord {
// 
//   public String getRootToken();
// 
//   public Set<String> getAllTokens();
// 
//   public Long getCount();
// 
//   public int getTokenCount(String token);
// 
//   public static interface IWordPlaceholder {
// 
//     public IWord getWord();
// 
//     public String getToken();
// 
//   }
// 
// }


import io.aif.fuzzy.bool.FuzzyBoolean;
import io.aif.fuzzy.set.IFuzzySet;
import io.aif.language.ner.noun.IProperNounSet;
import io.aif.language.ner.numeral.SimpleNumeralSet;
import io.aif.language.word.IWord;
package io.aif.language.ner;


public enum Type {

  NOUN(IProperNounSet.getDefault()),
  NUMERAL(new SimpleNumeralSet());

// Path: src/main/java/io/aif/language/ner/noun/IProperNounSet.java
// @FunctionalInterface
// public interface IProperNounSet extends IFuzzySet<IWord> {
// 
//   public static IProperNounSet getDefault() {
//     return Type.TITLECASE_PROPER_NOUN_CALCULATOR.getInstance();
//   }
// 
//   public static enum Type {
// 
//     TITLECASE_PROPER_NOUN_CALCULATOR(new TitleCaseProperNounSet());
// 
//     private final IProperNounSet instance;
// 
//     private Type(final IProperNounSet instance) {
//       this.instance = instance;
//     }
// 
//     public IProperNounSet getInstance() {
//       return instance;
//     }
// 
//   }
// 
// }
// 
// Path: src/main/java/io/aif/language/ner/numeral/SimpleNumeralSet.java
// public class SimpleNumeralSet implements IFuzzySet<IWord> {
// 
//   @Override
//   public FuzzyBoolean contains(final IWord element) {
//     final long count = element.getAllTokens().stream().map(this::isNumeral).count();
//     return new FuzzyBoolean((double) count / (double) element.getAllTokens().size());
//   }
// 
//   private FuzzyBoolean isNumeral(final String token) {
//     final long count = token.chars()
//         .mapToObj(ch -> (char) ch)
//         .filter(Character::isDigit)
//         .count();
//     return new FuzzyBoolean((double) count / (double) token.length());
//   }
// 
// }
// 
// Path: src/main/java/io/aif/language/word/IWord.java
// public interface IWord {
// 
//   public String getRootToken();
// 
//   public Set<String> getAllTokens();
// 
//   public Long getCount();
// 
//   public int getTokenCount(String token);
// 
//   public static interface IWordPlaceholder {
// 
//     public IWord getWord();
// 
//     public String getToken();
// 
//   }
// 
// }


// Path: src/main/java/io/aif/language/ner/Type.java
import io.aif.fuzzy.bool.FuzzyBoolean;
import io.aif.fuzzy.set.IFuzzySet;
import io.aif.language.ner.noun.IProperNounSet;
import io.aif.language.ner.numeral.SimpleNumeralSet;
import io.aif.language.word.IWord;

package io.aif.language.ner;


public enum Type {

  NOUN(IProperNounSet.getDefault()),
  NUMERAL(new SimpleNumeralSet());

  private final IFuzzySet<IWord> set;