public void Initialize(ITextSegmenter segmenter, IEnumerable <Response> canResponses, IStrategy strategy, IReadOnlyList <ModuleCoupler> moduleProxies) { if (!this._initialized) { lock (this._lock) { if (this._initialized) { return; } segmenter.ThrowIfNull(nameof(segmenter)); this._segmenter = segmenter; canResponses.ThrowIfNull(nameof(canResponses)); this._canResponses = canResponses; this._strategy = strategy ?? new DefaultStrategy(); this._antonyms = new[] { new Antonym("是", "不是"), new Antonym("對", "不對"), new Antonym("是", "否"), }; this._moduleProxies = moduleProxies; foreach (var plugin in this._moduleProxies) { if (plugin.Initialize(this._segmenter, new GroupManager())) { Debug.WriteLine("已載入模組: " + plugin.Metadata.Name); } } this._initialized = true; } } }
public bool Initialize(ITextSegmenter s, IGroupManager g) { if (this._module is null) { return(false); } this._module.Initialize(s, g, out var v); this.Patterns = v; return(true); }
/// <summary> /// 初始化模組 /// </summary> /// <param name="textSegmenter">分詞器</param> /// <param name="groupManager">群組管理</param> internal void Initialize(ITextSegmenter textSegmenter, IGroupManager groupManager, out IRule patterns) { patterns = null; if (!this._initialized) { try { var session = new ExpandoObject(); this.BeforeInitialize(this._configProxy, session); patterns = new PatternFactory(this); this.BuildPatterns(groupManager, patterns as IPatternBuilder, this._configProxy, session); textSegmenter.Load(groupManager); this.AfterInitialize(this._configProxy, session); this._initialized = true; this.Patterns = patterns; } catch (Exception e) { throw new TypeInitializationException(this.GetType().FullName, e); } } }
public Actor(ITextSegmenter segmenter, IEnumerable <Response> canResponses, IStrategy strategy, IReadOnlyList <ModuleCoupler> moduleProxies) : this() { this.Initialize(segmenter, canResponses, strategy, moduleProxies); }
private static void Run_Offset_ToConsole(this ITextSegmenter ts, string text) { Console.Write($"'{text}' => "); ts.Run_Offset(text).ToConsole(text); }