2010-06-23 23 views
6

मैं जावा एपीआई का उपयोग करके किसी विशेष वाक्य के लिए विस्मयादिबोधक बनाना चाहता हूं?किसी विशेष वाक्य के लिए विस्मयादिबोधक कैसे बनाएं

उदा। यह आश्चर्यजनक है == क्या यह आश्चर्यजनक नहीं है!
उदा। यह ठंडा है == क्या यह ठंडा नहीं है!

क्या कोई विक्रेता या उपकरण हैं जो आपको विस्मयादिबोधक उत्पन्न करने में मदद करते हैं, बशर्ते आप एक वाक्य दें (यानी उपर्युक्त उदाहरण में बाईं ओर)। नोट: वाक्यों को उपयोगकर्ता द्वारा प्रदान किया जाएगा और हमें सही वाक्य प्राप्त करने में सक्षम होना चाहिए।

मैं अगर यह अन्य श्रेणियों

EDIT1

कुछ और उदाहरण के अंतर्गत टैग किए जाने की आवश्यकता है, यकीन है कि नहीं हूँ, मैं यह संभव

जैसे जैसे सामान्य रूप में होना चाहते हैं वे देर हो चुकी हैं == क्या वे देर से नहीं हैं!
उदा। वह थक गया दिखता है == क्या वह थक गया नहीं है!
उदा। वह बच्चा गंदा है == क्या वह बच्चा गंदा नहीं है!
उदा। यह गर्म है == क्या यह गर्म नहीं है!

+6

क्या आप इसे व्याकरणिक रूप से जागरूक होना चाहते हैं, या एक गूंगा रेगेक्स प्रतिस्थापन स्वीकार्य है? – polygenelubricants

+1

क्या इन इनपुट के लिए वास्तव में एक "सही वाक्य" जैसी चीज है? "ठंडा है!" भी व्याकरणिक रूप से सही है। –

+0

यदि मैं कई हैं तो मैं व्याकरणिक रूप से सही वाक्य लेना चाहता हूं, तो यह मेरे साथ ठीक है। नोट: मैंने और उदाहरण जोड़े हैं – user339108

उत्तर

2

यह प्रश्न विस्मयादिबोधक के बारे में नहीं है। आप बस '!' जोड़ सकते हैं अपने सभी इनपुट उदाहरणों के लिए और वैध विस्मयादिबोधक वाक्य प्राप्त करें।

आप व्याकरण परिवर्तन के बाद हैं, जैसे these

LingPipe लग रहा है यह कुछ intersting सामान है कि आप इस्तेमाल कर सकते हैं (यह जावा), विशेष रूप से यदि आप एक शिक्षा प्रणाली विकसित कर रहे हैं, और 'parts of speach' पहचान करने के लिए की जरूरत है की तरह (जैसे विषय और क्रिया वाक्यांश की तरह, अपने उदाहरण के अनुसार) ।

8

इस पर निर्भर करता है कि "स्मार्ट" और "परिष्कृत" आप यह कैसे चाहते हैं, यह या तो बहुत कठिन या बहुत आसान समस्या हो सकती है।

String[] sentences = { 
     "It's surprising", 
     "It's cold", 
     "It's $*($&%!", 
     "That is a hot coffee indeed..." 
    }; 
    for (String sentence : sentences) { 
     System.out.println(
      sentence.replaceAll("It's (.+)", "Isn't it $1!") 
     ); 
    } 

यह प्रिंट (as seen on ideone.com): यहाँ एक सरल regex समाधान है कि काफी गूंगा है

 
Isn't it surprising! 
Isn't it cold! 
Isn't it $*($&%!! 
That is a hot coffee indeed... 
+1

ideone.com ... – Jesper

+0

पर अपने कोड में एक संकलन त्रुटि इसके अलावा इस तरह बदलाव देखना नहीं है: http://ideone.com/Xl20I - यह अभी भी रूप में गूंगा regex उत्तीर्ण है, हालांकि। – polygenelubricants

-2

