NLP 中的词性标注

POS Tagging in NLP

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

问题定义

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

  3. 生成brown_tagged_words的八卦并将结果存储在brown_tagged_trigrams中。

4.Forbrown_tagged_trigrams的每一个八卦,确定每个字对应的标签。这会产生一个元组列表,其中每个元组包含文本中出现的 3 个连续单词的 pos 标签。将结果存储在 brown_trigram_pos_tags.

5.Determinebrown_trigram_pos_tags的频数分布,结果存入brown_trigram_pos_tags_freq。 6.Print八卦出现的次数('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')])

试试这个:-

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

你会得到结果: 43271

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

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

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

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

试试这个...