2011-04-13 14 views
7

मैं PHP में एक सादे पाठ दस्तावेज़ को पार्स करने का प्रयास कर रहा हूं लेकिन मुझे यह नहीं पता कि इसे सही तरीके से कैसे किया जाए। मैं प्रत्येक शब्द को अलग करना चाहता हूं, उन्हें एक आईडी असाइन करना चाहता हूं और परिणाम JSON प्रारूप में सहेजना चाहता हूं।टेक्स्ट दस्तावेज़ को पार्स करने का सबसे अच्छा तरीका

नमूना पाठ:

"Hello, how are you (today)" 

यह वही है im पल में कर रही है:

$document_array = explode(' ', $document_text); 
json_encode($document_array); 

जिसके परिणामस्वरूप JSON

[["Hello,"],["how"],["are"],["you"],["(today)"]] 

है मैं कैसे सुनिश्चित करूँ कि रिक्त स्थान में रखा जाता है जगह और उन प्रतीकों को शब्दों के साथ शामिल नहीं किया गया है ...

[["Hello"],[", "],["how"],[" "],["are"],[" "],["you"],[" ("],["today"],[")"]] 

मुझे यकीन है कि कुछ प्रकार के रेगेक्स की आवश्यकता है ... लेकिन यह नहीं पता कि सभी मामलों से निपटने के लिए किस तरह का पैटर्न लागू करना है ... कोई सुझाव लोग?

उत्तर

2

शायद यह :?

array_filter(preg_split('/\b/', $document_text)) 

'array_filter', जिसके परिणामस्वरूप सरणी के पहले और/या अंतिम सूचकांक है, जो आपके स्ट्रिंग शुरू करने या एक शब्द सीमा (\ b देखें: http://php.net/manual/en/regexp.reference.escape.php) के साथ समाप्त होता है, तो दिखाई देगा पर खाली मूल्यों को हटा

4

यह वास्तव में वास्तव में एक जटिल समस्या है, और यह एक अकादमिक रीसेसर की उचित मात्रा के अधीन है। यह बहुत आसान लगता है (बस सफेद जगह पर विभाजित! विराम चिह्न के लिए शायद कुछ नियम ...) लेकिन आप जल्दी से मुद्दों में भाग लेते हैं। क्या एक शब्द या दो "नहीं" है? हाइफेनेटेड शब्दों के बारे में क्या? कुछ एक शब्द हो सकते हैं, कुछ दो हो सकते हैं। कई लगातार विराम चिह्नों के बारे में क्या? उद्धरण बनाम उद्धरण? इत्यादि आदि। वाक्य के अंत का निर्धारण करना भी गैर-तुच्छ है। (यह सिर्फ एक पूर्ण विराम सही है ?!)

यह समस्या tokenisation में से एक है और एक विषय है कि खोज इंजन को बहुत गंभीरता से लेते हैं। ईमानदार होने के लिए आपको अपनी पसंद की भाषा में टोकनिसर को वास्तव में देखना चाहिए।

+0

हां, एक 3 पार्टी समाधान शायद सबसे अच्छा विकल्प होगा ... मुझे यकीन है कि वे साल इन मुद्दों से निपटने के लिए अधिक काफी जटिल नियम बनाया है हूँ। कोई सुझाव? –

+1

PHP संख्या में। जावा में एक संख्या है: ओपन एनएलपी, स्टैनफोर्ड एनएलपी, ल्यूसीन टोकनिसर, और एनएलटीके पायथन में। –

+0

अजगर एक और वेब आधारित भाषा ... यह पहले इस्तेमाल नहीं किया है, लेकिन मैं मैं अजगर में पदव्याख्यायित्र लागू सकता है, तो JSON पीएचपी करने के लिए वापस भेज लगता है ... किसी भी तरह –

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