1

我正在学习 NLTK Python 课程,该课程在“Text Corpora”上有一个动手问题(在 Katacoda 上),它不接受我下面提到的解决方案。长期以来一直被困在这个问题上。需要完成此动手操作才能在课程中进行前言。

问题防御

  1. 导入文本语料库 brown。
  2. 从语料库棕色中提取标记词列表。将结果存储在 brown_tagged_words

  3. 生成 brown_tagged_words 的三元组并将结果存储在 brown_tagged_trigrams 中。

4.对于 brown_tagged_trigrams 的每个 trigram,确定与每个单词关联的标签。这会产生一个元组列表,其中每个元组包含 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')])
4

3 回答 3

1

brown_trigram_pos_tags = [(w1[1],w2[1],w3[1]) for w1,w2,w3 in brown_tagged_trigrams]

这里将 W2 更改为 w3,这将给出大约 8 的值

于 2019-09-22T06:49:22.160 回答
0

尝试这个:-

('IN', 'AT', 'AT')

你会得到结果:43271

你得到 0 因为没有出现 ('JJ', 'NN', 'IN')。

于 2019-05-13T09:35:57.267 回答
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')])

尝试这个...

于 2020-05-24T14:38:50.900 回答