NLP中的POS标记

时间:2019-05-12 03:43:01

标签: python-3.x nlp

我正在NLTK Python中学习一门课程,该课程在“文本语料库”上存在动手问题(在Katacoda上),并且不接受下面提到的我的解决方案。长期以来一直困扰于此问题。需要完成此动手操作才能继续进行序言。

问题定义

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

  3. 生成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')])

3 个答案:

答案 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')])

尝试一下...