बैग-ऑफ़-वर्ड्स मॉडल: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Representation of a text as the bag of its words}} {{for|Bag-of-words model in computer vision|Bag-of-words model in computer vision}} बैग-ऑफ-...")
 
No edit summary
Line 2: Line 2:
{{for|Bag-of-words model in computer vision|Bag-of-words model in computer vision}}
{{for|Bag-of-words model in computer vision|Bag-of-words model in computer vision}}


बैग-ऑफ-वर्ड्स मॉडल [[प्राकृतिक भाषा प्रसंस्करण]] और सूचना पुनर्प्राप्ति (आईआर) में उपयोग किया जाने वाला एक सरलीकृत प्रतिनिधित्व है। इस मॉडल में, एक पाठ (जैसे एक वाक्य या एक दस्तावेज़) को उसके शब्दों के [[मल्टीसेट]]|बैग (मल्टीसेट) के रूप में दर्शाया जाता है, व्याकरण और यहां तक ​​कि शब्द क्रम की उपेक्षा करते हुए लेकिन [[बहुलता (गणित)]] को ध्यान में रखते हुए। [[कंप्यूटर विज़न में बैग-ऑफ़-वर्ड्स मॉडल]] बैग-ऑफ-वर्ड्स मॉडल भी रहा है।<ref name=sivic>{{cite conference
बैग-ऑफ-वर्ड्स मॉडल [[प्राकृतिक भाषा प्रसंस्करण]] और सूचना पुनर्प्राप्ति (आईआर) में उपयोग किया जाने वाला सरलीकृत प्रतिनिधित्व है। इस मॉडल में, पाठ (जैसे वाक्य या दस्तावेज़) को उसके शब्दों के [[मल्टीसेट]]|बैग (मल्टीसेट) के रूप में दर्शाया जाता है, व्याकरण और यहां तक ​​कि शब्द क्रम की उपेक्षा करते हुए लेकिन [[बहुलता (गणित)]] को ध्यान में रखते हुए। [[कंप्यूटर विज़न में बैग-ऑफ़-वर्ड्स मॉडल]] बैग-ऑफ-वर्ड्स मॉडल भी रहा है।<ref name=sivic>{{cite conference
   | first = Josef
   | first = Josef
   | last = Sivic
   | last = Sivic
Line 24: Line 24:
   |doi= 10.1080/00437956.1954.11659520
   |doi= 10.1080/00437956.1954.11659520
  |quote= And this stock of combinations of elements becomes a factor in the way later choices are made ... for language is not merely a bag of words but a tool with particular properties which have been fashioned in the course of its use}}</ref>
  |quote= And this stock of combinations of elements becomes a factor in the way later choices are made ... for language is not merely a bag of words but a tool with particular properties which have been fashioned in the course of its use}}</ref>
बैग-ऑफ-वर्ड्स मॉडल [[वेक्टर स्पेस मॉडल]] का एक उदाहरण है।
बैग-ऑफ-वर्ड्स मॉडल [[वेक्टर स्पेस मॉडल]] का उदाहरण है।


== उदाहरण कार्यान्वयन ==
== उदाहरण कार्यान्वयन ==


निम्नलिखित बैग-ऑफ-वर्ड्स का उपयोग करके एक टेक्स्ट दस्तावेज़ मॉडल करता है। यहां दो सरल पाठ दस्तावेज़ हैं:
निम्नलिखित बैग-ऑफ-वर्ड्स का उपयोग करके टेक्स्ट दस्तावेज़ मॉडल करता है। यहां दो सरल पाठ दस्तावेज़ हैं:


<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
Line 37: Line 37:
(2) Mary also likes to watch football games.
(2) Mary also likes to watch football games.
</syntaxhighlight>
</syntaxhighlight>
इन दो पाठ दस्तावेज़ों के आधार पर, प्रत्येक दस्तावेज़ के लिए निम्नानुसार एक सूची बनाई जाती है:
इन दो पाठ दस्तावेज़ों के आधार पर, प्रत्येक दस्तावेज़ के लिए निम्नानुसार सूची बनाई जाती है:
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
"John","likes","to","watch","movies","Mary","likes","movies","too"
"John","likes","to","watch","movies","Mary","likes","movies","too"
Line 86: Line 86:


