我想在段落中创建一个单词映射。例如; 我的字符串是“去面包约翰昨天去是音乐音乐......”。该字符串中的单词映射:music=2,go=2,bread=1,John=1,昨天=1。单词后缀将被视为公共词根。(例如 musics=music)。我在 C# 中进行编码的这个主题怎么样?
问问题
2540 次
3 回答
0
关于后缀,这只是寻找一个s
,您可以修改以寻找其他后缀。
string words = "go bread John yesterday going is music musics";
List<string> wordroots = words.Split(new [] {" "}, StringSplitOptions.RemoveEmptyEntries).ToList();
var rootcount = wordroots
.Select(wr =>
{
if (wr.EndsWith("s"))
wr = wr.Substring(0, wr.Length - 1);
return wr;
})
.GroupBy(g => g);
foreach (var group in rootcount)
Console.WriteLine(string.Format("Found word: {0} {1} times.", group.Key, group.Count()));
于 2013-04-19T14:43:28.627 回答
0
您可以首先将所有复数形式转换为单(或复数)形式,您自己决定,但要保持一致,例如 music=musics。这并不难,因为有 C# 代码来获取复数形式,例如看这篇文章。
然后,您可以创建字典:
Dictionary<string, int> data=new Dictionary<string, int>();
foreach(string item in YourInputs)
{
if(data.ContainsKey(item)
data[item]++;
else
data.Add(item, 1);
}
于 2013-04-19T14:45:39.947 回答