我正在处理一个问题,以规范化单词和句子。
例如Yahoooo - > YAHO
Yeeeesssss - >是,
hahahahahaha - >公顷hello world hello world hello world - >你好世界
基本上任何超过2次的模式都需要标准化为一次。
编辑1:根据以下问题,我添加了更多案例
"你好世界你好你好heheheheheheheheheh" - "你好世界你好你好他"。
"你好世界你好世界你好世界" - "你好世界"。
" aaabbb aaabbb aaabbb" - " ab ab ab" - " ab" (最终输出)。
所以> 2次出现是条件,应该应用所有过滤器(unigram,bigram,trigram直到让5sms表示)。
答案 0 :(得分:1)
您可以使用以下代码:
string input = @"hello world hello hello hehehehehehehehehe aaabbb aaabbb aaabbb";
while(input.Length != (input = Regex.Replace(input, @"(.+)\1{2,}", "$1")).Length);
Console.WriteLine(input);
使用正则表达式(.+)\1{2,}
表示匹配一个或多个重复两次或多次的字符。它产生以下输出:
hello world hello hello he ab