== एन-ग्राम मॉडल ==
== एन-ग्राम मॉडल ==
बैग-ऑफ-वर्ड्स मॉडल एक व्यवस्थित दस्तावेज़ प्रतिनिधित्व है - केवल शब्दों की गिनती मायने रखती है। उदाहरण के लिए, उपरोक्त उदाहरण में जॉन को फिल्में देखना पसंद है। मैरी को फिल्में भी पसंद हैं, बैग-ऑफ-वर्ड्स प्रतिनिधित्व से यह पता नहीं चलेगा कि क्रिया पसंद है हमेशा इस पाठ में किसी व्यक्ति के नाम के बाद आती है। एक विकल्प के रूप में, एन-ग्राम|एन-ग्राम मॉडल इस स्थानिक जानकारी को संग्रहीत कर सकता है। उपरोक्त उदाहरण को लागू करते हुए, एक 'बिग्राम' मॉडल पाठ को निम्नलिखित इकाइयों में पार्स करेगा और पहले की तरह प्रत्येक इकाई की शब्द आवृत्ति को संग्रहीत करेगा।
बैग-ऑफ-वर्ड्स मॉडल व्यवस्थित दस्तावेज़ प्रतिनिधित्व है - केवल शब्दों की गिनती मायने रखती है। उदाहरण के लिए, उपरोक्त उदाहरण में जॉन को फिल्में देखना पसंद है। मैरी को फिल्में भी पसंद हैं, बैग-ऑफ-वर्ड्स प्रतिनिधित्व से यह पता नहीं चलेगा कि क्रिया पसंद है हमेशा इस पाठ में किसी व्यक्ति के नाम के बाद आती है। विकल्प के रूप में, एन-ग्राम|एन-ग्राम मॉडल इस स्थानिक जानकारी को संग्रहीत कर सकता है। उपरोक्त उदाहरण को लागू करते हुए, 'बिग्राम' मॉडल पाठ को निम्नलिखित इकाइयों में पार्स करेगा और पहले की तरह प्रत्येक इकाई की शब्द आवृत्ति को संग्रहीत करेगा।


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
Line 99: Line 99:
]
]
</syntaxhighlight>
</syntaxhighlight>
वैचारिक रूप से, हम बैग-ऑफ-वर्ड मॉडल को n=1 के साथ n-ग्राम मॉडल के एक विशेष मामले के रूप में देख सकते हैं। n>1 के लिए मॉडल को [[डब्ल्यू-शिंगलिंग]] नाम दिया गया है (जहां w समूहीकृत शब्दों की संख्या को दर्शाते हुए n के बराबर है)। अधिक विस्तृत चर्चा के लिए [[भाषा मॉडल]] देखें।
वैचारिक रूप से, हम बैग-ऑफ-वर्ड मॉडल को n=1 के साथ n-ग्राम मॉडल के विशेष मामले के रूप में देख सकते हैं। n>1 के लिए मॉडल को [[डब्ल्यू-शिंगलिंग]] नाम दिया गया है (जहां w समूहीकृत शब्दों की संख्या को दर्शाते हुए n के बराबर है)। अधिक विस्तृत चर्चा के लिए [[भाषा मॉडल]] देखें।


== पायथन कार्यान्वयन ==
== पायथन कार्यान्वयन ==
Line 126: Line 126:
print_bow(sentence)
print_bow(sentence)
</syntaxhighlight>
</syntaxhighlight>
== [[ हैशिंग चाल ]] ==
== [[ हैशिंग चाल ]] ==