मैं नहीं जानता कि कैसे परिष्कृत आप इस होना चाहता हूँ, लेकिन आप केवल बदलना चाहते हैं (नियमित अभिव्यक्ति के साथ polygenelubricant के समाधान की तुलना में यहां तक ​​कि सरल)

String text = "It's cold"; 
String result = "Isn't it " + text.substring(5) + "!"; 

: की तरह भाव के लिए है, तो यह बहुत आसान है! "नहीं यह जो कुछ भी है" "यह जो कुछ भी है।"

+0

लेकिन regex के साथ आप कर सकते हैं इस तरह गूंगा बातें: http://ideone.com/Xl20I – polygenelubricants

+0

बेशक regexes एक बहुत अधिक लचीला और मेरे सरल समाधान की तुलना में सक्षम हैं, लेकिन हम नहीं जानते कि कितनी दूर पोस्टर की आवश्यकताओं को जाना , इसलिए मैंने सोचा कि मैं जो भी पूछता हूं उसके आधार पर मैं सबसे आसान संभव समाधान प्रस्तुत करूंगा। – Jesper

+0

मैं चाहता हूं कि यह इनपुट के आधार पर अधिक सामान्य हो, क्या ऐसा करना संभव होगा? क्या कोई अन्य उपकरणकिटें जो इस तरह के विस्मय – user339108

3

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

मुझे पता है कि आपने कहा था कि जावा एपीआई के साथ ऐसा कुछ संभव है, लेकिन प्रोलॉग का उपयोग करना एक विकल्प होगा? एसडब्ल्यूआई-प्रोलॉग में जावा इंटरफ़ेस (जेपीएल) है और जिस समस्या का आप वर्णन कर रहे हैं वह प्रोलॉग में बेहतर हल होगा। असल में यह समस्या है प्रोलॉग सबसे अच्छा करता है और इसका उपयोग अकादमिक में किया जाता है। एसडब्ल्यूआई-प्रोलॉग में प्राकृतिक भाषा प्रसंस्करण (http://www.swi-prolog.org/pldoc/package/nlp.html) के लिए एक पैकेज भी शामिल है। यह एक सबसे अच्छा तरीका है जिसे मैं आपकी समस्या के रूप में संभालने के बारे में जानता हूं।

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

यह वास्तव में एक गैर-तुच्छ समाधान है, लेकिन मैं कल्पना नहीं कर सकता कि एक छोटा समाधान कैसा दिख सकता है।

+0

हम prolog के साथ काफी परिचित नहीं हैं की पीढ़ी का समर्थन, किसी ने इस विकल्प की जांच कर सकते हैं अगर देखने के लिए जाँच करेगा। – user339108

1

Natural Language ToolKit पर ध्यान दें, फिर अपने प्रश्न को परिशोधित करें कि आप जिस भाषा भाषा के साथ काम करना चाहते हैं और विस्मयादिबोधक अनुवाद के प्रकारों की स्पष्ट परिभाषा के बारे में एक स्पष्ट परिभाषा है।

+1

क्या यह केवल अजगर में उपलब्ध नहीं है? – dierre

+0

हां, एनएलटीके शुद्ध पायथन है। –

+0

दूसरी ओर, अजगर Jython के माध्यम से जावा के तहत अच्छी तरह से काम करता है ... – tucuxi

1

यहां केवल रेगेक्स के साथ मेरा लेना है, कोई गहरी भाषा विश्लेषण नहीं है। इसे आसानी से धोखा दिया जा सकता है, लेकिन यह आपके अधिकांश उदाहरणों को संभालता है।

s.replace("(.+?)('re| are) (.+)", "Aren't $1 $3!") 
.replace("(.+?)('s| is) (.+)", "Isn't $1 $3!") 
.replace("(I|You|We|They) (.+)", "Don't $1 $2!") 
.replace("(He|She|It) (\\w+)s (.*)", "Doesn't $1 $2 $3!") 
// correct case 
.replace(" You", " you") 
.replace(" He", " he") 
.replace(" She", " she") 
.replace(" It", " it") 
.replace(" We", " we") 
.replace(" They", " they"); 
संबंधित मुद्दे