条件随机场简介

本文翻译自: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
}

 

comparison
#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 }

 

posted @ 2013-12-12 23:16  dxdxddx  阅读(364)  评论(0)    收藏  举报