1

我想将 svmstruct 用于我的命名实体识别任务。我对每个标记的一些功能不是数字格式(主要是文本格式,例如 n-char 词缀或单词形状,...)。由于 svmstruct 的输入格式与 svmlight 格式相同,我想知道我应该如何将这些文本特征转换为数字特征?

所有最好的

4

1 回答 1

0

基本上,您需要将文本数据编码为二进制类别。

例如,假设您有数据

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 之类的哈希函数来获得具有快速计算和低冲突的巨大空间。

于 2014-11-26T04:22:24.157 回答