# 22 Machine Learning

 22 Machine Learning
So far in this book, when we’ve wanted the Wolfram Language to do something, we’ve written code to tell it exactly what to do. But the Wolfram Language is also set up to be able to learn what to do just by looking at examples, using the idea of machine learning.
We’ll talk about how to train the language yourself. But first let’s look at some built-in functions that have already been trained on huge numbers of examples.
LanguageIdentify takes pieces of text, and identifies what human language they’re in.
Identify the language each phrase is in:
LanguageIdentify[{ "thank you", "merci", "dar las gracias", "感謝", "благодарить"}]

The Wolfram Language can also do the considerably more difficult “artificial intelligence” task of identifying what an image is of.
Identify what an image is of:

There’s a general function Classify, which has been taught various kinds of classification. One example is classifying the “sentiment” of text.
Upbeat text is classified as having positive sentiment:
Classify["Sentiment", "I'm so excited to be programming"]

Downbeat text is classified as having negative sentiment:
Classify["Sentiment", "math can be really hard"]

You can also train Classify yourself. Here’s a simple example of classifying handwritten digits as 0 or 1. You give Classify a collection of training examples, followed by a particular handwritten digit. Then it’ll tell you whether the digit you give is a 0 or 1.
With training examples, Classify correctly identifies a handwritten 0:
Classify[{\!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxTTMoPSmNiYGAo5gASQYnljkVFiZXBAkBOaF5xZnpeaopnXklqemqRRRJI mQgQCwLxfyg4NdWR1xjG+X9muSUbAyMjZ+9rCH8+F6Nc+qzjDeGM5SDu39WM rPmfQazfGQKngFQXI+NMmF7FoP//bzEy7oUbttX8//9iRlE4//82yVePhVkm IwS+yPaeYBT5jwTcLU8whiILCKudYFyBLCCkeoKxFIm/m9nyAnsSksA2xob/ qsiGrmdc/l+V9ylCIEbzy/+djIpw/hGFwP///2Qwpj+H8NeogT33SJJRrPj4 rVvLJnPyHQFLvO6TYmEEAfNDcM1bYmwYzTrfg5gAPlYFyw== "], {{0, 20}, {17, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{17, 20}, PlotRange->{{0, 17}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 255, 255, 219, 87, 139, 253}, {255, 255, 255, 255, 119, 1, 1, 212}, {255, 255, 255, 255, 62, 1, 46, 236}, {255, 255, 255, 218, 26, 1, 94, 255}, {255, 255, 255, 177, 1, 1, 206, 255}, {255, 255, 255, 68, 1, 1, 206, 255}, { 255, 255, 255, 68, 1, 1, 206, 255}, {255, 255, 255, 68, 1, 15, 215, 255}, {255, 255, 255, 68, 1, 103, 255, 255}, {255, 255, 213, 18, 1, 138, 255, 255}, {255, 255, 165, 1, 1, 200, 255, 255}, {255, 255, 74, 1, 1, 200, 255, 255}, {255, 239, 51, 1, 56, 244, 255, 255}, {255, 205, 1, 1, 69, 255, 255, 255}, {255, 205, 1, 1, 69, 255, 255, 255}, {255, 155, 1, 1, 118, 255, 255, 255}, {255, 80, 0, 0, 193, 255, 255, 255}, {235, 45, 1, 1, 193, 255, 255, 255}, {211, 1, 1, 60, 252, 255, 255, 255}, { 232, 40, 89, 218, 255, 255, 255, 255}}, {{0, 20}, {8, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{8, 20}, PlotRange->{{0, 8}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 229, 134, 121, 2, 2, 0, 58, 242, 255, 255, 255, 255}, {255, 226, 47, 3, 3, 3, 3, 2, 3, 14, 218, 255, 255, 255}, {133, 22, 3, 3, 3, 3, 3, 96, 57, 3, 67, 235, 255, 255}, {42, 3, 3, 3, 68, 216, 145, 255, 182, 54, 3, 69, 234, 255}, {63, 52, 3, 3, 162, 255, 255, 255, 255, 186, 13, 3, 189, 255}, {220, 188, 3, 33, 231, 255, 255, 255, 255, 255, 70, 3, 91, 255}, {255, 188, 3, 43, 255, 255, 255, 255, 255, 255, 187, 11, 48, 242}, {255, 174, 3, 43, 255, 255, 255, 255, 255, 255, 255, 55, 3, 176}, {255, 55, 3, 43, 255, 255, 255, 255, 255, 255, 255, 55, 3, 176}, {255, 55, 3, 43, 255, 255, 255, 255, 255, 255, 255, 55, 3, 176}, {255, 54, 2, 42, 255, 255, 255, 255, 255, 255, 255, 54, 2, 175}, {255, 55, 3, 43, 255, 255, 255, 255, 255, 255, 255, 55, 3, 120}, {255, 55, 3, 43, 255, 255, 255, 255, 255, 255, 255, 55, 3, 162}, {255, 98, 3, 9, 134, 255, 255, 255, 255, 255, 229, 39, 3, 176}, {255, 188, 3, 3, 30, 255, 255, 255, 255, 255, 139, 3, 3, 176}, {255, 237, 52, 3, 24, 232, 255, 255, 255, 235, 34, 3, 14, 192}, {255, 255, 90, 3, 3, 128, 255, 255, 238, 136, 3, 3, 147, 255}, {255, 255, 235, 67, 3, 8, 95, 164, 56, 3, 3, 60, 231, 255}, {255, 255, 255, 217, 15, 3, 3, 2, 3, 3, 57, 233, 255, 255}, {255, 255, 255, 255, 242, 59, 3, 2, 60, 136, 236, 255, 255, 255}}, {{0, 20}, {14, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{14, 20}, PlotRange->{{0, 14}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 255, 255, 157, 22, 154}, {255, 255, 255, 255, 1, 2, 39}, {255, 255, 255, 223, 0, 67, 205}, {255, 255, 221, 36, 1, 163, 255}, {255, 255, 162, 2, 1, 163, 255}, {255, 255, 151, 1, 23, 255, 255}, {255, 255, 47, 2, 98, 255, 255}, { 255, 255, 47, 2, 139, 255, 255}, {255, 255, 47, 2, 234, 255, 255}, {255, 191, 6, 2, 255, 255, 255}, {255, 69, 1, 1, 255, 255, 255}, {255, 70, 2, 76, 255, 255, 255}, {242, 51, 2, 118, 255, 255, 255}, {208, 2, 2, 212, 255, 255, 255}, {103, 2, 2, 232, 255, 255, 255}, {92, 1, 94, 255, 255, 255, 255}, {93, 2, 94, 255, 255, 255, 255}, {93, 2, 94, 255, 255, 255, 255}, { 187, 2, 94, 255, 255, 255, 255}, {229, 33, 146, 255, 255, 255, 255}}, {{0, 20}, {7, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{7, 20}, PlotRange->{{0, 7}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[{{38, 78, 255, 255, 255, 255, 255, 255}, {39, 2, 143, 255, 255, 255, 255, 255}, {39, 1, 41, 229, 255, 255, 255, 255}, {39, 1, 1, 142, 255, 255, 255, 255}, {189, 18, 1, 41, 230, 255, 255, 255}, {255, 159, 1, 1, 190, 255, 255, 255}, { 255, 176, 1, 1, 146, 255, 255, 255}, {255, 176, 1, 1, 60, 255, 255, 255}, {255, 198, 15, 1, 60, 255, 255, 255}, {255, 255, 52, 0, 14, 200, 255, 255}, {255, 255, 149, 1, 1, 153, 255, 255}, {255, 255, 197, 12, 1, 53, 255, 255}, {255, 255, 255, 58, 1, 53, 255, 255}, {255, 255, 255, 58, 1, 18, 203, 255}, { 255, 255, 255, 58, 1, 1, 160, 255}, {255, 255, 255, 72, 1, 1, 18, 202}, {255, 255, 255, 228, 39, 1, 0, 160}, {255, 255, 255, 255, 72, 1, 1, 40}, {255, 255, 255, 255, 195, 1, 0, 43}, { 255, 255, 255, 255, 195, 1, 92, 214}}, {{0, 20}, {8, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{8, 20}, PlotRange->{{0, 8}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxTTMoPSmNiYGAo5gASQYnljkVFiZXBAkBOaF5xZnpeaopnXklqemqRRRJI mQgQCwHxfwj4yLj///98xtr/cFDExLYrVy2QxQQuksPEOO/F2x+20negAt+8 mBg/AWkXJkOoSBUTk8I3IL2WSewRRIk3E9NUEOMkE9MUsMhBJiZxMOOdBUTk jjwTM0TqfyBTG4g6xMTE/x8mIgYkbysyMYXBRUCKTRkZpWHuCmAAitxRYGKa AxWYzMZ78P8dDSamiK8QgWfaTLL//y9kYtL/BFUykUkF6AtzJiYLqMB+Xia/ //9fiDExzYIInHNmcnv1/389E5PBKxD/2lwuJlcQi4+JSaq6PS4ujoGJyfn1 f4gIBDDwt78Da+4Ngwh4tv2Emg8AlT70Eg== "], {{0, 20}, {18, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{18, 20}, PlotRange->{{0, 18}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 255, 255, 160, 1, 57, 88, 189, 255, 255, 255}, {255, 255, 255, 250, 52, 1, 0, 1, 90, 246, 255, 255}, { 255, 255, 255, 237, 1, 23, 180, 6, 238, 255, 255, 255}, {255, 255, 255, 140, 3, 184, 255, 205, 90, 255, 255, 255}, {255, 255, 232, 10, 56, 255, 255, 255, 42, 217, 255, 255}, {255, 255, 143, 10, 204, 255, 255, 255, 148, 92, 250, 255}, {255, 239, 30, 19, 255, 255, 255, 255, 221, 13, 220, 255}, {255, 183, 1, 92, 255, 255, 255, 255, 255, 33, 184, 255}, {255, 131, 2, 196, 255, 255, 255, 255, 255, 118, 68, 253}, {255, 72, 28, 255, 255, 255, 255, 255, 255, 220, 13, 211}, {226, 15, 54, 255, 255, 255, 255, 255, 255, 255, 35, 211}, {211, 1, 116, 255, 255, 255, 255, 255, 255, 255, 36, 211}, {211, 1, 116, 255, 255, 255, 255, 255, 255, 255, 36, 211}, {211, 1, 116, 255, 255, 255, 255, 255, 255, 244, 29, 211}, {211, 1, 145, 255, 255, 255, 255, 255, 255, 141, 9, 219}, {211, 1, 104, 255, 255, 255, 255, 255, 213, 15, 100, 255}, {246, 45, 28, 255, 255, 255, 255, 238, 34, 34, 236, 255}, {255, 198, 8, 196, 255, 255, 209, 27, 39, 219, 255, 255}, {255, 245, 76, 6, 71, 71, 1, 34, 244, 255, 255, 255}, {255, 255, 237, 83, 1, 62, 116, 252, 255, 255, 255, 255}}, {{0, 20}, {12, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{12, 20}, PlotRange->{{0, 12}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 255, 255, 255, 255, 229, 39, 20, 210}, { 255, 255, 255, 255, 255, 255, 202, 1, 1, 164}, {255, 255, 255, 255, 255, 255, 202, 1, 1, 164}, {255, 255, 255, 255, 255, 255, 81, 1, 37, 248}, {255, 255, 255, 255, 255, 201, 7, 1, 158, 255}, {255, 255, 255, 255, 255, 81, 1, 1, 170, 255}, { 255, 255, 255, 255, 255, 65, 1, 1, 170, 255}, {255, 255, 255, 255, 255, 65, 1, 38, 240, 255}, {255, 255, 255, 255, 202, 13, 1, 47, 255, 255}, {255, 255, 255, 255, 189, 1, 1, 147, 255, 255}, {255, 255, 255, 200, 48, 1, 40, 235, 255, 255}, {255, 255, 255, 155, 1, 1, 80, 255, 255, 255}, {255, 255, 240, 43, 0, 11, 196, 255, 255, 255}, {255, 255, 155, 1, 1, 80, 255, 255, 255, 255}, {255, 255, 45, 1, 1, 190, 255, 255, 255, 255}, {255, 202, 18, 1, 41, 230, 255, 255, 255, 255}, {255, 159, 1, 6, 148, 255, 255, 255, 255, 255}, {250, 37, 1, 80, 255, 255, 255, 255, 255, 255}, {162, 1, 3, 205, 255, 255, 255, 255, 255, 255}, {162, 1, 146, 255, 255, 255, 255, 255, 255, 255}}, {{0, 20}, {10, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{10, 20}, PlotRange->{{0, 10}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 2, 191}, {255, 255, 255, 255, 255, 255, 255, 255, 210, 19, 3, 160}, {255, 255, 255, 255, 255, 255, 255, 255, 102, 3, 34, 255}, {160, 255, 255, 255, 255, 255, 255, 217, 15, 3, 118, 255}, {244, 255, 255, 255, 255, 255, 255, 208, 3, 3, 118, 255}, {255, 255, 255, 255, 255, 255, 252, 85, 2, 2, 180, 255}, {255, 255, 255, 255, 255, 255, 210, 3, 3, 62, 247, 255}, {255, 255, 255, 255, 255, 255, 117, 3, 3, 178, 255, 255}, {255, 255, 255, 255, 255, 255, 117, 3, 3, 210, 255, 255}, {255, 255, 255, 255, 255, 255, 64, 3, 3, 210, 255, 255}, {255, 255, 255, 255, 255, 244, 0, 2, 71, 255, 255, 255}, {255, 255, 255, 255, 255, 139, 2, 3, 72, 255, 255, 255}, {255, 255, 255, 255, 255, 139, 2, 3, 155, 255, 255, 255}, {255, 255, 255, 255, 255, 45, 2, 3, 186, 255, 255, 255}, {255, 255, 255, 255, 255, 25, 2, 45, 249, 255, 255, 255}, {255, 255, 255, 255, 255, 24, 0, 48, 255, 255, 255, 255}, {255, 255, 255, 255, 195, 11, 2, 70, 255, 255, 255, 255}, {255, 255, 255, 255, 131, 3, 19, 230, 255, 255, 255, 255}, {255, 255, 255, 229, 31, 3, 120, 255, 255, 255, 255, 255}, {255, 255, 255, 185, 3, 3, 192, 255, 255, 255, 255, 255}}, {{0, 20}, {12, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{12, 20}, PlotRange->{{0, 12}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxTTMoPSmNiYGAo5gASQYnljkVFiZXBAkBOaF5xZnpeaopnXklqemqRRRJI mSAQiwDxfzhYefPm4/P/kUHXMyYlpXIZyxq4yLEw+XomZiBgki/7ChWLAXGZ IUQcRKg3gYmJiSG9uLi4yJeJqR8kdB6s5MkfEHsVM7MQkKqWYWIW8D4B0QIU Y/7/9bA8M5PPPphts0BiIIn+z3AXyIHEcpiYHBHOZGAC2SHHLAtTtWdVDBOz WMbndk7mXqi7p/MD3ed65f//BGbmGZ/ePz0cFgZ20OrjQNk+IMPJhB/iBeF+ iBeYQF5gYvItNi4uvgAx5bMXUEl4RPm3/x8Qtr9ZMfPEf1QAAMkk12Y= "], {{0, 17}, {20, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{20, 17}, PlotRange->{{0, 20}, {0, 17}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxTTMoPSmNiYGAo5gASQYnljkVFiZXBAkBOaF5xZnpeaopnXklqemqRRRJI mQgU/0eAw3vsGRkZtt9BElrNzwQGtnehAj8fWIoB+dw8rExM+yBCT71AKhT9 Pv9vZGVqAwt98QHrygKxuZiYQPre+IFE+PY+AXI+cjIJAKnNIBGe8IMgVTeM web9BJvVBzG4F8jc971eFUh53/4JFroGtFzgaDlIEedUqJPOMzFJrP3PABIT hbk7gonJ+v//J0/uysLE3t8UZGJ6DGZuholNB2rx+YUi9hToDv9n/5HFsoAa g77+h4nxbv7/qdcMqAomBPKHtI8LyKxn8IA7Ig0JONNupNDcVgISCvj4Hxn8 2ucvse85nAsAzOUDGw== "], {{0, 20}, {20, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{20, 20}, PlotRange->{{0, 20}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{254, 146, 22, 2, 2, 145, 240, 176, 146, 192, 255, 255, 255, 255, 255}, {130, 3, 3, 3, 3, 2, 33, 13, 3, 111, 255, 255, 255, 255, 255}, {34, 3, 3, 3, 3, 2, 3, 3, 3, 95, 250, 255, 255, 255, 255}, {65, 3, 87, 3, 3, 2, 3, 3, 3, 2, 96, 214, 255, 255, 255}, {172, 112, 203, 44, 3, 2, 3, 3, 3, 2, 3, 122, 255, 255, 255}, {255, 255, 58, 3, 3, 33, 76, 24, 3, 2, 3, 8, 121, 255, 255}, {254, 156, 13, 3, 3, 130, 255, 177, 3, 2, 3, 3, 3, 255, 255}, {254, 3, 3, 3, 87, 255, 255, 239, 147, 2, 3, 3, 3, 171, 255}, {254, 2, 2, 18, 193, 255, 255, 255, 255, 145, 2, 2, 2, 110, 255}, {213, 3, 3, 40, 255, 255, 255, 255, 255, 146, 3, 3, 3, 17, 225}, {111, 3, 3, 143, 255, 255, 255, 255, 255, 224, 28, 3, 3, 2, 220}, {111, 3, 3, 101, 255, 255, 255, 255, 255, 255, 38, 3, 3, 2, 220}, {110, 2, 2, 23, 208, 255, 255, 255, 255, 255, 37, 2, 2, 110, 255}, {111, 3, 3, 3, 147, 255, 255, 255, 255, 161, 8, 3, 3, 111, 255}, {130, 3, 3, 3, 44, 234, 255, 255, 255, 146, 3, 3, 3, 214, 255}, {254, 3, 3, 3, 3, 48, 235, 255, 255, 64, 3, 3, 3, 255, 255}, {254, 64, 2, 2, 2, 0, 2, 85, 2, 0, 2, 2, 64, 255, 255}, {255, 240, 75, 3, 3, 2, 3, 3, 3, 2, 3, 14, 178, 255, 255}, {255, 255, 234, 75, 3, 2, 3, 3, 3, 2, 14, 153, 255, 255, 255}, {255, 255, 255, 239, 65, 2, 3, 3, 3, 64, 178, 255, 255, 255, 255}}, {{0, 20}, {15, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{15, 20}, PlotRange->{{0, 15}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 115, 1, 0, 54, 167, 255, 255, 255}, {255, 116, 2, 2, 2, 4, 144, 255, 255}, {255, 116, 2, 2, 2, 2, 101, 255, 255}, {255, 116, 2, 2, 2, 2, 101, 255, 255}, {255, 116, 2, 2, 2, 2, 101, 255, 255}, {213, 20, 2, 2, 2, 2, 101, 255, 255}, { 205, 2, 2, 2, 2, 2, 101, 255, 255}, {205, 2, 2, 2, 2, 2, 101, 255, 255}, {205, 2, 2, 2, 2, 2, 101, 255, 255}, {205, 2, 2, 2, 2, 2, 101, 255, 255}, {205, 2, 2, 2, 2, 2, 101, 255, 255}, { 205, 2, 2, 2, 2, 2, 101, 255, 255}, {242, 87, 2, 2, 2, 2, 91, 248, 255}, {255, 116, 2, 2, 2, 2, 2, 190, 255}, {255, 137, 6, 2, 2, 2, 2, 190, 255}, {255, 255, 25, 2, 2, 2, 2, 190, 255}, { 255, 255, 63, 2, 2, 2, 2, 47, 255}, {255, 255, 189, 2, 2, 2, 2, 12, 174}, {255, 255, 251, 138, 4, 2, 2, 2, 43}, {255, 255, 255, 255, 116, 2, 2, 2, 117}}, {{0, 20}, {9, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{9, 20}, PlotRange->{{0, 9}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxTTMoPSmNiYGAo5gASQYnljkVFiZXBAkBOaF5xZnpeaopnXklqemqRRRJI mQgU/0cFfy4pMs1HFbrSyczM7IskcGlnNCcTM7PMbITQGVugGqBYPEKXMg9Q yLxMh3ky1OR5ikxMDExGr/7/z2Dq+gMSehkKVKJrUP0MyJ7DrPsZSB0zYmI2 LfoJ0bKRWeb9/3eL5Jm5Sj5Bjf1my9wBNACobxvcqs3MzHP/P2di4mqEC+03 BVm0l5m/Bi50s5iJe9L//4rMHnChN8rMTC1AWox5Gcz4XmVm3bnvgCwm5l0Q oalezMxJL8FMUyaQcR9OlPIw63W/gkibMcu0X5ioAnSQHtxcR2ZIaMhsuA8X ++AHFOOK3/QIOWh/vewqe4Ua2gDMqh37 "], {{0, 20}, {20, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{20, 20}, PlotRange->{{0, 20}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 103, 0, 221}, {255, 255, 255, 255, 255, 255, 255, 255, 255, 168, 2, 2, 107}, {255, 255, 255, 255, 255, 255, 255, 255, 249, 47, 2, 2, 155}, {255, 255, 255, 255, 255, 255, 255, 255, 108, 2, 2, 2, 173}, {255, 255, 255, 255, 255, 255, 255, 246, 50, 2, 2, 74, 243}, {255, 255, 255, 255, 255, 255, 255, 186, 2, 2, 2, 218, 255}, {255, 255, 255, 255, 255, 255, 244, 94, 2, 2, 59, 242, 255}, {255, 255, 255, 255, 255, 255, 192, 2, 2, 2, 113, 255, 255}, {255, 255, 255, 255, 255, 255, 105, 2, 2, 59, 242, 255, 255}, {255, 255, 255, 255, 255, 183, 20, 2, 2, 173, 255, 255, 255}, {255, 255, 255, 255, 255, 75, 2, 2, 92, 243, 255, 255, 255}, {255, 255, 255, 255, 215, 18, 2, 2, 200, 255, 255, 255, 255}, {255, 255, 255, 241, 80, 2, 2, 24, 217, 255, 255, 255, 255}, {255, 255, 255, 168, 2, 2, 23, 194, 255, 255, 255, 255, 255}, {255, 255, 177, 14, 2, 2, 110, 255, 255, 255, 255, 255, 255}, {255, 242, 58, 2, 2, 100, 247, 255, 255, 255, 255, 255, 255}, {244, 71, 2, 2, 22, 212, 255, 255, 255, 255, 255, 255, 255}, {230, 2, 2, 2, 51, 255, 255, 255, 255, 255, 255, 255, 255}, {230, 2, 2, 2, 109, 255, 255, 255, 255, 255, 255, 255, 255}, {242, 50, 20, 146, 253, 255, 255, 255, 255, 255, 255, 255, 255}}, {{0, 20}, {13, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{13, 20}, PlotRange->{{0, 13}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxdUDEOwjAMtJgYEeID/ILRjKxFPKAVoWIJUoqEmPw0Py04cRvsWnKUO93F OR+HV/fYAMC0laPrP+eU+u91J+AWp+cYw/0S32EM6TQU2UF6L52XYgDKtoTw lEAkxJWAEBxRC7lZRFE0AOynkFJ2LNU7zdK/3BAFUEbzb3W5n86MM6GwRsJr E9VdYGMYNT3rO1wjaCzU1HY9S3K7Li7JG/oBdlL2Qg== "], {{0, 20}, {18, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{18, 20}, PlotRange->{{0, 18}, {0, 20}}]\) -> 0, \!\(\* GraphicsBox[ TagBox[RasterBox[{{61, 230, 255, 255, 255, 255}, {69, 52, 255, 255, 255, 255}, {197, 12, 255, 255, 255, 255}, {220, 43, 182, 255, 255, 255}, {93, 4, 156, 255, 255, 255}, {118, 0, 156, 255, 255, 255}, {247, 36, 62, 251, 255, 255}, {255, 67, 1, 178, 255, 255}, {255, 147, 1, 100, 255, 255}, {255, 249, 1, 100, 255, 255}, {255, 253, 79, 100, 255, 255}, {255, 255, 99, 2, 233, 255}, {255, 255, 99, 1, 146, 255}, {255, 255, 99, 1, 133, 255}, {255, 255, 99, 1, 42, 255}, {255, 255, 192, 1, 42, 255}, {255, 255, 202, 1, 14, 213}, {255, 255, 247, 96, 1, 193}, {255, 255, 255, 232, 4, 127}, {255, 255, 255, 196, 2, 89}}, {{0, 20}, {6, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{6, 20}, PlotRange->{{0, 6}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[{{172, 62, 53, 226, 255, 255}, {24, 1, 1, 56, 255, 255}, {24, 1, 1, 9, 255, 255}, {45, 1, 1, 9, 255, 255}, {188, 1, 1, 9, 255, 255}, {188, 1, 1, 9, 255, 255}, {188, 1, 1, 9, 255, 255}, {188, 1, 1, 9, 255, 255}, {188, 1, 1, 4, 158, 255}, {188, 1, 1, 1, 100, 255}, {233, 67, 1, 1, 100, 255}, { 255, 98, 1, 1, 100, 255}, {255, 98, 1, 1, 100, 255}, {255, 98, 1, 1, 100, 255}, {255, 98, 1, 1, 100, 255}, {255, 98, 1, 1, 100, 255}, {255, 98, 1, 1, 100, 255}, {255, 189, 4, 1, 100, 255}, {255, 255, 7, 1, 6, 145}, {255, 255, 7, 1, 1, 25}}, {{0, 20}, {6, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{6, 20}, PlotRange->{{0, 6}, {0, 20}}]\) -> 1, \!\(\* GraphicsBox[ TagBox[RasterBox[{{255, 255, 41, 83, 255}, {255, 255, 2, 3, 255}, { 255, 255, 21, 2, 153}, {255, 255, 103, 3, 153}, {255, 255, 41, 2, 214}, {255, 255, 2, 3, 255}, {255, 214, 1, 2, 255}, {255, 173, 2, 3, 255}, {255, 153, 1, 2, 255}, {255, 153, 2, 43, 255}, {255, 153, 1, 104, 255}, {255, 153, 2, 104, 255}, {255, 52, 1, 205, 255}, {234, 32, 22, 225, 255}, {183, 2, 52, 255, 255}, {103, 3, 52, 255, 255}, {103, 2, 152, 255, 255}, {22, 3, 235, 255, 255}, {0, 63, 255, 255, 255}, {2, 144, 255, 255, 255}}, {{0, 20}, {5, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSizeRaw->{5, 20}, PlotRange->{{0, 5}, {0, 20}}]\) -> 1}, \!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJxTTMoPSmNiYGAo5gASQYnljkVFiZXBAkBOaF5xZnpeaopnXklqemqRRRJI mQgQCwHxfxh4sz/TkJHB/SVc4JoKExh0wQTexgB5bNJMTHwfoSIFQAH5yRuA 5CIw/1MsKxNT+I3/N/hgIvZMTALFf4EMaajIDqCKXLAUVOStDBOT939kkW6g odfBAn+lmLg+/P9/mpOJaTlEyWwmJkUgFcnEZP4WLHBKl4mp5P//+cxMTPch SmyYmHiBzGImJsvvYIE8VibODWAJ1q1ggcmsTNztQPoRB5MMiP++A6i7AMRa yAQWOZDBxMQZ/R0ucriCn4lJYwPEfKAIqyob0M9G76DBcIcdHFBS1W/ggTdT lokpdu0TOP8/ADHi5B0= "], {{0, 20}, {18, 0}}, {0, 255}, ColorFunction->GrayLevel], BoxForm`ImageTag[ "Byte", ColorSpace -> Automatic, Interleaving -> None], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{22.86328125, Automatic}, ImageSizeRaw->{18, 20}, PlotRange->{{0, 18}, {0, 20}}]\)]

To get some sense of how this worksand because it’s useful in its own rightlet’s talk about the function Nearest, that finds what element in a list is nearest to what you supply.
Find what number in the list is nearest to 22:
Nearest[{10, 20, 30, 40, 50, 60, 70, 80}, 22]

Find the nearest three numbers:
Nearest[{10, 20, 30, 40, 50, 60, 70, 80}, 22, 3]

Nearest can find nearest colors as well.
Find the 3 colors in the list that are nearest to the color you give:
Nearest[{Hue[0.], Hue[0.05], Hue[0.1], Hue[0.15000000000000002`], Hue[ 0.2], Hue[0.25], Hue[0.30000000000000004`], Hue[ 0.35000000000000003`], Hue[0.4], Hue[0.45], Hue[0.5], Hue[0.55], Hue[0.6000000000000001], Hue[0.65], Hue[0.7000000000000001], Hue[ 0.75], Hue[0.8]}, RGBColor[ 0.8727094319714808, 0.9066617343162084, 0.09569669807641734], 3]

It also works on words.
Find the 10 words nearest to “good” in the list of words:
Nearest[WordList[ ], "good", 10]

Create an image of the word “hello”, then blur it:
Blur[Rasterize[Style["hello", 30]], 3]

TextRecognize can still recognize the original text string in this.
Recognize text in the image:
TextRecognize[\!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1: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 "], {{0, 38}, {63, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> False], Selectable->False], DefaultBaseStyle->"ImageGraphics", ImageSize->Automatic, ImageSizeRaw->{63, 38}, PlotRange->{{0, 63}, {0, 38}}]\)]

If the text gets too blurred TextRecognize can’t tell what it saysand you probably can’t either.
Generate a sequence of progressively more blurred pieces of text:
Table[Blur[Rasterize["hello"], r], {r, 0, 10}]

As the text gets more blurred, TextRecognize makes a mistake, then gives up altogether:
Table[TextRecognize[Blur[Rasterize["hello"], r]], {r, 0, 10}]

Something similar happens if we progressively blur the picture of a cheetah. When the picture is still fairly sharp, ImageIdentify will correctly identify it as a cheetah. But when it gets too blurred ImageIdentify starts thinking it’s more likely to be a lion, and eventually the best guess is that it’s a picture of a person.
Progressively blur a picture of a cheetah: