C#开源敏感词检测库ToolGood.Words中的类IllegalWordsSearch为过滤非法词(敏感词)专用类,可设置跳字长度,支持全角转忽略大小、跳词、重复词、黑名单等功能,本文对照参考文献1,对该类的用法进行简要介绍。
IllegalWordsSearch类中主要的属性、函数、事件如下表所示:
序号 | 名称 | 类型 | 说明 |
---|---|---|---|
1 | UseSkipWordFilter | 布尔型属性 | 用于设置是否启用跳词,默认为true,跳词是指不参与文本检索的一组字符集合 |
2 | SetSkipWords | 函数 | 设置跳词字符串 |
3 | UseDuplicateWordFilter | 布尔型属性 | 用于设置是否启用重复词过滤,默认为true,需在调用SetKeywords函数前设置 |
4 | UseDBCcaseConverter | 布尔型属性 | 用于设置是否启用半角转化器,默认为true,需在调用SetKeywords函数前设置 |
5 | UseIgnoreCase | 布尔型属性 | 用于设置是否忽略大小写,默认为true,需在调用SetKeywords函数前设置 |
6 | SkipWordFilterHandler | 代理 /事件 | 自定义跳词处理函数,如果处理了该事件则优先使用事件处理函数返回结果判断是否需要跳词,如果没有设置事件处理函数,则使用 SetSkipWords 中设置的跳词字符串判断是否需要跳词 |
7 | CharTranslate | 代理 /事件 | 自定义字符转换处理函数,如果处理了该事件则优先使用自定义字符转换处理函数转换字符,没有的话则使用IllegalWordsSearch类自带的ToSenseWord函数转换字符 |
8 | StringMatch | 代理 /事件 | 自定义字符串匹配处理函数,如果处理了该事件,则获取敏感词检测结果后会调用该处理函数判断是否需要作为检测结果返回 |
9 | SetKeywords | 函数 | 设置搜索关键词 |
10 | FindAll | 函数 | 获取所有满足条件的检测结果,类型为IllegalWordsSearchResult的集合 |
11 | FindFirst | 函数 | 获取满足条件的首个检测结果,类型为IllegalWordsSearchResult |
12 | ContainsAny | 函数 | 判断是否存在满足检测条件的关键词 |
13 | Replace | 函数 | 将满足检测条件的关键词替换为指定内容 |
14 | SetBlacklist | 函数 | 设置黑名单,这里设置的其实是每个关键词对应的黑名单类型(例如一般、重要、严重)的索引 |
根据上述函数及属性定义,设计并开发了IllegalWordsSearch类的使用测试程序,主要代码及程序运行效果如下:
IllegalWordsSearch ws = new IllegalWordsSearch();
ws.UseIgnoreCase = cbIngoreCase.Checked;
ws.UseSkipWordFilter = cbSkip.Checked;
ws.UseDuplicateWordFilter = cbCF.Checked;
ws.SetKeywords(txtResearchWord.Text.Split(';', ';'));
ws.SetSkipWords(txtSkipWords.Text);
if(!string.IsNullOrEmpty(txtBlackList.Text))
{
m_blackList.AddRange(txtBlackList.Text.Split(';', ';'));
List<int> blackListType = new List<int>();
for(int i=0;i<m_blackList.Count;i++)
{
blackListType.Add(i);
}
ws.SetBlacklist(blackListType.ToArray());
}
List<IllegalWordsSearchResult> results = ws.FindAll(txtContent.Text);
参考文献:
[1]https://github.com/toolgood/ToolGood.Words