【发布时间】:2021-07-03 04:16:52
【问题描述】:
我用 Python 制作了一个 Keras 模型,它可以对字符串输入是公司、个人还是地址进行分类。 模型在 12000 个字符串数据上进行训练。每个输入有 1 到 5 个单词。 这是模型:
transformerVectoriser = ColumnTransformer(transformers=[('vector char', CountVectorizer(analyzer='char', ngram_range=(3, 6), max_features = 2000), 'text'),
('vector word', CountVectorizer(analyzer='word', ngram_range=(1, 1), max_features = 4000), 'text')],
remainder='passthrough') # Default is to drop untransformed columns
features = transformerVectoriser.fit_transform(features)
model = Sequential()
model.add(Dense(100, input_dim = features.shape[1], activation = 'relu')) # input layer requires input_dim param
model.add(Dense(200, activation = 'relu'))
model.add(Dense(100, activation = 'relu'))
model.add(Dense(50, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
这些是结果:
precision recall f1-score support
company 0.97 0.92 0.95 636
person 0.93 0.97 0.95 697
address 1.00 1.00 1.00 667
accuracy 0.97 2000
macro avg 0.97 0.96 0.97 2000
weighted avg 0.97 0.97 0.97 2000
例如,如果我想使用字符串输入进行预测:
input_strs = ['Amazon Inc', 'Jeff Bezos', 'Elon Musk', '24 Avenue Paris']
将其分类为:
['company', 'person', 'person', 'address']
该模型运行良好,但我注意到有时如果我输入一个字符串,例如,代表电话号码或只是一些随机数字或一些随机字符串,它会犯很大的错误。 例如,如果我输入:
['+435 542 425 54 24', '426266245', 'as long as the']
我得到了结果:
['address', 'company', 'address']
我的问题是,我该如何处理一些看不见的课程? 如果字符串输入不满足一些可以正确分类的基本“形式”,我该如何处理?
【问题讨论】:
标签: python machine-learning keras