НЛП | Вероятные теги Word
nltk.probability.FreqDist используется для поиска наиболее распространенных слов путем подсчета частот слов в корпусе банка деревьев. Класс ConditionalFreqDist создан для слов с тегами, где мы подсчитываем частоту каждого тега для каждого слова. Эти подсчеты затем используются для построения модели часто используемых слов в качестве ключей с наиболее частым тегом для каждого слова в качестве значения.
Код # 1: создание функции
# Loading Libraries from nltk.probability import FreqDist, ConditionalFreqDist # Making function def word_tag_model(words, tagged_words, limit = 200 ): fd = FreqDist(words) cfd = ConditionalFreqDist(tagged_words) most_freq = (word for word, count in fd.most_common(limit)) return dict ((word, cfd[word]. max ()) for word in most_freq) |
Код # 2: Использование функции с UnigramTagger
# loading libraries from tag_util import word_tag_model from nltk.corpus import treebank from nltk.tag import UnigramTagger # initializing training and testing set train_data = treebank.tagged_sents()[: 3000 ] test_data = treebank.tagged_sents()[ 3000 :] # Initializing the model model = word_tag_model(treebank.words(), treebank.tagged_words()) # Initializing the Unigram tag = UnigramTagger(model = model) print ( "Accuracy : " , tag.evaluate(test_data)) |
Выход :
Точность: 0,559680552557738
Код # 3: давайте попробуем цепочку отката
# Loading libraries from nltk.tag import UnigramTagger from nltk.tag import DefaultTagger default_tagger = DefaultTagger( "NN" ) likely_tagger = UnigramTagger( model = model, backoff = default_tagger) tag = backoff_tagger(train_sents, [ UnigramTagger, BigramTagger, TrigramTagger], backoff = likely_tagger) print ( "Accuracy : " , tag.evaluate(test_data)) |
Выход :
Точность: 0,8806820634578028
Примечание: цепочка отката увеличивает точность. Мы можем улучшить этот результат, эффективно используя класс UnigramTagger.
Код # 4: ручное отключение обученных тегировщиков
# Loading libraries from nltk.tag import UnigramTagger from nltk.tag import DefaultTagger default_tagger = DefaultTagger( 'NN' ) tagger = backoff_tagger(train_sents, [ UnigramTagger, BigramTagger, TrigramTagger], backoff = default_tagger) likely_tag = UnigramTagger(model = model, backoff = tagger) print ( "Accuracy : " , likely_tag.evaluate(test_data)) |
Выход :
Точность: 0,8824088063889488
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.