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

时间:2011-04-03 12:45:11

标签: c# nlp lemmatization

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

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

如果文字写成如下
“ForbiddenInformation.Privatecorrespondenceofthecompany。”要么 “F0rb1dden1nformation.Privatecorresp0ndenceofthec0mpany。” (是的,没有空格)

如何解决这个问题?
优选快速算法,因为文本是实时处理的 也许是一些提高性能的技巧(如何存储等)?

抱歉我的英文。感谢。

2 个答案:

答案 0 :(得分:2)

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

您可以尝试使用动态编程, 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}等集合。然而你可以修改这个不匹配所有字母(禁止 - > forbad)。

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

所以现在你可以比较这两个和你的建议的好处。

答案 1 :(得分:1)