2015-12-27 53 views
2

我一直在試圖從褐色語料庫得到所有的名詞,verbs..etc分開,所以我試圖用代碼如何從棕色語料庫中獲得動詞,名詞,形容詞?

brown.all_synsets('n') 

但顯然這個代碼的工作,只有WORDNET。順便說一句,我正在使用python 3.4。


EDITED

@alvas答案的工作。但是,當我隨機使用它會得到一個錯誤。看一看。

nn = {word for word, pos in brown.tagged_words() if pos.startswith('NN')} 
print(nn) 

輸出

{'such', 'rather', 'Quite', 'Such', 'quite'} 

但是當我使用

random.choice(nn) 

我得到

Traceback (most recent call last): 
    File "/home/aziz/Desktop/2222.py", line 5, in <module> 
    print(random.choice(NN)) 
    File "/usr/lib/python3.4/random.py", line 256, in choice 
    return seq[i] 
TypeError: 'set' object does not support indexing 
+0

歡迎來到StackOverflow。請不要發佈答覆回答其他答案,而是編輯您的問題,請參閱http://stackoverflow.com/help/how-to-answer – alvas

+0

這是如何在布朗標記單詞,沒有選擇,只能接受標籤,因爲他們大多被視爲金/銀標準(即地面真相)。 – alvas

+0

你確定你在輸出中'比較'嗎?我沒=( – alvas

回答

2

TL; DR

​​

更長

迭代通過.tagged_words()功能,並且將返回('word', 'POS')元組的列表:

>>> from nltk.corpus import brown 
>>> brown.tagged_words() 
[(u'The', u'AT'), (u'Fulton', u'NP-TL'), ...] 

請閱讀本章知道如何NLTK全集API作品:http://www.nltk.org/book/ch02.html

The n,對它進行列表理解並保存一組(即唯一列表)的名詞標籤標記的單詞,例如, NN, NNS, NNP, etc.

>>> {word for word, pos in brown.tagged_words() if pos.startswith('NN')} 

注意輸出可能無法是你所期望的,因爲字標記有語法和句法名詞POS是沒有必要的語義參數/實體


另外,我不認爲你提取的詞是正確的。雙重檢查列表:

>>> nouns = {word for word, pos in brown.tagged_words() if pos.startswith('NN')} 
>>> 'rather' in nouns 
False 
>>> 'such' in nouns 
False 
>>> 'Quite' in nouns 
False 
>>> 'quite' in nouns 
False 
>>> 'Such' in nouns 
False 

輸出到列表理解:http://pastebin.com/bJaPdpUk


爲什麼random.choice(nn)失敗時nn是一組?

random.choice()的輸入是一個序列(參見https://docs.python.org/2/library/random.html#random.choice)。

random.choice(SEQ)

返回從非空序列 SEQ隨機元素。如果seq爲空,則引發IndexError。

和Python的序列類型在Python是

由於set ISN '一個序列,你會得到IndexError

+0

請爲此代碼片段添加一些支持文本,說明爲什麼它可以解決OP的問題。 – APC

+0

Sure @APC,抱歉早餐已經準備好了早餐,所以做了一個快速的回答 – alvas

+2

只是想你想知道,因爲這出現在低質量的帖子評論當你做早餐時,我喜歡我的雞蛋陽光明媚的一面朝上 :) – APC

相關問題