Я пытаюсь классифицировать имена сущностей на военные, правительственные или другие. Например, «Армия США» -> военные; "Министерство образования" -> правительство; а все остальное относится к категории «другие». Что я обнаружил, так это то, что невероятно трудно классифицировать «другое», потому что в словах так много различий, и они, похоже, пересекаются с классом «правительства».
Я читал о каскадных двоичных классификаторах (https://stats.stackexchange.com/questions/318520/many-binary-classifiers-vs-single-multiclass-classifier), которые я хотел бы опробовать, так как это было бы очень полезно в моем случае, потому что классификаторы для обнаружения "военных" и " правительство "НАМНОГО сильнее, чем одно для другого. Как я могу go сделать это?
Пример кода того, что я сделал:
pipeline = Pipeline([
('vectorizer', FeatureUnion([
('word_vectorizer', TfidfVectorizer(sublinear_tf=1,
smooth_idf=1,
use_idf=1,
min_df=3,
stop_words = 'english',
strip_accents='unicode',
analyzer='word',
token_pattern=r'\w{1,}',
ngram_range=(1,3),
dtype=np.float32,
max_features=8000)),
('char_vectorizer', TfidfVectorizer(sublinear_tf=True,
smooth_idf=1,
use_idf=1,
strip_accents='unicode',
min_df=3,
token_pattern=r'\w{1,}',
analyzer='char',
ngram_range=(2,6),
dtype=np.float32,
max_features=5000))
])),
('classifier', OneVsRestClassifier(SVC(class_weight=None,
C=1000,
gamma=0.001,
kernel='rbf',
)))
])