簡體   English   中英

從python中的標記語料庫中提取

[英]extracting from a tagged corpus in python

嗨,我正在嘗試從帶標簽的語料庫中提取專有名詞,例如,說-從nltk帶標簽的語料庫中提取褐色,我正在嘗試提取僅帶有“ NP”標簽的單詞。

我的代碼:

  import nltk
  from nltk.corpus import brown
  f = brown.raw('ca01')
  print nltk.corpus.brown.tagged_words()
  w=[nltk.tag.str2tuple(t) for t in f.split()]
  print w

但它沒有顯示單詞,而是僅顯示

[]

樣本輸出:

    [('The', 'AT'), ('Fulton', 'NP-TL'), ...]
    []

為什么??

謝謝。

我只將f.split()..然后我得到

             [('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'), ('an', 'AT'), ('investigation', 'NN'), ('of', 'IN'), ("Atlanta's", 'NP$'), ('recent', 'JJ'), ('primary', 'NN'), ('election', 'NN'), ('produced', 'VBD'), ('``', '``'), ('no', 'AT'), ('evidence', 'NN'), ("''", "''"), ('that', 'CS'), ('any', 'DTI'), ('irregularities', 'NNS'), ('took', 'VBD'), ('place', 'NN'), ('.', '.'), ('The', 'AT'), ('jury', 'NN'), ('further', 'RBR'), ('said', 'VBD'), ('in', 'IN'), ('term-end', 'NN'), ('presentments', 'NNS'), ('that', 'CS'), ('the', 'AT'), ('City', 'NN-TL').....

從您給我們的內容中不能真正看出來,但是您是否嘗試逐步解決問題? 似乎在任何情況下t.split('/')[1] == 'NP'不會評估為True。 因此,您應該從以下開始:

  1. 打印/調試以查看f.split()到底包含什么
  2. 確保您的條件實際上是正確的,從提供給您的輸出的少量樣本來看,您在尋找的東西更多: if t.split('/')[1].startswith('NP')但可以真的不知道。

編輯:

好吧,首先,如果這是真的什么f.split()打印到你,那么你應該得到一個異常sicne t是一個元組和元組可是沒有一個split()方法。 因此,您讓我感到好奇,我安裝了nltk並下載了“棕色”語料庫並嘗試了您的代碼。 現在首先,對我來說:

  import nltk
  from nltk.corpus import brown
  f = brown.raw('ca01')
  print f.split()

  ['The/at', 'Fulton/np-tl', 'County/nn-tl', 'Grand/jj-tl', 'Jury/nn-tl', 'said/vbd', 'Friday/nr', 'an/at', 'investigation/nn', 'of/in', "Atlanta's/np$", 'recent/jj', 'primary/nn', 'election/nn', 'produced/vbd', '``/``', 'no/at', 'evidence/nn', "''/''", 'that/cs', 'any/dti', 'irregularities/nns', 'took/vbd', 'place/nn', './.', 'The/at', 'jury/nn', 'further/rbr', 'said/vbd', 'in/in', 'term-end/nn', 'presentments/nns', 'that/cs', 'the/at', 'City/nn-tl', 'Executive/jj-tl', 'Committee/nn-tl', ',/,', 'which/wdt', 'had/hvd', 'over-all/jj', 'charge/nn', 'of/in', 'the/at', 'election/nn', ',/,', '``/``', 'deserves/vbz', 'the/at', 'praise/nn', 'and/cc', 'thanks/nns', 'of/in', 'the/at', 'City/nn-tl' .....]

所以我沒有想法,你在那里做了什么才能得到結果,但這是不正確的。 現在,您可以從各組中看到,單詞的第二部分是小寫,這就是代碼失敗的原因。 因此,如果您這樣做:

w=[nltk.tag.str2tuple(t) for t in f.split() if t.split('/')[1].lower() == 'np']

這將為您提供結果:

[('September-October', 'NP'), ('Durwood', 'NP'), ('Pye', 'NP'), ('Ivan', 'NP'), ('Allen', 'NP'), ('Jr.', 'NP'), ('Fulton', 'NP'), ('Atlanta', 'NP'), ('Fulton', 'NP'), ('Fulton', 'NP'), ('Jan.', 'NP'), ('Fulton', 'NP'), ('Bellwood', 'NP'), ('Alpharetta', 'NP'), ('William', 'NP'), ('B.', 'NP'), ('Hartsfield', 'NP'), ('Pearl', 'NP'), ('Williams', 'NP'), ('Hartsfield', 'NP'), ('Aug.', 'NP'), ('William', 'NP'), ('Berry', 'NP'), ('Jr.', 'NP'), ('Mrs.', 'NP'), ('J.', 'NP'), ('M.', 'NP'), ('Cheshire', 'NP'), ('Griffin', 'NP'), ('Opelika', 'NP'), ('Ala.', 'NP'), ('Hartsfield', 'NP'), ('E.', 'NP'), ('Pelham', 'NP'), ('Henry', 'NP'), ('L.', 'NP'), ('Bowden', 'NP'), ('Hartsfield', 'NP'), ('Atlanta', 'NP'), ('Jan.', 'NP'), ('Ivan', 'NP'), ....]

現在,為將來提供參考,請仔細檢查,然后再發布與我要求的信息類似的信息,只是因為如果信息不正確,那么這將產生誤導作用,並且對嘗試幫助您的人和您自己都不起作用。 不是作為批評家,而是作為建設性意見:)

有人認為t.split('/')[1] == 'NP'總是求值為false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM