2011-05-05 8 views
6

के साथ एन-ग्राम मॉडलिंग मुझे एन-ग्राम्स (एन शब्दों के अनुक्रम) और उनके संदर्भों (जो शब्द एन-ग्राम के पास उनके आवृत्ति के साथ दिखाई देते हैं) के संग्रह को मॉडल करने की आवश्यकता है। का मेरा विचार यह था:जावा हैशप

public class Ngram { 

    private String[] words; 
    private HashMap<String, Integer> contextCount = new HashMap<String, Integer>(); 
} 

फिर, सभी विभिन्न एन-ग्राम की गिनती के लिए, मैं एक HashMap का उपयोग करें,

HashMap<String, Ngram> ngrams = new HashMap<String, Ngram>(); 

की तरह और जब पाठ प्राप्त मैं इसे करने के लिए जोड़ सकते हैं। समस्या यह है कि, जब एन-ग्राम की संख्या 10,000 या उससे अधिक हो जाती है, तो जेवीएम हीप भर जाता है (यह अधिकतम 1.5 जीबी तक सेट होता है), और सब कुछ वास्तव में बुरी तरह धीमा हो जाता है।

क्या ऐसा करने का कोई बेहतर तरीका है, इसलिए ऐसी स्मृति खपत से बचने के लिए? इसके अलावा, संदर्भ एन-ग्राम के बीच आसानी से तुलनीय होना चाहिए, जो मुझे यकीन नहीं है कि मेरे समाधान के साथ संभव है।

+0

हम इनके लिए किस आकार को देख रहे हैं? प्रति एन-ग्राम के कितने शब्द के बारे में? साथ ही, क्या आपके पास सहायक अस्थायी स्मृति की तरह सहायक सहायक स्मृति है? यह न भूलें कि एक हैशप एक स्मृति गहन संरचना हो सकता है जबकि यह आकार बदलता है! – corsiKa

+2

आप उन एन-ग्राम्स के साथ क्या करना चाहते हैं? क्या आपने एन-ग्राम-टोकनफिल्टर का उपयोग करके ल्यूसीन पर एक नज़र डाली है? हो सकता है कि आप कार्य करने के लिए आवश्यक कार्यों को करने के लिए एक ल्यूसीन इंडेक्स का उपयोग कर सकें। फिर आप इसे अपनी मेमोरी में रख सकते हैं या इसे फाइल सिस्टम में स्टोर कर सकते हैं। – csupnig

+0

मेरे पास लगभग 50,000 समाचार लेख हैं जो मैं ngrams एकत्र कर रहा हूं। 6000 लेखों को संसाधित करने के बाद, संदर्भ के औसत आकार Ngram में हैशमैप 13 के आसपास है। मेरे पास कोई सहायक स्मृति नहीं है, कम से कम मुझे ऐसा नहीं लगता :) – Nikola

उत्तर

0

आप विशाल डेटाबेस (आमतौर पर बिगडाटा के लिए) के लिए HADOOP MapReducer का उपयोग कर सकते हैं। मैगपर का उपयोग Ngrams और combiner और मैपर में इनपुट को विभाजित करने के लिए करें जो आप उन Ngrams के साथ करना चाहते हैं।

HADOOP uses <Key,value> as like you wish to process with Hashmap. 

मुझे लगता है कि यह वर्गीकरण की तरह कुछ है। तो यह अच्छी तरह से सूट। लेकिन यह क्लस्टर की आवश्यकता है।

यदि संभव हो, तो आप हैडोप परिभाषित मार्गदर्शिका (ओरिली प्रकाशन) के साथ बेहतर शुरुआत कर सकते हैं।

0

हो सकता है कि आप पहले से ही आपकी समस्या का हल मिल गया है, लेकिन वहाँ इस पत्र पर बड़े पैमाने पर भाषा मॉडलों के लिए एक बहुत अच्छा तरीका है:

समतल ब्लूम फिल्टर भाषा मॉडल: सस्ते

पर तेरा पैमाने एलएम

http://acl.ldc.upenn.edu/D/D07/D07-1049.pdf

+0

पेपर से लिंक मर चुका है, यहां एक दर्पण है: http://www.learningace.com/doc/1789441/13c59f831d31425f78311337bd7cb4fa/d07-1049 – Crashthatch

संबंधित मुद्दे