static void Main(string[] args) { var options = new Options(); if (Parser.Default.ParseArguments(args, options)) { if (options.ShowHelp) { Console.WriteLine(options.GetUsage()); return; } if (options.ShowVersion) { Console.WriteLine("jieba.NET 0.38"); return; } if (string.IsNullOrWhiteSpace(options.FileName)) { Console.WriteLine("No file specified"); return; } SegmentFile(options); } }
private static void SegmentFile(Options options) { var result = new List<string>(); var fileName = Path.GetFullPath(options.FileName); var lines = File.ReadAllLines(fileName); Func<string, bool, bool, IEnumerable<string>> cutMethod = null; var segmenter = new JiebaSegmenter(); if (options.POS) { cutMethod = (text, cutAll, hmm) => { var posSeg = new PosSegmenter(segmenter); return posSeg.Cut(text, hmm).Select(token => string.Format("{0}/{1}", token.Word, token.Flag)); }; } else { cutMethod = segmenter.Cut; } var delimiter = string.IsNullOrWhiteSpace(options.Delimiter) ? "/ " : options.Delimiter; foreach (var line in lines) { result.Add(string.Join(delimiter, cutMethod(line, options.CutAll, options.NoHmm))); } Console.WriteLine(string.Join(Environment.NewLine, result)); }