2012-05-29 69 views
0

創建自定義nltk語料庫閱讀了很多帖子後,我仍然有在nltk中製作自定義語料庫的probs。我有一個標記句子的文本文件,每個項目的形式...字/標籤的字符串。我想用這些東西來訓練一個標記器。我正在嘗試使用名爲train-tagger的nltk包,它可以訓練各種類型的標籤。 2個問題。 1)可以訓練標記器使用文本文件作爲輸入還是僅使用nltk語料庫對象? 2)如果只使用語料庫,如何從文本文件創建一個?我試了下面的代碼來創建一個語料庫...從標記的文本文件

import nltk 
from nltk.corpus import PlaintextCorpusReader 
corpus_root = './' 
newcorpus = PlaintextCorpusReader(corpus_root, '.*') 
print newcorpus.raw('IOBHarrisonsTraining.txt') .... this is my tagged text file 

似乎工作,但我找不到輸出。應該有一個語料庫在該代碼運行的文件夾中創建,或者在nltk_data/corpora中創建,但沒有找到。在語料庫模塊中是否有一些方法可以保存我創建的'newcorpus'?然後可以用它作爲inpupt來訓練標記器?另外,我是否應該使用標記句子文件作爲PlaintextCorpusReader的輸入或者僅僅是一個未標記的句子集?

回答

3

NLTK語料庫存儲爲文本文件的集合。 NLTK語料庫功能被組織爲各種文件格式的許多閱讀器類。你會在nltk.corpus.reader中找到它們。 nltk.corpus模塊還提供nltk_data中的語料庫快捷方式;他們只是通過語料庫文件的路徑啓動適當的閱讀器類。但是新的語料庫不會神奇地作爲nltk.corpus中的對象出現;閱讀你自己的,實例化適當的閱讀器類。例如,在NLTK /胼/ 初始化的.py,你會發現如下:

gutenberg = LazyCorpusLoader(
    'gutenberg', PlaintextCorpusReader, r'(?!\.).*\.txt') 

PlaintextCorpusReader從nltk.corpus.reader,在所有其他讀取器類可以發現進口。您可以直接使用它而不依賴於LazyCorpusReader;檢查文檔。

但確實沒有支持在各種支持的格式中編寫語料庫。要做到這一點,找到一個類似於你的語料庫,並模仿它的格式。然後,您可以使用相同的閱讀器來閱讀您的語料庫。 (例如,布朗語料庫顯示它由格式字/標籤中的空格分隔標記組成)