НЛП | Вероятные теги Word

Опубликовано: 24 Июля, 2021

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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.