分析文本(词形还原,编辑距离)

use*_*173 7 c# nlp similarity lemmatization

我需要分析文本中存在的禁止词.假设黑名单是单词:"禁止".这个词有很多种形式.在文本中,这个词可以是,例如:"禁止","禁止","禁止".为了将单词带到初始​​形式,我使用了一个过程词形还原.你的建议?

错别字怎么办?
例如:"F0rb1d".我认为使用damerau-Levenshtein或其他人.你的建议?

如果文本写成如下:
"ForbiddenInformation.Privatecorrespondenceofcompany." 或"F0rb1dden1nformation.Privatecorresp0ndenceofthec0mpany." (是的,没有空格)

如何解决这个问题呢?
优选地是快速算法,因为文本是实时处理的.
也许是什么提高性能的提示(如何存储等)?

对不起我的英语不好.谢谢.

Aur*_*kas 3

据我所知,有两种可能的解决方案。

您可以尝试使用动态规划,LCS(最长公共子序列)。它将在原始文本中搜索所需的单词作为模式,我相信它是 O(mn):

http://en.wikipedia.org/wiki/Longest_common_subsequence_problem http://www.ics.uci.edu/~eppstein/161/960229.html

虽然更容易的是使用文本搜索算法。我知道的最好的是KMP,它的复杂度为 O(n)。为了进行字符比较,您可以将它们分组为 {i I l(L) 1}、{o O 0} 等集合。然而,您可以修改它以不匹配所有字母(禁止 -> 禁止)。

http://en.wikipedia.org/wiki/Knuth-Morris-Pratt_algorithm

现在您可以比较这两者的好处和您的建议。