2012-09-19 32 views
1

我正嘗試在結構化數據和NLTK之間創建一個接口。 NLP圖書館通常會使用一堆單詞,因此我需要將我的結構化數據轉換爲單詞。基於Python間隔的稀疏容器

我需要將單詞的偏移量與其元數據相關聯。因此,我最好的辦法是擁有某種容器,它將範圍保存爲鍵(允許嵌套範圍)並可以檢索所有元數據(多個如果單詞偏移量是嵌套範圍的一部分)。

我可以拾取什麼樣的代碼來實現這種效率(即數據的稀疏表示)?高效,因爲我的全球語料庫將至少有幾百兆字節。

注:

  • 我連載結構的論壇帖子。其中將包括帶有部分引號的帖子。我想知道一個詞屬於哪個主題,並且天氣是報價或用戶文本。隨着我的工作進展,可能會有額外的元數據。請注意,屬於引用的單詞是指嵌套元數據的含義,因此該單詞屬於引用的一部分,屬於用戶創建的帖子。

  • 我知道一個人可以在NLTK中標記單詞我沒有看過它,如果它有可能做我想要的那種方式請評論。但我仍在尋找最初的方法。

  • 有可能是東西numpy,可以解決我的問題,在現在看

編輯

輸入數據過於複雜,撕裂了和崗位。我找到了我正在尋找的東西http://packages.python.org/PyICL/。我需要談論間隔時間而不是範圍:DI已經廣泛地使用了boost,但是使得依賴性讓我有點不安(可悲的是,我在PyICL :()中有編譯器錯誤:

現在的問題是:人知道的間隔容器庫或數據結構,可以在稀疏的方式使用索引嵌套的間隔,或者把不同提供類似的語義boost.icl

+1

嘗試發佈輸入數據和輸出數據結構的示例 - 然後可能有人可以幫助您連接點。問題是目前狀態下的含糊不清。 – twneale

回答

0

如果你不想使用PyICLboost.icl相反的依靠一個專門的庫你可以使用sqlite3來完成這項工作?如果你使用in0memory版本,它仍然會比boost.icl慢幾個數量級(來自經驗codi ng其他數據結構vs sqlite3),但應該比在Python容器之上使用C++ std::vector樣式方法更有效。

您可以使用兩個整數並在where子句中有date_type_low < offset < date_type_high謂詞。根據你的表結構,這將返回嵌套/重疊範圍。