一个关于KWIC编程的疑惑

假设字符串为ahahahahaha
根据regular expression的常规方法,如果要匹配aha,则对该字符串匹配3次,这也就是AntConc的匹配方式(AntConc就是用Perl写的)。

但我个人以为在该字符串中包含的aha似乎应该是5个,不知对不对?前段时间自己写KWIC concordancer的时候的想法就是这样,所以我的做法是:匹配第一次之后,将指针向后移1个字符,继续匹配,这样的运行效率比较低,但可以保证在上述字符串中检索到5个aha。

不知我是否说清了问题,请问各位高手,我的这种匹配方法是否必要?:confused:
 
回复: 一个关于KWIC编程的疑惑

个人觉得这不是个小问题,试想如果用regex方式用antconc在Brown中检索\w+/nn \w+/nn,即两个相邻的名词,假如有三个名词连续的情况,则在该处只能匹配一次,检索结果就完全不准确了
 
回复: 一个关于KWIC编程的疑惑

按照你的思路,假设字符串是aahaahaahaahaahaa,要查找的是aahaa,那岂不是要后退2个才行?
 
回复: 一个关于KWIC编程的疑惑

按照你的思路,假设字符串是aahaahaahaahaahaa,要查找的是aahaa,那岂不是要后退2个才行?
这个情况下我觉得也应该匹配5次,不知我的表达是不是清楚
我的算法其实是这样:每次匹配之后把整个字符串的最左的1个字符去掉,在剩余部分继续匹配,如此反复,直到余下的不再包含key word
 
回复: 一个关于KWIC编程的疑惑

很有意思的问题.
有个正则表达式的群,或许能有更好的见解:34553587
 
回复: 一个关于KWIC编程的疑惑

谢谢孙老师 类似的技术性讨论组我也参加了好多 贴在这里主要是因为语料库研究有些特殊性
 
回复: 一个关于KWIC编程的疑惑

我个人觉得,应该是3个。
如果文本是I have a dream,检索的目标是由两个单词构成的词串,那么结果应该是几个呢?常规的正则表达式检索结果是2个,但我觉得应该是3个
 
回复: 一个关于KWIC编程的疑惑

把字符串ahahahahaha 保存到一个txt文件中,然后使用正则表达式(a)(h)(?=\1) 在PowerGrep中可检索收集到5个aha,具体操作参考附件中图片。
 

附件

  • aha.jpg
    aha.jpg
    105.9 KB · 浏览: 6
回复: 一个关于KWIC编程的疑惑

如果文本是I have a dream,检索的目标是由两个单词构成的词串,那么结果应该是几个呢?常规的正则表达式检索结果是2个,但我觉得应该是3个

“I have a dream” 的2元组(2-Gram)确实应有3个。测试方法:把 “I have a dream” 保存到一个txt文件中,用正则表达式(\b\w+\b)(?=((\s+\b\w+\b){1}))在PowerGrep中的“Collect data”功能。具体操作如图:
 

附件

  • dream.jpg
    dream.jpg
    106.5 KB · 浏览: 4
Back
顶部