我正在NLTK Python中学习一门课程,该课程在“文本语料库”上存在动手问题(在Katacoda上),并且不接受下面提到的我的解决方案。长期以来一直困扰于此问题。需要完成此动手操作才能继续进行序言。
从语料库中提取标记单词的列表。将结果存储在brown_tagged_words
生成brown_tagged_words的三字组,并将结果存储在brown_tagged_trigrams中。
4。对于brown_tagged_trigrams的每个三字组,确定与每个单词相关的标签。这将生成一个元组列表,其中每个元组都包含3个连续单词的pos标签,以文本形式出现。将结果存储在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')])
答案 0 :(得分:1)
brown_trigram_pos_tags = [(w1[1],w2[1],w3[1]) for w1,w2,w3 in brown_tagged_trigrams]
将W2更改为w3,这将得到大约8的值
答案 1 :(得分:0)
尝试一下:-
('IN', 'AT', 'AT')
您将得到结果: 43271
由于没有出现('JJ','NN','IN'),所以得到0。
答案 2 :(得分:0)
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')])
尝试一下...