条件随机场简介
本文翻译自:http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/
引
假如你拍了贾斯汀·比伯一连串的照片,然后你想给这些照片注上标签(吃饭、睡觉、开车等),该怎么弄?
第一种方法很直接,咱不管照片前后顺序了,直接给每张照片分别分类吧. 举例说,给你一个月比伯的照片(都事先注上标签了),聪明的你一定能观察出来:早晨六点黑黝黝的照片常标注为“睡觉”,色彩明丽的照片常标注为“跳舞”,有车的照片常标注为“开车”,就这么简单.
可惜,不管照片前后顺序地分类丢失了很多信息. 假如你看到一张比伯闭着嘴的照片,光靠这张照片,你知道他是在唱歌还是在吃饭吗?如果 前一张 照片是贾斯汀·比伯正在吃饭或烹饪,那么这张照片可能是在“吃饭”;如果 前一张 照片是在唱歌跳舞,那么这张照片可能是在“唱歌”.
因此,为了提高标注标签的准确性,前后照片的标签也是要考虑的,这就是 条件随机场(Conditional Random Field) 要做的.
词性标注
让我们深入一些,用更通俗的“词性标注”问题来举个例子. 词性标注要做的是把句子中的每个词都注上词性,例如形容词、名词、介词、动词、副词、冠词等等. 举例说吧,给你个句子“Bob drank coffee at Starbucks”(鲍勃在星巴克喝咖啡),词性标签就是“Bob[名] drank[动] coffee[名] at[介] Starbucks[名]”.
让我们给“词性标注”问题建一个“条件随机场模型”吧. 和其他分类器一样,我们首先需要确定一系列所谓的特征函数 fi .
CRF的特征函数
(未完待续)
#include <utility> using namespace std; int main() { pair<int, const char*> p(42, "hello"); return 0; } |
#include <utility> using namespace std; int main() { pair<int, const char*> p(42, "hello"); return 0; } void foo() { //do nothing } |
#include <utility> using namespace std; int main() { pair<int, const char*> p(42, "hello"); return 0; }
|
1 #include <utility> 2 using namespace std; 3 4 int main() 5 { 6 pair<int, const char*> p(42, "hello"); 7 return 0; 8 }
|
欢迎转载,转载请注明出处