我想将 svmstruct 用于我的命名实体识别任务。我对每个标记的一些功能不是数字格式(主要是文本格式,例如 n-char 词缀或单词形状,...)。由于 svmstruct 的输入格式与 svmlight 格式相同,我想知道我应该如何将这些文本特征转换为数字特征?
所有最好的
我想将 svmstruct 用于我的命名实体识别任务。我对每个标记的一些功能不是数字格式(主要是文本格式,例如 n-char 词缀或单词形状,...)。由于 svmstruct 的输入格式与 svmlight 格式相同,我想知道我应该如何将这些文本特征转换为数字特征?
所有最好的
基本上,您需要将文本数据编码为二进制类别。
例如,假设您有数据
affix shape ============== ing lower initcap ed allcaps
您要发送给 svmstruct 的内容是这样的:
affix_ing:1 shape_lower:1 shape_initcap:1 affix_ed:1 shape_allcaps
现在您不能将单词作为列标识符,但 svmstruct 使用稀疏格式,因此您可以使用广泛分开的列号,只要它们是唯一的。
这是散列函数的一个很好的应用。因此,该技术是动态组成列 ID,并对离散数据进行虚拟编码。
hash(colName + colValue) => 1
根据您的数据,您可能不需要 colName。colName 是否可能与 colValue 发生冲突?
您可以使用诸如 murmur hash 或 cityhash 之类的哈希函数来获得具有快速计算和低冲突的巨大空间。