शब्दकोशों का उपयोग करने का एक सामान्य विकल्प हैशिंग ट्रिक है, जहां शब्दों को हैशिंग फ़ंक्शन के साथ सीधे सूचकांकों में मैप किया जाता है।<ref name="Weinberger05">{{cite journal
शब्दकोशों का उपयोग करने का सामान्य विकल्प हैशिंग ट्रिक है, जहां शब्दों को हैशिंग फ़ंक्शन के साथ सीधे सूचकांकों में मैप किया जाता है।<ref name="Weinberger05">{{cite journal
  | last = Weinberger
  | last = Weinberger
  | first = K. Q.
  | first = K. Q.
Line 144: Line 142:


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


किसी ई-मेल संदेश को वर्गीकृत करने के लिए, बायेसियन स्पैम फ़िल्टर मानता है कि संदेश शब्दों का ढेर है जिसे दो बैगों में से एक से बेतरतीब ढंग से डाला गया है, और यह निर्धारित करने के लिए बायेसियन संभाव्यता का उपयोग करता है कि किस बैग में इसके होने की अधिक संभावना है।
किसी ई-मेल संदेश को वर्गीकृत करने के लिए, बायेसियन स्पैम फ़िल्टर मानता है कि संदेश शब्दों का ढेर है जिसे दो बैगों में से एक से बेतरतीब ढंग से डाला गया है, और यह निर्धारित करने के लिए बायेसियन संभाव्यता का उपयोग करता है कि किस बैग में इसके होने की अधिक संभावना है।
Line 166: Line 164:
== टिप्पणियाँ ==
== टिप्पणियाँ ==
{{Reflist}}
{{Reflist}}
== संदर्भ ==
== संदर्भ ==
*McTear, Michael (et al) (2016). ''The Conversational Interface''. Springer International Publishing.
*McTear, Michael (et al) (2016). ''The Conversational Interface''. Springer International Publishing.

Revision as of 15:22, 13 July 2023

बैग-ऑफ-वर्ड्स मॉडल प्राकृतिक भाषा प्रसंस्करण और सूचना पुनर्प्राप्ति (आईआर) में उपयोग किया जाने वाला सरलीकृत प्रतिनिधित्व है। इस मॉडल में, पाठ (जैसे वाक्य या दस्तावेज़) को उसके शब्दों के मल्टीसेट|बैग (मल्टीसेट) के रूप में दर्शाया जाता है, व्याकरण और यहां तक ​​कि शब्द क्रम की उपेक्षा करते हुए लेकिन बहुलता (गणित) को ध्यान में रखते हुए। कंप्यूटर विज़न में बैग-ऑफ़-वर्ड्स मॉडल बैग-ऑफ-वर्ड्स मॉडल भी रहा है।[1] बैग-ऑफ-वर्ड्स मॉडल का उपयोग आमतौर पर दस्तावेज़ वर्गीकरण के तरीकों में किया जाता है जहां प्रत्येक शब्द की घटना (आवृत्ति) का उपयोग सांख्यिकीय वर्गीकरण के प्रशिक्षण के लिए फ़ीचर (मशीन लर्निंग) के रूप में किया जाता है।[2] भाषाई संदर्भ में शब्दों के थैले का प्रारंभिक संदर्भ वितरण संरचना पर ज़ेलिग हैरिस के 1954 के लेख में पाया जा सकता है।[3] बैग-ऑफ-वर्ड्स मॉडल वेक्टर स्पेस मॉडल का उदाहरण है।

उदाहरण कार्यान्वयन

निम्नलिखित बैग-ऑफ-वर्ड्स का उपयोग करके टेक्स्ट दस्तावेज़ मॉडल करता है। यहां दो सरल पाठ दस्तावेज़ हैं:

(1) John likes to watch movies. Mary likes movies too.
(2) Mary also likes to watch football games.

इन दो पाठ दस्तावेज़ों के आधार पर, प्रत्येक दस्तावेज़ के लिए निम्नानुसार सूची बनाई जाती है:

"John","likes","to","watch","movies","Mary","likes","movies","too"

"Mary","also","likes","to","watch","football","games"

प्रत्येक बैग-ऑफ़-शब्दों को JSON के रूप में प्रस्तुत करना, और संबंधित जावास्क्रिप्ट चर को जिम्मेदार ठहराना:

BoW1 = {"John":1,"likes":2,"to":1,"watch":1,"movies":2,"Mary":1,"too":1};
BoW2 = {"Mary":1,"also":1,"likes":1,"to":1,"watch":1,"football":1,"games":1};

प्रत्येक कुंजी शब्द है, और प्रत्येक मान दिए गए टेक्स्ट दस्तावेज़ में उस शब्द की घटनाओं की संख्या है।

उदाहरण के लिए, तत्वों का क्रम निःशुल्क है {"too":1,"Mary":1,"movies":2,"John":1,"watch":1,"likes":2,"to":1} यह भी BoW1 के समतुल्य है। सख्त JSON ऑब्जेक्ट प्रतिनिधित्व से हम यही अपेक्षा करते हैं।

नोट: यदि कोई अन्य दस्तावेज़ इन दोनों के मिलन जैसा है,

(3) John likes to watch movies. Mary likes movies too. Mary also likes to watch football games.

इसका जावास्क्रिप्ट प्रतिनिधित्व होगा:

BoW3 = {"John":1,"likes":3,"to":2,"watch":2,"movies":2,"Mary":2,"too":1,"also":1,"football":1,"games":1};

इसलिए, जैसा कि हम मल्टीसेट में देखते हैं, बैग-ऑफ-वर्ड्स प्रतिनिधित्व में दो दस्तावेजों का मिलन, औपचारिक रूप से, असंयुक्त संघ है, जो प्रत्येक तत्व की बहुलताओं को जोड़ता है।


.

आवेदन

व्यवहार में, बैग-ऑफ-वर्ड्स मॉडल का उपयोग मुख्य रूप से फीचर पीढ़ी के उपकरण के रूप में किया जाता है। पाठ को शब्दों के थैले में बदलने के बाद, हम पाठ को चिह्नित करने के लिए विभिन्न उपायों की गणना कर सकते हैं। बैग-ऑफ-वर्ड्स मॉडल से गणना की जाने वाली सबसे सामान्य प्रकार की विशेषताएँ या विशेषताएँ शब्द आवृत्ति है, अर्थात्, पाठ में एक शब्द कितनी बार दिखाई देता है। उपरोक्त उदाहरण के लिए, हम सभी अलग-अलग शब्दों (BoW1 और BoW2 को BoW3 के अनुसार क्रमित किया गया है) की शब्द आवृत्तियों को रिकॉर्ड करने के लिए निम्नलिखित दो सूचियाँ बना सकते हैं:

(1) [1, 2, 1, 1, 2, 1, 1, 0, 0, 0]
(2) [0, 1, 1, 1, 0, 1, 0, 1, 1, 1]

सूचियों की प्रत्येक प्रविष्टि सूची में संबंधित प्रविष्टि की गिनती को संदर्भित करती है (यह हिस्टोग्राम प्रतिनिधित्व भी है)। उदाहरण के लिए, पहली सूची में (जो दस्तावेज़ 1 का प्रतिनिधित्व करती है), पहली दो प्रविष्टियाँ 1,2 हैं:

  • पहली प्रविष्टि जॉन शब्द से मेल खाती है जो सूची में पहला शब्द है, और इसका मान 1 है क्योंकि जॉन पहले दस्तावेज़ में एक बार आता है।
  • दूसरी प्रविष्टि पसंद शब्द से मेल खाती है, जो सूची में दूसरा शब्द है, और इसका मान 2 है क्योंकि पसंद पहले दस्तावेज़ में दो बार दिखाई देती है।

यह सूची (या वेक्टर) प्रतिनिधित्व मूल वाक्यों में शब्दों के क्रम को संरक्षित नहीं करता है। यह बैग-ऑफ़-वर्ड्स मॉडल की मुख्य विशेषता है। इस प्रकार के प्रतिनिधित्व में कई सफल अनुप्रयोग हैं, जैसे ईमेल फ़िल्टरिंग[1]

मशीन लर्निंग के संदर्भ में पाठ विश्लेषण के लिए प्रीप्रोसेसिंग की आवश्यकता होती है: स्टॉपवर्ड हटाना, उच्चारण हटाना, यूआरएल हटाना आदि। इसके अलावा, शब्द आवृत्तियों को सामान्य करने के लिए दस्तावेज़ आवृत्ति, या टीएफ-आईडीएफ के व्युत्क्रम द्वारा किसी शब्द का वजन करना भी आम है। . इसके अतिरिक्त, वर्गीकरण के विशिष्ट उद्देश्य के लिए, दस्तावेज़ के वर्ग लेबल को ध्यान में रखते हुए पर्यवेक्षित शिक्षण विकल्प विकसित किए गए हैं।[4] अंत में, कुछ समस्याओं के लिए आवृत्तियों के स्थान पर बाइनरी (उपस्थिति/अनुपस्थिति या 1/0) वेटिंग का उपयोग किया जाता है (उदाहरण के लिए, यह विकल्प वेका (मशीन लर्निंग) मशीन लर्निंग सॉफ्टवेयर सिस्टम में लागू किया गया है)।

एन-ग्राम मॉडल

बैग-ऑफ-वर्ड्स मॉडल व्यवस्थित दस्तावेज़ प्रतिनिधित्व है - केवल शब्दों की गिनती मायने रखती है। उदाहरण के लिए, उपरोक्त उदाहरण में जॉन को फिल्में देखना पसंद है। मैरी को फिल्में भी पसंद हैं, बैग-ऑफ-वर्ड्स प्रतिनिधित्व से यह पता नहीं चलेगा कि क्रिया पसंद है हमेशा इस पाठ में किसी व्यक्ति के नाम के बाद आती है। विकल्प के रूप में, एन-ग्राम|एन-ग्राम मॉडल इस स्थानिक जानकारी को संग्रहीत कर सकता है। उपरोक्त उदाहरण को लागू करते हुए, 'बिग्राम' मॉडल पाठ को निम्नलिखित इकाइयों में पार्स करेगा और पहले की तरह प्रत्येक इकाई की शब्द आवृत्ति को संग्रहीत करेगा।

[
    "John likes",
    "likes to",
    "to watch",
    "watch movies",
    "Mary likes",
    "likes movies",
    "movies too",
]

वैचारिक रूप से, हम बैग-ऑफ-वर्ड मॉडल को n=1 के साथ n-ग्राम मॉडल के विशेष मामले के रूप में देख सकते हैं। n>1 के लिए मॉडल को डब्ल्यू-शिंगलिंग नाम दिया गया है (जहां w समूहीकृत शब्दों की संख्या को दर्शाते हुए n के बराबर है)। अधिक विस्तृत चर्चा के लिए भाषा मॉडल देखें।

पायथन कार्यान्वयन

# Make sure to install the necessary packages first
# pip install --upgrade pip
# pip install tensorflow
from tensorflow import keras
from typing import List
from keras.preprocessing.text import Tokenizer

sentence = ["John likes to watch movies. Mary likes movies too."]

def print_bow(sentence: List[str]) -> None:
    tokenizer = Tokenizer()
    tokenizer.fit_on_texts(sentence)
    sequences = tokenizer.texts_to_sequences(sentence)
    word_index = tokenizer.word_index 
    bow = {}
    for key in word_index:
        bow[key] = sequences[0].count(word_index[key])

    print(f"Bag of word sentence 1:\n{bow}")
    print(f"We found {len(word_index)} unique tokens.")

print_bow(sentence)

हैशिंग चाल

शब्दकोशों का उपयोग करने का सामान्य विकल्प हैशिंग ट्रिक है, जहां शब्दों को हैशिंग फ़ंक्शन के साथ सीधे सूचकांकों में मैप किया जाता है।[5] इस प्रकार, शब्दकोश को संग्रहीत करने के लिए किसी मेमोरी की आवश्यकता नहीं होती है। हैश बकेट की संख्या बढ़ाने के लिए हैश टकराव को आम तौर पर फ्री-अप मेमोरी के माध्यम से निपटाया जाता है। व्यवहार में, हैशिंग बैग-ऑफ-वर्ड मॉडल के कार्यान्वयन को सरल बनाता है और स्केलेबिलिटी में सुधार करता है।

उदाहरण उपयोग: स्पैम फ़िल्टरिंग

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

किसी ई-मेल संदेश को वर्गीकृत करने के लिए, बायेसियन स्पैम फ़िल्टर मानता है कि संदेश शब्दों का ढेर है जिसे दो बैगों में से एक से बेतरतीब ढंग से डाला गया है, और यह निर्धारित करने के लिए बायेसियन संभाव्यता का उपयोग करता है कि किस बैग में इसके होने की अधिक संभावना है।

यह भी देखें

टिप्पणियाँ

  1. 1.0 1.1 Sivic, Josef (April 2009). "Efficient visual search of videos cast as text retrieval" (PDF). IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 31, NO. 4. opposition. pp. 591–605.
  2. McTear et al 2016, p. 167.
  3. Harris, Zellig (1954). "Distributional Structure". Word. 10 (2/3): 146–62. doi:10.1080/00437956.1954.11659520. And this stock of combinations of elements becomes a factor in the way later choices are made ... for language is not merely a bag of words but a tool with particular properties which have been fashioned in the course of its use
  4. Youngjoong Ko (2012). "A study of term weighting schemes using class information for text classification". SIGIR'12. ACM.
  5. Weinberger, K. Q.; Dasgupta A.; Langford J.; Smola A.; Attenberg, J. (2009). "Feature hashing for large scale multitask learning". Proceedings of the 26th Annual International Conference on Machine Learning: 1113–1120. arXiv:0902.2206. Bibcode:2009arXiv0902.2206W. doi:10.1145/1553374.1553516. ISBN 9781605585161. S2CID 291713.

संदर्भ

  • McTear, Michael (et al) (2016). The Conversational Interface. Springer International Publishing.