Я пытаюсь использовать nltk наивный классификатор для классификации жанров фильмов. Однако я получаю некоторые странные результаты. В настоящее время это только догадки, основанные на количестве введенного жанра.NLTK Наивные заливы Классификатор странных результатов
Если я ввожу два боевика и одну комедию, каждая догадка будет действовать. Естественно, я хочу, чтобы на основе введенного текста:
def RemoveStopWords(wordText):
keep_list = []
for word in wordText:
if word not in wordStop:
keep_list.append(word.lower())
return set(keep_list)
def getFeatures(element):
splitter=re.compile('\\W*')
f = {}
plot = [s for s in RemoveStopWords(splitter.split(element['imdb']['plot']))
if len(s)>5 and len(s) < 15]
for w in plot:
f[w]= w
return f
def FindFeaturesForList(MovieList):
featureSet = []
for w in MovieList:
print w['imdb']['title']
try:
for genre in w['imdb']['genres']:
featureSet.append((getFeatures(w), genre))
except:
print "Error when retriving genre, skipping element"
return featureSet
featureList = FindFeaturesForList(trainset)
cl = nltk.NaiveBayesClassifier.train(featureList)
Так что, когда я делаю cl.classify (фильм) возвращает наиболее часто введенный жанр, что я делаю не так?
Использование двух комедий и один боевик кажется слишком маленьким обучающим множество. Пробовали ли вы тренировать классификатор с * как минимум * несколькими сотнями фильмов? – unutbu
Да, я пробовал несколько сотен, но, глядя на данные, предположение является эксклюзивным, исходя из количества жанров, а не введенного текста. – TheTango
Можете ли вы опубликовать 'cl.show_most_informative_features (5)'? – unutbu