有没有一种训练ML模型将单词分类的方法?

时间:2018-11-08 16:52:07

标签: python tensorflow scikit-learn deep-learning coreml

我正在寻求训练ML模型,以将单词分为几大类,例如:颜色。因此,我将有一些像这样的预定义颜色分区:

let blue = ["blue", "royal", "dark blue", "light blue"]
let red = ["red", "cardinal", "dusty red", "red polka dot"]

我想要

a)为了使模型能够对存储桶中已经存在的颜色进行分类,即如果给定了“蓝色”,它将知道blue存储桶中是“蓝色”。

b)对于该模型,采用以前未见过的单词(例如“褪色的蓝色”)并将其分类到正确的存储桶中,在这种情况下,blue基于某种可信度得分。

我不确定这是否可行,我目前使用的方法是一系列if语句来进行分类,但是我想知道ML模型是否有更直观的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

您可以尝试scikit学习:

import pandas as pd
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import  LogisticRegression


data = {'blue': ["blue", "royal", "dark blue", "light blue"],
        'red': ["red", "cardinal", "dusty red", "red polka dot"]}

train_data = pd.DataFrame(data).T.reset_index()
train_data.rename(columns={'index':'target'}, inplace=True)

# predictors
X = train_data.drop('target', axis=1)
X = X.apply(lambda x: ','.join(x), axis=1)

# target
y = train_data.target

# simple toy model
clf  = Pipeline(steps=[
        ('vec',  CountVectorizer(ngram_range=(1, 2),)),
        ('clf', LogisticRegression())
])

# train a model
clf.fit(X,y)

# predict a new value
print(clf.predict(['faded blue']))

希望这会将您设置到正确的路径:)

以上结果: enter image description here