教学篇:
操作篇:
成果篇:
以下是视频内容文字版:
大家好,欢迎观看欧拉蜜教学视频。我们今天要为这一句流行语:我只是个吃瓜群众来编辑几种可以匹配它的 grammar 。
一、基础语法
基础语法的编辑方法很简单,基本就是复制语料的内容。
语料:我只是个吃瓜群众 Grammar:我只是个吃瓜群众 |
那么这条grammar是一定能够匹配这条语料的,而且也只能匹配这条语料。当然,我们在说话的时候,同一个句子,可能也会有些微的差别,比如:我只是个吃瓜群众,我们还可以说:
我只是个吃瓜群众 我就是个吃瓜群众 我不过是一个吃瓜群众啦 我真的只是个吃瓜群众罢了 我真的就是个吃瓜群众而已 俺只是个普通的吃瓜群众啊 俺只是个不明真相的吃瓜群众 …… |
我们来分析一下这些句子,它们虽然都有点不一样,不过主体内容是相同的,要表达的意思也一样,我们来分析一下它们不同的部分,可以发现,“只是”、“就是”、“不过是”它们的意思相近,然后“真的”是个修饰用的副词,可有可无,对句意没有影响,“我”和“俺”都是“我”的意思,还有“罢了”、“而已”、“啊”、“啦”都是语气词。
我们把这些意思相近的词都集合在一起,添加到我们的基础语法里,那么,我们就可以用一条 grammar 来匹配上这里所有的语料。就可以这么写:
Grammar: (俺|我)[真的](只|就|不过)是[一]个[普通的|不明真相的]吃瓜群众[而已|罢了|啦|啊] |
在这里,小括号用来表示必选内容,也就是语料里一定会出现的部分,中间用竖线隔开,表示并列,然后那些对句子整体的意思没有太大影响的部分,我们就用方括号包覆起来,表示可选。比如修饰词和语气词。
这一条 grammar 它能匹配的语料就很多了,而且写法也比较容易,但是如果我们要并列的内容比较多的时候,grammar 会变得很长,看起来很累赘,这时候,我们可以采用另一种方法来让它变得比较简洁。就是添加 rule 。
二、添加rule
我们来把语料里并列的那一些部分编辑成 rule 。之前也提到过,rule 就是我们用来定义语句片段的匹配规则,这些语句片段可以是同义词集合、短语,也可以是 rule、slot、template。通常情况下,如果一些词它经常被重复使用我们就尽量把它做成 rule ,来方便其他的 grammar 引用。
Rule: <me>:我|俺 <转折词>:只|就|不过|仅仅 <形容词>:普通的|一般的|不明真相的|看戏的 <endyuqi>:而已|罢了|来着|啦|啊|呀 |
然后把这些 rule ,引入到我们 grammar 里相应的位置。Grammar 就可以这么写:<me>[真的]<转折词>是[一]个[<形容词>]吃瓜群众[<endyuqi>]
这样子的话,我们即使在后期为 rule 添加其他的内容,我们的 grammar 也依然很简洁。
当然,上面这两种语法表达都是针对:我只是个吃瓜群众这个句子来的,如果我们的这一句语料发生了更大的变化,内容有了更多扩充的时候,要怎么办呢。
三、添加 any 规则
来看下面这些语料:
她不过是个吃瓜群众 张三就是个什么也不知道的吃瓜群众 大家都是不明真相前来围观的吃瓜群众 我只是个不明真相的喝水吃饼吃瓜群众 …… |
可以发现,这四个句子都不一样,虽然它有相同的部分:是个吃瓜群众。但是通过观察可以发现,它不同的部分变化规律不明显,像前面的人称词,还有中间的修饰词,涉及的内容太多,不太适合做成 rule,那么我们就可以用 any 规则。它可以匹配任意的内容。
Any规则: <any:1|10> <any:1|20> |
那么,grammar 就可以这么写:<any:1|10>是[[一]个][<any:1|15>]吃瓜群众[<endyuqi>]
到这里,我们的这一条语料:我只是个吃瓜群众,三种不同的语法表达就都编辑好了。
四、总结
这三种语法都能匹配语料,但是各有区别。第一种语法比较简单,使用方便,适合刚开始接触语法的用户。但是缺点也很明显,并列内容太多就会导致 grammar 变得很累赘。第二种语法就可以很好的避免这种情况,而且我们可以在不改变 grammar 句子结构的情况下,为 rule 添加其他的内容,来扩大我们 grammar 的匹配范围,有利于我们后期进行维护。第三种语法,比起前面两种,能够匹配的范围又要大一些。any 规则可以匹配任意内容,如果我们的语料里有些部分不太适合编辑成 rule ,就可以采用这种形式。
五、添加答案
在编辑好了语法之后,为 grammar 添加几条合适的答案:
1、好巧哦,我也是呢。
2、有缘千里来相会,大家同是吃瓜人。
3、哈哈哈,这个世界太复杂,安心当个吃瓜群众也不错。
以上这些就是这节课的全部内容,感谢大家观看,我们下节课再见。