求一个敏感词算法

liulangdeyuyu 2011-08-15 09:54:53
有一个敏感词库。要求匹配出一篇文章中的所有的敏感词,没有敏感词则返回空.

求一个算法源码或方案
...全文
329 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aixli520 2011-08-15
  • 打赏
  • 举报
回复
楼主,不知道你调试了没有,我测试了一下,辞量是1500时,很快的,因为方法没有复杂逻辑判断,只是循环会造成开销,而且你的敏感词肯定是要循环判断的,因此也不可避免。你如果需要更大的辞量的话,你可以测试一下速度,如果存在问题的话,你可以用多线程来做或者后台线程处理,也就不会等待或是卡死的情况。此外,不知道你的敏感词是否需要重复记录,刚才给你写的方法,敏感辞会重复记录的,如果你不需要重复记录的话再加一行代码就OK了。
if (!infoList.Contains(word))
infoList.Add(word);
希望解决你的问题,有问题留言吧!
aixli520 2011-08-15
  • 打赏
  • 举报
回复
好的,我在考虑一下
threenewbee 2011-08-15
  • 打赏
  • 举报
回复
使用字典树,我写过类似实现
http://topic.csdn.net/u/20110507/21/a797e59f-9089-4349-b474-f2c878b57d7e.html

其实这也是拼写检查使用的算法(拼写检查的目的是找字典中不存在的单词,你要做的正好相反)
liulangdeyuyu 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 aixli520 的回复:]

楼主怎么都不回啊?敏感词酷为传进来的string[],信息为info.
下面简单的方法可以达到你的要求了,记得顶一下,给加个分哦!
public List<string> GetSensitiveString(string[] sensitive, string info)
{
List<string> infoList = new……
[/Quote]

谢谢aixli520。你这个算法是可以达到目的,但是每一个词都要匹配一次,如果敏感词太多的话会变的很慢。有没有更优的算法
aixli520 2011-08-15
  • 打赏
  • 举报
回复
楼主怎么都不回啊?敏感词酷为传进来的string[],信息为info.
下面简单的方法可以达到你的要求了,记得顶一下,给加个分哦!
public List<string> GetSensitiveString(string[] sensitive, string info)
{
List<string> infoList = new List<string>();
foreach (var word in sensitive)
if (info.Contains(word))
infoList.Add(word);
return infoList;
}
aixli520 2011-08-15
  • 打赏
  • 举报
回复
那你的敏感词库是个数组了?
类似于: string[] sensitiveString = new string[] {"a","b","c","d"}形式,是你的词库吗?
xxiju203 2011-08-15
  • 打赏
  • 举报
回复
我想楼主肯定是希望返回一个包含词跟位置的数组了
liulangdeyuyu 2011-08-15
  • 打赏
  • 举报
回复
若匹配到敏感词则返回文章中包含的所有的敏感词,若没匹配到则返回空
aixli520 2011-08-15
  • 打赏
  • 举报
回复
楼主,把你的需求说清楚点,没有返回空,存在的情况如何操作?记录出现的次数,还是其它的什么操作?
wanghui0380 2011-08-15
  • 打赏
  • 举报
回复
自己google:“C#贝叶斯过滤算法”

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