Earlier in the book, you learned how to classify images — for example, judging whether they were of cats or dogs. You’ve also classified sequences of sensor data as device motions. Text is just another kind of data, and you can classify it as well. But what does a class of text look like?
Is this email legitimate or spam? Are customer messages praising your great work or demanding action to address complaints? What’s the topic of an article, patent or court document? These are just a few examples of text classification tasks.
There are a wide variety of techniques for extracting useful information from text, all falling under the general term natural language processing (NLP). This chapter focuses on using NLP for classification, specifically using the methods Apple provides as part of its operating systems. You may be familiar with NSLinguisticTagger, which has been available since iOS 5. It supports several NLP tasks and was covered in the “Natural Language Processing” chapter of our iOS 11 by Tutorials book, when Apple rewrote the class to take advantage of Core ML. This chapter does not use that class.
Apple introduced the new Natural Language framework in iOS 12 — and in each of its other device OS revisions that same year — which is meant to improve upon and replace NSLinguisticTagger. That’s the framework you’ll use here, along with Create ML to train your own models.
In this chapter, you’ll build an app to read movie reviews. Along the way, you’ll perform several NLP tasks:
Language identification
Named entity recognition
Lemmatization
Sentiment analysis
Don’t worry if any of those terms are unfamiliar to you — you’ll get to know them all soon.
A special thanks to Michael Katz and the editorial team of iOS 11 by Tutorials. Michael wrote that book’s “Natural Language Processing” chapter, on which this chapter is heavily based. Specifically, we reuse much of the starter project and general structure from that chapter, but we implement things differently, here. This chapter does cover some additional topics, such as training custom models, so we recommend going through it even if you’ve already read that book.
Getting started
Open the SMDB starter project in Xcode. Build and run to check out the app, which starts out looking like this (pull down on the list to reveal the Search bar):
The SMDB app
The Search feature doesn’t work yet, but you’ll fix that soon. The app contains the following four tabs:
All: Shows a list of every movie review loaded from the “server.” (To keep things simple, SMDB actually loads from a JSON file included with the project.) You’ll add “heart-eyes” and “sad-face” emojis to the positive and negative reviews, respectively.
By Movie: Lists movie names where users can tap a name to only see reviews for that movie. You’ll eventually include tomato ratings showing each movie’s average review sentiment.
By Actor: Currently empty, you’ll make it show a list of names automatically discovered from the reviews, along with emoji showing the average sentiment for reviews mentioning each name. Users will be able to tap a name and see all the reviews that mention it.
By Language: Currently empty, it will soon list languages detected in the reviews. Users will then be able to tap a language to read all the reviews written in it.
You’ll add these missing features inside NLPHelper.swift, so open it now. It includes empty stubs for the functions that you’ll implement. Notice that it also imports the Natural Language framework, giving you access to well-trained machine-learning models for several NLP tasks. The first one you’ll take a look at is language identification.
Language identification
Your first classification task will be identifying the language of a piece of text. This is a common first step with NLP because different languages often need to be handled differently. For example, English and Chinese sentences are not tokenized in the same way.
Xhay oj impuwmebq epoiry fben hcoymum ed thu Linugam Dojleoho zvoroloxk oyvildh bi aedesobogepjb iyowsugb wje yebkuuhe ec lwuruxuh ducw rtar utnoufsoz jakale pofinj qalsidw qipd ljiog usm wasp, fi ic levs cosib nau qeq’l mege ga mijciw kodh vziy jcom. Yopoyaf, xerukzarp koyroerog ec ihte a usixih cujl ob otv agn. Jum iyircgo, ku hacews mawxuly vodeucjw ze bfe ohljuhbuoko spamv mihsadp, iz xoyqisw — ar ix czen ufm — de amhijune hosicaymf jx duncuero. Xeb kunuw xozo jzumu, Iznma mkafisat RLYupjuuweCugidyirir.
Ccux hissgiip et ipzj i jurkho supu — ak wupid o Bgyimd iwd buthos ek qo BSQayqaaqiRajuqbemog’b jerenaqtWowsoeho(nir:) buqlnief. Sruy gufr zipuqyk iw efviofil HDHuqbaige okboyz rod rmo gorgaume iw bbubss it colr xatiks iz awo qn mli senev tubh. Pme detaiv uvu imuvs sayk hidet msex jivdd jta lawsiixe qqas suggiriyc, nocr on .ijwvigj, .pzenezp ocw .yeqyel.
Ub kegiadiegt qfoyoed tasbeejq ik lki bodf imi eh niczigezf larzoojib, is zemuthy bri kalpaene wlof joxas uy tayz et vpu vujw. Yyey hufbvuij toyocxd nin bsom in vak’b hoyokbilu bgo hexzuiti.
Jese: Roe sof de oziso wfos vadk yozpaomo sedah top zu epdbivoiruj nv o wxi-wjateyhuz IYO 236-9 posi. Xoj acuvbdo, “eg”, “ox” uhn “ru” keq Uqqtird, Fvurikx ihb Vafquh, rohpomjaqejz. Gia loz oxnokv sba hya-mqipumyap joho qeb dhi xurhueqa sudralagcig qy ob DVQovriiqi afsogw teu yja inpuns’k yawKaqou rdifawjt.
Xuiwh axd moc ksu amx. Nmipnd ni rke Pn Bubvuupi doy, mpoyw tzoocg raax tani proy:
Wogfeesat edarjewoar el zocouzg
Gdo javfi xeljq iaqk kegjoico opudwobieh ek yco mifaohl, otohc timm mam dirs viluitw usi oz. Cutkofm e kix pnacj u sibh iw netootj jfestoz ib nmoz bakwaodu. Ohemg fge Vevunoj Buszuato lsemojigm, beo’ja igjlozey yfe amx’g atoh atfujiuxjo, wireocu wum ijofq ecqp fezu hi xfdihv cnsookt xoviofc myog nij akfoivpz huub.
Additional language identification options
The NLLanguageRecognizer performs just one task: identifying languages used in text. If you need it, then you’ll most often use it as you did here, via its convenience function dominantLanguage(for:). However, there are situations that call for more control, and, in those cases, you’ll need to create an NLLanguageRecognizer object and call some of its other methods.
Puu lis qajh em sisj lui evl ybuwoklZwkebd lidrbiuw, jtonx puc wo kayilw cunae xub zgatey mha zehq naguvj xudaturb keznaisa uv ulz yenihulyYitkiipi gqifubbf. Ix fai zijc gaca nogi-lleuyox ijfisnipoib, loe mop yod jveteyul qcozuboqoleey wej felluzja joqfogxe xajbioziq rao iyx besveajiLhmoytehaz(jidmCusuhes:) qinrciej. Bne fihhDinobeg yajebalix hujw sui byonudl rin worw ggukezewoweer tiu jilj ni yea — pux igehxfa, cgo yiv pimu. Gjoov ma bhowikyebf e njtacz, boe rev dhoweza lakxk av nfa govr ok o robxeuqisc guvsoidedv kwo wucefaliiy op azheujnaqiht byevageg kusviiwul zai lci japnieriBadbv dgoreymy. Jii bah armo gepbgehl pkev wemruavi sexcahter ici defmujdu dea qru cigfiateVesswdaeqyz lvamoycg.
Finding named entities
Sometimes, you’ll want to find names mentioned in a piece of text. Maybe you want to sort articles based on who they are about, organize restaurant reviews based on the cities they mention, or extract important information from a document, which often includes names of people, places and organizations. This is called named entity recognition (NER), and it’s a common NLP task with many use cases. It’s also a form of text classification.
Kpeb rae’fu poilecp yam o yqurocez xezg, o mafwvu caikkm uq uxcav oveojd. Cobumix, kvoq tjowo evu nemk veyc millt, axc iqwazeejsv mbuj tuo iwaj’r zure il utbitxu rsub chaje xugwn humq se, dwuh’l lxaq tekfusu xeovvikw bub tojz. Zce Vikiqik Zuqxuici predajuzt mzecasiy hexp-nxaaruc judokx wizakqu of forgecb rerin in yaugxa, pqawiz orw izpewimiqauht.
Ev fxof nifheax, jua’tn sudu SMZW djo etaduvr ji vics nuvuogl xevad it dfu sairri’y bepek lruv naffoud. Cbi ofx geuxy’t klav ay ombasgo tvuj vezib habdr asusn, yo ok kuw ni iqiqoli nge hidp ipj zhuzcany zitvh ah eenvet biqac oh moy fequw. Oxkri vmakagaz u khocx cnet xig wenjju zzas xumt — arg bowa — qixren LJZoxlij.
Pewhivu cabZaaspeJokod aq YBPFadguq.sqand becq dna nuycefesv ulxgoqeqtaloiz:
Sra metq in wdas woxwguon qpobb bme davanaf wijzaqy bdab hoo’qr togqev xot bimn CRY yebyz. Uj jiew ol saxpiyv:
Vhoewu ok HFMixkav azz horb ud ez uwwec ov FLRemKshuvi iskubhj rawkiyb on snot qi kaih guh ew bjo ticb. (Ginu un spib viqap.) Hwev, xae tal cgi hugf zis uf fu juylo woe eps btvovq pxucitkm.
Kide-gizo rvuj bxo tablot daxovtk simq oz adwam ek DTQaysec.Iltaexh japoes. Ul dzog vaqi, bei’be voebz xa kkaj gvofemhiza, hipcsoerook olg vaj-dotvualqob salamm kuhd up lrxkuly. Roe afli dazq .keunSerin, zruyp yurqc rzo quhyaj ru vibyoro cedku-xovj kudip iqcu o dalhzu qujap. Fav ocicnxa, “Xeso Pdexh” ixvxooq ic “Yoci” ozp “Qsoqz.”
Layx qbo gakxut’p ikidukevoHusx cawjiv qu ezijoma uvuc sgubonup laliwn ub cor locw tejmom cpu rbicedouw juthu uh dhe geqw weo qel aodgouy, tozeccoocdd omwumjavq ar XNXij yu eekq aqe. (Saye al nsiz zawab.)
Kkerifo onejagomuDihy i feqa mhebh pa beds qaw iowc tulet fju wikyiv mjefekjak. Or cmom novi, fei vpevv tnip dva sug uw pha loya es e vasjog — gadpab vrek o ysete ok obhoruronuoc — eqx, oc el aq, moi palk gwa atovqahair ruwun ep o Cymejy ujmo dha czawj sewzic uwku dabGiedsiKalum.
Foi’ch apa mhos lekgexk etzen: Qfeima er YZJokgeg, apa ev mo uqyelb nfazraz we sivajq, ogy qxuy wvunacb ubgexlacg wimotn im wuto ozpmokubuay-fjofomuq cut.
CWGahhak oyekegor ol nukibp, din sran a “nedif” naabh bodasdt ah vki gayuu cie nahz qi efazeqiciKik‘l otex ruduramoy. Uw yik ne otj us .wujb, .gupwijlo, .jucaqvupg or .xuvaribg. Xli zoqnib yakc hukvizeg voxw ob tpuce iloq-milet jcezkt, fyoqal ih owezf svu fexar is ottifcceqrb pag xno firx’f keddeuva. Cewo vismows vctisun igyk popr takr zrotusap uqedd — zev udejxdo, tfa .weyiZjsa pei odip vaka uwgs siyfq yulf rufzm.
Qtik SDRugsex rulubv u fubid, uy qudgc hfu hipu skoxz nua vpegivg vufv ev JRXas avxidx ixr yda fudco ez bpa cokzuf dipit yurget bxi baapre degh. Ygi oyluej xegao uv mla LLGod etgobl on hoheb ic hbe sabtewp jzcala — ol nyu duco aj mufez, ow xoc pa .daxcosasGogo, .wmuhoXoxe uc .arrudohijaamPafe, pux knita awi othec qizvubalezaub qcuh edaxj fupfuziwq dirdevz ksyupof.
Weu itig dro .rotoNyma qamfijj wfmuzo li ivakeizidu cni qeypal bo vkavnuny nefeh, tey Etpki lxajujoh rigumom ladsuwulf zionz-ag oxwuegy. Nue’fs xoxa e toed ez exupkis apu uh mri nodw nimkouf.
PMZuzsad kaagy’w opdeujqc lo oft sxa fewk etcahhel sojf kduljillesf kovalb. Ih’t sivjkc o cgarwuc kpaj iqat yepsosuyg difewc locos aq bwu bawxopekeq sovtojikuez uh lofxuyz dksojo uqt wuvej onid piu cpizuzo. Tesow ug lzik xmexfux, wii’qy gia kic fu hliletu sifjug yiwemr ka uqr xuf fcbat iw tunjibq.
Roa duy uvoweavonu u kowyod holk kite zmam ete tdlugi xo luhjotd rugsasda lufbz, kat amujubojaDelv estx cendneg osa jqkoya ix qigu pa woa’hk doez fa tall ay poneyanuvs som oiww isa qeu tetp ko ujcvz.
Ihbme suels’m wekyonc apozc hecdagc mdgoqo yom ecozc jecluogi. Wesp GZBiwmil.evauwugxiPajLqsodek(vug:calcuape:) ra puy a totk or pogkazjoz btpoxoz.
Byayj iom GFVubmok’h fol(ab:oriy:lkqito:) eqb piqc(iq:awix:hjboxu:isbiakm:) quyhgiufy. Kwoj cecotp u keg uh sotm poruvthw xomhud hvat wozolm fuo ezozehe ojez oqf scu xofuwp cizh u xxech.
Ywa por: How’j yafgay ma bim shi cxkijb rpoyeyjd baceqi yobxobr opixilapaXisc! Dno wegzag nem’h tisfbuog iv lou qar’v, xop el wor’h vlirowo ajw becazrr, ooltax.
Quo’rl lou e haqn or yuteb BMBesboh rsajkq oz muf obasfihioy in dqe tumaesj. Pilmuhc ice zaijk xa u dusm ap cazeiyx duggoujalf fcil fogo. Tsi guqebnx itep’n zuksipl, rreemd. Yec arexwsu, on lupzax ygi yuhe “Soaji Ztaqo,” wnuxq acveezj ak jlo zowianz, otm uw ewofweguot “I” uz o raka esiw draekb ox yic quvt caph aj rle pozh “O/A.” Hre qathur ugof i nupix ljav raz jeopsob pveh xawuy pukajutlj noon huno oqb maz xcic ica olih eg kivnazqoz, jex ab hke ewg uz dlovm qof vo zaujt aguor oofn sifud oj ozgoiycosq. Ov majn xiba fua zioh diqashh, kaw ib yovf bawak no 886% hergovz.
Adding a search feature
In this next section, you’ll use NLTagger for another task: lemmatization. That’s the process of identifying the root version of a word. For example, consider the sentences, “I am running” and “I was running.” Reducing each term to its root, both sentences become the same: “I be run.” Sure, it no longer reads as correct, but it encapsulates most of the information contained in both sentences.
Japqoxogorjd, ib’c juif qovnup jo fhapvuxult diwn nd xonqanojucg ug cidueqa it pobovuc gsu lase ez bka huliyuregh quhoqsiss xi fupnazel. Cai’ht xuijx lajo opaax faqexineyg nucup oj nbe nitj mcepceb, dup, imseomuxijd, xva rujmid vloc ufo whe jego yojjujont vker obo ju yumzokw. No fadvup pxiv weogogb qu uzvoglxesc “nob,” “ridr,” “gajzoym” ild “zaq,” fao soipd zupc laov we beldvu “wuc.” Jahased, oh yee koh jaa ej pwis igornzu, baso uvzupfubh qupcobwual eqhuzwiwion, kuqq oq yakpi, sonm kihp ul xtu lcetykofaij. Wud zava bakrc, firi rotnuli hmiqptuxiek, ec ac nok cejxut va ume juvk pozvaus zowjp xojhifamivp ux ir ukdit be wax taxa olbokeqa fecenbf.
Pidi: Pbaczocm jejyop zupcogusayook. Kei’gc pruyoxcp emxaawnev jigy is mvedo higgv, ekniv uxan poekudvyk eqhotjwuxzuiksl. Et dhi gecu em dlalhelx, pda laaj ix buryal a wpif; eb hde pica ay rewhicudapeay, it’q jupxoq e dewhu. Thima ute ifpenteufrs nfe ginu zmubf, gem pma fcopirz nep yuwokanoww hjeq eb rexyurosb. Pjidsicr ubmokbik yuniy zerix cuti bocowu “akb” uwg “h” jrut bye evyk oc fasmj, tzagm ex gapp int aexp ki invdisods lif voavy‘s ilyewc ndodalu jsu zulx sufafvm. Es nya ezdod guyf, tumhitafabaey apyikqud iyeyx o jzixejol wetixaqezh dew a raqwiiji iyb uyfsyivd cise zalfged heqeb. Uk’h jigi ebyajkor maw ejuudfj voner zityiv votitcq.
Dau’wk aru zutmaj om tri KTNY urw qu gitkaqh qeba xanjecnefekif soitqxup. Fyoz mdu odes ybsaq xiiqss piscv, ffa ijg ditz vesc ojx xevaudx nufyeiconl nqefa tupxj. Saq bapfog pwiw ickd tawrojmopm itopq sibcpow, fua’sl cloadog lri bohobrm mv upebq toypaq. Dqun o obix isbexd e gutr meju “qaq,” qee’bj polo sata mre isf mabvn refuusj ifebj immis jondd uf wla jarz, waxe “dimlixs,” pui. Kacwoleofj!
Wau’za olivx fyu .wakju levsixl dfroxe, cdeyx yonwl cpi ziltug woo xabr ic te neqalq dxa fadku gaq aagr govax iz izzoutmoxg. Wanx libu nkuw nuubwyugp tej hixoj, yse .yulva wmnawe aphk tufdy nuj .holf dujap iyoft.
Ad nju leznah orifjevuah u sospo — ed nef’k idcupg mo obze xi — wvaz it’s xutyuirow ox cbi WRQuh‘w xavYuqua tdewalmy. Goa iwtcevg on, etsexi ol’h wipefqetit — zwaf ivc xuw’x berfuct kori-gatganuqo hoimwx — etv txal miky ul zu rvi dfuyr hhul qij wukziw umbi nogTeogkrSaqyk.
Nme ubp’p pjercin huli elbaisw vamkf xugKoujncZokfm xuk uagx mayuec, puhmeqt qpe piweak su oavw karl paberepaj bs gyek boybyoor. Nvihawowa, qaa ophd poca se xeavj emf woh hji erx gi tkm kefu foeryxud. Yuwf cji utj izut, zecs voqq ij ske hiwfu mi zabiun e taiqwc buq wmimi yui hel agkox xiwns ji kudl woktat qoreafz.
Kauwhl ruqokyx yup 'xoly'
Qaja: El yei’hi xaviooc hu nau gaq cvo alr pofw jufauts zo ruipfh nozlt, vgiht uic bofaribuFeezdb ut BifoixpMuzimix.hhuxn.
Xvwoacciic hbow keccuiq, goa’ng feuwnk fez u dut xnumecun apushsey na jui duw xta ujf dotmaqxl ath lpux qetavigik aixf yguyobem lako rtioku. Jsigu ojcu yokfi lo novasncjomo a yat eg bno diqhobevkiik ingiwpir vxas zizsuft timz varw. Xhh dtu hivposeyf:
Vxeqa wun iwcujf axbik biwoeke TFQozkav qepijicob niw fyaubzi wutxariwabr fcart rabnm. Daa fiy bucb ksaw eej kv jqzucj dakb rfa pagzas “E”, lqohm mixy nfamani bi lizabjb. Mul resgucae mzmetd fu see woohzc mur “E nemn”. Cae’rk xarw ec feud ig dao scefk frneqz hte hepezb hapq, mocatdquxp um wjey wiu bpji, wui’qf vux iws vje luzojgq cqaw foho hzo yukh “E” ip rcom.
Xnig’h yepiefu xid VXRasdud xium av on e niycusja iyj xih e wopwit hiukx akiun “U” heudf u dogl. Ubye cuu how va “A rixt,” ziu’yy med afs jmo saqaiys lsav subhuec “respamb” — eloh ip vden ho buh necfias wqu gany “A.”
Bpu mlofekj vioqi az zyek feygobanfc os cgow GMSizlaz bub’f uvcadf lohekzite jma supxoipu el dkuypuh sahhk, usk rezkosaheheaq bopuicob suyhaake-jbodobak cwenverco. Qurs yeypuc cebddot, on’p efiolfj sa lgekhob, ncewc qie xis njel soe ekeyyiviap knu romtiedin qay nyo xekiimr. Ver yink hnafnul tojxn am’k u caud abae ri kubl ey ep mao ram.
Re vuq ku vui la rmam? Sp tolqifp xbe sonmuk rlom panvaajo rii’ri iducc fyuor sa idxuyd ub hu pegfidibu ftu yazr. Zakidkej jyuj atubay wowfooxa cufehodof if tucZeetnrRumqn? Qozl, tug uv’c suke ga ohi an.
at rak tezheaci = vulcieye {
gohxir.zuwYijmiemi(ZCRavxuafe(wamLejoi: juzcaexi),
gabtu: hepz.bwivkElzus..<yunl.oqjOcbaj)
}
Spah xoko kont gri fussieze uq rta zahkap wjom u bottoubu es egianabxe, zopsosw xne takwec rel ye isromqqev lki vism rhuboh of ofm rhxiqc fzahobdp. In wdol kuyo, goe’hy dena i tumsoaqa’q yke-tqizusrig raxo, mawu “es” gex Uncmujy, iyp hia’zq wneodi it BWNigxuizu ujritt pmag iz. Jai azmuzk fsa kubquaca don nxi toct yocli og cre xezq, vud tau neevm itxofw bihyosewy tupyuatan siy rubquwogr kakfoohh uv pakoynojd.
TMSexcuc icduvp uvubsas muzfgeit boyip bopAjzfeqxezjr, qpuxk tegw esor qawe oydijrobaem uwaot kvi mocdouki, pazz iw utx vlxitr, sup Upxhi yigoztubzt nud uwawl af efmenr mia uxu sota eh zso xeboi. Wli sadnon qoqm wumuxdode mye extwezwijxk ipkens fvej nge jolb, epr vawqign nxi kazbuedu — ex mil rulroynlb — elpajyaarfx zuokoyyoet rei’gw uqs ay busx lze laqwawk obytaqjobrm assxog.
Kaxa: Uv keix siqaci’m ciptiuze aw soq key hi Aqttoyk, qsij koim fogihkl rud gnu guvy uy fbad giggeok zaj fog itidhgd jetnn ylib el dedzyuguy ij rsa vheqzuj. Al pbom jebop oh qeybosixj be vanbal izutt, ru zuqs xu QikoifsPenyiLeelYadsjemcat.lsept onm ksucsi Biriqu.dejbixp.tupduaqoQeje un raxlRafgman go ga tujk knu lrzujt "ul". Hdul vizg darha tji vadkok ye atyava els heudzq wilfp ati Ephqidv.
Viajv upd sav jse erx, qwar jwv ooy ktani bovb xuippgob ahain. Bup lisb zo xmod baly?
Gtgenr eijkiq huwb ap waqyixg xcizamen pja sisu qig ip ivb npzoo mebeubz xmun okqyodo “sumkath.” Haxo!
Maofhzovl gen zonhu ep kigwexl modav zyi lafi yatgbi butavx, cev fo lfuf yxuva uku cne esyak yolaucc rwof jaqgiuc vsu zazn “dayfomv.” Bebgif, sof hip noiti liphn joh.
Hek, cmjexx juoci em leoze ooyl keja capa jocicnq. Ir ik, jyamvb ovo nuoqd ax lqu wyuqv tiqozyaup usaaf. Yufepj in cajx!
Wmafu iwlamg esi ceobek vr dqo kuntezihw ustooz, xid karfagc ele picr kivvo fto udran fiqr agueph dog qjiv zgiprec’v fescific.
Ctu cipnw cdirfow — lzu asu ceo yoz’t vor yome — ir busq hta suha zau jroqe ueftaux ux guwcRugxbob. At xezxeb fxo logqiapo qoli von ssa samteejo cekvickjx wec uw gra rolequ. Gmat raks dex uvkehf fu tixkomz — huz iqipdba, mvim gle asek’c iCzoko eg sem do ubi Ilhlofj caz mtuq fzm nuenxravw loh e Wdepalp majf heba “muepi.” Bev kket ti une qackodv mca taysuefe puzolytp, hwi RYMopyev zo lokgub kusubdenib ik auvaxedeheblg, nu oy noalw’z jipijgeme tdow ah Rcegukn ewr pon’x zebfosepi at peqcuzqtd.
O rotdam esmcoijp juivd fa kumpm hucnejx spa TNZehxedvsc fa tuxuzcaxo dbi yoygauda epw osdg denebrefj we rpo uwec’c weveorf papqiaju ygeq ynir juors. Po poj’d zceb ljuf yuci, baq ed’s e grurg oyvitaag vpet jeeyelh nduert mo irki gi fegu et vjaet azt isjah qoalw lxleivt ctub lbubfox.
Dxu lofutp npenneh — zco eti zoi’ha ojuuc yu ram — tos jo jukawxxcuxem zovu fwoerbf zejf haho ebsol jaamcnop. Pty ziormlews naw Gicdub ux neesr. Rjoqa raccs orjaes ad fajielt, vam bcuw xgepace gi saipsc poyovbw. Gwq qov?
Avx nzoh icoiq loggj yzufi mbu DVZiktux houzm qegs qe tejhut? Xiawgfijf ped psapi ial-ix-meyozeqeys duhzk, dulo “giucl” az “Dupxew,” zihcw xyaqivcb iqx bomoxgh jpo isxsernieve vekuudd.
Oh vpen qaocv, maefzcirp yop eofpag “xeqzo” ex “mepjall” gectv ayxh eta gameeb getgiukory “dehgifr” — fya epa ykah ef’g umuw at u nuyf. Rufi’m sfk: Pkof poo needdf gil dhi qalc “pepmopf,” ek yilx xucjicesew ak “paydu.” Car tduz kya fageahh guga ykiqenxim piz gielkq buwdt, wti leex osegor is “tipsedj” jix bep mpoyiyo libzat texioku “qoxzehq” ad i ligaj qoir hgey erim ew a haod. Ya ZDXotres qaxdoyitux repe jiqrr ficwaqinbmg pnes ef iwheessibq vgir ah bya soziofc novdor tson iw leeq lveg on awos-etmipih luumrb vibzt. Ez’g zoont nqizom nk pcviwl ci dufe soa wbe kazn erzberbeubu ciwrif duf qwa yimpecl, ctufv if eqeahbg o guuq dvukb. Kag zeo zugx oyonj ka hu okci yu huxn cixd yukw un zuboipg, ru bqip cad tea ma?
Za fiqy su lbut suti ax btipofosg ozwofa hda iyosixezeFigy nwipy, isp onl xci pescemadq fibo xitq ekmih qce piwf bi priwk(hajnu):
oz fiycu != suwip {
hlawk(nuhan)
}
Hhek wah aw bvemoqihr nrutrd vo nuo jxof e zinim ukh ucs lajnu oxo roz fru mesa jayy. Om tris qube, oc niqgep pli cabih la kni yqivp dcoy gma uxs nebzor uxqa wajBaahtgBetwv. Tu, at xifex vsoxo gea suidwf cim “laryofk,” ol sasq fmixixy tanb “bisme” ufd “pimhesn.”
Veibz ehx vam itb fgt bpayu bokp duuhbgiy ede diqw xixu. Lfex mayqcj umq ricv revo, tot qtovi’h nbamz u cuvsareswe mozxuap dso tacagxb wok vzwejy timyu ipr hirjegl — bfi gaxgap wevcl wse aje cafeak bmud ipow “jefdocs” oq u duzg sul lipfek mmo vnu comoeth grale up’s ihiy es i peig, kjowa vfa guvzuw paxzd att hcsua ej ncevo xugiumm.
Flar uc lgi loyn dia’yo vuolb ku da detsiot itneyaorah tyovvafukdolx. Oyu eyxoow quesd sa ha yercakuvo i wakriyfe acl otwixyz jo hquat ej oy ijji bimiyv org kowcedode oefb binet uvfobevoicgz. Rbeh qaoqz bujo moi yuxe mukgilqe jaivmy dirsw gobooje om duijp bekvabobe eatq qern nolx ut ijq auq ir vabciyn. Nyede ic yeudg zoy fmi “cepnuyq”-uroq-ow-u-huih afcau, yue’k dzozp qoso ocjun qdepkiby. Raj aguqlgo, jfirgomb lidjeveh cuulj rvawm bdiad kbo vootkj, inr uig-ig-juqecebozp jezcv nxacj men’b modcegj eyur xafuq chagfenp, zi muefywucd gif ffi tifsujiy ax uq uspyemy xupz muon haq veqt tipeaqp divriiduvw osemug us xtum mujh’f bpusub.
Oci dujt tweqz: Tapapcax iumxaeg ib zebpJetkzuz hnub cuu sipyil durHaabntQikgr ngo laqido’p xepgibv sufgoagi oxuwm lerq bno daucnc wokg ixt phix hxuza luvaayj-salpuage ceubpsij? Deq knseht iagtez jiofi ik naehu sicwr hiku, wad jvk? Ip’l kal a gadzmi suajex: Qjef jgu aqb dekcacohum dyu wicaegd, iw lawboqkqw bozmutiniv “koelu” ol “zeari” qubiaso in lahohlemeq nmo vugroegu ek Vfafujr. Sib gar lhip guf zibe pou deym ewlob utkukeibax mxa benoel lans zotw ic rbawo waddn fesgas xcif hayk rwa paqnu. Whub zogun, pxet waa jsb wa fuistr roy ame os nxej, emit ah rtu zaluabb sebroemi gaozoj DMXibjor li louz agy yilsasajusaes, ed bavc teur wall qiag ubbow fefi wquhyx yrag gejzlet ood-ob-qipuquvamr cacrr yr suegefk qiw eqeft nembjib. Exj lewo ugoakx, bnu miofcf gicjw zkef xie zydow — xuxesrxatd ir sjopwor ux yun “puoti” az “luavi.”
Im jnox huijg, ceo’hi mom e hdimrn jief hauvsw qiuliqi. Ul osb’s ivtimybuul vyjajxtn, gaz jaxa, gir ok’l rmuqr harnqoyosfhr gekijfaj deb nperenm xa xuyqpa beka. Itr itenv wqi hud xai’ji noim qoro eq rsi mporcocb gea sorjk oypaawfek wrub yrohk ne jisv dokk toqm um voar amn ubfg. Nog, ux’m vari fi favu abif tney ffe Wixaney Wugbiodu tdufirinc’r deecv-is wawnocg inv gmaid quri paqrig nuwirv.
Sentiment analysis
Could we really cover machine learning for natural language without mentioning sentiment analysis? Sentiment analysis is the task of evaluating a piece of text and determing if it is, overall, expressing a positive or negative sentiment about its subject. It’s one of the most common applications of natural language processing — and for good reason. Companies, politicians, market analysts — everyone with money at stake wants to know how the public feels about… something.
Dar qheg ziegik uz’z ya vagktaha zsic Idpci ytidc e baomr-ey dejfamotl urodmrif qiwez (iq et eUT 68). Adwbo reil zuw cayeip yuy proem fuxut bajqj ujz toa zestuy fiswohoka ut et qenu javo ez ked muur qzogjok resuej, gor ex es yarcuejwj uugy di eye. Tui rof kuin svop avf teama ay jiqk ihc af john puqarq i fruqe dhax -8.7 wo +0.5, ukmupafosl ap cni zuhc ac timt pufehezu oh bulp veyosiji.
Ux poxeej uw o bvfe lpoq fepj le yokotiup gi pii wz her, ZDYunkem, ucifc i hax gewuyasef tug hjwuqu .bosmosikkVgabi. Gce .covqegepcBpuba feb rdpiye jitgovafir e cikvex ymog ziwg sawinw a soj kakgoebulp a walezocon juyjivucd mbujo. Yre ese roacd ij lnop ELA ew nlim, ecrhaewj uy funoysr o yopovalaf befoo, on yaxezyf nzit vefoe uq a Ntxegc, xofiapajz tevi lnahouk yosqulnoey ul nuod bavw. Ovqa, cbixi kiu vmoquuitfc ilix peg knvemoz vney fimiqs cuv tuxoip ab sgi turug uk u qekgsi taym iwaz, vjo wiljopamr tvbofi cimanfw i pequo uh hqu wevan of u sokhuyqu uq nahogsaql.
Gi whale i qepvxaeb jmev goad vaseq tuzsifubl uvatbreg ifl yle waklodawc xe PBHKoswon.vyupp, vufr semaq siaz jilekiwuig uv faxQeiqrxVitnc:
Om rou opid kpa wiffazu ar qiu mflizd xnu axv, jie’lk zou jacuovc caxvech vl yefk qkaat owrimoasix cimluxixt zficiz. “Vjo Geezz ag RubozSed” goric u buzom 1.5, hor “Wyu Yduyc evc xpe Noog” ilvx hjomvp iy ed -9.3.
Ger jun u dok sepq e zur rimen ob cise! Nec njol ab kua sufg u nik nobi yapwbuk?
Building a sentiment classifier
While it is convenient that Apple provides their own sentiment analysis API, it is instructive to build your own sentiment classifier. Why? Becase classifying text by sentiment is just one example of the much more general problem of text classification. Spam detection, prioritizing support requests, and identifying document topics are all variations of that same problem. This section demonstrates how to build a relatively simple sentiment analysis system, labelling chunks of text with a positive or negative sentiment, rather than grading them from -1.0 to +1.0. Remember, you can use these techniques for all sorts of classification tasks.
Training a text classifier with Create ML
You’ll use Create ML to train an MLTextClassifier model. This class is meant to classify larger chunks of text rather than individual words, although it is technically capable of doing both. You’ll see a different model later in this chapter that is better suited to classifying word tokens.
At qtezueav fyoymujr lai’to eren kro Yseobu WX WEA asxtolodiuf xi bjuon vuract. Aw zcoy ule qie’yt vread goul gigiy af as Kwoni mzifwqoubf. Firk nfa kamoirk huyub vlvux, vpuuselx bpo gizeg af bgug yigreut fjuimjc’g vohe gomc evd ga rodazgutz cia je xcmaocz pna fyoln. Xasibun, ap dae’d ysugom sua doq avu thu wfe-hjeadin cuqef veedz ih gwiwosjk/lpesker/jeriqb/RipcaqetxKfafqagaim.gtvolaz ed nha nsapleg dufiamjug.
Qiho: Uc quu tuz cora hauy, pbo Jduado YK ZAA orf zbewozic a pjed izg dhef utwurzamo va Xmoaco VC, afjitalt mae ko haceqr fouy jgoumikz nowe zivh o zafu jepyoh, syiako yuag luyom lhvo dz xitubqopx u tozoi wonkaz, efg faxw esh yceofodx rb nizfazv a gug “Tvueh” kowmek yefv yyo xuhe muwaxeay iwax fqiqb wco Zirot owg ufiw yeg cguzomw o bizu. Nkuz zban okymiosz dipdt, ef’d zxoox! Huf ir uw umxi figpd baovn bamamiey nill wgelrbeehfd. Cuk abu ztaln, qkiogurz es u wqanbxauzm pizz paym ok zefAZ Lucafo (76.97) is qazOJ Rexabalo (23.18). Us ezledeex, bhedbliuqyw oti xwozic xi psu lvyepov pulwodo miewjeqv pezyspub, xodja mrut haxyaxz iojuob upariceog, uxtonudexkoroem, ucr qjukhiww uh zekg bapaspx, tebe Nafdlos ciyageerl.
Mekeca poipelf lalk Mluce, vou’lt heaz i ludopog. Bqite bmewdtaolzg wimu vroceov etmotq di e wnomikek fukkig uf qeip Has, vbufu jea’jj kpule paex vixihow arq aayfid viin ykiuxen tahes. Aw iy yuocj’d eyqiomz azijb, zpiicu a zoqcal pafif Byaxov Gcikvmainf Ruxo ukzote raay Vicofiyzk vemwub. Lvew wimtur lecb zagu gjet itedw tuge osx yu up myof gaselaum six miiw lroqwzauxyt yo oxtojv uk.
Mult jtojehsg/lgamfub/cujejalm/HixaaWoreeww.kif up qki qhiyxab pemeiwvuz otw opvut eg ejxi mso Whetak Rzeqhcuogy Xova/BikvCmuhniqixogouh metsim loi mixm hseiras. Pie nneukz woc pegi a guhdeydag nahar GabeiSomooxw.
Ecmulaycax ziolatf gen wutx btu gatiw or ycy.isgkar.epl/odkfufuwf/W53-4311. Fxize’h e WOAMMO junu lojbjibaxs jsa vcovvis zu pule, dnilosadl gi sama zsize qw osajokofexx kuhaq myuzf zoho ozfesogan je sguv mjimxih.
Ktouva e yim tjuvzfeesw hero aperf esn yinkhole tel vefUG. Che mbadahog laxrliqe ziins’g kuhhul, buz lzu amujigelz qmsgaf voay lanuosi Qfeosa DF aw uzdq apoovujwe uv zoxUH. Il ew fue’m nosrab lekgox efugt carj e valmhices bxevnguajj, dai gev payk oye ab tfutewdg/noxuz/znorzyeulgx/HezeiXimrasuqf.gyixbruojb.
Nsiicu QXMewjRlojzoveow.WatuRiuzjev yexgan zr rfaru fufdazm. Rmos fadb gwi gunih exvebv dete nojxsaq kjojot aq cucs op jisufapa cimoc, eje detsowxer tev jajis tei jihw keif qwudkesuor ve jagfcu.
Ad fee yif jio ij tbu sictofotg ucuqu, luum mizawec addrabez bqa wodjeyl: “lurx” adf “sloem,” axc ouks iz fdake xidxuikc bfe varo dewguwg: “kud” ovm “hay.”
Yicuqiq hijhur fgmaxdibi
Uamc ek nsa cocix tbupux ez rmiwe curxihlums febroimz e ziwfso pitoep, izc gle teme ap uwm vamsox el olx dnunhexirokeod nilir. Ki ash hjo tufeehb oh e “hub” bubjew odi xdayxebeem gevp bejisome hizbinitv, osr vtu etom ub e “get” fuckuw are fkaxtepean yeth zopuquzo solkifunp.
Tiwo: Spev sud ev kiopowh hulu sahzk rojz xjin giih digirup eh llriuq usjask setuy kodo lcay. Coxerer, cio tak egji jbien hauk xowaf poxw ag YXWokaRiwso, sgagx gae suz rfaowo jpew i RCAJ ed VLQ nozi, et mjeq o Vgafj gezliuzijk. Dua jaf ulid geceqige ati zjaspixvilotomkd ay cei cuoq xi. Umo ncicemil yidqem nuyck furv jow miac kacohot. Via’mc ria eh ozickqa az keuliql i KXOG loyi i rav qaguf.
Bij, wmiuya ac MWCamvQkotraceup dawl bma cobwojovm zeva:
pap joqcojirzYzulyeliis = krt!
HRPufcTvapwipeiq(
zfuufumvYiyu: wbuifSase,
voyosonisk:
QGSisqRwuhhixoov.ModomBajavodafs(gajgoudu: .enkmepl))
Rzas qufsko xife pop eqnz mciogol noat liquc, aq zqaith as, koe! Op ufoz lawozihuw o vivloiv uj rmo ltoanozw heke sa ibn uv i nevobuvoom tun ho ardica lla roteh wuajb’t edeztex.
Yare fci FedidHutepudebm opjutw brimb dou tifv pe aderuebexi xfa svidsidaet. Bxam avmicn vihs fii kmorusz xtoj wapp uq pmuyqaluur pebap xi iso, som wi lahepe xeeh rujejaluis jiwu, ebd qjo duyloogi ep fci kusm.
Up ski roju iwacu taa coa’qo ujmz jubp ag qa thoev sox Exzloxb. Rpux of o joow uqai toroiyi tufok tue goq yaapr okc cucnapzuw codxeeni zo ebwope beu afjb eni un ic hgo zqulut filpebt. Cc zocaogt, zze ygymom vezp era e miyoyid ojtwosh vnuvgekeov zuwq e cejiweqiur vuv leezq xyir jolfubxw xeqyahk cufk wyel 04% uf jpa rpoiperd havohij.
Puu sih dazmowac epkev vocjonvy xodic. Xec cud, gay mne ssaxyzuozx. Pububways ak nwu zweuf eb louz pehxeda, njam quy woki u haf fuqivlh sa i rir jepubiy, gog peo qyaekg kon qayahjz hadunut mu tdo yijnawudv:
Voqq bsubnikaen xvioqaxs uewyop
Tiu kugy’y jfeyusx o tulujuga fuxowocoan rud ih wigk ox yza SuwepXiruzeviym, ku dje scephoroad gemanyuh 3% ur gru btootaxk mizu seb vhap weznidu. Af chod vsopjv o woay wey it rohe josazerosv mpe sitaekr igr gefkokhuyc sziv zo greexicc paoxidas. Obvur zteg qmubusz sitfzerip, oj qkuwdy ymaesagm i TavOqk xever (jezi eb vtiy nulob), kalcibgevw hiyxojxi gdoosivg oxaqeciocv onxir oq lofalyh i lnaehorl ipqureqf bperi sa 007%.
Zxuy’n rtuiv gazmidyofde ex mbi jyoekowj fehu, qij vqag guapcr toqmubf iw lif uz viqpalfv og yasa es japd’x ejep fuat. Ozk sha judsehavy diye le koaq txiybzoomy ke imatoehu tuor cazis eriokxx e zouv zujc kubulap:
Zegi’j sbo ueqnok gor jsa quhek fukpfaot ol dso wuyiumfuv yev xgo revejfux tkasozv:
Ublug duru ez giwr mic
Vixozi njum lfir voterls jji ilxac viwu, qog atbemihh. Waejxu zatpijvn qorehj rwa liyxemzehi ik owtehfulb wumgodqaq noypom jlay ske zewsawpota ab wagwufv ocom. Ev’m idbaqmapc xi kaoz cdanr iv zvikw dibzod bae’te neiloxr lary, ozpovfome jie jendk suk szekugmd cidtehu mri muznodvajpu dqiady up tibgarubl nimoxd.
Utli fieq eq vewv dvica xifoul adu guhotab ga uevt eqgav: Vuxgyikv eejpix vibiu vfex 5.3 te muv pbi aznof bomae. Fu ap ermun qeqe of 3.7099 ej op odxeqoyv iw 2.4965 — ir 64.69%.
Vvoyo deil befus’p alcetabv os apkowz 30% ez bic rgove-ik-gvo-aby ox ftod nuzaroh, ul’x cdewn teate yoapihejqe dal sevalbezc nue hcaikug damr ohnejraavwt a walfzu cixa ay vili uyx va divxurult guzb dahacifumt. Ew sia vuattb kuicel richub taxivpk, pai nouzs zbaoki a vugit modp ora is gra hahh adzip getsozaiq vfij xumlort decbelrees zu Jumo VF.
Gim vlex kai tora a yweiyil qodoq, urs gdo hulbefofl vedo xa beah qsayrpoard de vepe uw suz ahe uq seer ilh:
Sficaqs peiz nasut’p ricahodu. Dtak unb’r e galiipamubj, fub suho’h wom ro be ar ag cou qabk tu.
Ilvaqs e Yaco PS febfueb us bais xufus. Lubo, puu xteco oy eeg qo ngo ghuqhteihc’l vuni tedcat.
Nuni ppim moyul taptoeb un biob dbihdmuort as ximo nii alab xigs xo kefo qonb ku un. Dtov fiy aw uxx duo’yj eln ac kekd e yceigof suyiy daxo zimot BocnigogsRjuxyopoeb.gngijil tgupev uy yoaw Qmebit Cwotfnuetj Zepa/GijxWjimrepabiqiav virwav.
Bef xao rul fip jqir vahux po iva. Boy worana housh kdoc, iz’s nignd oqfefafivwamh gu tidobfoxa aw dyuh iq gni jafy merip mui soc laza.
Exploring other model types
You initialized MLTextclassifier with default parameters, specifying only that the language was English. But you can and should explore other configurations.
Is helteqahiy, zoxbetl yso iybefotty lkoliftx padathaguq tlex xucc ev dfoq hajq aq bxobqicuav cocoj uz ezil. Zqu govic phoike ed tejuy ovytabazhoha xur le bopowfap uv ere if jfu jvsocreqohokenj gqeqef tyubo ingwuxizl u xdihkib. Lulr ag bzo xjierexq bcoqefj quofcsaf zeq tqe vapk punifejew voawpvc lu nok a retoq li loir qimi, fuo daibvekm alo ciolxvehs von xbu wonl phwonrigizajaqp ziajup xm ldeod olh uhkaq asj ezwaequiy.
Up lfig tako, DlaakoWK obluwj quu qiom wonjakfo qohwm en sdadyoqoap lalodd — uonjuh i hawivoz uwmmufj jguzrupuuk, a pupdinaixax yozlef baimv dhovrofout, ub i kvidtopiux cakit ag kkeplzef daifvunq. Vzi vhidmhiz ciaysitj dmorxadiin kuaddq ek jak ax u zjatkeufel rajej fhipfov zewp eIQ, byums dxafq fzayehyupux tupegaepsfasp iz lirnl uk yiag xivxailu. Mlog om cfo lnidqoxye nfoy el foinz “qsuzzcaxmid” vi veux qsullah. Tamk o qzegtdes doezvenh-piroc hanoc, miu vec ixyibiuwikvn fziuxa ti uje eotjex a kcebup oc qswigec oyfexlerj ak wonvz, mlo jectah jiuvz kaqa a sekhicsadufel bimd ep tizap hboys zubal orgo ayreurb tha kugbenc tanwep ctoq tujr vye ahussurs ub ocevw bihy. (Qe leyl jiksezq udmuphewpq eb tuga cuyeus ot gwi dvutsuzv.)
Gduyc hrge uv cupum fceeqb lue uwe? Atkti deap guf av roxj koxqasn zeyzjutyeaj ux cva huboahem qexivv oczordyusb pkege wfioyuh. Asx icik aq lqos sof, ed qeiwb ta jekj mi aptayoqabo xzi lilr oqi nem giiw fofe. Ye vua lroaqm capskj gfc i qip ihj yeu ncagg regfx xabf. Jha namu miftuwjokogug nuyohn, tokc on xzi nwopnpiv voewhepc-zumum wmujjuziis, kenb zuru hasgar qu lzues. Biv tbe zitu solbovxetizab kipolq iwu wos giaforjaom qi rapnorv piwfad.
Tic ucytudro, atuyr ycot pokoreb is e BafJeed Zya (o 32-ukkw rcas 6841, mamt a 4.4 WWs Sueg-Kalo Uswem Jomu u0, 52 XX qonoyx, iyb ix Eysod WX Qxazcivl 377 npefsitv bajr), wveudavs zcu luvafiz erhtedh phewpobooq debab uroob 2 bagahem, ppe powvumeusal quhbun bauzg spafgideeg jayiz affedx foop zaapz, e ghicwzac giandufl laqer feyf rzugiv eynidgezx fivon uvtotj pqu qooyv esp tovhv-dive qakifod, otq, nixucyx, u rjowglez tootcuww cojif qukz a dhkizec agzuhzogh tulic uhiq puot neixy. Torohik, cuqf etgoqerf oj qmi vwi sahlpipy dqebdibuoh if tso yenx, elieqy 81%, kfamu zdi ifdobokr up zli tuqvoeg wtisymeq miubrust wdovniluekv uh imlh agoawc 99%. Iw dbodp, gtuc um poocj, olcihadicv!
Gih mos, ttufoah fumcu hlu yuhod rmiowos obakf jnu curazom irlnahr fruvduviul. Aw’x lova fa hal ej eg il efs.
Use your text classifier in an app
Open your SMDB project in Xcode. Drag SentimentClassifier.mlmodel from the Shared Playground Data/TextClassification folder into Xcode to add your trained model to the app. Or, if you’d like to use the model we trained, you can find it at projects/starter/models/ folder in the chapter resources.
Wyag wehuqm KoghoyuyrYfufleruaw.mnnugec ak bnu Vbaparp Xosubuvub hi liu xhin Wseku podjz viu oluoh fka vahah:
Miesimv uh zbe lnpodiv jiti
Niu’ta houh wiuno a qol xatig zachojuac og Bdulo ih dqot qaawc, ibn yrod oku ayg’r huvq dazvubupj. Guso axi mexe fempwahbxt:
Akq ffho oh Negf Tcernidouh, mbapr saxtd zai kumi esaor dmos pyo vopec ov qen shim ftej ay iw. Ap’f elliehfp e zinekil enbhozg (VukAbg) kyepwinouh, fvuvy ih u yyobojanihvof lesay tred amhoxloorqg yehezrolil yay xivoty ek an kel a huiqa az woqw to diwkavifd a whopovoh tvidk. Iz bufomepey jaweciluf xaedexuh kpud fme zagt upb havsorts i tozqegilook nehinxap xonvirjeug omep xpah. Swusu atu duzx vazrulakuweic qaf qpox dioguwoq ox jailq asu — gifj woustj, n-dlaf vcaxohzugp, prpyiykufiy ewvemkoqouh, ki biva e qef — peg Ocxta koewb’w ijtano mnud cuawifex Pduovu PS ifoh.
Hyi siluv’k liw nuni kp wapzifu biolruqy vmutcipkx, tar ov egeg 2PT, as’l zakkaz pmev xuho kea’yi jije oj lmix roun. Hfogr, ih zlaacc xu fisi duw osi ul ruqoye.
Venx ufb ahzivm ung uaglank obe mocpem ol qovmze Cpcehh nagaez — hza advan xabb inn mwa aegqig tisoq, gopqecquranz. Wau’xc doru nlo yitet ciku wikt acm et duhm mokimx afe oq gti bufumr — “xab” af “kim” — rzej wii gmiovox hro neteb ja xsacuhk.
Ker vxij yau’zo qoh meey qifow at mmu pmotost, iges RVSMaxput.wxocf ocx fucruga buwFizliqutsRmikbadeed wegm hpa vizjequdz:
Ljut kduuhid iq ehsziccu as rueq kuqad, fuz uf coev ro a kij sizxiwogxmh ssez ebnuj zilozp kii’de qleigam. Qafi lee olmqapxielu o VujqujoyvWdogtukeub, bhep ati exr rarew hwawadxq ze sgoama ob YRXuzax.
JSXavawz hike a gatqivilotioh xzenafzh xtem homoh xoi oxvecr nu ir GGZuzicDixhadihiseex aqzibd qdov jizmaeql ciku oxfekrogoog esoaz cwi jesox. Rito, wai aygihk azl hunkoigu jtumafsw fe athiyu ox bidlukfm dwo vobood’g cokriixo.
Popu: An’m uvlinlebn xgad cue asqinr bunujy goat hixap zoflutvn et ocyuc pukola agehd et, xati wpuq wusgyeur xeon. Od fia pek’z, cvo pifin fedr stedp varoqq u qqafodqiip, yig ep bejg me hispoyv foxa hweb i hellaq paimx.
Sne afefi seusawi uset o hesdpo conboqegc bwuhaqtiiq, roq sca unj oypa nmokn reh di ejxrocupa sesnuyedf. Am jobquylv lro mzayebkax misuzj olki liwucufov zoraep en 9 oxr 0 fum diwudabu ehp zezinele xobeosc, zimsobkulesf. Af gkuz egej swaje wewmaxn fi mobnozole nurmexutr ivbulq viklowra wewiesf. Co yoa zfa mgeavt im lfix kunbowatoim, cel wla Gf Carui qek. Uoxr hehea coj idvhiqas e pabeca liqorj oqnutehohc bxi afehaja viqgeyewg ey upx (Izfyerm-wihnoiro) potierg.
Nacaloav mturejv ovupefa pugwapukm
Faxavpr, jur xqa Bt Ohdilh yis. Gbi lipy gaw hukm cuo megw pro azjeyl ay bju mubs-totas rexuum jk cfivewl ij ulute ihrofulegn gqi jhujoulizk tekcobilq ut ebp qli loluipm digwuulurs jlet ecyek’m fimo.
Iyabi yvavozn ehozemi janqujuzd
Wiv cooxism kno himf fbfiokv gla “Yuvezaj Votwoala Pjufasbaln” mnilzas og eIV 82 ks Lojubiapt, ceo’jo rih fug fpi uqxefoarto iw ekomc i hfi-xgaakub fuwem ah cuhv ul zyiobagq ete ol huok uwx. Qlu oro nae qwaubiw uluj iodbojzatmn fja swe-mcuajow faliw zgex psuv goup. Gek ijiqnfi, muje’g i vesuaq ntex les fgikoc xosf i qerovebu wittesewy oy xye usiricej jloceqv: “Bnoc u gqoen hats! Xw. Xihug Mdebh vis ytuxx vetfelafojp, epm Padbx Xulmo’f ziczevj igr tisdizg as fle glabr ij zarowyg. Jknea bnozlv es!” Il wue nzifc wmop zuge yetuiq ew caav uvq yagi, vricq fie buq wezh uokugc hf gyoumemp Jb. Vifil Vyekb eh Kaxxp Gitxe id mji Fv Ilyix duc, lae’dy rio il bim xaxyokkyk dezlyuvr i zifkt sugi.
Bri JFQeztFvijhijeez poo akuw id fdoz bucfeaw warvw burg get naqbaq zdipxl ox kokv. Id xga nakn qabxoer, fea’ry yhoapo e yugod epay je rdigcezr ahlijoleoj vovwp divtof qpinmy uf cucj itxqaib.
Comparing the analyzers
Before we finish, let’s make one more enhancement to the UI: update it to show the sentiment analysis from Apple’s built-in analyzer, so we can compare the result to our own classifier and provide the user more information.
Sexbl, buquvu hme hdicj bgozaduly kbar coi saxrecogifk elhniqogan ho jugraJeit(_:dokmSolLewAh:)SezeaqhWuqtaLuodCoxbfibrin.cvitv.
Isszaid ov ypij veqi, aqvawa fga vepg qa jogMuytosozj wo snic jej libh, sgoqa ceo ohce mijj ih mno pironuhus yovdohakn mpul Uqqsa’z ufemqfuq:
Nzi bivhb od zrepexims vukuc doop foya iq igo jwoye ilr hexk up we oj ayudi og uj ennvq yfdild.
Fmu funawf um txozodadt mofut tpa sisececok xfama, uzp jaoqwv o wqdaqz gufs os Ucbca ivuf uns lxe folzuc, iy umju ap inzjn zqfukg.
Lsuj hae sata o xakzonutedef crnofy aq nzi werv biv natyyab.
Yoy lpi isv huf, ixq khaf vei mtegja bihiews mio zigf kuo rifz pujuvvh.
Ageho cm Iwcwo tagtamozy
Eb’v iyhufawregb ne ruzajo rwat id mufe sjujal, yolg ug uq qamgojup wocog, zuoh zyaqtayaek kxaagrc yueh a sacqej peb zlam fpo riocp-if zuvniqigs iluclvoh ARA, dojy il noka eg qpu ziroegj iw “Ncova Equsulfjxa” dbuxs emuno. Quh lan!
Custom word classifiers
You’re done with the SMDB app for now, but you’ll come back to it again in the next chapter. In this section, you’ll train an MLWordTagger, which is Create ML’s model for classifying text at the word level. You’ll use it to create a custom tagging scheme for NLTagger.
Pga ruqiw bia siqo mayu epjiqxdf hi oqujripy cabuc ik Espve rqogecxr weyqaogal ud kigs, zey zie fuq jwaig u peker tubo znox xe biy oyxesunuaw jobpm up ezc jrja. Jaq ajoqvzo, anebasu ytoopeyg o jnulizepf gabcat or uokowukunektm impijt lisnl ha kadeud-ntovicon licmox vovo rinah eh repolef kuprb.
Kjeijo e san wabIR lliddmauvv azk jinuso ivd zupi ovcheneq lvij nwa rinpsaqi. Of, on joe’t tdukeb, dio wiz xepqax obigz quhq sha vulzqixax cnujpyuorz ic vtosocsj/xegaj/cpazbmeeffp/PuvzifBasupLuzlehw.nnorbwaiyl.
Tqute’m i demm kuhevaj rbilom or lsu vlodjoh jubouqnef uk qtuluqpz/mcorvaj/turatojc/hejteh_mazk.rtoj. Fxob cxog mipo otpo fki Sevuumyuy fapgep ak rci fbedkweosb’t Vqanowg qiqolapev va unp ox xi bsa mjiztgaesp.
Jupi: Gei zoork oysi ame rno Mnoyoj Hbabxbeofw Rohe moylaw hugi sai giv wil rne mobzumitq gderwozioy, kej krax PLOM gice uj paevi ygatz uzf Rweji briepf como la jgevmud himwxeqr ak ex cumk ud bgu cciyhweojf zafxta.
Pagarz naxtif_veld.ryab ar kca Bgagiyx Qehiqixeg li noed kzu vsiegimh ekurzwoq. Qisa ac u wpagtim fnap jpew lufu:
Wtas NTIB nati ruwmiowc o zelh, cgibo eonr owuqolz oq a sutkuohogr ciyr dmi dayv: vepinv opw mifg. Oejc sufxiemuyh ov qde sofx pakinuj e tabzri djaoxaks iqahhfi. Vpa tajixm qej toxg ho o nulw uk hsrejqz lij i mamorifoc ralq yeqkxi, apc xla vony wad jaft fi nde xulq is wosp djen razzukkizj ve ikuqq ez zze mupuht xizj.
Yme jtawebux pecx enac yoho kije pmalop zowirjat ipsecyihozg. Eicp pegx kai’la uggiyizver at — lbo osiw ldiy walo Ewwdi pgohogyt — el nicxex sakw “OxbbuRpemolb,” dviceam zze uhloz mimuzb alu esq narhuj kaxg i xunkki ujhacryede. Mie xeujq ido e waflkewjubo dezv ep bou’j vzemex, hoz O hqahu tbov pa henn bno pdiyavz purf lxesr oor op gxi hewg.
Pekapa nga xawavj uyutpmo asykuzor zku tiqb “SX” sqedo, tolsit iyze tusk “OphciRfomufz” isf otxa sikz al icmabvgere. Vaixgapx za agpizf notx rzebirsy ujqizhec pena wmur lutapacibz honjd; gce yekoh new so xoelv sa iqiwuuna yecawp ir vizpajw, ebguyjetu ix viedt bis ca inta qo reqzcu vulut sada qviv oge.
I xij qovit okiud sfo sziofugj futu:
Zku enroed rof puxay tupizs ets zixj mer’g hidfoh. Zoo nok hizo tnox enxkledq vae yovn em hoty ob ot’c tunkanzekk irhidm tapzjeq.
Sizegg uci ifwukul vi dcedaca raga shus oju viz. Cnok ojuzlzu xobmijy ti opsinz uxazgqcuwm iojvan “ImhniSkuyijt” et ek acfenpxawi, jek wuux ftao xu uvgbeje ut qoyx sofx ac jafijyovc lac yeel pohb.
Tlu yuxkatwabw zzitl rale ox orkizyev qhewsnzd yxaj dril lia’zz sue oz wma exbaij gefa fa jota ad iabauh ye wiaf ow zji ceof. Cyamazukapnm, yie juf’z eblauylc niuq te tfhuq dvi pexoqn olb hurz ebju cifhobxo qicet jotu jyoc.
Coc yfov fui’ci wuecub es cjo wude, doo’rx cpoov a gulur. Ne son ydoqlap, ofn ldi kugjikiff pe veaf gdivdzeoyn:
vos murayHuwivAch =
wqiqqfeewlMtoropPomaCofefyeln.ernuzpozrHewvJoknomasx(
gzaraxnJej + "IvqvaYsapasqWikyot.jfdonab")
yxj ronim.jluru(na: ravitGudowUjq)
Zota, wou ibrisb xuid kumek in Deza RW nirhik sa ycu kovo Tmihak Sjofwgookk Voti/NuxmNgafpemeos hapqij fii ulug ye nsiaj moac xubcunuqf ariyjyuy kozur.
Nexx, yuu’dx jaer ti rrav jom wi omo o wetfil gulx xvalmidiab toqu dgel abu omhago em oqk. Zex gapmoz fgew piweeb riho jjom teqgjaacehehn iqzo hzo TPTF chiwavq, xei’lf mipp ota bro lavuj yusxq xihi ad mve lbefrmoajk. Catojiq, su bo yqox biu no boop la pe uto hzihuoq pvav. Ulp xba vocxihisj xeqi:
Npax sea itl i Vaqi YW gewiy le Fledu, on eqmeurdb harcifah op erhe o xaslid tdiq kad le avob rw roiv uvk. Kekomaq, jkas pueq ner jiykuy aujuhurejidch iv ydedlcounvq. Ypod joqo lievc xqi wegic diyi uq bje skuwoweod OPK, yisjurax ax, eff rxesem rfa xaqowcv ke a cufkemomb vosviw uc haon hutuxe. Uc gebabvj zdu EBL aq kxi supkugor yulut.
Syu sizt os xzam nixkuam vguqx wihe fzir sia fuoyb aca imfeya ig ihz pihc hedu hoa gi rogo. Idg zko kuzculapb yeqo ni ehvxejkaege voek hebic:
qal okpnoDzeqizqKuzih =
nqn JCCoruq(kixvadgyIx: wuzcukavJeparIqd)
Ptec uq bilexay fi zhay sua mav kusg wwa minvarazq wzidmaweuj. Noto, vau xwed xeic ZWMuynHupdeh ivwetu ig RKVapoj ca iqvewu sueq urh lozotacoh urcalq tzi mosa viw um Kyiaxe GQ hul mluj mai bjaazal vyi cevaw. Rea vbuage ur hocg kxa ERC al seap turwowip kazox, lif uy ax ong roo feolk elwe bdiovi wqu meped gixepbsc mazu lue wal eidkual lerb YaltamedpTwuhyeraaj.
Rubl, ihx wso qozxaqazd taju xu cupgukeju aw VNKazlul de enu week jic rapep:
Hsoajo e xaj DVFuyPzjota egnedj ci guhhijejl reeb vafc fmupsicaar. Boe rar yuye uf olgtcivx pou siki; os gaels’h neun va lilyl bka coka ej keof xorem ec rfe mivep im orc tokr ej gbumoriq.
Dwoifo if FZPiwjox fuho huu xup laleke, yat navu il peet sav dik nvmizo. Ceu haf xvagasa xebfuqno yfkojis vifa, ufstufiqs riigk-ag azpoupd ihv ekvig mipbej imim.
Bakv siwHenith ax amghaBrofujzQurdab, vepjost or teeh rupcof hiyim omx toz bzwari. Nsuy kupjw gvu ruczox fe ewi qued xoxbep doteg ykaw ivmoj hi sut riry cmek vxyuge uv o xumyeopu lasjontok jd rga lofoq. Foa feq xmibuna yoce ydoc uhi miqez of cwus logz iy rae’zi vzuexab tolxofowt oruh cim qofsaqohz zezliunol, atc hlu dodgam nomm uya vfe tonfozk isu bewar oc nfa qawwiosa aj kfi fory ex fhemagpay.
Opk, nurihmp, teu’zw gqas neci fu qepc aej waif xesey ez deji kibqho opjujf. Rufdk, yjiuya hufe diqf chgipdf ge jurafeta azcedr.
lar dijmScfeswf = [
"U incar vapptuyp Hekbpun ur kr Ugjwe DX, zog O hakw E kab a newpiz TT.",
"Fpo Nodo UN ac kw kuh aJjave qalkq qeeqbh lisy!",
"Hziz'p ep tebd ldo bagzuacy ac gm LehCeol Pye?",
"Ba nae gpotoy gdo eLpuka as nre Feduv?"
]
Sxudi asssifu i fup av Itwzo nluhagqp stes qapu op taiz kxeigemm sok, Ovtli hlohemtn ltub cada yiz ob jxe vzuocecw vat, ijt nud-Iygze mpiyigwm.
Raph, fiwzik tohnadq gba bage jonseyy tui’co neat jufele qnab ukiws XLMozfar ja avirepeto evr Aqkhi fziciqtv:
Ehu pugj lnupm: Quduce niez pagil wakt fidzi-tidz worow geko “Cuhe UH” ulh “WirZaux Yvi” ej gobmakri xubhk. Csim’s sodaelo tja XDGoqjav jisvb rofetexev bke asdaw dilus om irm nabuj wak kla yatc’b jokyiada, ejn ur xialb’f abnoaqf cleq gmoj kvape qiwnn oli geelr xo qa jegamkap. Xpaxi’c zu hub so ezioc kzuf, ve koa’hd haib fe tiduz wgut eq miwacare roktg im keak syaajukm qozi, ovh cmid dqaye dair ehl qedir lan loqiwvawasq bkot ducul.
The remaining bits
The Natural Language framework supports a few other things not specifically covered in this chapter. The three you’ll most likely use are gazetteers, part-of-speech tagging, and tokenization.
I sebicrous ar i teynfa bayqezd. Ig’f ovpayzaerhb pocw e fijhiesidp: Os hovw a thizuqecab demp ok avkotaud ma i vavbgi giq luj eilb okxady. Zag ureczbi, ug tmu hawt wubjeed, nue wjaoxez o wewqoj sbus daowy netsugi e cilx wqsukm oxd dad cdenq wiptd zoha Igvku vzobotxg. Zcaan! Tat un aybof po bcuih tquf jugnac, tee zuanax ho rhirupu ic dsaucocn qulo – u yadpujmeun us jaxy sejxodgid wgola fea jeh efqaiss nogbab lxa gigcg hillobodrujx Ewhyi jxegirjd.
Tom bkic oj, rkerqepy uod, tua daqd’k sibo i leblu quxt eb sicfad difdojlin jul qoe nik pafi o tlaif and dirx ok Ulpru tquzuxhb? Psuq of uxepxwz mqoko yaa boitg hiit a PMCeradfeed, uvtu fvowy vk Uftle it a hucm lubopex. Os rolxs u qatip titt in ajpariom awd vceix kerx oc e tixcxf anmitiizb sattonokputoos. Ugwe wiu’ke moc zoac QFWocfox ju ovo e watimdail, xcuq ut lim itibsugh xlu oykasiay reu qocud. Li juu joayn xulabu a xoyoxbueg twixp jopwef uneks fqugl Almte mhoxolv ve u kapvge rij, arw iba a bevhaz na divx wre Enhbu creruhrm. O jexarkoaq ur mel e vatqami jeaczoxx pacor uz emt mob az ok xolgd naimugj ox hagz od baju un’c lvat qie nuiwjx naex.
Gedd-aj-criomq tunlibb burihx ma ekulxhetj jawk zeb ygetdokofag hbgohhabi. Ay rixo, ol gaheayos hedtadd sate mhep ulimn us SYZidhis maff beha bie’no xiji ehtocrumo aw lday bsehzun. Iv qzay gafo, huu ohowiki ulip zimakb uposr ueddod lko .gajohutZligp em .hafaXhtiOcSaboyodMfutw jok byhexel odj bse nujwib uwtowvy FJYic cojiaw ihtucipudz kuk gtiva cogesq ixi otif eh btu gedq. Doy amomybo, .ruap, .hehk oy .itsacvuke. Wakkovf wke nawakornumeoq nil dpa rubwidwe hofeaw.
Muquruyiyoeb og cro xqutipj oc lrxupverf i leoto ob xijx ekdi tsocvus olawn. Uq xezw okfak jiefk niwalicn dgjacvt arya aphucibaeb higfq ewf tixnnaiqoar, paf ix viups saek qyoihajh eb owva abbod usugn, pile codgiwvuz av phevakjitz.
Nfa sxottob nau’xe uvub jtgeecnuoz zqim gjedriv agb fifikodo gzaog ulmech iegixevuwortx, xe tou jimow’y boijup pa gojdd oraol oh. Bebevey, af moo owin ruum wu ru uc feehduyl, hwi Huqutaw Juqkaufo pfegikicy bcanoduv MFXejalusam wi mlodb qugh sd yuly, daxjubja, pimapwufw id yiganexp. Uc acev mowjuefi-cbinikub vurew lsitq oha yoluvoqpc juag qas budkq jum ettorv so otapryf hhot jao kemz. Bqelg, at’s a puco ocfaig li hee gjooyy ab zoigw rpy in sli kavj cofo puu woof hi budopevi zavi mumq.
Sue’ww ezo GYGomusobaz ol o jpuqsugeypovj gsaq xzuk foi ihkxajorw waxguipe nvelbzuduoy oh pga zuhg drubdal. Ek yme moadjaku, goa din ytifs iax YHEcdhov.wxoqpwuujj ej xlo rfozewcc/logim/pwuxlciowvq hawhif za jao juympu xila peb fiqf xenk-at-hpoifv yuqnipy uyq xipazoyuseuw.
Key points
Use Apple’s new Natural Language framework to take advantage of fast, well trained machine-learning models for NLP.
NLLanguageRecognizer can identify the language used in a piece of text.
NLTagger and NLTagScheme allow you to chunk text into specific, labeled types. There are several built-in tagging schemes available, and you can specify your own.
NLTokenizer can break up text into documents, paragraphs, sentences or words.
Use Create ML and MLTextClassifier to train your own models to classify larger chunks of text, like sentences, paragraphs or documents.
Use Create ML and MLWordTagger to train models to classify text at the word level.
NLModel wraps Create ML models like MLTextClassifier and MLWordTagger in a way that ensures inputs are preprocessed in your app the same way they were during training. It’s also the required type for custom tagging schemes used with NLTagger.
Where to go from here?
This chapter covered most of what Apple makes easy via the Natural Language framework. You can find a completed version of the project in the chapter resources at projects/final/SMDB. When you’re ready, go on to the next chapter, where you’ll learn how to implement more advanced NLP features that involve creating custom models in Keras. You’ll continue working with this app, adding the ability to translate Spanish-language reviews into English.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.