Google क्लाउड स्पीच और प्राकृतिक भाषा API के साथ एक इंटेलिजेंट ऐप बनाएं
() translation by (you can also view the original English article)
एक आवेदन जो वास्तव में प्राकृतिक भाषा को समझता है वह विज्ञान-फाई उत्साही, प्रोग्रामर और एआई शोधकर्ताओं ने दशकों तक सपने देखा है। आज, मशीन लर्निंग टेक्नोलॉजीज में बड़ी प्रगति के लिए धन्यवाद, यह सपना वास्तविकता बनने के लिए पहले से कहीं अधिक है। और भी, क्लाउड-आधारित सेवाओं जैसे कि Google क्लाउड मशीन लर्निंग ने उन तकनीकों को हर किसी के उपयोग के लिए स्वतंत्र रूप से उपलब्ध कराया है।
इस ट्यूटोरियल में, आप सीखेंगे कि Google क्लाउड मशीन लर्निंग प्लेटफ़ॉर्म द्वारा प्रस्तावित दो शक्तिशाली प्राकृतिक भाषा-उन्मुख APIs का उपयोग कैसे करें: क्लाउड स्पीच api और क्लाउड नेचुरल लैंग्वेज api । उन्हें एक साथ उपयोग करके, आप व्यापक रूप से बोली जाने वाली भाषाओं की एक किस्म में भाषण संभाल कर सकते हैं कि क्षुधा बना सकते हैं.
आवश्यकताएँ
साथ पालन करने के लिए, आपको इसकी आवश्यकता होगी:
- एंड्रॉयड स्टूडियो २.२ या उच्चतर
- एक Google क्लाउड प्लेटफ़ॉर्म खाता
- एंड्रॉयड ४.४ या उच्चतर चलाता है कि एक डिवाइस
1. क्यों इन APIs का उपयोग करें?
वाक् को संसाधित कर सकने वाले किसी अनुप्रयोग में निंन क्षमताएं होनी चाहिए:
- यह कच्चे ऑडियो डेटा से व्यक्तिगत शब्दों को निकालने में सक्षम होना चाहिए ।
- यह शब्द निकाला है के बीच व्याकरण संबंधों के बारे में शिक्षित अनुमान लगाने में सक्षम होना चाहिए ।
क्लाउड वाक और क्लाउड प्राकृतिक भाषा APIs आपको मिनटों के मामले में अपने Android एप्लिकेशन में उपरोक्त क्षमताएं जोड़ने में सक्षम बनाते हैं ।
क्लाउड स्पीच एपीआई एक अत्याधुनिक भाषण पहचानकर्ता के रूप में कार्य करता है जो 80 से अधिक भाषाओं में भाषण को सटीक रूप से ट्रांसक्रिप्ट कर सकता है। यह क्षेत्रीय उच्चारण और शोर की स्थिति को भी मजबूत रूप से संभाल सकता है।
एक समान ध्यान दें पर, बादल प्राकृतिक भाषा एपीआई एक भाषा प्रसंस्करण प्रणाली है कि, के पास मानव स्तर सटीकता के साथ कर सकते हैं, भूमिकाओं शब्दों इसे दिया वाक्यों में खेलने का निर्धारण । यह वर्तमान में दस भाषाओं का समर्थन करता है, और यह भी इकाई और भावना विश्लेषण प्रदान करता है ।
2. APIs को सक्षम करना
वाक् और प्राकृतिक भाषा APIs का उपयोग करने से पहले, आपको उंहें Google क्लाउड कंसोल में सक्षम करना आवश्यक है । इसलिए कंसोल में लॉग इन करें और API प्रबंधक > लाइब्रेरी पर जाएँ.



वाक् api सक्षम करने के लिए, Google क्लाउड मशीन लर्निंग अनुभाग में वाक् api लिंक पर क्लिक करें. आगे खुलने वाले पृष्ठ में, सक्षम करें बटन दबाएँ.



पिछले पृष्ठ पर वापस जाने के लिए अपने ब्राउज़र का पिछला बटन दबाएं ।
इस बार, प्राकृतिक भाषा एपीआई पर क्लिक करके स्वाभाविक भाषा एपीआई को सक्षम लिंक और अगले पृष्ठ पर सक्षम बटन दबाने ।



