У меня есть следующие два комплекта. Идея состоит в том, чтобы иметь возможность классифицировать новостные статьи на основе нескольких предоставленных мне метатегов. Например, когда я получаю статью, в которой есть «Судья» «5 лет», ее следует классифицировать как криминальную историю.
train = [
('Honda', 'cars'),
('Ford', 'cars'),
('Volkswagen', 'cars'),
('Courthouse', 'crime'),
('Police', 'crime'),
('Taurus', 'cars'),
('Chevrolet', 'cars'),
('Sonic', 'cars'),
('Judge', 'crime'),
('Jail', 'crime')
]
test = [
('Porsche', 'cars'),
('Toyota', 'cars'),
('Arrest', 'crime'),
('Prison', 'crime')
]
cl = NaiveBayesClassifier(train)
Проблема в том, что когда я запускаю это:
for a, b in test:
print a, cl.classify(a)
Он классифицирует все как "автомобили"
Я уверен, что здесь мне не хватает семантического сравнения сходства. Я попытался использовать WordNet через текстовый блоб.
я побежал
word = Word("Volkswagen")
for each in word.definitions:
print each
но это не дает мне никаких результатов.
Теперь вопрос:
Как мне заставить WordNet сказать, что Volkswagen — это автомобиль, интегрировать это в классификатор, чтобы он понял, что Hyndai также является автомобилем, и правильно его классифицировал?