static void Main(string[] args) { TweetsToWordsOption option = TweetsToWordsOption.Parse(args); if (option.InputFile == null && option.InputDirectory == null) { Console.Error.WriteLine(); } IEnumerable <TwitterStatus> tweets = new List <TwitterStatus>(); if (option.InputFile != null) { using (StreamReader reader = new StreamReader(option.InputFile)) { tweets = tweets.Concat(JsonConvert.DeserializeObject <IEnumerable <TwitterStatus> >(reader.ReadToEnd())); } } if (option.InputDirectory != null) { foreach (string f in Directory.GetFiles(option.InputDirectory)) { using (StreamReader reader = new StreamReader(f)) { JsonConvert.DeserializeObject <IEnumerable <TwitterStatus> >(reader.ReadToEnd()); } } } List <IEnumerable <MeCabResult> > parsed = MeCab.Parse(tweets).Filtering(option).ToList(); Console.WriteLine("単語の数 : {0}", parsed.Sum(e => e.Count())); List <MeCabResultAggregate> aggregate = MeCab.AggregateAll(parsed).OrderByDescending(a => a.Num).ToList(); if (!Directory.Exists(option.OutputFile)) { Directory.CreateDirectory(option.OutputFile); } using (StreamWriter writer = new StreamWriter(option.OutputFile)) { writer.WriteLine(JsonConvert.SerializeObject(aggregate, Formatting.Indented)); } }
public static IEnumerable <IEnumerable <MeCabResult> > Filtering(this IEnumerable <IEnumerable <MeCabResult> > filteringTarget, TweetsToWordsOption option) { MeCabFilter filter = new MeCabFilter(); if (option.AcceptFilePath != string.Empty) { filter.AddAcceptFilterFromFile(option.AcceptFilePath); } if (option.FilterFilePath != string.Empty) { filter.AddFilterFromFile(option.FilterFilePath); } //if (option.filterraw != string.Empty) //{ // filter.AddFilterFromJson(option.filterraw); //} return(filteringTarget.Select(f => filter.Filtering(f))); }