2016-11-04 106 views
0

NLTK具有对棕色语料库的接口和POS标签和它可以这样进行访问:如何简单地提取布朗语料库NLTK中的单词和标签?

>>> from nltk.corpus import brown 
>>> brown.tagged_sents() 
[[(u'The', u'AT'), (u'Fulton', u'NP-TL'), (u'County', u'NN-TL'), (u'Grand', u'JJ-TL'), (u'Jury', u'NN-TL'), (u'said', u'VBD'), (u'Friday', u'NR'), (u'an', u'AT'), (u'investigation', u'NN'), (u'of', u'IN'), (u"Atlanta's", u'NP$'), (u'recent', u'JJ'), (u'primary', u'NN'), (u'election', u'NN'), (u'produced', u'VBD'), (u'``', u'``'), (u'no', u'AT'), (u'evidence', u'NN'), (u"''", u"''"), (u'that', u'CS'), (u'any', u'DTI'), (u'irregularities', u'NNS'), (u'took', u'VBD'), (u'place', u'NN'), (u'.', u'.')], [(u'The', u'AT'), (u'jury', u'NN'), (u'further', u'RBR'), (u'said', u'VBD'), (u'in', u'IN'), (u'term-end', u'NN'), (u'presentments', u'NNS'), (u'that', u'CS'), (u'the', u'AT'), (u'City', u'NN-TL'), (u'Executive', u'JJ-TL'), (u'Committee', u'NN-TL'), (u',', u','), (u'which', u'WDT'), (u'had', u'HVD'), (u'over-all', u'JJ'), (u'charge', u'NN'), (u'of', u'IN'), (u'the', u'AT'), (u'election', u'NN'), (u',', u','), (u'``', u'``'), (u'deserves', u'VBZ'), (u'the', u'AT'), (u'praise', u'NN'), (u'and', u'CC'), (u'thanks', u'NNS'), (u'of', u'IN'), (u'the', u'AT'), (u'City', u'NN-TL'), (u'of', u'IN-TL'), (u'Atlanta', u'NP-TL'), (u"''", u"''"), (u'for', u'IN'), (u'the', u'AT'), (u'manner', u'NN'), (u'in', u'IN'), (u'which', u'WDT'), (u'the', u'AT'), (u'election', u'NN'), (u'was', u'BEDZ'), (u'conducted', u'VBN'), (u'.', u'.')], ...] 

brown.tagged_sents()是列表,列表中的每个元素是一个句子和句子的列表第一个元素是单词的元组,第二个元素是POS标签。

我们的目标是处理brown语料库,以便我得到一个像这样的文件,其中每行是制表符分隔的句子,其中第一列包含由空格分隔的句子的单词,第二列包含相应的标记由空格隔开:

The Fulton County Grand Jury said Friday an investigation of Atlanta's recent primary election produced `` no evidence '' that any irregularities took place . AT NP-TL NN-TL JJ-TL NN-TL VBD NR AT NN IN NP$ JJ NN NN VBD `` AT NN '' CS DTI NNS VBD NN . 
The jury further said in term-end presentments that the City Executive Committee , which had over-all charge of the election , `` deserves the praise and thanks of the City of Atlanta '' for the manner in which the election was conducted . AT NN RBR VBD IN NN NNS CS AT NN-TL JJ-TL NN-TL , WDT HVD JJ NN IN AT NN , `` VBZ AT NN CC NNS IN AT NN-TL IN-TL NP-TL '' IN AT NN IN WDT AT NN BEDZ VBN . 
The September-October term jury had been charged by Fulton Superior Court Judge Durwood Pye to investigate reports of possible `` irregularities '' in the hard-fought primary which was won by Mayor-nominate Ivan Allen Jr. . AT NP NN NN HVD BEN VBN IN NP-TL JJ-TL NN-TL NN-TL NP NP TO VB NNS IN JJ `` NNS '' IN AT JJ NN WDT BEDZ VBN IN NN-TL NP NP NP . 

我已经试过这样:

from nltk.corpus import brown 
tagged_sents = brown.tagged_sents() 
fout = open('brown.txt', 'w') 
fout.write('\n'.join([' '.join(sent)+'\t'+' '.join(tags) 
         for sent, tags in 
         [zip(*tagged_sent) for tagged_sent in tagged_sents]])) 

和它的作品,但必须有一个更好的方式来Munge时间语料库。

回答

0
data = [[(u'The', u'AT'), (u'Fulton', u'NP-TL'), (u'County', u'NN-TL'), (u'Grand', u'JJ-TL'), (u'Jury', u'NN-TL'), (u'said', u'VBD'), (u'Friday', u'NR')]] 

# takes the data in and throws it in a loop 
def data_printer(data): 
    # adds each element to this string 
    string = '' 
    for dat in data: 
     for da in dat: 
      string += ' ' + da[0] 
    print string 
    return string 

data_printer(data) 

有一个更好的方法来通过有序对做到这一点。这是一种无进口的简约方式。

+0

您错过了标签; P在问题中向右滚动所需的输出。 – alvas

+0

另外,它不应该打印,但写入罚款=) – alvas

+0

好..我只是得到了它的一个样本。 :) –

相关问题