use*_*173 7 c# nlp similarity lemmatization
我需要分析文本中存在的禁止词.假设黑名单是单词:"禁止".这个词有很多种形式.在文本中,这个词可以是,例如:"禁止","禁止","禁止".为了将单词带到初始形式,我使用了一个过程词形还原.你的建议?
错别字怎么办?
例如:"F0rb1d".我认为使用damerau-Levenshtein或其他人.你的建议?
如果文本写成如下:
"ForbiddenInformation.Privatecorrespondenceofcompany." 或"F0rb1dden1nformation.Privatecorresp0ndenceofthec0mpany." (是的,没有空格)
如何解决这个问题呢?
优选地是快速算法,因为文本是实时处理的.
也许是什么提高性能的提示(如何存储等)?
对不起我的英语不好.谢谢.
据我所知,有两种可能的解决方案。
您可以尝试使用动态规划,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
现在您可以比较这两者的好处和您的建议。