我正在阅读文档,并拆分单词以获取字典中的每个单词,但我怎么能排除一些单词(如"/ a/an").
这是我的功能:
private void Splitter(string[] file)
{
try
{
tempDict = file
.SelectMany(i => File.ReadAllLines(i)
.SelectMany(line => line.Split(new[] { ' ', ',', '.', '?', '!', }, StringSplitOptions.RemoveEmptyEntries))
.AsParallel()
.Distinct())
.GroupBy(word => word)
.ToDictionary(g => g.Key, g => g.Count());
}
catch (Exception ex)
{
Ex(ex);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,在这种情况下,在哪里添加.ToLower()调用以使文件中的所有单词都是小写的正确位置?在(temp = file..)之前我正在考虑这样的事情:
file.ToList().ConvertAll(d => d.ToLower());
Run Code Online (Sandbox Code Playgroud) 添加bool distinct到方法Splitter并检查distinct is true代码是否破坏后.问题现在而不是字典IEnumerable<string>,但是应该是Dictionary<string, int>.怎么可以解决?
这是错误:
无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.Dictionary'.存在显式转换(您是否错过了演员?)
和代码:
private Dictionary<string, int> Splitter(string[] file, bool distinct)
{
var query = file
.SelectMany(i => File.ReadLines(i)
.SelectMany(line => line.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries))
.AsParallel()
.Select(word => word.ToLower())
.Where(word => !StopWords.Contains(word))
.Where(word => !StopWordsPl.Contains(word))
.Where(word => !PopulatNetworkWords.Contains(word))
.Where(word => !word.All(char.IsDigit)));
if (distinct)
{
query = query.Distinct();
}
query.GroupBy(word => word)
.ToDictionary(g => g.Key, g => g.Count());
return query;
}
Run Code Online (Sandbox Code Playgroud) Dictionary<string, double>当我重新启动应用程序时,我已经保存并恢复它.据我所知,你不能在c#中存储字典,所以试图解决方法.
目前我已经在设置中调用了字符串变量DB,并试图使用这样的东西:
var settings = dict.ToArray();
var prop = Properties.Settings.Default.DB;
Run Code Online (Sandbox Code Playgroud)
做一些像 prop = settings;
到目前为止,我已经做到了这一点,虽然它现在正在工作..
private void SaveSettings()
{
var settings = spamPercentage.ToArray();
var prop = Properties.Settings.Default.DB;
string res = String.Join(",", settings);
prop = res;
}
private void LoadSettings()
{
var prop = Properties.Settings.Default.DB;
var dictionary = prop.ToDictionary(item => item.Key,
item => item.Value);
}
Run Code Online (Sandbox Code Playgroud)
编辑字典中的值如下所示:
{[john, 0,53]}
{[ivone, 0,44]}
etc.
Run Code Online (Sandbox Code Playgroud)
@edit使用Julien JSON的想法,我做了:
string prop = Properties.Settings.Default.DB;
private void SaveSettings()
{
prop = JsonConvert.SerializeObject(dict);
Properties.Settings.Default.Save();
}
private …Run Code Online (Sandbox Code Playgroud)