CRF实现词性标注(2)——python代码说明

CRF原理说明请查看上篇博文
参考链接同上篇博文

  1. 定义CRF中的初始变量,包括特征函数, 特征函数的权重, 词性标注的label也就是状态序列,以及label_id字典。
    def __init__(self, feature_functions, labels):
        """
        :param feature_functions: 输入的特征函数
        :param labels: 输入的训练数据标注
        """
        # 特征函数
        self.ft_func = feature_functions
        # 特征函数的权值
        self.w = np.random.rand(len(self.ft_func))
        # labels
        self.labels = labels
        # label_id 的字典
        self.label_id = {
   value: idx for idx, value in enumerate(self.labels)}

  1. 定义由输入序列得到所有特征的函数。
    也就是对于输入的序列X= {x1, x2,…x3},得到每一个元素 x i x_{i} xi ( y j − 1 , y j ) (y_{j-1},y_{j}) yj1,yj组合的所有特征 f k f_{k} fk

(1)先遍历所有的特征函数,得到组合 ( y j − 1 , y j ) (y_{j-1},y_{j}) yj1,yj的所有特征函数;
(2)遍历y也就是labels,得到 j-1时刻 y j − 1 y_{j-1} yj1的下一时刻的所有可能 y
(3)遍历labels得到所有可能的 y j − 1 y_{j-1} yj1
(4)输入序列的长度为T, 得到每一个时刻 t ∈ ( 0 , T ) t \in(0,T) t0T的所有特征。

    def get_all_features(self, x_vec)
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值