【问题标题】:Text tagging / Classification for automation用于自动化的文本标记/分类
【发布时间】:2019-05-22 08:23:31
【问题描述】:
我有机会自动化和使用机器学习来腾出时间
在 DevOps jerkin 自动化中,我需要标准化阶段名称,但是在企业中有 2000 多个项目的情况下,一些阶段名称是基于项目名称自动框起来的,存储库名称可能不符合标准。有一份报告提取了所有这些未分类的新管道阶段名称并使用模式匹配,手动将它们分类到不同的桶中。
当我尝试使用 sci kit 时,大多数算法不接受字符串作为输入。
该组中的任何人都可以指出要使用的正确算法和示例
【问题讨论】:
标签:
python
machine-learning
classification
【解决方案1】:
这是机器学习中的一个常见问题,许多算法假设您已将分类列更改为数值列。
首先,您可以使用LabelEncoder
使用 0 和 n_classes-1 之间的值对标签进行编码。
此方法会将您的字符串转换为整数。
然后,您需要考虑这种方法是否相关。通常不是,因为您的不同单词之间会有层次结构,并且算法可能认为单词 5 大于单词 4(事实并非如此)。
您可以使用OneHotEncoder(在使用 LabelEncoder 之后,因为 OneHotEncoder 对数字列进行编码)。
这会为每个类别创建一个二进制列,并返回一个稀疏矩阵或密集数组。
请注意,OneHotEncoder 会使特征数量成倍增加,这可能会成为训练模型的问题。
您也可以使用get_dummies from pandas 代替LabelEncoder 和OneHotEncoder。请参阅比较这两种方法的article。
很多 NLP 算法也使用“bag of words”模型。查看NLTK 库,它可以帮助您解决问题。