def default_tag(): #Tagging any word by assigning the most frequent tag in a given corpus tags = [] for (word, tag) in brown.tagged_words(categories='news'): tags.append(tag) most_freq_tag = FreqDist(tags).max() raw = 'I love AIT because AIT is interesting and professors here give a lot of challenging assignment' tokens = word_tokenize(raw) #Here is our tagger, it means in default, it will assign 'NN' tag to a word input default_tagger = DefaultTagger('NN') tagged = default_tagger.tag(tokens) print(tagged) score = default_tagger.evaluate(brown_tagged_sents) print(score)
from nltk.corpus import mac_morpho #Obtém as sentenças taggeadas tagged_sents = mac_morpho.tagged_sents() # Divide-as em duas partes - uma maior, para TREINAMENTO - e outra menor, para TESTE train_tsents = tagged_sents[100:] # Todas sentenças após as 100 primeiras test_tsents = tagged_sents[:100] # Pega todas sentenças até a centésima from nltk import DefaultTagger # Define um tagger padrão, que sempre etiquetará a palavra com "N" = "NOUM" = "SUBSTANTIVO", visto que é a tag que mais ocorre tagger0 = DefaultTagger("N") # Avalia a acurácia do POS-Tagger ao etiquetar as sentenças de TESTE tagger0.evaluate(test_tsents) from nltk import UnigramTagger # Define um tagger Unigram (falaremos mais sobre isso depois) # Este tagger aprende ao ver as sentenças etiquetadas na base de TREINAMENTO # Além disso, utiliza o DefaultTagger caso não saiba o que marcar tagger1 = UnigramTagger(train_tsents, backoff=tagger0) tagger1.evaluate(test_tsents) from nltk import BigramTagger # Define um tagger Bigram (falaremos mais sobre isso depois) tagger2 = BigramTagger(train_tsents, backoff=tagger1) tagger2.evaluate(test_tsents)
from pattern.text import parsetree sentence = 'The brown fox is quick and he is jumping over the lazy dog' tokens = nltk.word_tokenize(sentence) tagged_sent = nltk.pos_tag(tokens, tagset='universal') data = treebank.tagged_sents() train_data = data[:3500] test_data = data[3500:] tokens = nltk.word_tokenize(sentence) dt = DefaultTagger('NN') dt.evaluate(test_data) patterns = [ (r'.*ing$', 'VBG'), # gerunds (r'.*ed$', 'VBD'), # simple past (r'.*es$', 'VBZ'), # 3rd singular present (r'.*ould$', 'MD'), # modals (r'.*\'s$', 'NN$'), # possessive nouns (r'.*s$', 'NNS'), # plural nouns (r'^-?[0-9]+(.[0-9]+)?$', 'CD'), # cardinal numbers (r'.*', 'NN') # nouns (default) ... ] rt = RegexpTagger(patterns) rt.evaluate(test_data)