POS-теги в НЛП
Я делаю курс в NLTK Python, который имеет практическую проблему (на Katacoda) на "Text Corpora", и он не принимает мое решение, упомянутое ниже. Застрял в этой проблеме с давних пор. Необходимо завершить это практическое руководство, чтобы продолжить предисловие в курсе.
Определение проблемы
- Импортируйте текст корпуса коричневого цвета.
Извлеките список отмеченных слов из коричневого цвета. Сохранить результат в brown_tagged_words
Создайте триграммы brown_tagged_words и сохраните результат в brown_tagged_trigrams.
4. Для каждой триграммы brown_tagged_trigrams определите теги, связанные с каждым словом. В результате получается список кортежей, где каждый кортеж содержит pos-теги из 3 последовательных слов, встречающихся в тексте. Сохраните результат в brown_trigram_pos_tags.
5. Определите частотное распределение brown_trigram_pos_tags и сохраните результат в brown_trigram_pos_tags_freq. 6.Печать количества вхождений триграммы ("JJ", "NN", "IN")
Для этого я попробовал следующее решение:import nltk
from nltk.corpus import brown
brown_tagged_words = [w for w in brown.tagged_words()]
brown_tagged_trigrams = nltk.trigrams(brown_tagged_words)
brown_trigram_pos_tags = [(w1[1],w2[1],w2[1]) for w1,w2,w3 in brown_tagged_trigrams]
brown_trigram_pos_tags_freq = nltk.FreqDist(brown_trigram_pos_tags)
print(brown_trigram_pos_tags_freq[('JJ', 'NN', 'IN')])
1 ответ
brown_trigram_pos_tags = [(w1[1],w2[1],w3[1]) for w1,w2,w3 in brown_tagged_trigrams]
Здесь измените W2 на w3, это даст значение около 8
Попробуй это:-
('IN', 'AT', 'AT')
Вы получите результат: 43271
Вы получаете 0, потому что нет вхождения ('JJ', 'NN', 'IN').
import nltk
from nltk.corpus import brown
brown_tagged_words = brown.tagged_words()
brown_tagged_trigrams = [(w1,w2,w3) for w1,w2,w3 in nltk.trigrams(brown_tagged_words)]
brown_trigram_pos_tags = [(w1[1],w2[1],w2[1]) for w1,w2,w3 in
brown_tagged_trigrams]
brown_trigram_pos_tags_freq = nltk.FreqDist(brown_trigram_pos_tags)
print(brown_trigram_pos_tags_freq[('JJ', 'NN', 'IN')])
Попробуй это...