|*—*|模式构造(算法一:产生各种包含问题与答案的模式,
主要是用后缀树进行模式学习)
第一步: 用问题+答案搜索
第二步:处理搜索出来的1000条数据文本
第三步:用正则表达式保留包含了问题和答案的句子
第四步:把包含问题和答案的sentences传给后缀树执行
(找到这些句子中重复最多的最长子串 如:mozart (1957-2001))
第五步:把包含问题和答案的phrases传给后缀树执行
(再从上步结果中找出包含问题和答案的串 如:mozart (1957 )
第六步:用<NAME>代替问题的词,用<ANSWER>代替答案的词
用不同人名重复算法一将会得到各个人的生日集合
|*—*|模式精度确定(算法二:计算模式精度,剔除低精度模式)
第一步: 只用问题搜索(问题选择很重要,用同一问题的不同表达形式,避免受到重复文本的影响而影响到精度)
第二步:同算法一
第三步:用正则表达式只保留包含了问题的句子
第四步:a.用算法一得到的模式测试这些句子,会出现两种情况:
(1)<ANSWER>可能匹配任何字符
(2)<ANSWER>匹配正确答案
如:i) Mozart was born in <ANY_WORD>
ii) Mozart was born in 1756
b.用公式计算每个模式的精度
P = Ca / Co
Ca:表示用该模式匹配的正确的条数
Co:表示用该模式匹配的代替了答案的任何词的条数
第五步:保留匹配数量多的模式(比如大于5的)
|*—*|利用模式表发现答案(答案数据集是来自TREC-10的)
第一步:用问题搜索
第二步:已有的机器判断问题类别以及问题的term
第三步:在已有的答案数据集中搜索
第四步:清理数据(去除标签,空白符等)
第五步:用正则标签替换问题的term
(“<NAME>”, in the case of BIRTHYEAR).)
第六步:通过模式表中的模式选择匹配标签<ANSWER>的词作为答案
如:<NAME> ( <ANSWER> -
<ANSWER> <NAME> was born
...
第七步:按模式精度排序上步搜的答案,去重返回top5答案。