我有一组标签(不同于传统的名称,地点,对象等)。就我而言,它们是特定于域的,我称之为:实体,动作,事件。我想将它们用作提取更多命名实体的种子。
我遇到了这篇论文:“有效的支持向量分类器用于命名实体识别”作者:Isozaki等。虽然我喜欢使用支持向量机进行命名实体识别的想法,但我仍然坚持如何对特征向量进行编码。对于他们的论文,这就是他们所说的:
例如,“总统乔治赫伯特布什说克林顿 是。 。 。 “分类如下:”总统“=其他,”乔治“= PERSON-BEGIN,“Herbert”= PERSON-MIDDLE,“Bush”= PERSON-END,“说”= 其他,“克林顿”= PERSON-SINGLE,“是” = OTHER。通过这种方式,一个人姓名的第一个单词被标记为PERSON-BEGIN。最后一个单词标记为PERSON-END。其他的话 这个名字是PERSON-MIDDLE。如果一个人的姓名用a表示 单个单词,标记为PERSON-SINGLE。如果一个词没有 属于任何命名实体,标记为OTHER。自IREX以来 发现八个NE类,单词分为33个类别。
每个样本由15个特征表示,因为每个单词有三个 功能(词性标签,字符类型和单词本身), 并且还使用前两个单词和两个后续单词 背景依赖。虽然通常会删除不常见的功能 为了防止过度配置,我们使用所有功能,因为SVM是健壮的。 每个样本由长二元矢量表示,即序列 0(假)和1(真)。例如,上面例子中的“布什” 由下面描述的向量x = x [1] ... x [D]表示。只要 15个元素是1。
x[1] = 0 // Current word is not ‘Alice’
x[2] = 1 // Current word is ‘Bush’
x[3] = 0 // Current word is not ‘Charlie’
x[15029] = 1 // Current POS is a proper noun
x[15030] = 0 // Current POS is not a verb
x[39181] = 0 // Previous word is not ‘Henry’
x[39182] = 1 // Previous word is ‘Herbert
我真的不明白这里是如何构造二元向量的。我知道我错过了一个微妙的观点,但有人可以帮助我理解这一点吗?
答案 0 :(得分:4)
他们省略了一包词汇词汇构建步骤。
基本上你已经建立了从训练集中的(非罕见)单词到指标的地图。假设您的训练集中有20k个独特单词。您将从训练集中的每个单词映射到[0,20000]。
然后,特征向量基本上是几个非常稀疏的向量的串联,其具有对应于特定单词的1和19,999 0,然后对于特定POS具有1,并且对于非活动POS具有50个其他0。这通常称为一个热编码。 http://en.wikipedia.org/wiki/One-hot
def encode_word_feature(word, POStag, char_type, word_index_mapping, POS_index_mapping, char_type_index_mapping)):
# it makes a lot of sense to use a sparsely encoded vector rather than dense list, but it's clearer this way
ret = empty_vec(len(word_index_mapping) + len(POS_index_mapping) + len(char_type_index_mapping))
so_far = 0
ret[word_index_mapping[word] + so_far] = 1
so_far += len(word_index_mapping)
ret[POS_index_mapping[POStag] + so_far] = 1
so_far += len(POS_index_mapping)
ret[char_type_index_mapping[char_type] + so_far] = 1
return ret
def encode_context(context):
return encode_word_feature(context.two_words_ago, context.two_pos_ago, context.two_char_types_ago,
word_index_mapping, context_index_mapping, char_type_index_mapping) +
encode_word_feature(context.one_word_ago, context.one_pos_ago, context.one_char_types_ago,
word_index_mapping, context_index_mapping, char_type_index_mapping) +
# ... pattern is obvious
所以你的特征向量大小为100k,对于POS和char标签只有一点额外,并且几乎完全为0,除了根据你的特征索引映射选择的位置为15个。