繁体   English   中英

如何在scikit-learn中使用带有SVM的非整数字符串标签? 蟒蛇

[英]How do I do use non-integer string labels with SVM from scikit-learn? Python

Scikit-learn具有用于机器学习的相当用户友好的python模块。

我正在尝试为自然语言处理(NLP)训练SVM标记器,其中我的标签和输入数据是单词和注释。 例如,词性标注,而不是使用双/整数数据作为输入元组[[1,2], [2,0]] ,我的元组将看起来像[['word','NOUN'], ['young', 'adjective']]

任何人都可以举例说明我如何将SVM与字符串元组一起使用? 这里给出的教程/文档是针对整数/双输入的。 http://scikit-learn.org/stable/modules/svm.html

大多数机器学习算法处理作为浮动矢量的输入样本,使得一对样本之间的小(通常是欧几里德)距离 意味着 2个样本以手头问题相关的方式相似

机器学习从业者有责任找到一组好的浮动特征进行编码。 这种编码是特定于域的,因此没有通用的方法来构建可以跨所有应用程序域工作的原始数据(各种NLP任务,计算机视觉,事务日志分析......)。 这部分机器学习建模工作称为特征提取 当涉及大量手动工作时,这通常被称为特征工程

现在针对您的具体问题,可以通过使用scikit-learn的DictVectorizer特征提取辅助类来适当地编码句子中感兴趣的词周围的单词窗口的POS标签(例如,用于序列标记,例如命名实体检测)。

这不是一个scikit或python问题,而是更多关于SVM的一般问题。

SVM中的数据实例必须表示为各种标量的向量,通常是实数。 因此,必须首先将分类属性映射到某些数值,然后才能将它们包含在SVM中。

一些分类属性使得它们更自然/逻辑地被映射到某种程度上(一些松散的“度量”)。 例如,优先级字段的(1,2,3,5)映射值(“不急”,“标准递送”,“紧急”和“最紧急”)可能有意义。 另一个例子可能是颜色可以映射到3个维度,每个颜色为红色,绿色,蓝色组件等。
其他属性没有语义允许任何偶数近似逻辑映射到一个比例; 然后,必须在SVM的一个(或可能几个)维度上为这些属性的各种值分配任意数值。 理解如果SVM具有许多这些任意“非度量”维度,在正确分类项目时效率可能较低,因为与SVM工作隐含的距离计算和聚类逻辑在语义上较少相关。

这种观察并不意味着当项目包括非数字或非“度量”维度时根本无法使用SVM,但它肯定提醒一下,特征选择和特征映射通常是分类器的非常灵敏的参数,特别是SVM 。

在POS标记的特殊情况下...我恐怕此刻我很难过,标签语料库的属性使用以及如何将这些属性映射到数值。 我知道SVMTool可以使用SVM生成非常有效的POS标记器,还有一些学术论文描述了基于SVM的标记器。 但是我更熟悉标记的其他方法(例如使用HMM或最大熵)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM