我想在段落中创建一个单词地图。例如;我的字符串是“去面包约翰昨天去的是音乐音乐......”。该字符串中的单词map:music = 2,go = 2,bread = 1,John = 1,yesterday = 1。单词后缀将被视为一个共同的根。(例如音乐=音乐)。我用C#编写这个主题怎么样?
答案 0 :(得分: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()));
答案 1 :(得分:0)
您可以先将所有复数形式转换为单个(或复数)形式,您可以决定,但要保持一致,以便音乐=音乐。这并不难,因为有C#代码来获取复数形式,例如参见post。
然后您可以创建字典:
Dictionary<string, int> data=new Dictionary<string, int>();
foreach(string item in YourInputs)
{
if(data.ContainsKey(item)
data[item]++;
else
data.Add(item, 1);
}
答案 2 :(得分:0)