像在文章系统中.用户一般不会自己填标签.我就想在文章发布时.就让程序从文章中提取出频率最高的几个词做为标签.可是这方面没接触过.谁能提供个思路?
解决方案 »
- 关于向ThunderRt6UserControlDC类型Button发消息的问题
- C# 中combobox使用代码下拉,鼠标消失
- [分享] 闲的蛋疼 分享自动修改防火墙策略
- C#接口聚合问题
- 哪位大侠用c#连过db2数据库啊。问题急。。
- 从xls读入数据的问题
- 一个关于窗体的问题
- Web Browser打开word或excel文档的问题
- 高分求"OPC .NET API 2.00 Redistributables"
- c#不会有~~~~~!
- 未能在 sysindexes 中找到数据库 ID 11 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE
- 【急】求一个算法,把一数字和字母的混合字符串(16位)生成一个16位的数字
string str = "像在文章系统中.用户一般不会自己填标签.我就想在文章发布时.就让程序从文章中提取出频率最高的几个词做为标签.可是这方面没接触过.谁能提供个思路?";
for (int i = 0; i < str.Length; i++)
{
if (!dic.Contains(str[i].ToString()))
dic.Add(str[i].ToString());
}
int[] stat = new int[dic.Count];
for (int j = 0; j < str.Length; j++)
{
stat[dic.IndexOf(str[j].ToString())]++;
}
int[] temp = stat;
Array.Sort(temp);
int max = temp[temp.Length - 1];
Console.WriteLine("出现最多的字符是:"+dic[Array.IndexOf(stat, max)]);
string str = "我爱的人不爱我,爱我的人我不爱,想爱一个人真难";
for (int i = 0; i < str.Length; i++)
{
if (!dic.Contains(str[i].ToString()))
dic.Add(str[i].ToString());
}
int[] stat = new int[dic.Count];
for (int j = 0; j < str.Length; j++)
{
stat[dic.IndexOf(str[j].ToString())]++;
}
int[] temp = new int[stat.Length];
Array.Copy(stat, temp, stat.Length);
Array.Sort(temp);
int max = temp[temp.Length - 1];
Console.WriteLine("出现最多的字是:"+dic[Array.IndexOf(stat, max)]);
你只要根据这个次数由多到少排列的单字,组合其前面或后面一个字组成词语(当然不一定构成真正的词语)再次统计下该词语在字符串中出现的次数应该就是答案了
有个语料库,把所以现成的词语 按照字母为序 表明词性 以及词语的使用率 可以用bayes算法分析(选取为一个最优的路径,也就是这段句子所有词语组成的最大率)
其中通过最小子串去行从文章中提取词语,然后把词语和语料库进行对比
最终把整篇文章给词语化,然后你就可以把相同的词语进行统计