ОК. Я использую разные теги для пометки текста. По умолчанию, униграмма, биграмма и триграмма.
Я должен проверить, какая комбинация из трех из этих четырех тегеров является наиболее точной.
Чтобы сделать это, я должен просмотреть все возможные комбинации, которые я делаю так:
permutaties = list(itertools.permutations(['default_tagger','unigram_tagger',
'bigram_tagger','trigram_tagger'],3))
resultaten = []
for element in permutaties:
resultaten.append(accuracy(element))
так что каждый элемент представляет собой кортеж из трех меток типа, например: ('default_tagger', 'bigram_tagger', 'trigram_tagger')
В функции точности мне теперь нужно динамически вызывать три сопутствующих метода каждого тегера, проблема в следующем: я не знаю, как это сделать.
Функции тегера следующие:
unigram_tagger = nltk.UnigramTagger(brown_train, backoff=backofff)
bigram_tagger = nltk.BigramTagger(brown_train, backoff=backofff)
trigram_tagger = nltk.TrigramTagger(brown_train, backoff=backofff)
default_tagger = nltk.DefaultTagger('NN')
Итак, для примера код должен выглядеть так:
t0 = nltk.DefaultTagger('NN')
t1 = nltk.BigramTagger(brown_train, backoff=t0)
t2 = nltk.TrigramTagger(brown_train, backoff=t1)
t2.evaluate(brown_test)
Так что, по сути, проблема в том, как перебрать все 24 комбинации этого списка из 4 функций.
Какие-нибудь Мастера Python, которые могут мне помочь?