2012-08-05 49 views
2

我有一個龐大的論壇數據庫。爲了NLP的目的,我需要從數據庫中提取語料庫。提取步驟具有參數(例如FTS查詢),並且我希望將帶參數元數據的語料庫保存在文件系統上。使用python序列化語料庫

一些語料庫會有幾十兆字節大。使用元數據保存文件的最佳方式是什麼,這樣我就可以讀取元數據而無需加載整個文件。

我正在使用以下可能相關的技術:PyQt,Postgres,Python,NLTK。

一些注意事項:

  1. 我想語料庫從一個重量級的數據庫離婚。
  2. 我不想使用sqlite,因爲元數據結構非常簡單。
  3. 酸洗不允許我可以告訴的部分非序列化。
  4. 我不希望有一個單獨的元數據文件。
  5. 我有協議緩衝區的經驗,但又似乎太過重。

我想我可以pickle元數據字符串,並有文件的第一行代表元數據。這似乎是我認爲最簡單的方式。也就是說,如果pickle格式是ASCII安全的。

+0

是的,默認(0)協議的pickle格式是ASCII安全的。 – 2012-08-05 15:46:53

+0

是否有太多元數據存儲在文件路徑中? – 2012-08-06 19:27:10

+0

目前不在,但它不是一個面向未來的解決方案。 – 2012-08-07 15:57:58

回答

2

在NLTK的術語中,「語料庫」是整個集合,可以由多個文件組成。聽起來就像你可以使用結構化格式將每個論壇會話(你將稱爲「語料庫」)存儲到一個單獨的文件中,該格式允許您將元數據存儲在文件的開頭。

NLTK通常使用XML來達到這個目的,但它並不難於推出自己的讀取文件頭的語料庫讀取器,然後推遲到PlainTextCorpusReader或任何最適合您文件格式的標準讀取器。如果使用XML,則還需要擴展XMLCorpusReader並提供方法sents(),words()等。

+0

這可能是我想要的。我會盡力找到XMLCorpusReader的文檔。 – 2012-08-07 15:58:55

+0

查看模塊'xmldocs'('nltk/corpus/reader/xmldocs.py')的文檔。 'XMLCorpusReader'類可以將所有節點內容作爲文本提供給你;但是你的方法可以在內部使用'XMLCorpusView',它允許你指定你想要的內容的元素。 – alexis 2012-08-07 16:19:20

0

爲什麼不將JSON頭添加到您的語料庫文件? 或任何其他類型的結構化格式...我現在可以想到Jekyll帖子中的YAML front matter