最大公共子串提取“模式”

今天一个自然语言处理的群里面有个哥们问了一个问题:

有如下的几个例句:

1. 我把他打了
2. 你把小强打了
3. 他把小华打了

现在需要从以上几个例句中提取公共部分。
提取的结果为:  ...把...打了

貌似网上的最大公共子串都是只提取一个连续的字符串,如上提取的结果就是一个"打了".

马上就有群友反应这个问题其实不是提取公共字串,而是一个模板提取。

我提供的解决思路如下:

1. 还是使用现成的最大公共子串算法;

2. 第一次提取出 “打了”;

3. 然后将每一个剩下的字串,再提取一下就得到第二长的公共字串 “把”;

4. 然后将两个字串合并即可得到最终结果。

群友(追尋ψ魔術師)评价:“算法很机智”。

posted @ 2013-08-21 15:05  lloydzhou  阅读(410)  评论(0)    收藏  举报