JiebaSegmenter.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. 
  2. namespace Yuuna.Contracts.TextSegmention
  3. {
  4. using JiebaNet.Segmenter;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Collections.Immutable;
  8. using System.Globalization;
  9. using System.Text;
  10. using Yuuna.Contracts.Semantics;
  11. public sealed class JiebaTextSegmenter : ITextSegmenter
  12. {
  13. private readonly JiebaSegmenter _jieba = new JiebaSegmenter();
  14. string ITextSegmenter.Name => "Jieba.Net";
  15. public IImmutableList<string> Cut(string text) => this._jieba.Cut(text, true, true).ToImmutableArray();
  16. public void Load(IGroupManager manager)
  17. {
  18. if (manager == null)
  19. return;
  20. foreach (var name in manager.Keys)
  21. {
  22. Console.WriteLine("name: " + name);
  23. foreach (var synonym in manager[name].ToImmutable())
  24. {
  25. Console.WriteLine(" count: " + synonym.ToImmutable().Count);
  26. foreach (var w in synonym.ToImmutable())
  27. {
  28. Console.WriteLine(" added: " + w);
  29. this._jieba.AddWord(w);
  30. }
  31. }
  32. Console.WriteLine();
  33. }
  34. }
  35. public CultureInfo Culture => CultureInfo.GetCultureInfo("zh-TW");
  36. }
  37. }