namespace Yuuna.Contracts.TextSegmention { using JiebaNet.Segmenter; using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Globalization; using System.Text; using Yuuna.Contracts.Semantics; public sealed class JiebaTextSegmenter : ITextSegmenter { private readonly JiebaSegmenter _jieba = new JiebaSegmenter(); string ITextSegmenter.Name => "Jieba.Net"; public IImmutableList Cut(string text) => this._jieba.Cut(text, true, true).ToImmutableArray(); public void Load(IGroupManager manager) { if (manager == null) return; foreach (var name in manager.Keys) { Console.WriteLine("name: " + name); foreach (var synonym in manager[name].ToImmutable()) { Console.WriteLine(" count: " + synonym.ToImmutable().Count); foreach (var w in synonym.ToImmutable()) { Console.WriteLine(" added: " + w); this._jieba.AddWord(w); } } Console.WriteLine(); } } public CultureInfo Culture => CultureInfo.GetCultureInfo("zh-TW"); } }