2015-02-04 6 views
6

में एक डीओटी फ़ाइल का विश्लेषण कैसे करें मेरे पास एक डीओटी फ़ाइल के रूप में एक ट्रांसड्यूसर बचाया गया है। मैं gvedit का उपयोग कर आलेखों का एक ग्राफिकल प्रतिनिधित्व देख सकता हूं, लेकिन अगर मैं डीओटी फ़ाइल को निष्पादन योग्य ट्रांसड्यूसर में परिवर्तित करना चाहता हूं, तो मैं ट्रांसड्यूसर का परीक्षण कर सकता हूं और देख सकता हूं कि यह किस स्ट्रिंग को स्वीकार करता है और यह क्या नहीं करता है।पायथन

ओपनफस्ट, ग्राफविज़ और उनके पायथन एक्सटेंशन में मैंने देखा है कि अधिकांश टूल में, डीओटी फाइलों का उपयोग केवल ग्राफिकल प्रतिनिधित्व बनाने के लिए किया जाता है, लेकिन यदि मैं एक इंटरैक्टिव प्रोग्राम प्राप्त करने के लिए फ़ाइल को पार्स करना चाहता हूं तो मैं क्या कर सकता हूं ट्रांसड्यूसर के खिलाफ तारों का परीक्षण करें?

क्या वहां कोई पुस्तकालय है जो कार्य करेगा या क्या मुझे इसे स्क्रैच से लिखना चाहिए?

जैसा कि मैंने कहा था, डीओटी फ़ाइल एक ट्रांसड्यूसर से संबंधित है जिसे मैंने डिजाइन किया है जो अंग्रेजी के रूपरेखा को अनुकरण करता है। यह एक बड़ी फाइल है, लेकिन यह आपको एक विचार देने के लिए कि यह कैसा है, मैं एक नमूना प्रदान करता हूं। मान लें कि मैं एक ट्रांसड्यूसर बनाना चाहता हूं जो संज्ञाओं के संबंध में और बहुलता के संदर्भ में अंग्रेजी के व्यवहार का मॉडल करेगा। मेरे लेक्सिकॉन में केवल तीन शब्द होते हैं (पुस्तक, लड़का, लड़की)। इस मामले में मेरे ट्रांसड्यूसर कुछ इस तरह दिखेगा:

enter image description here

जो सीधे इस डॉट फ़ाइल से निर्माण किया है:

digraph A { 
rankdir = LR; 
node [shape=circle,style=filled] 0 
node [shape=circle,style=filled] 1 
node [shape=circle,style=filled] 2 
node [shape=circle,style=filled] 3 
node [shape=circle,style=filled] 4 
node [shape=circle,style=filled] 5 
node [shape=circle,style=filled] 6 
node [shape=circle,style=filled] 7 
node [shape=circle,style=filled] 8 
node [shape=circle,style=filled] 9 
node [shape=doublecircle,style=filled] 10 
0 -> 4 [label="g "]; 
0 -> 1 [label="b "]; 
1 -> 2 [label="o "]; 
2 -> 7 [label="y "]; 
2 -> 3 [label="o "]; 
3 -> 7 [label="k "]; 
4 -> 5 [label="i "]; 
5 -> 6 [label="r "]; 
6 -> 7 [label="l "]; 
7 -> 9 [label="<+N:s> "]; 
7 -> 8 [label="<+N:0> "]; 
8 -> 10 [label="<+Sg:0> "]; 
9 -> 10 [label="<+Pl:0> "]; 
} 

अब शब्दों के खिलाफ इस ट्रांसड्यूसर परीक्षण मतलब है कि आप के साथ इसे फ़ीड अगर book+Pl इसे books और इसके विपरीत वापस थूकना चाहिए। मैं देखना चाहता हूं कि डॉट फ़ाइल को प्रारूप में कैसे बदलना संभव है जो इस तरह के विश्लेषण और परीक्षण की अनुमति देगा।

+0

कोई भी मौका हम .dot फ़ाइल देख सकते हैं? –

+0

एक डीओटी फ़ाइल एक ग्राफ का प्रतिनिधित्व करती है जिसमें नोड्स और किनारों का समावेश होता है। मुझे लगता है कि नोड इनपुट या आउटपुट पॉइंट हैं, और दो नोड्स के बीच किनारे परिवहन का प्रतिनिधित्व करते हैं। यदि आप .dot फ़ाइल दिखाते हैं, तो आप अधिक उपयोगी टिप्पणी और/या उत्तर प्राप्त करने में सक्षम हो सकते हैं। –

+0

मैंने अभी अपडेट किया और एक नमूना जोड़ा। –

उत्तर

1

आप https://code.google.com/p/pydot/ का उपयोग कर फ़ाइल लोड करके शुरू कर सकते हैं। वहां से इनपुट इनपुट स्ट्रिंग के अनुसार इन-मेमोरी ग्राफ को पार करने के लिए कोड को लिखने के लिए अपेक्षाकृत सरल होना चाहिए।

+0

क्या आप उस पर थोड़ा और विस्तार कर सकते हैं? मुझे पाइडोट के बारे में पता है और मुझे पता है कि आप वहां एक डॉट फ़ाइल लोड कर सकते हैं। Pydot में 'dot_parser' डॉट फ़ाइल को कुछ आंतरिक वर्ग प्रस्तुति में परिवर्तित करता है। लेकिन मुझे यकीन नहीं है कि मैं इसका उपयोग कैसे कर सकता हूं। Pydot मूल रूप से Graphviz afaik के लिए एक इंटरफ़ेस है। –

+0

@schmutter: यहां देखें: http://stackoverflow.com/a/22935664/4323 - आप किनारों को लोड कर सकते हैं। यदि आप अधिक पूर्ण-विशेषीकृत ग्राफ लाइब्रेरी चाहते हैं, तो https://code.google.com/p/python-graph/ देखें जो डॉट फ़ाइलों को भी लोड कर सकता है, और इसमें एल्गोरिदम शामिल हैं। –

+0

मैं pydot का उपयोग (वर्तमान संस्करण) का उपयोग करने में सक्षम नहीं हूँ; यह कहता है कि इसे पाइपर्सिंग की आवश्यकता है। मैंने पाइपर्सिंग का नवीनतम संस्करण डाउनलोड किया, लेकिन पाइडॉट ने पाइपर्सिंग से कुछ आयात करने की कोशिश की जो मौजूद नहीं है। Grr> :( – allyourcode

2

सबसे पहले, मैंने graphviz लाइब्रेरी स्थापित की है। फिर मैंने निम्नलिखित कोड लिखा:

import os 
from graphviz import Source 
file = open('graph4.dot', 'r')#READING DOT FILE 
text=file.read() 
Source(text) 
+2

यह वास्तव में डीओटी फ़ाइल को पार्स नहीं कर रहा है। – purpletentacle