xingd.net

.net related techonology
posts - 56, comments - 622, trackbacks - 6, articles - 0

最新评论

共13页: 1 2 3 4 5 6 7 8 9 下一页 末页 
Re:忽略大小写的.NET脏字过滤算法 john23.net 2011-12-31 11:12  
顶个
Re:再度提升!.NET脏字过滤算法 边城浪 2011-10-20 15:48  
不错的思路, 我对你的方法做了些优化,补充了说明。 http://www.cnblogs.com/yeerh/archive/2011/10/20/2219035.html
Re:(重发).NET脏字过滤算法 黄德爱 2011-10-14 08:26  
其实写一个过滤很简单的,实现的方法也很多,因地制宜吧。。 不过楼主辛苦咯。。
Re:再度提升!.NET脏字过滤算法 leslie_ 2011-06-30 13:26  
Filter里面是如何过滤的???
Re:忽略大小写的.NET脏字过滤算法 慧☆星 2011-06-24 15:05  
return original.GetHashCode(); 这样不行吗?请赐教
Re:忽略大小写的.NET脏字过滤算法 慧☆星 2011-06-24 14:56  
我反编译了String类的GetHashCode代码,里面有不安全带码。使用时出错。能麻烦发一下GetHashCode的代码吗?邮箱 aspdonet@126.com 谢谢
Re:(再发).NET脏字过滤算法 overred 2011-06-05 15:45  
@xingd Thx,你说的很对。太轻易下结论了,sorry
Re:(再发).NET脏字过滤算法 xingd 2011-05-23 16:53  
@overred 最后会有一个hash.Contains(sub)的判断,应该不会出现“并词”生效的问题吧
Re:(再发).NET脏字过滤算法 overred 2011-05-22 14:57  
没想到今天瞅了下这个帖子,思路还是不错的。 “改进后的算法效率比原先的算法提高了400%” 那是因为你的敏感词里有很多相同的字,但顺序不一样。 另:本算法有个很大的bug,就是”并词“生效。比如脏词里有{"不哈是", "是啊是"},文本内容是:”是哈是“,会被认为是脏词。 所以我感觉对上一个算法改进的方法就是: 不依赖最大长度循环,记录每个脏词的详细长度,且排序,逐词长循环。 先首字-->长度-->脏词,类似于二次哈希的方式进行查找,性能也很高。 本文算法的改进就是可以采用Double array trie.
Re:再度提升!.NET脏字过滤算法 Parry 2011-05-09 13:40  
这个真的不稳定
Re:再度提升!.NET脏字过滤算法 冰湖 2011-04-02 14:17  
for (int i = 0; i < 7 && i < word.Length; i++) { fastCheck[word[i]] |= (byte)(1 << i); } 由于代码没注释,也不知道fastCheck是什么作用但是看声明: private byte[] fastCheck = new byte[char.MaxValue]; 对于唯一的一个char c,fastCheck[c] 应该是具有唯一值的吧?? 看代码 moment 单词 fastCheck[m] 就有两个值?(byte)(1 <<0)和(byte)(1 << 2)
Re:Minesweeper: GDI+ 概述 雨夜骑士 2011-01-07 15:48  
RegisterClassEx中可以通过CS_HREDRAW | CS_VREDRAW来实现窗体重绘,这个怎么弄? 函数原型:ATON RegisterClassEx(CONST WNDCLASSEX *Ipwcx);
Re:休学、退学与工作 decem 2010-10-24 00:03  
人必须需要运气
Re:再度提升!.NET脏字过滤算法 木木林 2010-08-03 16:52  
@时尚品牌 测试了一下,发现是程序里面有一个小BUG string sub = text.Substring(index, j + 1); [code=java] string sub = text.Substring(index, j + 1); if (hash.Contains(sub)) { return true; } [/code] 应该为text.SubString(index, j+1+index);
Re:Minesweeper: GDI+ Line Scratch FlowerJack 2010-06-22 20:09  
[quote]Fireman_duck:还以为啥深奥的冬冬<br>大为不满 [/quote] 严重不满这位朋友的言语。支持楼主
Re:String与StringBuilder codefor 2010-06-17 22:18  
stringbuilder重置length后是不是那块内存就释放了还是还留在那里啊?
Re:(再发).NET脏字过滤算法 哥哥.Net 2009-10-22 15:30  
这个思路很好,今天正好用到。有一点小小的问题: mark 和 Mark 被认为是两个不同的badword了。不知道是不是我的用法有问题?
Re:再度提升!.NET脏字过滤算法 xiangxiang 2009-07-16 15:37  
@楼主: 说实话,效率很高,但是匹配不稳定,我测试过了 测试环境: 1000个字符串,单个长度大概100K左右,用1340个关键字过滤 用indexof,大概耗时39671.875mm 用你的方法,耗时62.5mm 速度提升500多倍,可惜,好多关键字都漏掉了,用indexof,一篇文章可以匹配出22个关键词的,用你的方法只能匹配出18个,而且另外4个确实都是包含在字符串里面,唉,如果匹配不精确,速度再快对我来也没意义,恕我驽钝,你写的东西我确实看不懂,想改也无从下手,所以,这么好的一个东西,没法用,实在是难受
re: 再度提升!.NET脏字过滤算法 wulao 2009-06-23 17:36  
希望能得到楼上的指教
re: 再度提升!.NET脏字过滤算法 wulao 2009-06-23 17:35  
http://www.cnblogs.com/xingd/archive/2008/01/31/1060425.html这个算法替换敏感词汇,可以全部把我的脏字典中的敏感词汇全部命中,但这个方法怎么后面一半的脏字就不能替换呢??
奇怪了
HashSet<string> hash = new HashSet<string>();
byte[] fastCheck = new byte[char.MaxValue];
byte[] fastLength = new byte[char.MaxValue];
BitArray charCheck = new BitArray(char.MaxValue);
BitArray endCheck = new BitArray(char.MaxValue);
int maxWordLength = 0;
int minWordLength = int.MaxValue;


