НЛП | Вероятные теги Word
nltk.probability.FreqDist используется для поиска наиболее распространенных слов путем подсчета частот слов в корпусе банка деревьев. Класс ConditionalFreqDist создан для слов с тегами, где мы подсчитываем частоту каждого тега для каждого слова. Эти подсчеты затем используются для построения модели часто используемых слов в качестве ключей с наиболее частым тегом для каждого слова в качестве значения.
Код # 1: создание функции
# Loading Librariesfrom nltk.probability import FreqDist, ConditionalFreqDist # Making functiondef 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 librariesfrom tag_util import word_tag_modelfrom nltk.corpus import treebankfrom nltk.tag import UnigramTagger # initializing training and testing settrain_data = treebank.tagged_sents()[: 3000 ]test_data = treebank.tagged_sents()[ 3000 :] # Initializing the modelmodel = word_tag_model(treebank.words(), treebank.tagged_words()) # Initializing the Unigramtag = UnigramTagger(model = model) print ( "Accuracy : " , tag.evaluate(test_data)) |
Выход :
Точность: 0,559680552557738
Код # 3: давайте попробуем цепочку отката
# Loading librariesfrom nltk.tag import UnigramTaggerfrom 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 librariesfrom nltk.tag import UnigramTaggerfrom 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.