| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.IO.Compression;
 
- using NLangDetect.Core.Utils;
 
- using MediaBrowser.Model.Serialization;
 
- using System.Linq;
 
- namespace NLangDetect.Core
 
- {
 
-     public class DetectorFactory
 
-     {
 
-         public Dictionary<string, ProbVector> WordLangProbMap;
 
-         public List<string> Langlist;
 
-         private static readonly DetectorFactory _instance = new DetectorFactory();
 
-         #region Constructor(s)
 
-         private DetectorFactory()
 
-         {
 
-             WordLangProbMap = new Dictionary<string, ProbVector>();
 
-             Langlist = new List<string>();
 
-         }
 
-         #endregion
 
-         #region Public methods
 
-         public static void LoadProfiles(IJsonSerializer json)
 
-         {
 
-             var assembly = typeof(DetectorFactory).Assembly;
 
-             var names = assembly.GetManifestResourceNames()
 
-                       .Where(i => i.IndexOf("NLangDetect.Profiles", StringComparison.Ordinal) != -1)
 
-                       .ToList();
 
-             var index = 0;
 
-             foreach (var name in names)
 
-             {
 
-                 using (var stream = assembly.GetManifestResourceStream(name))
 
-                 {
 
-                     var langProfile = (LangProfile)json.DeserializeFromStream(stream, typeof(LangProfile));
 
-                     AddProfile(langProfile, index);
 
-                 }
 
-                 index++;
 
-             }
 
-         }
 
-         public static Detector Create()
 
-         {
 
-             return CreateDetector();
 
-         }
 
-         public static Detector Create(double alpha)
 
-         {
 
-             Detector detector = CreateDetector();
 
-             detector.SetAlpha(alpha);
 
-             return detector;
 
-         }
 
-         public static void SetSeed(int? seed)
 
-         {
 
-             _instance.Seed = seed;
 
-         }
 
-         #endregion
 
-         #region Internal methods
 
-         internal static void AddProfile(LangProfile profile, int index)
 
-         {
 
-             var lang = profile.name;
 
-             if (_instance.Langlist.Contains(lang))
 
-             {
 
-                 throw new NLangDetectException("duplicate the same language profile", ErrorCode.DuplicateLangError);
 
-             }
 
-             _instance.Langlist.Add(lang);
 
-             foreach (string word in profile.freq.Keys)
 
-             {
 
-                 if (!_instance.WordLangProbMap.ContainsKey(word))
 
-                 {
 
-                     _instance.WordLangProbMap.Add(word, new ProbVector());
 
-                 }
 
-                 double prob = (double)profile.freq[word] / profile.n_words[word.Length - 1];
 
-                 _instance.WordLangProbMap[word][index] = prob;
 
-             }
 
-         }
 
-         internal static void Clear()
 
-         {
 
-             _instance.Langlist.Clear();
 
-             _instance.WordLangProbMap.Clear();
 
-         }
 
-         #endregion
 
-         #region Private helper methods
 
-         private static Detector CreateDetector()
 
-         {
 
-             if (_instance.Langlist.Count == 0)
 
-             {
 
-                 throw new NLangDetectException("need to load profiles", ErrorCode.NeedLoadProfileError);
 
-             }
 
-             return new Detector(_instance);
 
-         }
 
-         #endregion
 
-         #region Properties
 
-         public int? Seed { get; private set; }
 
-         #endregion
 
-     }
 
- }
 
 
  |