APIs के साथ इंटरैक्ट करते समय आपको api कुंजी की आवश्यकता होगी. यदि आपके पास पहले से एक नहीं है, तो क्रेडेंशियल टैब खोलें, क्रेडेंशियल्स बनाएं बटन दबाएं, और API कुंजी चुनें ।
अब आपको अपनी API कुंजी प्रदर्शित करने वाला एक पॉप-अप दिखाई देगा. यह नीचे ध्यान दें ताकि आप इसे बाद में उपयोग कर सकते हैं ।



3. अपनी परियोजना को विंयस्त
दोनों APIs JSON आधारित है और बाकी अंतिमबिंदु आप सीधे किसी भी नेटवर्किंग पुस्तकालय का उपयोग कर के साथ बातचीत कर सकते हैं । हालांकि, आप समय की एक बहुत बचाने के लिए और भी अधिक पठनीय कोड लिख सकते है-Google API ग्राहक उनके लिए उपलब्ध पुस्तकालयों का उपयोग करके । तो अपने प्रोजेक्ट के अनुप्रयोग मॉड्यूल का बिल्ड. gradle फ़ाइल खोलें और इसे करने के लिए निम्न संकलित निर्भरताएँ जोड़ें:
1 |
compile 'com.google.api-client:google-api-client-android:1.22.0' |
2 |
compile 'com.google.apis:google-api-services-speech:v1beta1-rev336-1.22.0' |
3 |
compile 'com.google.apis:google-api-services-language:v1beta2-rev6-1.22.0' |
4 |
compile 'com.google.code.findbugs:jsr305:2.0.1' |
इसके अतिरिक्त, हम इस ट्यूटोरियल में कुछ फ़ाइल I / O संचालन करेंगे। उन्हें सरल बनाने के लिए, कॉमन्स आईओ लाइब्रेरी के लिए एक संकलन निर्भरता जोड़ें।
1 |
compile 'commons-io:commons-io:2.5' |
अंत में, AndroidManifest. xml फ़ाइल में इंटरनेट की अनुमति के लिए अनुरोध करने के लिए मत भूलना । इसके बिना, आपका ऐप्लिकेशन Google के सर्वर से कनेक्ट होने में सक्षम नहीं होगा.
1 |
<uses-permission android:name="android.permission.INTERNET"/> |
4. बादल भाषण एपीआई का उपयोग
यह कह रही है कि बादल भाषण एपीआई अपने आदानों में से एक के रूप में ऑडियो डेटा की उंमीद के बिना चला जाता है । इसलिए, अब हम एक Android app है कि ऑडियो फाइलों टाइप कर सकते है पैदा हो जाएगा ।
इसे सरल रखने के लिए, हम केवल FLAC फ़ाइलों को लिखित होगा, फ़ाइलें कि मुक्त दोषरहित ऑडियो कोडेक एंकोडिंग प्रारूप का उपयोग करें । आप अपने डिवाइस पर ऐसी फ़ाइलें पहले से ही हो सकता है । यदि आप नहीं करते हैं, तो मैं आपको विकिमीडिया कॉमन्स से कुछ डाउनलोड करने का सुझाव देता हूँ ।
चरण 1: कोई लेआउट बनाएं
हमारे app के लेआउट एक बटन विजेट उपयोगकर्ताओं को एक फ़ाइल बीनने, वे के माध्यम से ब्राउज़ करें और अपने उपकरणों पर उपलब्ध ऑडियो फ़ाइलों का चयन कर सकते हैं जहां एक इंटरफेस प्रदर्शित करने के लिए प्रेस कर सकते हैं होगा.
लेआउट भी चयनित ऑडियो फ़ाइल की प्रतिलिपि प्रदर्शित करने के लिए एक TextView विजेट होगा. तदनुसार, अपनी गतिविधि लेआउट XML फ़ाइल में निंन कोड जोड़ें:
1 |
<TextView
|
2 |
android:layout_width="match_parent" |
3 |
android:layout_height="wrap_content" |
4 |
android:text="" |
5 |
android:id="@+id/speech_to_text_result" |
6 |
android:textSize="18sp" |
7 |
android:layout_alignParentTop="true"/> |
8 |
|
9 |
<Button
|
10 |
android:layout_width="match_parent" |
11 |
android:layout_height="wrap_content" |
12 |
android:layout_alignParentBottom="true" |
13 |
android:id="@+id/browse_button" |
14 |
android:text="Browse"/> |
चरण 2: कोई फ़ाइल पिकर बनाएँ
फ़ाइल चयनकर्ता इंटरफ़ेस प्रदर्शित किया जाना चाहिए जब उपयोगकर्ता प्रेस हम पिछले चरण में बनाया बटन, तो इसके साथ एक OnClickListener वस्तु सहयोगी । इससे पहले कि आप ऐसा करते हैं, सुनिश्चित करें कि आप findViewById () विधि का उपयोग कर बटन प्रारंभ करें ।
1 |
Button browseButton = (Button)findViewById(R.id.browse_button); |
2 |
|
3 |
browseButton.setOnClickListener(new View.OnClickListener() { |
4 |
@Override
|
5 |
public void onClick(View view) { |
6 |
// More code here
|
7 |
}
|
8 |
});
|
एंड्रॉयड के भंडारण का उपयोग ढांचे, जो एपीआई स्तर 19 या उच्चतर चल उपकरणों पर उपलब्ध है के साथ, एक फ़ाइल बीनने बनाने के लिए बहुत कम प्रयास लेता है. तुम सब करने की ज़रूरत है ACTION_GET_CONTENT कार्रवाई के लिए एक आशय बना है और इसे startActivityForResult () विधि से गुजारें । वैकल्पिक रूप से, आप केवल FLAC फ़ाइलें setType () उद्देश्य ऑब्जेक्ट की विधि करने के लिए उपयुक्त MIME प्रकार पास करके प्रदर्शित करने के लिए फ़ाइल पिकर प्रतिबंधित कर सकते हैं ।
1 |
Intent filePicker = new Intent(Intent.ACTION_GET_CONTENT); |
2 |
filePicker.setType("audio/flac"); |
3 |
startActivityForResult(filePicker, 1); |
फ़ाइल पिकर का आउटपुट उपयोगकर्ता द्वारा चयनित फ़ाइल की URI वाला कोई अंय आशय ऑब्जेक्ट होगा । इसे तक पहुँचने में सक्षम होने के लिए, आप अपने गतिविधि वर्ग की onActivityResult () विधि को ओवरराइड करना होगा ।
1 |
@Override
|
2 |
protected void onActivityResult(int requestCode, int resultCode, |
3 |
Intent data) { |
4 |
super.onActivityResult(requestCode, resultCode, data); |
5 |
if(resultCode == RESULT_OK) { |
6 |
final Uri soundUri = data.getData(); |
7 |
|
8 |
// More code here
|
9 |
|
10 |
}
|
11 |
}
|
चरण 3: फ़ाइल सांकेतिक शब्दों में बदलना
क्लाउड वाक् API किसी Base64 स्ट्रिंग के रूप में इसके ऑडियो डेटा की अपेक्षा करता है । ऐसी एक स्ट्रिंग उत्पंन करने के लिए, आप फ़ाइल की सामग्री एक बाइट सरणी में चयनित उपयोगकर्ता पढ़ सकते है और इसे encodeBase64String () उपयोगिता गूगल एपीआई ग्राहक पुस्तकालय द्वारा की पेशकश की विधि के पास ।
हालांकि, आपके पास वर्तमान में चयनित फ़ाइल का केवल URI नहीं है, उसका पूर्ण पथ नहीं है । इसका अर्थ है कि, फ़ाइल को पढ़ने में सक्षम होने के लिए, आपको पहले URI को हल करना होगा । आप इसे अपनी गतिविधि की सामग्री रिज़ॉल्वर की openInputStream () विधि के पास से कर सकते हैं । एक बार जब आप फ़ाइल के इनपुट स्ट्रीम करने के लिए पहुँच है, तो आप बस इसे बाइट्स की एक सरणी में कनवर्ट करने के लिए IOUtils वर्ग के toByteArray () विधि के पास कर सकते हैं । निंन कोड आपको दिखाता है कि कैसे:
1 |
AsyncTask.execute(new Runnable() { |
2 |
@Override
|
3 |
public void run() { |
4 |
InputStream stream = getContentResolver() |
5 |
.openInputStream(soundUri); |
6 |
byte[] audioData = IOUtils.toByteArray(stream); |
7 |
stream.close(); |
8 |
|
9 |
String base64EncodedData = |
10 |
Base64.encodeBase64String(audioData); |
11 |
|
12 |
// More code here
|
13 |
}
|
14 |
}
|
जैसा कि आप ऊपर कोड में देख सकते हैं, हम सभी I/O कार्रवाई को चलाने के लिए एक नया थ्रेड उपयोग कर रहे हैं । ऐसा करने के लिए सुनिश्चित करें कि अनुप्रयोग UI स्थिर नहीं है बनाने के लिए महत्वपूर्ण है ।
चरण 4: फ़ाइल चलाएं
मेरी राय में, ध्वनि फ़ाइल है कि प्रतिलिखित किया जा रहा है, जबकि यह लिखित किया जा रहा है खेल, एक अच्छा विचार है । यह बहुत प्रयास नहीं करता है, और यह उपयोगकर्ता अनुभव को बेहतर बनाता है ।
आप ध्वनि फ़ाइल को चलाने के लिए MediaPlayer वर्ग का उपयोग कर सकते हैं । एक बार जब आप इसे अपनी setDataSource () विधि का उपयोग कर फ़ाइल के URI को इंगित करते हैं, तो आप प्लेयर को सिंक्रोनस रूप से तैयार करने के लिए इसकी तैयारी () विधि को कॉल करना आवश्यक है । जब खिलाड़ी तैयार है, आप फ़ाइल खेल शुरू करने के लिए अपनी शुरू () विधि कॉल कर सकते हैं ।
इसके साथ ही, आप प्लेयर के संसाधनों को रिलीज़ करने के लिए याद रखना होगा एक बार यह फ़ाइल चला रहा है । ऐसा करने के लिए, इसे करने के लिए कोई OnCompletionListener ऑब्जेक्ट असाइन करें और इसकी रिलीज़ () विधि को कॉल करें । निंन कोड आपको दिखाता है कि कैसे:
1 |
MediaPlayer player = new MediaPlayer(); |
2 |
player.setDataSource(MainActivity.this, soundUri); |
3 |
player.prepare(); |
4 |
player.start(); |
5 |
|
6 |
// Release the player
|
7 |
player.setOnCompletionListener( |
8 |
new MediaPlayer.OnCompletionListener() { |
9 |
@Override
|
10 |
public void onCompletion(MediaPlayer mediaPlayer) { |
11 |
mediaPlayer.release(); |
12 |
}
|
13 |
});
|
चरण 5: सिंक्रोनस फ़ाइल को टाइप
इस बिंदु पर, हम इसे टाइप करने के लिए क्लाउड स्पीच API को Base64-एनकोडेड ऑडियो डेटा भेज सकते हैं । लेकिन पहले, मैं सुझाव है कि आप एपीआई कुंजी आप अपने गतिविधि वर्ग के एक सदस्य चर के रूप में पहले उत्पंन की दुकान ।
1 |
private final String CLOUD_API_KEY = "ABCDEF1234567890"; |
क्लाउड वाक् API से संचार करने में सक्षम होने के लिए, आपको वाक्. builder इंस्टेंस का उपयोग करके वाक् ऑब्जेक्ट बनाना होगा । तर्क के रूप में, इसके निर्माता एक HTTP परिवहन और एक JSON कारखाने की उंमीद है । साथ ही, api कुंजी api करने के लिए प्रत्येक HTTP अनुरोध में शामिल है यह सुनिश्चित करने के लिए, आप एक SpeechRequestInitializer ऑब्जेक्ट बिल्डर के साथ संबद्ध करें और इसे करने के लिए कुंजी पास होना चाहिए ।
निम्न कोड AndroidJsonFactory वर्ग के रूप में JSON फ़ैक्टरी और HTTP ट्रांसपोर्ट के रूप में NetHttpTransport वर्ग का उपयोग करते हुए एक वाक् ऑब्जेक्ट बनाता है:
1 |
Speech speechService = new Speech.Builder( |
2 |
AndroidHttp.newCompatibleTransport(), |
3 |
new AndroidJsonFactory(), |
4 |
null
|
5 |
).setSpeechRequestInitializer( |
6 |
new SpeechRequestInitializer(CLOUD_API_KEY)) |
7 |
.build(); |
क्लाउड स्पीच API में ऑडियो फ़ाइल को किस भाषा में बताया जाना चाहिए । आप ऐसा RecognitionConfig ऑब्जेक्ट बनाकर और उसके setLanguageCode () विधि को कॉल करके कर सकते हैं । यहां है तुम कैसे कॉंफ़िगर यह अमेरिकी अंग्रेजी टाइप करने के लिए केवल:
1 |
RecognitionConfig recognitionConfig = new RecognitionConfig(); |
2 |
recognitionConfig.setLanguageCode("en-US"); |
इसके अतिरिक्त, एपीआई द्वारा उपयोग किए जाने से पहले बेस 64-एन्कोडेड स्ट्रिंग को रिकॉग्निशनऑडियो ऑब्जेक्ट में लपेटा जाना चाहिए।
1 |
RecognitionAudio recognitionAudio = new RecognitionAudio(); |
2 |
recognitionAudio.setContent(base64EncodedData); |
इसके बाद, RecognitionConfig
और RecognitionAudio
ऑब्जेक्ट्स का उपयोग करके, आपको एक SyncRecognizeRequest
ऑब्जेक्ट बनाना होगा। जैसा कि इसके नाम से पता चलता है, यह आपको ऑडियो डेटा को सिंक्रनाइज़ करने के लिए एक HTTP अनुरोध बनाने की अनुमति देता है। एक बार ऑब्जेक्ट बनने के बाद, आप इसे syncrecognize ()
विधि के लिए तर्क के रूप में पास कर सकते हैं और परिणामी भाषण .peechOperations.Syncrecognize
ऑब्जेक्ट की execute ()
विधि को वास्तव में HTTP अनुरोध निष्पादित करने के लिए कॉल कर सकते हैं।
निष्पादित () विधि का वापसी मान एक SyncRecognizeResponse ऑब्जेक्ट है, जिसमें कई वैकल्पिक टेप हो सकते हैं । अभी के लिए, हम केवल पहले विकल्प का उपयोग करेंगे ।
1 |
// Create request
|
2 |
SyncRecognizeRequest request = new SyncRecognizeRequest(); |
3 |
request.setConfig(recognitionConfig); |
4 |
request.setAudio(recognitionAudio); |
5 |
|
6 |
// Generate response
|
7 |
SyncRecognizeResponse response = speechService.speech() |
8 |
.syncrecognize(request) |
9 |
.execute(); |
10 |
|
11 |
// Extract transcript
|
12 |
SpeechRecognitionResult result = response.getResults().get(0); |
13 |
final String transcript = result.getAlternatives().get(0) |
14 |
.getTranscript(); |
अंत में, उपयोगकर्ता के लिए प्रतिलिपि प्रदर्शित करने के लिए, आप इसे TextView विजेट के पास कर सकते हैं । बेशक, क्योंकि उपयोगकर्ता इंटरफ़ेस में परिवर्तन हमेशा UI थ्रेड पर होने चाहिए, सुनिश्चित करें कि आप अपने गतिविधि की runOnUiThread () पद्धति को कॉल करने के बाद ऐसा करते हैं ।
1 |
runOnUiThread(new Runnable() { |
2 |
@Override
|
3 |
public void run() { |
4 |
TextView speechToTextResult = |
5 |
(TextView)findViewById(R.id.speech_to_text_result); |
6 |
speechToTextResult.setText(transcript); |
7 |
}
|
8 |
});
|
अब आप अपने अनुप्रयोग चला सकते हैं, एक FLAC फ़ाइल अमेरिकी अंग्रेजी में भाषण युक्त का चयन करें, और बादल भाषण एपीआई इसके लिए एक प्रतिलिपि उत्पन्न देखते हैं ।

यह उल्लेख है कि बादल भाषण एपीआई वर्तमान में केवल एकल चैनल ऑडियो फ़ाइलें प्रक्रिया कर सकते है लायक है । यदि आप इसे करने के लिए एक से अधिक चैनल के साथ एक फ़ाइल भेजते हैं, तो आप एक त्रुटि प्रतिक्रिया मिल जाएगा ।
5. बादल प्राकृतिक भाषा एपीआई का उपयोग
अब जब कि हम एक प्रतिलिपि है, हम इसे बादल प्राकृतिक भाषा एपीआई के पास यह विश्लेषण कर सकते हैं । इस ट्यूटोरियल कम रखने के लिए, हम केवल प्रतिलिपि पर इकाई और भावना विश्लेषण चल रहा होगा । दूसरे शब्दों में, हम सभी संस्थाओं है कि प्रतिलिपि में उल्लेख कर रहे हैं, जैसे लोगों, स्थानों के रूप में, और व्यवसायों का निर्धारण करने जा रहे हैं, और यह भी बताओ अगर अपनी समग्र भावना नकारात्मक, तटस्थ, या सकारात्मक है ।
चरण 1: लेआउट अद्यतन करें
उपयोगकर्ता को विश्लेषण प्रारंभ करने की अनुमति देने के लिए, हमारे लेआउट में कोई अंय बटन विजेट होना चाहिए । इसलिए, अपनी गतिविधि लेआउट XML फ़ाइल में निंन कोड जोड़ें:
1 |
<Button |
2 |
android:layout_width="match_parent" |
3 |
android:layout_height="wrap_content" |
4 |
android:layout_above="@+id/browse_button" |
5 |
android:id="@+id/analyze_button" |
6 |
android:text="Analyze"/> |
चरण 2: प्रतिलिपि व्याख्या
बादल प्राकृतिक भाषा आराम एपीआई annotateText कहा जाता है कि आप सिर्फ एक HTTP अनुरोध के साथ एक दस्तावेज़ पर दोनों भावना और संस्था विश्लेषण चलाने के लिए अनुमति देता है एक सुविधा विकल्प प्रदान करता है । हम इसे का उपयोग करने के लिए हमारी प्रतिलिपि का विश्लेषण करेंगे ।
क्योंकि विश्लेषण शुरू करना चाहिए जब उपयोगकर्ता प्रेस हम पिछले चरण में बनाया बटन, इसमें एक OnClickListener जोड़ें ।
1 |
Button analyzeButton = (Button)findViewById(R.id.analyze_button); |
2 |
analyzeButton.setOnClickListener(new View.OnClickListener() { |
3 |
@Override
|
4 |
public void onClick(View view) { |
5 |
// More code here
|
6 |
}
|
7 |
});
|
Google api क्लाइंट लायब्रेरी का उपयोग करके api से इंटरैक्ट करने के लिए, आपको CloudNaturalLanguage. builder वर्ग का उपयोग करके एक CloudNaturalLanguage ऑब्जेक्ट बनाना होगा । इसके निर्माता भी एक HTTP परिवहन और एक JSON कारखाने की उंमीद है ।
इसके अलावा, यह करने के लिए एक CloudNaturalLanguageRequestInitializer उदाहरण निर्दिष्ट करके, आप इसे अपने सभी अनुरोधों में अपने एपीआई कुंजी शामिल करने के लिए मजबूर कर सकते हैं ।
1 |
final CloudNaturalLanguage naturalLanguageService = |
2 |
new CloudNaturalLanguage.Builder( |
3 |
AndroidHttp.newCompatibleTransport(), |
4 |
new AndroidJsonFactory(), |
5 |
null
|
6 |
).setCloudNaturalLanguageRequestInitializer( |
7 |
new CloudNaturalLanguageRequestInitializer(CLOUD_API_KEY) |
8 |
).build(); |
API का उपयोग करके विश्लेषण करने के लिए इच्छित सभी पाठ किसी दस्तावेज़ ऑब्जेक्ट के अंदर रखा जाना चाहिए । दस्तावेज़ ऑब्जेक्ट में कॉंफ़िगरेशन जानकारी भी होनी चाहिए, जैसे कि पाठ की भाषा और चाहे वह सादे पाठ या HTML के रूप में स्वरूपित हो । तदनुसार, निंन कोड जोड़ें:
1 |
String transcript = |
2 |
((TextView)findViewById(R.id.speech_to_text_result)) |
3 |
.getText().toString(); |
4 |
|
5 |
Document document = new Document(); |
6 |
document.setType("PLAIN_TEXT"); |
7 |
document.setLanguage("en-US"); |
8 |
document.setContent(transcript); |
अगला, आप सुविधाओं का विश्लेषण करने में रुचि रखते हैं निर्दिष्ट करने के लिए एक सुविधाएँ ऑब्जेक्ट बनाना होगा । निम्न कोड आपको बताता है कि आप एंटिटी निकालने और केवल भावना विश्लेषण चलाने के लिए चाहते हैं एक सुविधाएँ ऑब्जेक्ट बनाने के लिए कैसे दिखाता है ।
1 |
Features features = new Features(); |
2 |
features.setExtractEntities(true); |
3 |
features.setExtractDocumentSentiment(true); |
अब आप दस्तावेज़ और सुविधाएँ ऑब्जेक्ट एक AnnotateTextRequest ऑब्जेक्ट, जो एक AnnotateTextResponse ऑब्जेक्ट जनरेट करने के लिए annotateText () विधि करने के लिए दिया जा सकता है, को बनाने के लिए उपयोग कर सकते हैं ।
1 |
final AnnotateTextRequest request = new AnnotateTextRequest(); |
2 |
request.setDocument(document); |
3 |
request.setFeatures(features); |
4 |
|
5 |
AsyncTask.execute(new Runnable() { |
6 |
@Override
|
7 |
public void run() { |
8 |
AnnotateTextResponse response = |
9 |
naturalLanguageService.documents() |
10 |
.annotateText(request).execute(); |
11 |
|
12 |
// More code here
|
13 |
}
|
14 |
}
|
नोट करें कि हम प्रतिसाद एक नया थ्रेड में जनरेट कर रहा है क्योंकि नेटवर्क कार्रवाई UI थ्रेड पर अनुमति नहीं है ।
आप अपनी getEntities () पद्धति को कॉल करके AnnotateTextResponse ऑब्जेक्ट से एंटिटी की सूची निकाल सकते हैं । इसी प्रकार, आप getDocumentSentiment () विधि बुलाकर प्रतिलिपि की समग्र भावना को निकाल सकते हैं । भावना का वास्तविक स्कोर प्राप्त करने के लिए, तथापि, आप भी getScore () विधि, जो एक नाव देता है कॉल करना होगा ।
जैसा कि आप उंमीद कर सकते हैं, एक भावना शूंय के बराबर स्कोर मतलब भावना तटस्थ है, शूंय से अधिक स्कोर भावना सकारात्मक है मतलब है, और एक अंक शूंय से कम मतलब भावना नकारात्मक है ।
आप संस्थाओं की सूची और भावना स्कोर के साथ क्या करते हैं, ज़ाहिर है, आप पर निर्भर है । अभी के लिए, चलो बस उंहें प्रदर्शित दोनों एक AlertDialog उदाहरण का उपयोग कर ।
1 |
final List<Entity> entityList = response.getEntities(); |
2 |
final float sentiment = response.getDocumentSentiment().getScore(); |
3 |
|
4 |
runOnUiThread(new Runnable() { |
5 |
@Override
|
6 |
public void run() { |
7 |
String entities = ""; |
8 |
for(Entity entity:entityList) { |
9 |
entities += "\n" + entity.getName().toUpperCase(); |
10 |
}
|
11 |
AlertDialog dialog = |
12 |
new AlertDialog.Builder(MainActivity.this) |
13 |
.setTitle("Sentiment: " + sentiment) |
14 |
.setMessage("This audio file talks about :" |
15 |
+ entities) |
16 |
.setNeutralButton("Okay", null) |
17 |
.create(); |
18 |
dialog.show(); |
19 |
}
|
20 |
});
|
उपरोक्त कोड के साथ, भावना स्कोर संवाद के शीर्षक में प्रदर्शित किया जाएगा, और संस्थाओं की सूची इसके शरीर में प्रदर्शित किया जाएगा ।
आप अनुप्रयोग अब चलाने के लिए, आप ऑडियो फाइलों की सामग्री का विश्लेषण करने में सक्षम होना चाहिए, साथ ही उन्हें लिखित रूप में.

निष्कर्ष
अब आप जानते हैं कि कैसे एक Android अनुप्रयोग है कि न केवल एक ऑडियो फाइल टाइप कर सकते हैं, लेकिन यह भी इस पर इकाई और भावना विश्लेषण चलाने के लिए एक साथ बादल भाषण और बादल प्राकृतिक भाषा APIs का उपयोग करने के लिए । इस ट्यूटोरियल में, आप भी सीखा कैसे Android के भंडारण का उपयोग ढांचे और गूगल ग्राहक एपीआई पुस्तकालयों के साथ काम करने के लिए ।
Google नियमित रूप से और अधिक भाषाओं के लिए समर्थन के साथ-साथ दोनों APIs के लिए नई और रोचक सुविधाएं जोड़ रहा है । उनके बारे में अद्यतन रहने के लिए, सरकारी प्रलेखन का उल्लेख करते हैं ।
और जब तुम यहां हो, बाहर मोबाइल app बादल सेवाओं और मशीन सीखने पर हमारे अंय पदों में से कुछ की जांच!