string wordPath = ConfigurationManager.AppSettings["badWords"];
string badWordTxtPath = System.Web.HttpContext.Current.Server.MapPath(wordPath);
string[] badWords = null;
if (System.IO.File.Exists(badWordTxtPath))
{
StreamReader sr = new StreamReader(badWordTxtPath, Encoding.Default);
badWords = sr.ReadToEnd().Split('|');
//初始化脏字典
foreach (string word in badWords)
{
maxWordLength = Math.Max(maxWordLength, word.Length);
minWordLength = Math.Min(minWordLength, word.Length);

for (int i = 0; i < 7 && i < word.Length; i++)
{
fastCheck[word[i]] |= (byte)(1 << i);
}

for (int i = 7; i < word.Length; i++)
{
fastCheck[word[i]] |= 0x80;
}

if (word.Length == 1)
{
charCheck[word[0]] = true;
}
else
{
fastLength[word[0]] |= (byte)(1 << (Math.Min(7, word.Length - 2)));
endCheck[word[word.Length - 1]] = true;

hash.Add(word);
}

}
//判断脏字是否出现在一个字符串中
int index = 0;
while (index < strContent.Length)
{
int count = 1;

if (index > 0 || (fastCheck[strContent[index]] & 1) == 0)
{
while (index < strContent.Length - 1 && (fastCheck[strContent[++index]] & 1) == 0) ;
}

char begin = strContent[index];

if (minWordLength == 1 && charCheck[begin])
{
break ;
}

for (int j = 1; j <= Math.Min(maxWordLength, strContent.Length - index - 1); j++)
{
char current = strContent[index + j];

if ((fastCheck[current] & 1) == 0)
{
++count;
}

if ((fastCheck[current] & (1 << Math.Min(j, 7))) == 0)
{
break;
}

if (j + 1 >= minWordLength)
{
if ((fastLength[begin] & (1 << Math.Min(j - 1, 7))) > 0 && endCheck[current])
{
string sub = strContent.Substring(index, j + 1);

if (hash.Contains(sub) )
{
strContent = strContent.Replace(sub, "**敏感词汇已替换**");
break;
}
}
}
}

index += count;
}

return strContent;


}
else
{
return "脏字典文件不存在!";

}
re: (重发).NET脏字过滤算法 jay tian 2009-05-30 19:32  
感谢楼主,把自己的算法分享!
re: (再发).NET脏字过滤算法 ffesp 2009-05-15 17:27  
|= (byte)(1 << i);
这代码是什么意思,看的头晕
"|="是什么,google都搜索不到, (1<<i)又是什么意思
佩服你的创业精神!

不过我觉得你要能把工作和大学学习两者都兼顾一下该多好。
也省得现在去参加自学考试了。

顺祝你一切顺利!
re: Minesweeper: GDI+ 综述 李红彬 2009-04-18 17:05  
我的打印程序打到一半就切纸了,就是因为VisibleClipBounds比ClipBounds小.
怎么修改VisibleClipBounds呢?
re: (重发).NET脏字过滤算法 ssssssssssssssssssssss 2009-01-10 15:59  
if (!firstCharCheck[text[index]])
{
while (index < text.Length - 1 && !firstCharCheck[text[++index]]) ;
}


不明白,这个空循环是什么意思?
re: (重发).NET脏字过滤算法 半克拉鹅卵石 2008-12-25 13:10  
mark
re: 休学、退学与工作 炜升 2008-12-22 14:43  
~~~~我终于找到了我的追赶目标
学习,2.0 能否发我一份
re: (重发).NET脏字过滤算法 极品菜鸟 2008-12-10 18:41  
楼主,你好,我看了好久你的方法,今天终于做了一个小总结,封装成了一个类,哈哈..http://www.cnblogs.com/bbqqqbq/archive/2008/12/10/1352142.html
楼主不要见怪啊..给指点一下,没有注释真的很痛苦..
re: 如何获取当前程序文件的路径 张龙刚 2008-12-08 10:46  
AppDomain.CurrentDomain.BaseDirectory这个就是当前应用程序的运行目录。
re: BinaryFormatter序列化实例(四) 张龙刚 2008-12-08 10:36  
很精彩!
re: (再发).NET脏字过滤算法 极品菜鸟 2008-12-01 14:43  
--引用--------------------------------------------------
A1: 既然你对这个兴趣那么大,还是搜索一下 &quot;multi pattern string matching&quot; 多看几篇论文再思考一下。
<br>KMP可以不看了,BM,WM是必须的,特别是WM,它是agrep的基础算法,压缩码匹配方式的代表。
<br>效率超过WM当然也有好几个,毕竟WM是90年代初的东西,这些新算法优势多数都是在模式数量超大、最短模式长度越长等情况下才能现象。
<br>考虑对于脏字过滤这样的场景,实际模式数量不会太多(一般网站几百个就到顶了),单词也不会太长,所以WM算法的参考简直最大。
<br>在我看来,匹配成功后如何操作原字符串并得到新串的方式也是很值得考究的,原因嘛,大多数人的习惯造成的。
<br>
<br>PS:实际应用中还得考虑英文字符的大小写问题,弄得好其中还有可提高效率的方法。
<br>
--------------------------------------------------------
引用“匹配成功后如何操作原字符串并得到新串的方式也是很值得考究的”中说到的,如何操作原字符串得到新字符串,这个很考究!楼主能不能把这个贴出来?
re: (重发).NET脏字过滤算法 极品菜鸟 2008-12-01 14:23  
博主你好,你上面写的东东只是做判断一个字符串中是否存在脏字,相当于只是做一个判断啊,真正的替换算法没有写出来哟,能不能贴贴一贴?
楼主看下,“世纪中国基金会”这个词可以查到,变成“<p>世纪中国基金会世纪中国基金会</p>”就查不到了?是bug吗?
re: (重发).NET脏字过滤算法 您好 2008-08-10 22:54  
您好,能提供一份脏字字典吗?自己实在想不出多少,谢了!
email:leeses@126.com
re: So You Want To Enter The Game Industry 逖靖寒 2008-07-22 20:46  
类似这样的文章很多啊。
re: (再发).NET脏字过滤算法 逖靖寒 2008-07-22 20:45  
@A1
re: 忽略大小写的.NET脏字过滤算法 逖靖寒 2008-07-22 17:27  
看了楼主的这一些列文章,不错。但是缺少注释,可能新手不容易理解哈。
re: (重发).NET脏字过滤算法 逖靖寒 2008-07-22 16:42  
空间换时间
re: 2007年度总结 逖靖寒 2008-07-22 15:44  
不错!!向你学习。
re: (重发).NET脏字过滤算法 cxw 2008-07-09 21:53  
好贴,支持一下!我正好要用上,谢谢了!
re: 2007年度总结 林骄 2008-07-06 15:54  
认真的看了帖子和评论,给了我很多思考。很喜欢这种钻研和学习的气氛。
能否再讲下实现的算法啊,通俗一点的,看的不明白。
re: 再度提升!.NET脏字过滤算法 zzzzz 2008-06-18 17:51  
不用移位行不行,看着有点晕
楼主,我也要一份啊。。。
博主可否给我发一份2.0的,多谢hiying#163.com
休学、退学与学习 蒋振凯 2008-05-02 15:24  
今天来查查有关休学的,却到了你这,和大多数大学生一样,我开始对自己的将来感到迷茫!对于自己的将来与理想我不知如何是好!已进入大学发现并不是那么的理想,所以一直都是自学,但是发现实在是太累!在想了很久之后我决定要退学!找专业的学校去学习!其实这其中也有家庭经济方面的原因,我想我实在是没有那个时间,在上完大专之后再去学习,承受不起!于是跟家里人商量了一下,家人先让我办个休学,发现现在休学还挺难办理的!
知道怎么弄得麻烦指点一下!
QQ:405520878
终于学会使用了 运行成功 非常感谢博主!!

非常谢谢 已收到
@fqf
GetHashCode的代码已发到你的邮箱
共13页: 1 2 3 4 5 6 7 8 9 下一页 末页