1 00:00:00,000 --> 00:00:08,364 2 00:00:08,364 --> 00:00:08,870 >> LUCAS FREITAS: Hei. 3 00:00:08,870 --> 00:00:09,980 Velkommen alle. 4 00:00:09,980 --> 00:00:11,216 Mitt navn er Lucas Freitas. 5 00:00:11,216 --> 00:00:15,220 Jeg er en junior på [uhørbart] studere informatikk med fokus på 6 00:00:15,220 --> 00:00:16,410 datalingvistikk. 7 00:00:16,410 --> 00:00:19,310 Så min videregående er i språk og lingvistisk teori. 8 00:00:19,310 --> 00:00:21,870 Jeg er virkelig spent på å lære dere litt om på feltet. 9 00:00:21,870 --> 00:00:24,300 Det er et veldig spennende område å studere. 10 00:00:24,300 --> 00:00:27,260 Også med mye potensial for fremtiden. 11 00:00:27,260 --> 00:00:30,160 Så, jeg er veldig spent på at dere vurderer prosjekter i 12 00:00:30,160 --> 00:00:31,160 datalingvistikk. 13 00:00:31,160 --> 00:00:35,460 Og jeg vil være mer enn glade for å gi råd noen av deg hvis du bestemmer deg for å 14 00:00:35,460 --> 00:00:37,090 forfølge en av disse. 15 00:00:37,090 --> 00:00:40,010 >> Så først av alt hva er beregnings lingvistikk? 16 00:00:40,010 --> 00:00:44,630 Så datalingvistikk er skjæringspunktet mellom lingvistikk og 17 00:00:44,630 --> 00:00:46,390 informatikk. 18 00:00:46,390 --> 00:00:47,415 Så, hva er lingvistikk? 19 00:00:47,415 --> 00:00:48,490 Hva er informatikk? 20 00:00:48,490 --> 00:00:51,580 Godt fra lingvistikk, hva vi tar er de språkene. 21 00:00:51,580 --> 00:00:54,960 Så lingvistikk er faktisk studien av naturlige språk generelt. 22 00:00:54,960 --> 00:00:58,330 Så naturlig språk - vi snakker om språk som vi faktisk bruker til 23 00:00:58,330 --> 00:00:59,770 kommunisere med hverandre. 24 00:00:59,770 --> 00:01:02,200 Så vi ikke akkurat snakker om C eller Java. 25 00:01:02,200 --> 00:01:05,900 Vi snakker mer om engelsk og Kinesisk og andre språk som vi 26 00:01:05,900 --> 00:01:07,780 bruke for å kommunisere med hverandre. 27 00:01:07,780 --> 00:01:12,470 >> Den utfordrende ting om det er at akkurat nå har vi nesten 7000 28 00:01:12,470 --> 00:01:14,260 språk i verden. 29 00:01:14,260 --> 00:01:19,520 Så det er ganske høy variasjon språk som vi kan studere. 30 00:01:19,520 --> 00:01:22,600 Og så du tror at det er nok meget vanskelig å gjøre, f.eks 31 00:01:22,600 --> 00:01:26,960 oversettelse fra ett språk til andre, med tanke på at du har 32 00:01:26,960 --> 00:01:28,240 nesten 7000 av dem. 33 00:01:28,240 --> 00:01:31,450 Så, hvis du tenker på å gjøre oversettelse fra ett språk til den andre du 34 00:01:31,450 --> 00:01:35,840 har nesten mer enn en million forskjellige kombinasjoner som du kan 35 00:01:35,840 --> 00:01:37,330 har fra språk til språk. 36 00:01:37,330 --> 00:01:40,820 Så det er virkelig vanskelig å gjøre noen slags eksempel oversettelsessystem for 37 00:01:40,820 --> 00:01:43,540 hvert enkelt språk. 38 00:01:43,540 --> 00:01:47,120 >> Så, lingvistikk behandler med syntaks, semantikk, pragmatikk. 39 00:01:47,120 --> 00:01:49,550 Dere trenger ikke akkurat trenger å vite hva de er. 40 00:01:49,550 --> 00:01:55,090 Men veldig interessant ting er at som en innfødt, når du lærer 41 00:01:55,090 --> 00:01:59,010 språk som barn, du faktisk lære alle disse tingene - syntaks semantikk 42 00:01:59,010 --> 00:02:00,500 og pragmatikk - 43 00:02:00,500 --> 00:02:01,430 selv. 44 00:02:01,430 --> 00:02:04,820 Og ingen trenger å lære deg syntaks for deg å forstå hvordan setninger er 45 00:02:04,820 --> 00:02:05,290 strukturert. 46 00:02:05,290 --> 00:02:07,980 Så, det er virkelig interessant fordi det er noe som kommer svært 47 00:02:07,980 --> 00:02:10,389 intuitivt. 48 00:02:10,389 --> 00:02:13,190 >> Og hva er det du tar fra informatikk? 49 00:02:13,190 --> 00:02:16,700 Vel, det viktigste er at vi har i informatikk er første av 50 00:02:16,700 --> 00:02:19,340 alt, kunstig intelligens og maskinlæring. 51 00:02:19,340 --> 00:02:22,610 Så, hva vi prøver å gjøre beregnings lingvistikk er lærer 52 00:02:22,610 --> 00:02:26,990 datamaskinen hvordan du gjør noe med språket. 53 00:02:26,990 --> 00:02:28,630 >> Så, for eksempel i maskin oversettelse. 54 00:02:28,630 --> 00:02:32,490 Jeg prøver å lære min datamaskin hvordan å vite hvordan overgangen fra ett 55 00:02:32,490 --> 00:02:33,310 språket til den andre. 56 00:02:33,310 --> 00:02:35,790 Så, i utgangspunktet liker undervisning en datamaskin to språk. 57 00:02:35,790 --> 00:02:38,870 Hvis jeg gjør naturlig språk prosessering, som er tilfellet for eksempel på 58 00:02:38,870 --> 00:02:41,810 Facebooks Graf Søk, lære deg datamaskinen hvordan å forstå 59 00:02:41,810 --> 00:02:42,730 spørsmål også. 60 00:02:42,730 --> 00:02:48,130 >> Så, hvis du sier "bilder av min venner. "Facebook behandler ikke at 61 00:02:48,130 --> 00:02:51,130 som et hele streng som har bare en haug med ord. 62 00:02:51,130 --> 00:02:56,020 Det forstår faktisk forholdet mellom "bilder" og "mine venner" og 63 00:02:56,020 --> 00:02:59,620 forstår at "bilder" er eiendom av "mine venner." 64 00:02:59,620 --> 00:03:02,350 >> Så, det er en del av, for eksempel, naturlig språkbehandling. 65 00:03:02,350 --> 00:03:04,790 Det prøver å forstå hva er forholdet mellom 66 00:03:04,790 --> 00:03:07,520 ordene i en setning. 67 00:03:07,520 --> 00:03:11,170 Og det store spørsmålet er, kan du undervise en datamaskin hvordan å snakke 68 00:03:11,170 --> 00:03:12,650 et språk generelt? 69 00:03:12,650 --> 00:03:17,810 Som er et veldig interessant spørsmål å tror, ​​som om kanskje i fremtiden, 70 00:03:17,810 --> 00:03:19,930 du kommer til å være i stand til snakk med din mobiltelefon. 71 00:03:19,930 --> 00:03:23,290 Typen som hva vi gjør med Siri, men noe mer som, kan du faktisk 72 00:03:23,290 --> 00:03:25,690 si hva du vil og telefonen kommer til å forstå alt. 73 00:03:25,690 --> 00:03:28,350 Og det kan ha følge opp spørsmål og fortsetter å snakke. 74 00:03:28,350 --> 00:03:30,880 Det er noe veldig spennende, etter min mening. 75 00:03:30,880 --> 00:03:33,070 >> Så noe om naturlige språk. 76 00:03:33,070 --> 00:03:36,220 Noe virkelig interessant om naturlige språk er det, og dette er 77 00:03:36,220 --> 00:03:38,470 kreditt til min lingvistikk professor, Maria Polinsky. 78 00:03:38,470 --> 00:03:40,830 Hun gir et eksempel, og jeg tror det er virkelig interessant. 79 00:03:40,830 --> 00:03:47,060 Fordi vi lærer språket fra når vi er født og deretter vår hjem 80 00:03:47,060 --> 00:03:49,170 språket slags vokser på oss. 81 00:03:49,170 --> 00:03:52,570 >> Og i utgangspunktet du lære språk fra minimal input, ikke sant? 82 00:03:52,570 --> 00:03:56,700 Du er bare å få innspill fra Foreldrene til hva din språklyder 83 00:03:56,700 --> 00:03:58,770 liker og du bare lære det. 84 00:03:58,770 --> 00:04:02,240 Så, er det interessant fordi hvis du ser på disse setninger, for eksempel. 85 00:04:02,240 --> 00:04:06,980 Du ser, "Mary setter på en frakk hver gang hun forlater huset. " 86 00:04:06,980 --> 00:04:10,650 >> I dette tilfellet er det mulig å ha Ordet "hun" refererer til Mary, ikke sant? 87 00:04:10,650 --> 00:04:13,500 Du kan si "Mary setter på en frakk hver gang Mary forlater 88 00:04:13,500 --> 00:04:14,960 huset. "så er det helt greit. 89 00:04:14,960 --> 00:04:19,370 Men så hvis du ser på setningen "Hun setter på en frakk hver gang Mary 90 00:04:19,370 --> 00:04:22,850 forlater huset. "du vet det er umulig å si at "hun" er 91 00:04:22,850 --> 00:04:24,260 henviser til Mary. 92 00:04:24,260 --> 00:04:27,070 >> Det er ingen måte å si at "Mary setter på en frakk hver gang Mary forlater 93 00:04:27,070 --> 00:04:30,790 huset. "Så det er interessant fordi Dette er den type intuisjon 94 00:04:30,790 --> 00:04:32,890 at hver innfødt har. 95 00:04:32,890 --> 00:04:36,370 Og ingen ble lært at dette er slik at syntaks virker. 96 00:04:36,370 --> 00:04:41,930 Og at du bare kan ha denne "hun" henvisning til Mary i denne første tilfellet 97 00:04:41,930 --> 00:04:44,260 og faktisk i denne andre også, men ikke i denne. 98 00:04:44,260 --> 00:04:46,500 Men alle slags blir til den samme svar. 99 00:04:46,500 --> 00:04:48,580 Alle er enige om det. 100 00:04:48,580 --> 00:04:53,280 Så det er virkelig interessant hvordan selv du vet ikke alle reglene 101 00:04:53,280 --> 00:04:55,575 på ditt språk du slags forstå hvordan språket fungerer. 102 00:04:55,575 --> 00:04:59,020 103 00:04:59,020 --> 00:05:01,530 >> Så det interessante ting om naturlig språket er at du ikke trenger å 104 00:05:01,530 --> 00:05:06,970 vet noen syntaks å vite om en setning er grammatisk eller ungrammatical for 105 00:05:06,970 --> 00:05:08,810 de fleste tilfeller. 106 00:05:08,810 --> 00:05:13,220 Som gjør at du tror at kanskje det skjer er at gjennom livet ditt, du 107 00:05:13,220 --> 00:05:17,410 blir bare mer og mer setninger fortalt til deg. 108 00:05:17,410 --> 00:05:19,800 Og så du holder memorering alle setninger. 109 00:05:19,800 --> 00:05:24,230 Og så når noen forteller deg noe, hører du den setningen og 110 00:05:24,230 --> 00:05:27,040 du ser på ditt vokabular av setninger og se om 111 00:05:27,040 --> 00:05:28,270 den setningen er der. 112 00:05:28,270 --> 00:05:29,830 Og hvis det er det du si det er grammatisk. 113 00:05:29,830 --> 00:05:31,740 Hvis det ikke er du si at det er ungrammatical. 114 00:05:31,740 --> 00:05:35,150 >> Så, i så fall, ville du si, oh, så du har en stor liste over alle 115 00:05:35,150 --> 00:05:36,140 mulige setninger. 116 00:05:36,140 --> 00:05:38,240 Og så når du hører en setning, du vet om det er grammatisk eller 117 00:05:38,240 --> 00:05:39,450 ikke basert på det. 118 00:05:39,450 --> 00:05:42,360 Saken er at hvis du ser på en setning, for eksempel "The 119 00:05:42,360 --> 00:05:47,540 fem-ledet CS50 TFs kokte blinde blekksprut med en DAPA krus. "Det er 120 00:05:47,540 --> 00:05:49,630 definitivt ikke en setning at du har hørt før. 121 00:05:49,630 --> 00:05:52,380 Men på samme tid du vet at det er ganske mye grammatisk, ikke sant? 122 00:05:52,380 --> 00:05:55,570 Det er ingen grammatiske feil og du kan si at 123 00:05:55,570 --> 00:05:57,020 det er en mulig setning. 124 00:05:57,020 --> 00:06:01,300 >> Så det gjør oss tror at faktisk måte at vi lærer språket er ikke bare 125 00:06:01,300 --> 00:06:07,090 ved å ha en stor database med mulig ord eller setninger, men mer av 126 00:06:07,090 --> 00:06:11,490 å forstå forholdet mellom ord i disse setningene. 127 00:06:11,490 --> 00:06:14,570 Betyr det fornuftig? 128 00:06:14,570 --> 00:06:19,370 Så da er spørsmålet, kan datamaskiner lære språk? 129 00:06:19,370 --> 00:06:21,490 Kan vi lære språk til datamaskiner? 130 00:06:21,490 --> 00:06:24,230 >> Så, la oss tenke på forskjellen mellom en innfødt av et språk 131 00:06:24,230 --> 00:06:25,460 og en datamaskin. 132 00:06:25,460 --> 00:06:27,340 Så, hva skjer med den som snakker? 133 00:06:27,340 --> 00:06:30,430 Vel, lærer morsmål en språk fra eksponering til det. 134 00:06:30,430 --> 00:06:34,200 Sendes sine tidlige barneår. 135 00:06:34,200 --> 00:06:38,570 Så, i utgangspunktet, du bare har en baby, og du fortsetter å snakke til den, og det 136 00:06:38,570 --> 00:06:40,540 bare lærer å snakke språket, ikke sant? 137 00:06:40,540 --> 00:06:42,660 Så, er du i utgangspunktet gi innspill til babyen. 138 00:06:42,660 --> 00:06:45,200 Så, så kan du argumentere for at en datamaskin kan gjøre det samme, ikke sant? 139 00:06:45,200 --> 00:06:49,510 Du kan bare gi språk som input til datamaskinen. 140 00:06:49,510 --> 00:06:53,410 >> Som for eksempel en haug med filer som har bøker på engelsk. 141 00:06:53,410 --> 00:06:56,190 Kanskje det er en måte at du kunne undervise en 142 00:06:56,190 --> 00:06:57,850 datamaskin engelsk, ikke sant? 143 00:06:57,850 --> 00:07:01,000 Og faktisk, hvis du tenker på det, det tar deg kanskje et par 144 00:07:01,000 --> 00:07:02,680 dager til å lese en bok. 145 00:07:02,680 --> 00:07:05,760 For en datamaskin tar det et sekund å se på alle ord i en bok. 146 00:07:05,760 --> 00:07:10,810 Så du kan tenke som kan være nettopp dette argument for innspill fra rundt deg, 147 00:07:10,810 --> 00:07:15,440 det er ikke nok å si at det er noe som bare mennesker kan gjøre. 148 00:07:15,440 --> 00:07:17,680 Du kan tenke datamaskiner også kan få innspill. 149 00:07:17,680 --> 00:07:21,170 >> Den andre tingen er at morsmål også har en hjerne som har 150 00:07:21,170 --> 00:07:23,870 språklæring evne. 151 00:07:23,870 --> 00:07:27,020 Men hvis du tenker på det, en hjerne er en solid ting. 152 00:07:27,020 --> 00:07:30,450 Når du blir født, er det allerede satt - 153 00:07:30,450 --> 00:07:31,320 dette er hjernen din. 154 00:07:31,320 --> 00:07:34,660 Og som du vokser opp, får du bare mer input av språk og kanskje næringsstoffer 155 00:07:34,660 --> 00:07:35,960 og andre ting. 156 00:07:35,960 --> 00:07:38,170 Men ganske mye hjernen din er en solid ting. 157 00:07:38,170 --> 00:07:41,290 >> Så du kan si, vel, kanskje du kan bygge en datamaskin som har en haug med 158 00:07:41,290 --> 00:07:45,890 funksjoner og fremgangsmåter som bare etterligne språklæring evne. 159 00:07:45,890 --> 00:07:49,630 Så i den forstand, kan du si, vel, jeg kan ha en datamaskin som har alt 160 00:07:49,630 --> 00:07:52,270 ting jeg trenger å lære språket. 161 00:07:52,270 --> 00:07:56,200 Og det siste er at en innfødt speaker lærer av prøving og feiling. 162 00:07:56,200 --> 00:08:01,090 Så i utgangspunktet en annen viktig ting i språklæring er at du på en måte 163 00:08:01,090 --> 00:08:05,340 av å lære ting ved å gjøre generaliseringer av det du hører. 164 00:08:05,340 --> 00:08:10,280 >> Så som du vokser opp du lære at noen ord er mer som substantiver, 165 00:08:10,280 --> 00:08:11,820 noen andre som er adjektiver. 166 00:08:11,820 --> 00:08:14,250 Og du trenger ikke å ha noen kunnskap om lingvistikk 167 00:08:14,250 --> 00:08:15,040 å forstå at. 168 00:08:15,040 --> 00:08:18,560 Men du bare vet det er noen ord er plassert på en eller annen del av 169 00:08:18,560 --> 00:08:22,570 setning og noen andre i andre deler av setningen. 170 00:08:22,570 --> 00:08:26,110 >> Og at når du gjør noe som er som en setning som ikke er riktig - 171 00:08:26,110 --> 00:08:28,770 kanskje på grunn av en over generalisering for eksempel. 172 00:08:28,770 --> 00:08:32,210 Kanskje når du vokser opp, merker du at flertall er vanligvis 173 00:08:32,210 --> 00:08:35,809 dannet ved å sette en S i slutten av ordet. 174 00:08:35,809 --> 00:08:40,042 Og så du prøver å gjøre det flertall av "hjort" som "rådyr" eller "tann" som 175 00:08:40,042 --> 00:08:44,780 "tooths." Så da dine foreldre eller noen korrigerer deg og sier, nei, det 176 00:08:44,780 --> 00:08:49,020 flertall av "hjort" er "hjort", og flertall av "tann" er "tenner". Og så 177 00:08:49,020 --> 00:08:50,060 du lære disse tingene. 178 00:08:50,060 --> 00:08:51,520 Så du lære av prøving og feiling. 179 00:08:51,520 --> 00:08:53,100 >> Men du kan også gjøre det med en datamaskin. 180 00:08:53,100 --> 00:08:55,310 Du kan ha noe som kalles forsterkning læring. 181 00:08:55,310 --> 00:08:58,560 Som er utgangspunktet som å gi en datamaskin en belønning når den gjør 182 00:08:58,560 --> 00:08:59,410 noe riktig. 183 00:08:59,410 --> 00:09:04,710 Og gir det motsatte av en belønning og når den gjør noe galt. 184 00:09:04,710 --> 00:09:07,410 Du kan faktisk se at hvis du går til Google Translate og du prøver å 185 00:09:07,410 --> 00:09:10,220 sette en setning, det ber deg om tilbakemelding. 186 00:09:10,220 --> 00:09:13,240 Så hvis du sier, oh, det er en bedre oversettelse for denne setningen. 187 00:09:13,240 --> 00:09:18,140 Du kan skrive det ut og så hvis en masse folk holder å si at er en bedre 188 00:09:18,140 --> 00:09:21,560 oversettelse, bare lærer det at det bør bruke som oversettelse i stedet for 189 00:09:21,560 --> 00:09:22,960 den ene det var å gi. 190 00:09:22,960 --> 00:09:28,830 >> Så, det er en veldig filosofisk spørsmål for å se om datamaskiner kommer til å være 191 00:09:28,830 --> 00:09:30,340 stand til å snakke eller ikke i fremtiden. 192 00:09:30,340 --> 00:09:34,440 Men jeg har store forhåpninger om at de kan bare basert på disse argumentene. 193 00:09:34,440 --> 00:09:38,570 Men det er bare mer av en filosofisk spørsmål. 194 00:09:38,570 --> 00:09:43,460 >> Så mens datamaskiner fortsatt ikke kan snakke, hva er de tingene som vi kan gjøre? 195 00:09:43,460 --> 00:09:47,070 Noen virkelig kule tingene er dataklassifisering. 196 00:09:47,070 --> 00:09:53,210 Så, for eksempel, dere vet at e-posttjenester gjør, for 197 00:09:53,210 --> 00:09:55,580 eksempel spamfiltrering. 198 00:09:55,580 --> 00:09:59,070 Så når du mottar spam, det prøver å filtrere til en annen boks. 199 00:09:59,070 --> 00:10:00,270 Så hvordan gjør den det? 200 00:10:00,270 --> 00:10:06,080 Det er ikke som maskinen bare vet hva e-postadresser sender spam. 201 00:10:06,080 --> 00:10:09,130 Så det er mer basert på innholdet i meldingen, eller kanskje tittelen, eller 202 00:10:09,130 --> 00:10:11,310 kanskje noen mønster som du har. 203 00:10:11,310 --> 00:10:15,690 >> Så, i utgangspunktet, hva du kan gjøre er å få en mye data av e-poster som er spam, 204 00:10:15,690 --> 00:10:19,980 e-poster som ikke er spam, og lære hva slags mønstre du har i 205 00:10:19,980 --> 00:10:21,000 de som er spam. 206 00:10:21,000 --> 00:10:23,260 Og dette er en del av beregnings lingvistikk. 207 00:10:23,260 --> 00:10:24,720 Det kalles dataklassifisering. 208 00:10:24,720 --> 00:10:28,100 Og vi faktisk kommer til å se en eksempel på at i de neste lysbildene. 209 00:10:28,100 --> 00:10:32,910 >> Den andre tingen er naturlig språk behandling som er den tingen som 210 00:10:32,910 --> 00:10:36,580 Graf Søk gjør for å la du skrive en setning. 211 00:10:36,580 --> 00:10:38,690 Og den stoler du forstår hva er meningen og gir 212 00:10:38,690 --> 00:10:39,940 du et bedre resultat. 213 00:10:39,940 --> 00:10:43,880 Egentlig, hvis du går til Google eller Bing og du søker noe som Lady 214 00:10:43,880 --> 00:10:47,060 Gagas høyde, er du faktisk kommer å få 5 '1 "i stedet for informasjon 215 00:10:47,060 --> 00:10:50,170 fra henne fordi det faktisk forstår hva du snakker om. 216 00:10:50,170 --> 00:10:52,140 Så det er en del av naturlig språkbehandling. 217 00:10:52,140 --> 00:10:57,000 >> Eller også når du bruker Siri, først du har en algoritme som prøver å 218 00:10:57,000 --> 00:11:01,130 sette hva du sier i ord, i tekst. 219 00:11:01,130 --> 00:11:03,690 Og så den prøver å oversette som til mening. 220 00:11:03,690 --> 00:11:06,570 Så det er alle en del av naturlig språkbehandling. 221 00:11:06,570 --> 00:11:08,320 >> Da har du maskinoversettelse - 222 00:11:08,320 --> 00:11:10,300 som er faktisk en av mine favoritter - 223 00:11:10,300 --> 00:11:14,060 som er bare oversette fra et språk til et annet. 224 00:11:14,060 --> 00:11:17,950 Så du kan tenke at når du gjør maskinoversettelse, har du 225 00:11:17,950 --> 00:11:19,750 uendelige muligheter for setninger. 226 00:11:19,750 --> 00:11:22,960 Så det er ingen måte å bare lagre hver eneste oversettelse. 227 00:11:22,960 --> 00:11:27,440 Så du må komme opp med interessante algoritmer for å kunne 228 00:11:27,440 --> 00:11:30,110 sette hver enkelt setning på noen måte. 229 00:11:30,110 --> 00:11:32,483 >> Dere har noen spørsmål så langt? 230 00:11:32,483 --> 00:11:34,450 Nei? 231 00:11:34,450 --> 00:11:34,830 OK. 232 00:11:34,830 --> 00:11:36,900 >> Så hva skal vi ser i dag? 233 00:11:36,900 --> 00:11:39,300 Først av alt, jeg kommer til å snakke om klassifiseringen problem. 234 00:11:39,300 --> 00:11:41,440 Så den som jeg var sier om spam. 235 00:11:41,440 --> 00:11:46,820 Hva jeg kommer til å gjøre er, gitt tekster til en sang, kan du prøve å finne ut 236 00:11:46,820 --> 00:11:49,810 med høy sannsynlighet som er sangeren? 237 00:11:49,810 --> 00:11:53,590 La oss si at jeg har sanger fra Lady Gaga og Katy Perry, hvis jeg gir deg en 238 00:11:53,590 --> 00:11:58,130 ny sang, kan du finne ut om det er Katy Perry eller Lady Gaga? 239 00:11:58,130 --> 00:12:01,490 >> Den andre, jeg bare kommer til å snakke om segmentering problem. 240 00:12:01,490 --> 00:12:05,780 Så jeg vet ikke om dere vet, men Kinesisk, japansk, andre østasiatiske 241 00:12:05,780 --> 00:12:08,090 språk og andre språk generelt, ikke har 242 00:12:08,090 --> 00:12:09,830 mellomrom mellom ord. 243 00:12:09,830 --> 00:12:13,540 Og så hvis du tenker på den måten at datamaskinen slags prøver å 244 00:12:13,540 --> 00:12:18,600 forstå naturlig språk prosessering, den ser på ordene og 245 00:12:18,600 --> 00:12:21,500 forsøker å forstå forholdet mellom dem, ikke sant? 246 00:12:21,500 --> 00:12:25,440 Men så hvis du har kinesisk, og du ha null mellomrom, det er virkelig vanskelig å 247 00:12:25,440 --> 00:12:28,360 finne ut hva som er forholdet mellom ord, fordi de ikke har noen 248 00:12:28,360 --> 00:12:29,530 ord først. 249 00:12:29,530 --> 00:12:32,600 Så du trenger å gjøre noe som kalles segmentering som bare betyr å sette 250 00:12:32,600 --> 00:12:36,490 mellomrom mellom hva vi vil kalle ord på disse språkene. 251 00:12:36,490 --> 00:12:37,740 Fornuftig? 252 00:12:37,740 --> 00:12:39,680 253 00:12:39,680 --> 00:12:41,540 >> Og så skal vi snakke om syntaks. 254 00:12:41,540 --> 00:12:44,050 Så bare litt om naturlig språkbehandling. 255 00:12:44,050 --> 00:12:45,420 Det kommer til å være bare en oversikt. 256 00:12:45,420 --> 00:12:50,700 Så i dag, i utgangspunktet det jeg ønsker å gjøre er å gi dere en liten bit av en 257 00:12:50,700 --> 00:12:53,930 innsiden av det som er mulighetene at du kan gjøre med beregnings 258 00:12:53,930 --> 00:12:54,960 lingvistikk. 259 00:12:54,960 --> 00:13:00,410 Og så kan du se hva du tror er kult blant de tingene. 260 00:13:00,410 --> 00:13:02,270 Og kanskje du kan tenke på et prosjekt og komme å snakke med meg. 261 00:13:02,270 --> 00:13:05,260 Og jeg kan gi deg råd på hvordan man implementerer den. 262 00:13:05,260 --> 00:13:09,060 >> Så syntaks kommer til å være litt om Graf Søk og maskin 263 00:13:09,060 --> 00:13:09,670 oversettelse. 264 00:13:09,670 --> 00:13:13,650 Jeg skal bare gi et eksempel på hvordan du kan for eksempel oversette 265 00:13:13,650 --> 00:13:16,020 noe fra portugisisk til engelsk. 266 00:13:16,020 --> 00:13:17,830 Høres bra ut? 267 00:13:17,830 --> 00:13:19,293 >> Så først, problemet klassifisering. 268 00:13:19,293 --> 00:13:23,590 Jeg vil si at denne delen av seminaret kommer til å være den mest utfordrende 269 00:13:23,590 --> 00:13:27,560 en bare fordi det kommer å være noen koding. 270 00:13:27,560 --> 00:13:29,470 Men det kommer til å bli Python. 271 00:13:29,470 --> 00:13:34,380 Jeg vet at dere ikke vet Python, så Jeg skal bare forklare på den høye 272 00:13:34,380 --> 00:13:35,750 nivå hva jeg gjør. 273 00:13:35,750 --> 00:13:40,900 Og du trenger ikke å virkelig bryr seg for mye om syntaksen fordi det er 274 00:13:40,900 --> 00:13:42,140 noe dere kan lære. 275 00:13:42,140 --> 00:13:42,540 OK? 276 00:13:42,540 --> 00:13:43,580 Høres bra ut. 277 00:13:43,580 --> 00:13:46,020 >> Så hva er problemet klassifisering? 278 00:13:46,020 --> 00:13:49,140 Så du får noen tekster til en sang, og du ønsker å gjette 279 00:13:49,140 --> 00:13:50,620 som synger den. 280 00:13:50,620 --> 00:13:54,045 Og dette kan være for noe slag andre problemer. 281 00:13:54,045 --> 00:13:59,980 Så det kan være, for eksempel, har du en presidentvalgkamp, ​​og du har en 282 00:13:59,980 --> 00:14:02,610 tale, og du vil finne ut hvis det var, for eksempel, 283 00:14:02,610 --> 00:14:04,470 Obama eller Mitt Romney. 284 00:14:04,470 --> 00:14:07,700 Eller du kan ha en haug med e-poster og du ønsker å finne ut om de er 285 00:14:07,700 --> 00:14:08,890 spam eller ikke. 286 00:14:08,890 --> 00:14:11,440 Så det er bare å klassifisere noen data basert på ordene 287 00:14:11,440 --> 00:14:13,790 at du har det. 288 00:14:13,790 --> 00:14:16,295 >> Så for å gjøre det, må du gjøre noen forutsetninger. 289 00:14:16,295 --> 00:14:20,570 Så mye om datalingvistikk er å gjøre antakelser, 290 00:14:20,570 --> 00:14:24,100 vanligvis smart forutsetninger, slik at du kan få gode resultater. 291 00:14:24,100 --> 00:14:26,670 Prøver å lage en modell for det. 292 00:14:26,670 --> 00:14:31,290 Og så prøve det ut og se om det fungerer, hvis det gir deg god presisjon. 293 00:14:31,290 --> 00:14:33,940 Og hvis den gjør det, så du forsøke å forbedre den. 294 00:14:33,940 --> 00:14:37,640 Hvis det ikke gjør det, er du liker, OK, kanskje jeg bør gjøre en annen forutsetning. 295 00:14:37,640 --> 00:14:44,030 >> Så antakelsen om at vi kommer til å gjøre er at en artist vanligvis synger 296 00:14:44,030 --> 00:14:49,220 om et tema flere ganger, og kanskje bruker ord flere ganger bare 297 00:14:49,220 --> 00:14:50,270 fordi de er vant til det. 298 00:14:50,270 --> 00:14:51,890 Du kan bare tenke på din venn. 299 00:14:51,890 --> 00:14:57,350 Jeg er sikker på at dere alle har venner som sier at deres signatur setning, 300 00:14:57,350 --> 00:14:59,260 bokstavelig talt for hver enkelt setning - 301 00:14:59,260 --> 00:15:02,660 som noen bestemt ord eller noen spesifikke setning som de sier for 302 00:15:02,660 --> 00:15:04,020 hver eneste setning. 303 00:15:04,020 --> 00:15:07,920 >> Og hva du kan si er at hvis du ser en setning som har en signatur 304 00:15:07,920 --> 00:15:11,450 setning, kan du gjette at sannsynligvis din venn er den 305 00:15:11,450 --> 00:15:13,310 en sier det, ikke sant? 306 00:15:13,310 --> 00:15:18,410 Så du gjøre denne antakelsen og deretter det er hvordan du lage en modell. 307 00:15:18,410 --> 00:15:24,440 >> Eksempelet som jeg kommer til å gi er på hvordan Lady Gaga, for eksempel, folk 308 00:15:24,440 --> 00:15:27,430 si at hun bruker "baby" for alle hennes nummer én sanger. 309 00:15:27,430 --> 00:15:32,270 Og faktisk dette er en video som viser hun sa ordet "baby" for 310 00:15:32,270 --> 00:15:33,410 forskjellige sanger. 311 00:15:33,410 --> 00:15:33,860 >> [VIDEOAVSPILLING] 312 00:15:33,860 --> 00:15:34,310 >> - (Synger) Baby. 313 00:15:34,310 --> 00:15:36,220 Baby. 314 00:15:36,220 --> 00:15:37,086 Baby. 315 00:15:37,086 --> 00:15:37,520 Baby. 316 00:15:37,520 --> 00:15:37,770 Baby. 317 00:15:37,770 --> 00:15:38,822 Babe. 318 00:15:38,822 --> 00:15:39,243 Baby. 319 00:15:39,243 --> 00:15:40,085 Baby. 320 00:15:40,085 --> 00:15:40,510 Baby. 321 00:15:40,510 --> 00:15:40,850 Baby. 322 00:15:40,850 --> 00:15:41,090 >> [END VIDEOAVSPILLING- 323 00:15:41,090 --> 00:15:44,020 >> LUCAS FREITAS: Så det er, tror jeg, 40 sanger her som sier hun 324 00:15:44,020 --> 00:15:48,690 ordet "baby". Så du kan i utgangspunktet gjette at hvis du ser en sang som har 325 00:15:48,690 --> 00:15:52,180 ordet "baby", det er noen høy Sannsynligheten for at det er Lady Gaga. 326 00:15:52,180 --> 00:15:56,450 Men la oss prøve å utvikle dette ytterligere mer formelt. 327 00:15:56,450 --> 00:16:00,470 >> Så disse er tekster til sanger av Lady Gaga og Katy Perry. 328 00:16:00,470 --> 00:16:04,120 Så du ser på Lady Gaga, ser du de har mange forekomster av "baby", en 329 00:16:04,120 --> 00:16:07,710 mange forekomster av "måte." Og så Katy Perry har mange forekomster av 330 00:16:07,710 --> 00:16:10,360 "Det," en rekke forekomster av "ild". 331 00:16:10,360 --> 00:16:14,560 >> Så i utgangspunktet det vi ønsker å gjøre er, du får en lyrisk. 332 00:16:14,560 --> 00:16:20,480 La oss si at du får en lyrisk for en sang som er "baby", bare "baby". Hvis 333 00:16:20,480 --> 00:16:24,750 du bare få ordet "baby", og dette er alle data som du har fra 334 00:16:24,750 --> 00:16:27,880 Lady Gaga og Katy Perry, som ville du tror er den personen 335 00:16:27,880 --> 00:16:29,370 som synger den sangen? 336 00:16:29,370 --> 00:16:32,360 Lady Gaga eller Katy Perry? 337 00:16:32,360 --> 00:16:33,150 Lady Gaga, ikke sant? 338 00:16:33,150 --> 00:16:37,400 Fordi hun er den eneste som sier "Baby". Dette høres dumt, ikke sant? 339 00:16:37,400 --> 00:16:38,760 OK, dette er virkelig enkelt. 340 00:16:38,760 --> 00:16:41,860 Jeg bare ser på de to sangene og av Selvfølgelig, hun er den eneste som har 341 00:16:41,860 --> 00:16:42,660 "Baby". 342 00:16:42,660 --> 00:16:44,740 >> Men hva om du har en haug med ord? 343 00:16:44,740 --> 00:16:50,900 Hvis du har en faktisk lyrisk, noe som "baby, jeg bare 344 00:16:50,900 --> 00:16:51,610 gikk for å se et [? CFT?] 345 00:16:51,610 --> 00:16:54,020 foredrag, "eller noe sånt, og så du faktisk nødt til å finne ut - 346 00:16:54,020 --> 00:16:55,780 basert på alle disse ordene - 347 00:16:55,780 --> 00:16:58,350 hvem er kunstneren som trolig sang denne sangen? 348 00:16:58,350 --> 00:17:01,860 Så la oss prøve å utvikle dette litt nærmere. 349 00:17:01,860 --> 00:17:05,630 >> OK, så basert bare på data som vi fikk, virker det som Gaga er trolig 350 00:17:05,630 --> 00:17:06,260 sangeren. 351 00:17:06,260 --> 00:17:07,904 Men hvordan kan vi skrive dette mer formelt? 352 00:17:07,904 --> 00:17:10,579 353 00:17:10,579 --> 00:17:13,140 Og det kommer til å være litt litt statistikk. 354 00:17:13,140 --> 00:17:15,880 Så hvis du går deg bort, bare prøv å forstå konseptet. 355 00:17:15,880 --> 00:17:18,700 Det spiller ingen rolle om du forstår ligningene utmerket godt. 356 00:17:18,700 --> 00:17:22,150 Dette er alle kommer til å være online. 357 00:17:22,150 --> 00:17:25,490 >> Så i utgangspunktet det jeg beregning er Sannsynligheten for at denne sangen er av 358 00:17:25,490 --> 00:17:28,040 Lady Gaga gitt at - 359 00:17:28,040 --> 00:17:30,660 så dette bar betyr gitt at - 360 00:17:30,660 --> 00:17:33,680 Jeg så ordet "baby". Betyr det fornuftig? 361 00:17:33,680 --> 00:17:35,540 Så jeg prøver å beregne at sannsynligheten. 362 00:17:35,540 --> 00:17:38,540 >> Så det er dette teoremet kalt Bayes teorem som sier at 363 00:17:38,540 --> 00:17:43,330 sannsynligheten for et gitt B, er sannsynligheten for B gitt A, ganger 364 00:17:43,330 --> 00:17:47,660 Sannsynligheten for A, over sannsynligheten av B. Dette er en lang ligning. 365 00:17:47,660 --> 00:17:51,970 Men hva du har å forstå fra det er at dette er det jeg ønsker å 366 00:17:51,970 --> 00:17:52,830 beregne, ikke sant? 367 00:17:52,830 --> 00:17:56,570 Så sannsynligheten for at den sangen er av Lady Gaga gitt at jeg så ordet 368 00:17:56,570 --> 00:17:58,230 "Baby". 369 00:17:58,230 --> 00:18:02,960 >> Og hva jeg får nå er det Sannsynligheten for ordet "baby" gitt 370 00:18:02,960 --> 00:18:04,390 at jeg har Lady Gaga. 371 00:18:04,390 --> 00:18:07,220 Og hva er det egentlig? 372 00:18:07,220 --> 00:18:10,500 Hva det betyr er, hva er det Sannsynligheten for å se ordet "baby" 373 00:18:10,500 --> 00:18:12,130 i Gaga tekster? 374 00:18:12,130 --> 00:18:16,240 Hvis jeg ønsker å beregne at i en svært enkel måte, er det bare antall 375 00:18:16,240 --> 00:18:23,640 ganger jeg ser "baby" over det totale antall ord i Gaga tekster, ikke sant? 376 00:18:23,640 --> 00:18:27,600 Hva er frekvensen som jeg ser det ordet i Gagas arbeid? 377 00:18:27,600 --> 00:18:30,530 Fornuftig? 378 00:18:30,530 --> 00:18:33,420 >> Det andre leddet er det Sannsynligheten for Gaga. 379 00:18:33,420 --> 00:18:34,360 Hva betyr det? 380 00:18:34,360 --> 00:18:38,550 Som i utgangspunktet betyr, hva er det sannsynligheten for å klassifisere 381 00:18:38,550 --> 00:18:40,690 noen tekster som Gaga? 382 00:18:40,690 --> 00:18:45,320 Og det er litt rart, men la oss tenke på et eksempel. 383 00:18:45,320 --> 00:18:49,230 Så la oss si at sannsynligheten for å ha "baby" i en sang er den samme 384 00:18:49,230 --> 00:18:51,760 for Gaga og Britney Spears. 385 00:18:51,760 --> 00:18:54,950 Men Britney Spears har to ganger flere sanger enn Lady Gaga. 386 00:18:54,950 --> 00:19:00,570 Så hvis noen gir deg bare tilfeldig tekster av "baby", den første tingen du 387 00:19:00,570 --> 00:19:04,710 se på er, hva er sannsynligheten for å ha "baby" i en Gaga sang, "baby" 388 00:19:04,710 --> 00:19:05,410 i en Britney sang? 389 00:19:05,410 --> 00:19:06,460 Og det er den samme tingen. 390 00:19:06,460 --> 00:19:10,040 >> Så den andre tingen som du vil se er, vel, hva er sannsynligheten for 391 00:19:10,040 --> 00:19:13,770 denne lyrisk av seg selv å være en Gaga lyrisk, og hvilke er sannsynligheten for 392 00:19:13,770 --> 00:19:15,380 å være en Britney lyrisk? 393 00:19:15,380 --> 00:19:18,950 Så siden Britney har så mange flere tekster enn Gaga, ville du sannsynligvis 394 00:19:18,950 --> 00:19:21,470 si, vel, dette er trolig en Britney lyrisk. 395 00:19:21,470 --> 00:19:23,340 Så det er derfor vi har denne kaller akkurat her. 396 00:19:23,340 --> 00:19:24,670 Sannsynlighet for Gaga. 397 00:19:24,670 --> 00:19:26,950 Gir mening? 398 00:19:26,950 --> 00:19:28,660 Gjør det? 399 00:19:28,660 --> 00:19:29,370 OK. 400 00:19:29,370 --> 00:19:33,500 >> Og den siste er bare sannsynligheten av "baby" som ikke 401 00:19:33,500 --> 00:19:34,810 virkelig betyr så mye. 402 00:19:34,810 --> 00:19:39,940 Men det er sannsynligheten for se "baby" på engelsk. 403 00:19:39,940 --> 00:19:42,725 Vi vanligvis ikke bryr seg at mye om dette ordet. 404 00:19:42,725 --> 00:19:44,490 Betyr det fornuftig? 405 00:19:44,490 --> 00:19:48,110 Så sannsynligheten for Gaga er kalt før sannsynlighet 406 00:19:48,110 --> 00:19:49,530 av klassen Gaga. 407 00:19:49,530 --> 00:19:53,840 Fordi det betyr bare at det er den Sannsynligheten for at den klassen - 408 00:19:53,840 --> 00:19:55,520 som er Gaga - 409 00:19:55,520 --> 00:19:59,350 bare i sin alminnelighet, bare uten betingelser. 410 00:19:59,350 --> 00:20:02,560 >> Og så når jeg har sannsynligheten for Gaga gitt "baby", vi kaller det pluss 411 00:20:02,560 --> 00:20:06,160 tårevåte en sannsynlighet fordi det er sannsynligheten for å måtte 412 00:20:06,160 --> 00:20:08,300 Gaga gitt noen bevis. 413 00:20:08,300 --> 00:20:11,050 Så jeg gir deg bevis at jeg så ordet baby og 414 00:20:11,050 --> 00:20:12,690 sangen fornuftig? 415 00:20:12,690 --> 00:20:15,960 416 00:20:15,960 --> 00:20:16,410 OK. 417 00:20:16,410 --> 00:20:22,400 >> Så hvis jeg beregnet at for hver av sangene til Lady Gaga, 418 00:20:22,400 --> 00:20:25,916 hva som ville være - 419 00:20:25,916 --> 00:20:27,730 tilsynelatende, jeg kan ikke flytte denne. 420 00:20:27,730 --> 00:20:31,850 421 00:20:31,850 --> 00:20:36,920 Sannsynligheten for gal vil bli noe sånt, 2 over 24, ganger 1/2, 422 00:20:36,920 --> 00:20:38,260 løpet av 2 over 53. 423 00:20:38,260 --> 00:20:40,640 Det spiller ingen rolle om du vet hva disse tallene kommer fra. 424 00:20:40,640 --> 00:20:44,750 Men det er bare et tall som kommer å være mer enn 0, hva? 425 00:20:44,750 --> 00:20:48,610 >> Og så når jeg gjør Katy Perry, den Sannsynligheten for "baby" gitt Katy er 426 00:20:48,610 --> 00:20:49,830 allerede 0, ikke sant? 427 00:20:49,830 --> 00:20:52,820 Fordi det er ingen "baby" i Katy Perry. 428 00:20:52,820 --> 00:20:56,360 Så da dette blir 0, og Gaga vinner, noe som betyr at Gaga er 429 00:20:56,360 --> 00:20:57,310 sannsynligvis sangeren. 430 00:20:57,310 --> 00:20:58,560 Betyr det fornuftig? 431 00:20:58,560 --> 00:21:00,700 432 00:21:00,700 --> 00:21:01,950 OK. 433 00:21:01,950 --> 00:21:04,160 434 00:21:04,160 --> 00:21:11,750 >> Så hvis jeg ønsker å gjøre dette mer offisielt, Jeg kan faktisk gjøre en modell 435 00:21:11,750 --> 00:21:12,700 for flere ord. 436 00:21:12,700 --> 00:21:14,610 Så la oss si at jeg har noe som "baby, er jeg 437 00:21:14,610 --> 00:21:16,030 i brann, "eller noe. 438 00:21:16,030 --> 00:21:17,760 Så det har flere ord. 439 00:21:17,760 --> 00:21:20,880 Og i dette tilfellet, kan du se at "baby" er i Gaga, 440 00:21:20,880 --> 00:21:21,710 men det er ikke i Katy. 441 00:21:21,710 --> 00:21:24,940 Og "ild" er i Katy, men det er ikke i Gaga, ikke sant? 442 00:21:24,940 --> 00:21:27,200 Så det blir mer komplisert, ikke sant? 443 00:21:27,200 --> 00:21:31,440 Fordi det virker som du nesten har en uavgjort mellom de to. 444 00:21:31,440 --> 00:21:36,980 >> Så hva du har å gjøre er å anta uavhengighet mellom ordene. 445 00:21:36,980 --> 00:21:41,210 Så egentlig hva det betyr er at Jeg bare beregne hva som er den 446 00:21:41,210 --> 00:21:44,330 Sannsynligheten for å se "baby", hva er sannsynligheten av å se "I", og 447 00:21:44,330 --> 00:21:46,670 "Er", og "på" og "brann" tatt hver for seg. 448 00:21:46,670 --> 00:21:48,670 Så jeg multiplisere dem alle. 449 00:21:48,670 --> 00:21:52,420 Og jeg ser hva som er sannsynligheten av å se hele setningen. 450 00:21:52,420 --> 00:21:55,210 Fornuftig? 451 00:21:55,210 --> 00:22:00,270 >> Så i utgangspunktet, hvis jeg har bare ett ord, hva jeg ønsker å finne er arg max, 452 00:22:00,270 --> 00:22:05,385 noe som betyr at, hva som er den klassen som er gi meg den høyeste sannsynligheten? 453 00:22:05,385 --> 00:22:10,010 Så hva er den klassen som gir meg den høyeste sannsynligheten for 454 00:22:10,010 --> 00:22:11,940 sannsynligheten for klassen gitt ord. 455 00:22:11,940 --> 00:22:17,610 Så i dette tilfellet, Gaga gitt "baby". Eller Katy gitt "baby". Fornuftig? 456 00:22:17,610 --> 00:22:21,040 >> Og bare fra Bayes, at likning som jeg viste, 457 00:22:21,040 --> 00:22:24,780 vi oppretter denne fraksjonen. 458 00:22:24,780 --> 00:22:28,750 Det eneste er at du ser at sannsynligheten for ordet gitt 459 00:22:28,750 --> 00:22:31,370 klasse endres avhengig på klassen, ikke sant? 460 00:22:31,370 --> 00:22:34,260 Antallet "baby" s som jeg har i Gaga er forskjellig fra Katy. 461 00:22:34,260 --> 00:22:37,640 Sannsynligheten for klassen også endringer fordi det er bare antall 462 00:22:37,640 --> 00:22:39,740 av sanger hver av dem har. 463 00:22:39,740 --> 00:22:43,980 >> Men sannsynligheten for selve ordet kommer til å være den samme for alle 464 00:22:43,980 --> 00:22:44,740 kunstnere, ikke sant? 465 00:22:44,740 --> 00:22:47,150 Derfor er sannsynligheten for ordet bare, hvilke er sannsynligheten for 466 00:22:47,150 --> 00:22:49,820 ser at ordet i Engelske språket? 467 00:22:49,820 --> 00:22:51,420 Så det er det samme for dem alle. 468 00:22:51,420 --> 00:22:55,790 Så siden dette er konstant, kan vi bare slippe dette og ikke bryr seg om det. 469 00:22:55,790 --> 00:23:00,230 Så dette blir faktisk den ligningen vi leter etter. 470 00:23:00,230 --> 00:23:03,360 >> Og hvis jeg har flere ord, jeg er fortsatt kommer til å ha den før 471 00:23:03,360 --> 00:23:04,610 sannsynlighet her. 472 00:23:04,610 --> 00:23:06,980 Det eneste er at jeg multiplisere sannsynligheten for 473 00:23:06,980 --> 00:23:08,490 alle de andre ordene. 474 00:23:08,490 --> 00:23:10,110 Så jeg multiplisere dem alle. 475 00:23:10,110 --> 00:23:12,610 Fornuftig? 476 00:23:12,610 --> 00:23:18,440 Det ser rart, men i utgangspunktet betyr, beregne den forutgående av klassen, og 477 00:23:18,440 --> 00:23:22,100 deretter multiplisere med sannsynligheten for hvert av ordene blir i den klassen. 478 00:23:22,100 --> 00:23:24,620 479 00:23:24,620 --> 00:23:29,150 >> Og du vet at sannsynligheten for en ordet gitt en klasse kommer til å være den 480 00:23:29,150 --> 00:23:34,520 antall ganger du ser det ordet i den klassen, dividert med antallet 481 00:23:34,520 --> 00:23:37,020 ord du har i det klassen generelt. 482 00:23:37,020 --> 00:23:37,990 Fornuftig? 483 00:23:37,990 --> 00:23:41,680 Det er bare hvordan "baby" var 2 over antall ord som 484 00:23:41,680 --> 00:23:43,020 Jeg hadde i tekstene. 485 00:23:43,020 --> 00:23:45,130 Så bare frekvensen. 486 00:23:45,130 --> 00:23:46,260 >> Men det er én ting. 487 00:23:46,260 --> 00:23:51,250 Husker hvordan jeg var som viser at Sannsynligheten for "baby" å være lyrics 488 00:23:51,250 --> 00:23:56,350 fra Katy Perry var 0 bare fordi Katy Perry hadde ikke "baby" i det hele tatt? 489 00:23:56,350 --> 00:24:04,900 Men det høres litt harde å bare rett og slett si at tekstene ikke kan være fra 490 00:24:04,900 --> 00:24:10,040 en artist bare fordi de ikke har ordet i særdeleshet når som helst. 491 00:24:10,040 --> 00:24:13,330 >> Så du kan bare si, vel, hvis du har ikke dette ordet, kommer jeg til å 492 00:24:13,330 --> 00:24:15,640 gi deg en lavere sannsynlighet, men jeg er bare ikke til å 493 00:24:15,640 --> 00:24:17,420 gi deg 0 med en gang. 494 00:24:17,420 --> 00:24:21,040 Fordi kanskje det var noe sånt, "Brann, brann, brann, brann", som er 495 00:24:21,040 --> 00:24:21,990 helt Katy Perry. 496 00:24:21,990 --> 00:24:26,060 Og så "baby", og det bare fortsetter å 0 med en gang fordi det var en 497 00:24:26,060 --> 00:24:27,250 "Baby". 498 00:24:27,250 --> 00:24:31,440 >> Så i utgangspunktet det vi gjør er noe kalles Laplace utjevning. 499 00:24:31,440 --> 00:24:36,260 Og dette betyr bare at jeg gir viss sannsynlighet selv til ordene 500 00:24:36,260 --> 00:24:37,850 som ikke eksisterer. 501 00:24:37,850 --> 00:24:43,170 Så det jeg gjør er at når jeg er beregning av dette, jeg alltid legge en til 502 00:24:43,170 --> 00:24:44,180 telleren. 503 00:24:44,180 --> 00:24:48,060 Så selv om ordet ikke finnes, i dette tilfellet, hvis dette er 0, er jeg fortsatt 504 00:24:48,060 --> 00:24:51,250 beregne dette som en over totale antall ord. 505 00:24:51,250 --> 00:24:55,060 Ellers får jeg hvor mange ord Jeg har og jeg legger en. 506 00:24:55,060 --> 00:24:58,300 Så jeg teller for begge tilfellene. 507 00:24:58,300 --> 00:25:00,430 Fornuftig? 508 00:25:00,430 --> 00:25:03,060 >> Så nå la oss gjøre noen koding. 509 00:25:03,060 --> 00:25:06,440 Jeg er nødt til å gjøre det ganske fort, men det er bare viktig at du 510 00:25:06,440 --> 00:25:08,600 Gutta forstår begrepene. 511 00:25:08,600 --> 00:25:13,450 Så det vi prøver å gjøre er nøyaktig implementere dette 512 00:25:13,450 --> 00:25:14,330 ting som jeg nettopp sa - 513 00:25:14,330 --> 00:25:19,110 Jeg vil du skal sette tekstene fra Lady Gaga og Katy Perry. 514 00:25:19,110 --> 00:25:22,980 Og programmet kommer til å være i stand til å si om disse nye tekstene er fra Gaga 515 00:25:22,980 --> 00:25:24,170 eller Katy Perry. 516 00:25:24,170 --> 00:25:25,800 Fornuftig? 517 00:25:25,800 --> 00:25:27,530 OK. 518 00:25:27,530 --> 00:25:30,710 >> Så jeg har dette programmet jeg skal å ringe classify.py. 519 00:25:30,710 --> 00:25:31,970 Så dette er Python. 520 00:25:31,970 --> 00:25:34,210 Det er et nytt programmeringsspråk. 521 00:25:34,210 --> 00:25:38,020 Det er svært lik i noen måter til C og PHP. 522 00:25:38,020 --> 00:25:43,180 Det ligner fordi hvis du ønsker å lære Python etter å vite C, er det 523 00:25:43,180 --> 00:25:46,270 egentlig ikke så mye av en utfordring bare fordi Python er mye enklere 524 00:25:46,270 --> 00:25:47,520 enn C, først av alt. 525 00:25:47,520 --> 00:25:49,370 Og mange ting er allerede implementert for deg. 526 00:25:49,370 --> 00:25:56,820 Så hvor som PHP har funksjoner som sortere en liste, eller legge noe 527 00:25:56,820 --> 00:25:58,780 til en matrise, eller blah, blah, blah. 528 00:25:58,780 --> 00:26:00,690 Python har alle av dem også. 529 00:26:00,690 --> 00:26:05,960 >> Så jeg skal bare forklare raskt hvordan vi kunne gjøre klassifiseringen 530 00:26:05,960 --> 00:26:07,860 problem for her. 531 00:26:07,860 --> 00:26:13,230 Så la oss si at i dette tilfellet, har jeg tekster fra Gaga og Katy Perry. 532 00:26:13,230 --> 00:26:21,880 Måten jeg har disse tekstene er at det første ordet av tekstene er 533 00:26:21,880 --> 00:26:25,250 navnet på artisten, og resten er tekstene. 534 00:26:25,250 --> 00:26:29,470 Så la oss si at jeg har denne listen i som den første er tekster av Gaga. 535 00:26:29,470 --> 00:26:31,930 Så her er jeg på rett spor. 536 00:26:31,930 --> 00:26:35,270 Og den neste er Katy, og det har også tekstene. 537 00:26:35,270 --> 00:26:38,040 >> Så dette er hvordan du erklære en variabel i Python. 538 00:26:38,040 --> 00:26:40,200 Du trenger ikke å gi datatypen. 539 00:26:40,200 --> 00:26:43,150 Du bare skrive "tekster" slags liker i PHP. 540 00:26:43,150 --> 00:26:44,890 Fornuftig? 541 00:26:44,890 --> 00:26:47,770 >> Så hva er de tingene som jeg har til beregne å være i stand til å beregne 542 00:26:47,770 --> 00:26:49,360 sannsynligheter? 543 00:26:49,360 --> 00:26:55,110 Jeg må beregne "priors" av hver av de forskjellige 544 00:26:55,110 --> 00:26:56,710 klasser som jeg har. 545 00:26:56,710 --> 00:27:06,680 Jeg må beregne "posteriors," eller ganske mye sannsynlighetene for 546 00:27:06,680 --> 00:27:12,150 hver av de forskjellige ord som Jeg kan ha for hver artist. 547 00:27:12,150 --> 00:27:17,210 Så i løpet av Gaga, for eksempel, kommer jeg til å ha en liste over hvor mange ganger jeg ser 548 00:27:17,210 --> 00:27:19,250 hvert av ordene. 549 00:27:19,250 --> 00:27:20,760 Fornuftig? 550 00:27:20,760 --> 00:27:25,370 >> Og til slutt, jeg bare kommer til å ha en liste som heter "ord" som bare kommer 551 00:27:25,370 --> 00:27:29,780 å ha hvor mange ord jeg har for hver artist. 552 00:27:29,780 --> 00:27:33,760 Så for Gaga, for eksempel når jeg ser til tekstene, jeg hadde, tror jeg, 24 553 00:27:33,760 --> 00:27:34,750 ord totalt. 554 00:27:34,750 --> 00:27:38,970 Så denne listen er bare nødt til Gaga 24, og Katy annet nummer. 555 00:27:38,970 --> 00:27:40,130 Fornuftig? 556 00:27:40,130 --> 00:27:40,560 OK. 557 00:27:40,560 --> 00:27:42,530 >> Så nå, faktisk, la oss går til koding. 558 00:27:42,530 --> 00:27:45,270 Så i Python, kan du faktisk returnere en haug med forskjellig 559 00:27:45,270 --> 00:27:46,630 ting fra en funksjon. 560 00:27:46,630 --> 00:27:50,810 Så jeg kommer til å lage denne funksjonen kalt "betinget", som kommer 561 00:27:50,810 --> 00:27:53,890 å returnere alle disse tingene, det "priors," de "sannsynligheter", og den 562 00:27:53,890 --> 00:28:05,690 "ord." Så "betinget", og det er kommer til å kalle inn "tekster." 563 00:28:05,690 --> 00:28:11,510 >> Så nå vil jeg at du faktisk skrive denne funksjonen. 564 00:28:11,510 --> 00:28:17,750 Så den måten at jeg kan skrive dette Funksjonen er jeg bare definert dette 565 00:28:17,750 --> 00:28:20,620 fungere med "def." Så jeg gjorde "def betinget ", og det tar 566 00:28:20,620 --> 00:28:28,700 "Tekster." Og hva dette kommer til å gjøre er, først av alt, jeg har mine priors 567 00:28:28,700 --> 00:28:31,030 at jeg ønsker å beregne. 568 00:28:31,030 --> 00:28:34,330 >> Så den måten at jeg kan gjøre dette på er å opprette en ordbok i Python, som 569 00:28:34,330 --> 00:28:37,320 er ganske mye det samme som en hash bordet, eller det er som en iterativ 570 00:28:37,320 --> 00:28:40,480 array i PHP. 571 00:28:40,480 --> 00:28:44,150 Dette er hvordan jeg erklære en ordbok. 572 00:28:44,150 --> 00:28:53,580 Og innerst inne hva dette betyr er at priors av gal er 0,5, for eksempel dersom 573 00:28:53,580 --> 00:28:57,200 50% av tekstene er fra Gaga, 50% er fra Katy. 574 00:28:57,200 --> 00:28:58,450 Fornuftig? 575 00:28:58,450 --> 00:29:00,680 576 00:29:00,680 --> 00:29:03,680 Så jeg må finne ut hvordan å beregne priors. 577 00:29:03,680 --> 00:29:07,120 >> De neste de som jeg har å gjøre, også, er sannsynlighetene og ordene. 578 00:29:07,120 --> 00:29:17,100 Så sannsynligheten for Gaga er listen av alle sannsynligheter som jeg 579 00:29:17,100 --> 00:29:19,160 har for hvert av ordene på gal. 580 00:29:19,160 --> 00:29:23,880 Så hvis jeg går til sannsynlighetene for Gaga "Baby", for eksempel, det vil gi meg 581 00:29:23,880 --> 00:29:28,750 noe sånt som 2 over 24 i dette tilfellet. 582 00:29:28,750 --> 00:29:30,070 Fornuftig? 583 00:29:30,070 --> 00:29:36,120 Så jeg går til "sannsynligheter," gå til "Gaga" bøtte som har en liste over alle 584 00:29:36,120 --> 00:29:40,550 de Gaga ord, så går jeg til "baby" og jeg ser sannsynligheten. 585 00:29:40,550 --> 00:29:45,940 >> Og endelig har jeg dette "Ord" ordbok. 586 00:29:45,940 --> 00:29:53,620 Så her, "sannsynligheter." Og så "ord." Så hvis jeg gjør "ord", "Gaga", 587 00:29:53,620 --> 00:29:58,330 hva kommer til å skje er at det er kommer til å gi meg 24, sier at jeg 588 00:29:58,330 --> 00:30:01,990 har 24 ord i tekster fra Gaga. 589 00:30:01,990 --> 00:30:04,110 Gir mening? 590 00:30:04,110 --> 00:30:07,070 Så her, "ord" er lik dah-dah-dah. 591 00:30:07,070 --> 00:30:07,620 OK 592 00:30:07,620 --> 00:30:12,210 >> Så hva jeg skal gjøre er jeg kommer til å iterere over hver av tekstene, så 593 00:30:12,210 --> 00:30:14,490 hver av de strengene som Jeg har på listen. 594 00:30:14,490 --> 00:30:18,040 Og jeg kommer til å beregne disse tingene for hver av kandidater. 595 00:30:18,040 --> 00:30:19,950 Gir mening? 596 00:30:19,950 --> 00:30:21,700 Så jeg må gjøre en for-løkke. 597 00:30:21,700 --> 00:30:26,300 >> Så i Python hva jeg kan gjøre er "for linjen i tekstene. "Det samme som en 598 00:30:26,300 --> 00:30:28,000 "For hver" statement i PHP. 599 00:30:28,000 --> 00:30:33,420 Husk hvordan hvis det var PHP jeg kunne si "for hver tekster som 600 00:30:33,420 --> 00:30:35,220 linje. "Gir mening? 601 00:30:35,220 --> 00:30:38,900 Så jeg tar hver av linjene, i dette tilfelle denne strengen og den neste 602 00:30:38,900 --> 00:30:44,540 strengen så for hver av linjene hva jeg er kommer til å gjøre er først, jeg kommer til å 603 00:30:44,540 --> 00:30:49,150 splitte denne linjen inn i en liste over søkeord adskilt med mellomrom. 604 00:30:49,150 --> 00:30:53,730 >> Så kule ting om Python er at du kunne bare Google som "hvordan kan jeg 605 00:30:53,730 --> 00:30:58,220 splitte en streng i ord? "Og det er kommer til å fortelle deg hvordan du gjør det. 606 00:30:58,220 --> 00:31:04,890 Og måten å gjøre det, det er bare "linje = Line.split () "og det er i utgangspunktet 607 00:31:04,890 --> 00:31:08,640 kommer til å gi deg en liste med hvert av ordene her. 608 00:31:08,640 --> 00:31:09,620 Gir mening? 609 00:31:09,620 --> 00:31:15,870 Så nå at jeg gjorde det jeg vil vite som er vokalist i den sangen. 610 00:31:15,870 --> 00:31:20,130 Og for å gjøre det jeg må bare få første element i matrisen, ikke sant? 611 00:31:20,130 --> 00:31:26,390 Så jeg kan bare si at jeg "singer = Linjen (0) "Gir mening? 612 00:31:26,390 --> 00:31:32,010 >> Og hva jeg trenger å gjøre da er først av alt, kommer jeg til å oppdatere hvor mange 613 00:31:32,010 --> 00:31:36,130 ord jeg har under "Gaga." så jeg er bare kommer til å regne ut hvor mange ord jeg 614 00:31:36,130 --> 00:31:38,690 har i denne listen, ikke sant? 615 00:31:38,690 --> 00:31:41,910 Fordi dette er hvor mange ord jeg har i tekstene, og jeg skal bare 616 00:31:41,910 --> 00:31:44,120 legge den til "Gaga" array. 617 00:31:44,120 --> 00:31:47,090 Betyr det fornuftig? 618 00:31:47,090 --> 00:31:49,010 Ikke fokuser for mye på syntaksen. 619 00:31:49,010 --> 00:31:50,430 Tenk mer om begrepene. 620 00:31:50,430 --> 00:31:52,400 Det er den viktigste delen. 621 00:31:52,400 --> 00:31:52,720 OK. 622 00:31:52,720 --> 00:32:00,260 >> Så hva kan jeg gjøre det er hvis "Gaga" er allerede i den listen, så "hvis sangeren i 623 00:32:00,260 --> 00:32:03,190 Ordene "som betyr at jeg allerede løs av Gaga. 624 00:32:03,190 --> 00:32:06,640 Jeg vil bare legge til ekstra ord til det. 625 00:32:06,640 --> 00:32:15,810 Så det jeg gjør er "ord (sanger) + = Len (linje) - 1 ". 626 00:32:15,810 --> 00:32:18,250 Og så kan jeg bare gjøre det Lengden av linjen. 627 00:32:18,250 --> 00:32:21,860 Så hvor mange elementer I har i matrisen. 628 00:32:21,860 --> 00:32:27,060 Og jeg må gjøre minus en bare fordi det første element i matrisen er like 629 00:32:27,060 --> 00:32:29,180 en sanger og de er ikke tekstene. 630 00:32:29,180 --> 00:32:31,420 Gir mening? 631 00:32:31,420 --> 00:32:32,780 OK. 632 00:32:32,780 --> 00:32:35,820 >> "Else", det betyr at jeg vil faktisk sett Gaga i listen. 633 00:32:35,820 --> 00:32:45,990 Så jeg bare gjøre "ord (sanger) = Len (linje) - 1, "beklager. 634 00:32:45,990 --> 00:32:49,200 Så den eneste forskjellen mellom de to linjer er at denne ene, gjør det ikke 635 00:32:49,200 --> 00:32:51,080 eksisterer ennå, så jeg er bare initialisere den. 636 00:32:51,080 --> 00:32:53,820 Dette en jeg faktisk å legge. 637 00:32:53,820 --> 00:32:55,570 OK. 638 00:32:55,570 --> 00:32:59,480 Så dette var å legge til ord. 639 00:32:59,480 --> 00:33:03,040 >> Nå ønsker jeg å legge til priors. 640 00:33:03,040 --> 00:33:05,480 Så hvordan kan jeg beregne priors? 641 00:33:05,480 --> 00:33:11,580 De priors kan beregnes etter hvor mange ganger. 642 00:33:11,580 --> 00:33:15,340 Så hvor mange ganger du ser at sangeren blant alle de sangerne som dere 643 00:33:15,340 --> 00:33:16,380 ha, ikke sant? 644 00:33:16,380 --> 00:33:18,810 Så for Gaga og Katy Perry, i dette tilfellet, ser jeg Gaga 645 00:33:18,810 --> 00:33:20,570 gang, Katy Perry gang. 646 00:33:20,570 --> 00:33:23,320 >> Så i utgangspunktet priors for Gaga og for Katy Perry ville 647 00:33:23,320 --> 00:33:24,390 bare være én, ikke sant? 648 00:33:24,390 --> 00:33:26,500 Du bare hvor mange ganger Jeg ser kunstneren. 649 00:33:26,500 --> 00:33:28,740 Så dette er veldig lett å beregne. 650 00:33:28,740 --> 00:33:34,100 Jeg kan bare noe lignende som liker "hvis sangeren i priors, "Jeg skal bare 651 00:33:34,100 --> 00:33:38,970 å legge en til deres priors boksen. 652 00:33:38,970 --> 00:33:51,000 Så, "priors (synger)" + = 1 "og deretter" annet " Jeg kommer til å gjøre "priors (sanger) 653 00:33:51,000 --> 00:33:55,000 = 1. "Gir mening? 654 00:33:55,000 --> 00:34:00,080 >> Så hvis det ikke eksisterer jeg bare sette som en, ellers vil jeg bare legge til en. 655 00:34:00,080 --> 00:34:11,280 OK, så nå er alt som jeg har igjen å gjøre er også legge til hver av de ordene til 656 00:34:11,280 --> 00:34:12,290 sannsynligheter. 657 00:34:12,290 --> 00:34:14,889 Så jeg må telle hvor mange ganger Jeg ser hvert av ordene. 658 00:34:14,889 --> 00:34:18,780 Så jeg må bare gjøre en annen for loop i linjen. 659 00:34:18,780 --> 00:34:25,190 >> Så første jeg skal gjøre er sjekke om sangeren allerede har en 660 00:34:25,190 --> 00:34:26,969 sannsynlig array. 661 00:34:26,969 --> 00:34:31,739 Så jeg sjekker om sangeren ikke har en sannsynlig array, jeg er bare 662 00:34:31,739 --> 00:34:34,480 kommer til å initialisere en for dem. 663 00:34:34,480 --> 00:34:36,400 Det er ikke engang en matrise, sorry, det er en ordbok. 664 00:34:36,400 --> 00:34:43,080 Så sannsynligheten for sangeren kommer å være en åpen ordbok, så jeg er 665 00:34:43,080 --> 00:34:45,830 bare å initialisere en ordbok for det. 666 00:34:45,830 --> 00:34:46,820 OK? 667 00:34:46,820 --> 00:34:58,330 >> Og nå kan jeg faktisk gjøre en for loop for å beregne hver av ordene ' 668 00:34:58,330 --> 00:35:00,604 sannsynligheter. 669 00:35:00,604 --> 00:35:01,540 OK. 670 00:35:01,540 --> 00:35:04,160 Så hva jeg kan gjøre, er en for-løkke. 671 00:35:04,160 --> 00:35:06,590 Så jeg bare kommer til å reagere over matrisen. 672 00:35:06,590 --> 00:35:15,320 Så den måten at jeg kan gjøre det i Python er "for i in range." Fra 1 673 00:35:15,320 --> 00:35:19,200 fordi jeg ønsker å starte i andre element fordi den første er den 674 00:35:19,200 --> 00:35:20,260 sangeren navn. 675 00:35:20,260 --> 00:35:24,990 Så fra en opp til Lengden av linjen. 676 00:35:24,990 --> 00:35:29,760 Og når jeg spenner det faktisk gå fra som her fra 1 til len av 677 00:35:29,760 --> 00:35:30,740 linjen minus en. 678 00:35:30,740 --> 00:35:33,810 Så det allerede gjør den tingen å gjøre n minus en for matriser som er meget 679 00:35:33,810 --> 00:35:35,500 praktisk. 680 00:35:35,500 --> 00:35:37,850 Gir mening? 681 00:35:37,850 --> 00:35:42,770 >> Så for hver av disse, hva jeg kommer til å gjøre er, akkurat som i den andre, 682 00:35:42,770 --> 00:35:50,320 Jeg kommer til å sjekke om ordet i denne stilling i linje allerede er i 683 00:35:50,320 --> 00:35:51,570 sannsynligheter. 684 00:35:51,570 --> 00:35:53,400 685 00:35:53,400 --> 00:35:57,260 Og da som jeg sa her, sannsynligheter ord, som i jeg satt 686 00:35:57,260 --> 00:35:58,400 "sannsynligheter (sanger)". 687 00:35:58,400 --> 00:35:59,390 Så navnet på sangeren. 688 00:35:59,390 --> 00:36:03,450 Så hvis det er allerede i "Probabilit (sanger)", betyr det at jeg 689 00:36:03,450 --> 00:36:11,960 ønsker å legge en til det, så jeg kommer til å gjøre "sannsynligheter (sanger)", og den 690 00:36:11,960 --> 00:36:14,100 Ordet kalles "-linjen (i)". 691 00:36:14,100 --> 00:36:22,630 Jeg kommer til å legge en og "annet" Jeg er bare kommer til å initialisere den til en. 692 00:36:22,630 --> 00:36:23,880 «Line (i)". 693 00:36:23,880 --> 00:36:26,920 694 00:36:26,920 --> 00:36:28,420 Gir mening? 695 00:36:28,420 --> 00:36:30,180 >> Så, I beregnes alle matriser. 696 00:36:30,180 --> 00:36:36,580 Så, nå er alt som jeg trenger å gjøre for dette er bare "tilbake priors, 697 00:36:36,580 --> 00:36:43,230 sannsynligheter og ord. "La oss se om det er noen, OK. 698 00:36:43,230 --> 00:36:45,690 Det synes alt virker så langt. 699 00:36:45,690 --> 00:36:46,900 Så, gjør det fornuftig? 700 00:36:46,900 --> 00:36:47,750 I noen måte? 701 00:36:47,750 --> 00:36:49,280 OK. 702 00:36:49,280 --> 00:36:51,980 Så nå har jeg alle sannsynligheter. 703 00:36:51,980 --> 00:36:55,100 Så nå er det eneste jeg har igjen er bare for å ha den tingen som 704 00:36:55,100 --> 00:36:58,650 beregner produktet av alle sannsynligheter når jeg får tekstene. 705 00:36:58,650 --> 00:37:06,270 >> Så la oss si at jeg ønsker å nå kaller denne funksjonen "klassifisere ()" og 706 00:37:06,270 --> 00:37:08,880 ting tar den funksjonen er bare et argument. 707 00:37:08,880 --> 00:37:13,170 La oss si "Baby, jeg er on fire", og det er kommer til å finne ut hva som er den 708 00:37:13,170 --> 00:37:14,490 Sannsynligheten for at dette er Gaga? 709 00:37:14,490 --> 00:37:16,405 Hva er sannsynligheten at dette er Katie? 710 00:37:16,405 --> 00:37:19,690 Høres bra ut? 711 00:37:19,690 --> 00:37:25,750 Så jeg er bare nødt til å opprette en ny funksjon kalt "klassifisere ()" og 712 00:37:25,750 --> 00:37:29,180 det kommer til å ta litt tekster også. 713 00:37:29,180 --> 00:37:31,790 714 00:37:31,790 --> 00:37:36,160 Og dessuten tekstene jeg også må sende priors, den 715 00:37:36,160 --> 00:37:37,700 sannsynligheter og ordene. 716 00:37:37,700 --> 00:37:44,000 Så jeg kommer til å sende tekster, priors, sannsynligheter, ord. 717 00:37:44,000 --> 00:37:51,840 >> Så dette tar tekster, priors, sannsynligheter, ord. 718 00:37:51,840 --> 00:37:53,530 Så, hva gjør den? 719 00:37:53,530 --> 00:37:57,180 Det i utgangspunktet kommer til å gå gjennom alle mulige kandidater som du 720 00:37:57,180 --> 00:37:58,510 har som sanger. 721 00:37:58,510 --> 00:37:59,425 Og hvor er de kandidatene? 722 00:37:59,425 --> 00:38:01,020 De er i priors, ikke sant? 723 00:38:01,020 --> 00:38:02,710 Så jeg har alle de der. 724 00:38:02,710 --> 00:38:07,870 Så jeg kommer til å ha en ordbok av alle mulige kandidater. 725 00:38:07,870 --> 00:38:14,220 Og deretter for hver kandidat i priors, så det betyr at det kommer til å 726 00:38:14,220 --> 00:38:17,740 være Gaga, Katie hvis jeg hadde mer det ville være mer. 727 00:38:17,740 --> 00:38:20,410 Jeg kommer til å begynne å beregne denne sannsynligheten. 728 00:38:20,410 --> 00:38:28,310 Sannsynligheten som vi så i PowerPoint er de tidligere ganger 729 00:38:28,310 --> 00:38:30,800 Produktet fra hver av de andre sannsynligheter. 730 00:38:30,800 --> 00:38:32,520 >> Så jeg kan gjøre det samme her. 731 00:38:32,520 --> 00:38:36,330 Jeg kan bare gjøre sannsynligheten er utgangspunktet bare den før. 732 00:38:36,330 --> 00:38:40,340 Så priors av kandidaten. 733 00:38:40,340 --> 00:38:40,870 Høyre? 734 00:38:40,870 --> 00:38:45,360 Og nå har jeg til å iterere over alle ord som jeg har i tekstene for å være 735 00:38:45,360 --> 00:38:48,820 legge sannsynligheten for hver av dem, OK? 736 00:38:48,820 --> 00:38:57,900 Så, "for ord i tekstene" hva jeg skal å gjøre er, hvis ordet er i 737 00:38:57,900 --> 00:39:01,640 "sannsynligheter (kandidat)", som betyr at det er et ord som den 738 00:39:01,640 --> 00:39:03,640 Kandidaten har i sine tekster - 739 00:39:03,640 --> 00:39:05,940 for eksempel, "baby" for Gaga - 740 00:39:05,940 --> 00:39:11,710 hva jeg skal gjøre er at sannsynlighet kommer til å bli multiplisert 741 00:39:11,710 --> 00:39:22,420 med en pluss sannsynlighetene for kandidaten for det ordet. 742 00:39:22,420 --> 00:39:25,710 Og det heter "ord". 743 00:39:25,710 --> 00:39:32,440 Dette delt på antall ord at jeg har for at kandidaten. 744 00:39:32,440 --> 00:39:37,450 Det totale antall ord som jeg har for sangeren som jeg ser på. 745 00:39:37,450 --> 00:39:40,290 >> "Else". det betyr at det er et nytt ord så det ville være som for eksempel 746 00:39:40,290 --> 00:39:41,860 "Ild" for Lady Gaga. 747 00:39:41,860 --> 00:39:45,760 Så jeg vil bare gjøre en i løpet "Ord (kandidat)". 748 00:39:45,760 --> 00:39:47,710 Så jeg ønsker ikke å sette dette begrepet her. 749 00:39:47,710 --> 00:39:50,010 >> Så det kommer til å være utgangspunktet klippe og lime denne. 750 00:39:50,010 --> 00:39:54,380 751 00:39:54,380 --> 00:39:56,000 Men jeg kommer til å slette denne delen. 752 00:39:56,000 --> 00:39:57,610 Så det er bare kommer til å være en over det. 753 00:39:57,610 --> 00:40:00,900 754 00:40:00,900 --> 00:40:02,150 Høres bra ut? 755 00:40:02,150 --> 00:40:03,980 756 00:40:03,980 --> 00:40:09,700 Og nå på slutten, jeg bare kommer til å Skriv navnet på kandidaten og 757 00:40:09,700 --> 00:40:15,750 sannsynligheten for at du har av ha S på tekstene sine. 758 00:40:15,750 --> 00:40:16,200 Gir mening? 759 00:40:16,200 --> 00:40:18,390 Og jeg faktisk ikke engang trenger denne ordboken. 760 00:40:18,390 --> 00:40:19,510 Gir mening? 761 00:40:19,510 --> 00:40:21,810 >> Så, la oss se om dette faktisk fungerer. 762 00:40:21,810 --> 00:40:24,880 Så hvis jeg kjører denne, fungerte det ikke. 763 00:40:24,880 --> 00:40:26,130 Vent ett sekund. 764 00:40:26,130 --> 00:40:28,870 765 00:40:28,870 --> 00:40:31,720 "Words (kandidat)", "ord (kandidat)", det er 766 00:40:31,720 --> 00:40:33,750 navnet på matrisen. 767 00:40:33,750 --> 00:40:41,435 OK Så, det står at det er noen feil for kandidat i priors. 768 00:40:41,435 --> 00:40:46,300 769 00:40:46,300 --> 00:40:48,760 La meg bare slappe litt. 770 00:40:48,760 --> 00:40:50,360 OK. 771 00:40:50,360 --> 00:40:51,305 La oss prøve. 772 00:40:51,305 --> 00:40:51,720 OK. 773 00:40:51,720 --> 00:40:58,710 >> Så det gir Katy Perry har dette Sannsynligheten for dette ganger 10 til 774 00:40:58,710 --> 00:41:02,200 minus 7, og Gaga har dette ganger 10 i minus seks. 775 00:41:02,200 --> 00:41:05,610 Så du ser det viser at Gaga har en høyere sannsynlighet. 776 00:41:05,610 --> 00:41:09,260 Så "Baby, jeg er på Fire" er trolig en Gaga sang. 777 00:41:09,260 --> 00:41:10,580 Gir mening? 778 00:41:10,580 --> 00:41:12,030 Så dette er hva vi gjorde. 779 00:41:12,030 --> 00:41:16,010 >> Denne koden kommer til å bli lagt ut på nettet, så dere kan sjekke det ut. 780 00:41:16,010 --> 00:41:20,720 Kanskje bruke noen av det for hvis du ønsker å gjøre et prosjekt eller noe lignende. 781 00:41:20,720 --> 00:41:22,150 OK. 782 00:41:22,150 --> 00:41:25,930 Dette var bare for å vise hva beregnings 783 00:41:25,930 --> 00:41:27,230 lingvistikk koden ser slik ut. 784 00:41:27,230 --> 00:41:33,040 Men la oss nå gå til mer høyt nivå ting. 785 00:41:33,040 --> 00:41:33,340 OK. 786 00:41:33,340 --> 00:41:35,150 >> Så de andre problemene jeg snakket om - 787 00:41:35,150 --> 00:41:37,550 segmentering problem er den første av dem. 788 00:41:37,550 --> 00:41:40,820 Så du har her japansk. 789 00:41:40,820 --> 00:41:43,420 Og så ser du at det er ingen mellomrom. 790 00:41:43,420 --> 00:41:49,110 Så dette er i utgangspunktet betyr at det er toppen av stolen, riktig? 791 00:41:49,110 --> 00:41:50,550 Du snakker japansk? 792 00:41:50,550 --> 00:41:52,840 Det er toppen av stolen, ikke sant? 793 00:41:52,840 --> 00:41:54,480 >> STUDENT: Jeg vet ikke hva kanji der borte er. 794 00:41:54,480 --> 00:41:57,010 >> LUCAS FREITAS: Det er [SNAKKE JAPANSK] 795 00:41:57,010 --> 00:41:57,950 OK. 796 00:41:57,950 --> 00:42:00,960 Så det betyr i utgangspunktet styreleder i toppen. 797 00:42:00,960 --> 00:42:03,620 Så hvis du måtte sette inn et mellomrom det ville være her. 798 00:42:03,620 --> 00:42:05,970 Og da har du [? Ueda-san. ?] 799 00:42:05,970 --> 00:42:09,040 Som i utgangspunktet betyr Mr. Ueda. 800 00:42:09,040 --> 00:42:13,180 Og du ser at "Ueda" og du har en plass og deretter "san." Så du ser at 801 00:42:13,180 --> 00:42:15,470 her du "Ue" er som seg selv. 802 00:42:15,470 --> 00:42:17,750 Og her har det en tegn ved siden av den. 803 00:42:17,750 --> 00:42:21,720 >> Så det er ikke som i disse språkene tegn som betyr et ord det slik at du 804 00:42:21,720 --> 00:42:23,980 bare sette en masse mellomrom. 805 00:42:23,980 --> 00:42:25,500 Tegn i forhold til hverandre. 806 00:42:25,500 --> 00:42:28,680 Og de kan være sammen som to, tre, en. 807 00:42:28,680 --> 00:42:34,520 Så du faktisk nødt til å skape noen form av veien for å sette disse områder. 808 00:42:34,520 --> 00:42:38,850 >> Og denne saken er at når du får data fra de asiatiske språk, 809 00:42:38,850 --> 00:42:40,580 alt kommer unsegmented. 810 00:42:40,580 --> 00:42:45,940 Fordi ingen som skriver japansk eller kinesisk skriver med mellomrom. 811 00:42:45,940 --> 00:42:48,200 Når du skriver kinesisk, Japansk du bare skrive alt 812 00:42:48,200 --> 00:42:48,710 uten mellomrom. 813 00:42:48,710 --> 00:42:52,060 Det trenger ikke engang være fornuftig å sette mellomrom. 814 00:42:52,060 --> 00:42:57,960 Så når du får data fra, noen Østasiatisk språk, hvis du ønsker å 815 00:42:57,960 --> 00:43:00,760 faktisk gjøre noe med det du må segment først. 816 00:43:00,760 --> 00:43:05,130 >> Tenke på å gjøre det eksempel på tekstene uten mellomrom. 817 00:43:05,130 --> 00:43:07,950 Så de eneste tekster som du har vil være setninger, ikke sant? 818 00:43:07,950 --> 00:43:09,470 Atskilt av punktum. 819 00:43:09,470 --> 00:43:13,930 Men deretter å ha akkurat den setningen vil egentlig ikke hjelpe på å gi informasjon 820 00:43:13,930 --> 00:43:17,760 av hvem disse tekstene er av. 821 00:43:17,760 --> 00:43:18,120 Høyre? 822 00:43:18,120 --> 00:43:20,010 Så du bør setter plasser først. 823 00:43:20,010 --> 00:43:21,990 Så hvordan kan du gjøre det? 824 00:43:21,990 --> 00:43:24,920 >> Så da kommer tanken på et språk modell som er noe virkelig 825 00:43:24,920 --> 00:43:26,870 viktig for beregnings lingvistikk. 826 00:43:26,870 --> 00:43:32,790 Så en språkmodell er i utgangspunktet en tabell av sannsynlighetene for at show 827 00:43:32,790 --> 00:43:36,260 først av alt hva er sannsynligheten av å ha et ord i et språk? 828 00:43:36,260 --> 00:43:39,590 Så viser hvor hyppig et ord er. 829 00:43:39,590 --> 00:43:43,130 Og da også viser forholdet mellom ordene i en setning. 830 00:43:43,130 --> 00:43:51,500 >> Så hovedideen er, hvis en fremmed kom til deg og sa en setning til 831 00:43:51,500 --> 00:43:55,600 du, hva er sannsynligheten for at, for eksempel, "dette er min søster [? GTF"?] 832 00:43:55,600 --> 00:43:57,480 var dommen at personen sa? 833 00:43:57,480 --> 00:44:00,380 Så tydeligvis noen setninger er mer vanlig enn andre. 834 00:44:00,380 --> 00:44:04,450 For eksempel, "god morgen", eller "god natt, "eller" hei der, "er mye mer 835 00:44:04,450 --> 00:44:08,260 vanlig enn de fleste setninger at vi har en engelsk. 836 00:44:08,260 --> 00:44:11,060 Så hvorfor er disse setningene hyppigere? 837 00:44:11,060 --> 00:44:14,060 >> Først av alt, det er fordi du har ord som er mer hyppig. 838 00:44:14,060 --> 00:44:20,180 Så, for eksempel hvis du sier, er hunden stor, og hunden er gigantisk, du 839 00:44:20,180 --> 00:44:23,880 vanligvis sannsynligvis høre hunden er stor oftere fordi "store" er mer 840 00:44:23,880 --> 00:44:27,260 hyppig i engelsk enn "gigantisk". Derfor, er en av de 841 00:44:27,260 --> 00:44:30,100 ting er ordet frekvens. 842 00:44:30,100 --> 00:44:34,490 >> Den andre tingen som er virkelig viktig er nettopp den 843 00:44:34,490 --> 00:44:35,490 rekkefølgen av ordene. 844 00:44:35,490 --> 00:44:39,500 Så, er det vanlig å si "katten er inne i boksen. ", men du vanligvis ikke 845 00:44:39,500 --> 00:44:44,250 se i "The boksen inne er katten." så du se at det er en viss betydning 846 00:44:44,250 --> 00:44:46,030 i rekkefølgen av ordene. 847 00:44:46,030 --> 00:44:50,160 Du kan ikke bare si at de to setninger har samme sannsynlighet 848 00:44:50,160 --> 00:44:53,010 bare fordi de har de samme ordene. 849 00:44:53,010 --> 00:44:55,550 Du faktisk har til å bry seg om orden også. 850 00:44:55,550 --> 00:44:57,650 Fornuftig? 851 00:44:57,650 --> 00:44:59,490 >> Så hva gjør vi? 852 00:44:59,490 --> 00:45:01,550 Så hva jeg kan prøve å få deg? 853 00:45:01,550 --> 00:45:04,400 Jeg prøver å få deg hva vi ringe n-gram-modeller. 854 00:45:04,400 --> 00:45:09,095 Så n-gram-modeller i utgangspunktet anta at for hvert ord som 855 00:45:09,095 --> 00:45:10,960 du har i en setning. 856 00:45:10,960 --> 00:45:15,020 Det er sannsynligheten for å ha det Ordet det avhenger ikke bare av den 857 00:45:15,020 --> 00:45:18,395 hyppigheten av ordet i språket, men også på de ordene som 858 00:45:18,395 --> 00:45:19,860 er rundt det. 859 00:45:19,860 --> 00:45:25,810 >> Så for eksempel, som regel når du ser noe som på eller i det du er 860 00:45:25,810 --> 00:45:28,040 sannsynligvis kommer til å se en substantiv etter det, ikke sant? 861 00:45:28,040 --> 00:45:31,750 Fordi når du har en preposisjon vanligvis tar det et substantiv etter den. 862 00:45:31,750 --> 00:45:35,540 Eller hvis du har et verb som er transitive du vanligvis går til 863 00:45:35,540 --> 00:45:36,630 har et substantiv frase. 864 00:45:36,630 --> 00:45:38,780 Så det kommer til å ha et substantiv et sted rundt det. 865 00:45:38,780 --> 00:45:44,950 >> Så, i utgangspunktet, hva den gjør er at det anser sannsynligheten for å måtte 866 00:45:44,950 --> 00:45:47,960 ord ved siden av hverandre, når du beregne 867 00:45:47,960 --> 00:45:49,050 Sannsynligheten for en setning. 868 00:45:49,050 --> 00:45:50,960 Og det er det et språk Modellen er i utgangspunktet. 869 00:45:50,960 --> 00:45:54,620 Bare si hva som er sannsynligheten ved å ha en spesifikk 870 00:45:54,620 --> 00:45:57,120 setning i et språk? 871 00:45:57,120 --> 00:45:59,110 Så hvorfor er det nyttig, i utgangspunktet? 872 00:45:59,110 --> 00:46:02,390 Og først av alt hva som er en n-gram-modell, da? 873 00:46:02,390 --> 00:46:08,850 >> Så en n-gram betyr at hvert ord avhenger 874 00:46:08,850 --> 00:46:12,700 neste N minus 1 ord. 875 00:46:12,700 --> 00:46:18,150 Så, i utgangspunktet, betyr det at hvis jeg ser, for eksempel ved CS50 TF når 876 00:46:18,150 --> 00:46:21,500 Jeg beregne sannsynligheten for setningen, vil du bli som "den 877 00:46:21,500 --> 00:46:25,280 Sannsynligheten for at ordet "av" ganger sannsynligheten for å ha " 878 00:46:25,280 --> 00:46:31,720 CS50 "ganger sannsynligheten for å ha "Den CS50 TF." Så, i utgangspunktet, jeg teller 879 00:46:31,720 --> 00:46:35,720 alle mulige måter å strekke det. 880 00:46:35,720 --> 00:46:41,870 >> Og da vanligvis når du gjør dette, som i et prosjekt, sette deg N å være 881 00:46:41,870 --> 00:46:42,600 en lav verdi. 882 00:46:42,600 --> 00:46:45,930 Så, har vanligvis bigrammer blir produsert eller trigrams. 883 00:46:45,930 --> 00:46:51,090 Slik at du bare telle to ord, en gruppe på to ord eller tre ord 884 00:46:51,090 --> 00:46:52,620 bare for ytelsesproblemer. 885 00:46:52,620 --> 00:46:56,395 Og også fordi kanskje hvis du har noe sånt som "The CS50 TF." Når du 886 00:46:56,395 --> 00:47:00,510 har "TF," det er svært viktig at "CS50" er ved siden av det, ikke sant? 887 00:47:00,510 --> 00:47:04,050 Disse to tingene er som regel ved siden av hverandre. 888 00:47:04,050 --> 00:47:06,410 >> Hvis du tenker på "TF", er det sannsynligvis kommer til å ha det 889 00:47:06,410 --> 00:47:07,890 klasse er det TF'ing for. 890 00:47:07,890 --> 00:47:11,330 Også "the" er veldig viktig for CS50 TF. 891 00:47:11,330 --> 00:47:14,570 Men hvis du har noe sånt som "The CS50 TF gikk til klassen og ga sin 892 00:47:14,570 --> 00:47:20,060 elevene noen godteri. "" Candy "og" den " har ingen sammenheng egentlig, ikke sant? 893 00:47:20,060 --> 00:47:23,670 De er så fjernt fra hverandre som det spiller egentlig ingen rolle hva 894 00:47:23,670 --> 00:47:25,050 ordene du har. 895 00:47:25,050 --> 00:47:31,210 >> Så ved å gjøre en bigram eller en trigram, det betyr bare at du begrenser 896 00:47:31,210 --> 00:47:33,430 deg noen ord som er rundt. 897 00:47:33,430 --> 00:47:35,810 Fornuftig? 898 00:47:35,810 --> 00:47:40,630 Så når du ønsker å gjøre segmentering, utgangspunktet, hva du ønsker å gjøre er å se 899 00:47:40,630 --> 00:47:44,850 hva er alle mulige måter som du kan segmentere setningen. 900 00:47:44,850 --> 00:47:49,090 >> Slik at du ser hva som er den sannsynligheten for at hver av disse setningene 901 00:47:49,090 --> 00:47:50,880 eksisterende i språket? 902 00:47:50,880 --> 00:47:53,410 Så hva du gjør er som, vel, la meg prøve å sette en plass her. 903 00:47:53,410 --> 00:47:55,570 Så du sette en plass det og du ser hva som er den 904 00:47:55,570 --> 00:47:57,590 Sannsynligheten for at setningen? 905 00:47:57,590 --> 00:48:00,240 Da er du liksom: OK, kanskje det var ikke så bra. 906 00:48:00,240 --> 00:48:03,420 Så jeg satte en plass der og en plass der, og du beregne 907 00:48:03,420 --> 00:48:06,240 sannsynlighet nå, og du ser at det er en høyere sannsynlighet. 908 00:48:06,240 --> 00:48:12,160 >> Så dette er en algoritme kalt TANGO segmenteringsalgoritme, noe som er 909 00:48:12,160 --> 00:48:14,990 faktisk noe som ville være veldig kult for et prosjekt, som 910 00:48:14,990 --> 00:48:20,860 utgangspunktet tar unsegmented tekst som kan være japansk eller kinesisk eller kanskje 911 00:48:20,860 --> 00:48:26,080 Engelsk uten mellomrom og prøver å sette mellomrom mellom ord og det gjør 912 00:48:26,080 --> 00:48:29,120 som ved hjelp av en språk modell og prøve for å se hva som er den høyeste 913 00:48:29,120 --> 00:48:31,270 sannsynlighet du kan få. 914 00:48:31,270 --> 00:48:32,230 OK. 915 00:48:32,230 --> 00:48:33,800 Så dette er segmentering. 916 00:48:33,800 --> 00:48:35,450 >> Nå syntaks. 917 00:48:35,450 --> 00:48:40,940 Så blir syntaks som brukes for så mange ting akkurat nå. 918 00:48:40,940 --> 00:48:44,880 Så for Graf søk, for Siri for stort sett alle slags naturlig 919 00:48:44,880 --> 00:48:46,490 språkbehandling du har. 920 00:48:46,490 --> 00:48:49,140 Så hva er det viktige ting om syntaks? 921 00:48:49,140 --> 00:48:52,390 Så, setninger generelt har hva vi kaller bestanddeler. 922 00:48:52,390 --> 00:48:57,080 Hvilke er typen som grupper av ord som har en funksjon i setningen. 923 00:48:57,080 --> 00:49:02,220 Og de kan ikke egentlig være fra hverandre. 924 00:49:02,220 --> 00:49:07,380 >> Så, hvis jeg sier, for eksempel, "Lauren elsker Milo. "Jeg vet at" Lauren "er en 925 00:49:07,380 --> 00:49:10,180 konstituerende og deretter "elsker Milo "er også en annen. 926 00:49:10,180 --> 00:49:16,860 Fordi du ikke kan si som "Lauren Milo favoritter "for å ha samme betydning. 927 00:49:16,860 --> 00:49:18,020 Det kommer ikke til å ha samme betydning. 928 00:49:18,020 --> 00:49:22,500 Eller jeg kan ikke si at "Milo Lauren elsker. "Ikke alt har samme 929 00:49:22,500 --> 00:49:25,890 som betyr å gjøre det. 930 00:49:25,890 --> 00:49:31,940 >> Så de to mer viktige ting om syntaks er de leksikalske typene som er 931 00:49:31,940 --> 00:49:35,390 utgangspunktet den funksjonen du har for ord av seg selv. 932 00:49:35,390 --> 00:49:39,180 Så du må vite at "Lauren" og "Milo" er substantiver. 933 00:49:39,180 --> 00:49:41,040 "Love" er et verb. 934 00:49:41,040 --> 00:49:45,660 Og den andre viktigste er at de er Phrasal typer. 935 00:49:45,660 --> 00:49:48,990 Så du vet at "elsker Milo" er faktisk en verbal setning. 936 00:49:48,990 --> 00:49:52,390 Så når jeg sier "Lauren," Jeg vet at Lauren gjør noe. 937 00:49:52,390 --> 00:49:53,620 Hva gjør hun? 938 00:49:53,620 --> 00:49:54,570 Hun er kjærlig Milo. 939 00:49:54,570 --> 00:49:56,440 Så det er en hele greia. 940 00:49:56,440 --> 00:50:01,640 Men komponentene er et substantiv og et verb. 941 00:50:01,640 --> 00:50:04,210 Men sammen, de gjør et verb setning. 942 00:50:04,210 --> 00:50:08,680 >> Så, hva kan vi egentlig gjøre med datalingvistikk? 943 00:50:08,680 --> 00:50:13,810 Så, hvis jeg har noe for eksempel "venner av Allison." Jeg ser om jeg bare 944 00:50:13,810 --> 00:50:17,440 gjorde et syntaktisk tre jeg ville vite at "Par" er et substantiv setning er det en 945 00:50:17,440 --> 00:50:21,480 substantiv og deretter "av Allison" er en prepositional setning der "av" er 946 00:50:21,480 --> 00:50:24,810 et forslag og "Allison" er et substantiv. 947 00:50:24,810 --> 00:50:30,910 Hva jeg kunne gjøre er å lære min datamaskin at når jeg har et substantiv frase ett og 948 00:50:30,910 --> 00:50:33,080 deretter en prepositional setning. 949 00:50:33,080 --> 00:50:39,020 Så i dette tilfellet, "venner" og deretter "av Milo "Jeg vet at dette betyr at 950 00:50:39,020 --> 00:50:43,110 NP2, den andre en, eier NP1. 951 00:50:43,110 --> 00:50:47,680 >> Så jeg kan skape en slags relasjon, eller annen form for funksjonen for den. 952 00:50:47,680 --> 00:50:52,370 Så når jeg ser denne strukturen, som samsvarer nøyaktig med "venner av 953 00:50:52,370 --> 00:50:56,030 Allison, "Jeg vet at Allison eier venner. 954 00:50:56,030 --> 00:50:58,830 Så venner er noe at Allison har. 955 00:50:58,830 --> 00:50:59,610 Gir mening? 956 00:50:59,610 --> 00:51:01,770 Så dette er egentlig hva Graf Søk gjør. 957 00:51:01,770 --> 00:51:04,360 Det skaper bare regler for en rekke ting. 958 00:51:04,360 --> 00:51:08,190 Så "venner av Allison", "mine venner som bor i Cambridge, "" vennene mine 959 00:51:08,190 --> 00:51:12,970 som går til Harvard. "Det skaper regler for alle disse tingene. 960 00:51:12,970 --> 00:51:14,930 >> Nå maskinoversettelse. 961 00:51:14,930 --> 00:51:18,850 Så, er maskinoversettelse også noe statistisk. 962 00:51:18,850 --> 00:51:21,340 Og faktisk hvis du blir involvert i datalingvistikk, mye 963 00:51:21,340 --> 00:51:23,580 ting kommer til å bli statistikk. 964 00:51:23,580 --> 00:51:26,670 Så som jeg gjorde eksempelet med mye av sannsynlighetene for at jeg var 965 00:51:26,670 --> 00:51:30,540 beregning, og da får du til dette svært lite antall som er den endelige 966 00:51:30,540 --> 00:51:33,180 sannsynlighet, og det er det gir deg svaret. 967 00:51:33,180 --> 00:51:37,540 Maskinoversettelse bruker også en statistisk modell. 968 00:51:37,540 --> 00:51:44,790 Og hvis du ønsker å tenke på maskin oversettelse på enklest mulig 969 00:51:44,790 --> 00:51:48,970 Forresten, hva du kan tenke er bare sette ord for ord, ikke sant? 970 00:51:48,970 --> 00:51:52,150 >> Når du lære et språk for første gang, det er vanligvis det 971 00:51:52,150 --> 00:51:52,910 du gjør, ikke sant? 972 00:51:52,910 --> 00:51:57,050 Hvis du vil kan oversette en setning i språket ditt til språket 973 00:51:57,050 --> 00:52:00,060 du lærer, vanligvis først, du sette hvert av ordene 974 00:52:00,060 --> 00:52:03,180 individuelt, og deretter prøver å sette ord på plass. 975 00:52:03,180 --> 00:52:07,100 >> Så hvis jeg ønsket å oversette dette, [Snakker portugisisk] 976 00:52:07,100 --> 00:52:10,430 som betyr "den hvite katten rømte." Hvis jeg ønsket å oversette det fra 977 00:52:10,430 --> 00:52:13,650 Portugisisk til engelsk, hva jeg kan gjøre er, først, jeg bare 978 00:52:13,650 --> 00:52:14,800 sette ord for ord. 979 00:52:14,800 --> 00:52:20,570 Så "o" er "," "gato", "katt" "Branco", "hvit", og deretter "fugio" er 980 00:52:20,570 --> 00:52:21,650 "Gikk unna." 981 00:52:21,650 --> 00:52:26,130 >> Så da har jeg alle ordene her, men de er ikke i orden. 982 00:52:26,130 --> 00:52:29,590 Det er som "katten hvit rømte" som er ungrammatical. 983 00:52:29,590 --> 00:52:34,490 Så, da jeg kan ha et andre steg, som kommer til å være å finne den ideelle 984 00:52:34,490 --> 00:52:36,610 stilling for hvert av ordene. 985 00:52:36,610 --> 00:52:40,240 Så jeg vet at jeg faktisk ønsker å ha "Hvit katt" i stedet for "katt hvit." Så 986 00:52:40,240 --> 00:52:46,050 hva jeg kan gjøre er, den mest naive metoden ville være å lage hele 987 00:52:46,050 --> 00:52:49,720 mulige permutasjoner av ord, av posisjoner. 988 00:52:49,720 --> 00:52:53,300 Og deretter se hvilken som har høyest sannsynlighet ifølge 989 00:52:53,300 --> 00:52:54,970 til min språkmodell. 990 00:52:54,970 --> 00:52:58,390 Og så når jeg finner den som har størst sannsynlighet den, som er 991 00:52:58,390 --> 00:53:01,910 sannsynligvis "den hvite katten rømte," det er min oversettelse. 992 00:53:01,910 --> 00:53:06,710 >> Og dette er en enkel måte å forklare hvor mange maskinoversettelse 993 00:53:06,710 --> 00:53:07,910 algoritmer fungerer. 994 00:53:07,910 --> 00:53:08,920 Betyr det fornuftig? 995 00:53:08,920 --> 00:53:12,735 Dette er også noe virkelig spennende at dere kan kanskje lete etter en 996 00:53:12,735 --> 00:53:13,901 endelige prosjektet, ja? 997 00:53:13,901 --> 00:53:15,549 >> STUDENT: Vel, du sa det var naiv måte, så hva er 998 00:53:15,549 --> 00:53:17,200 den ikke-naive måte? 999 00:53:17,200 --> 00:53:18,400 >> LUCAS FREITAS: Den ikke-naiv måte? 1000 00:53:18,400 --> 00:53:19,050 OK. 1001 00:53:19,050 --> 00:53:22,860 Så det første som er dårlig om denne metoden er at jeg nettopp oversatt 1002 00:53:22,860 --> 00:53:24,330 ord, ord for ord. 1003 00:53:24,330 --> 00:53:30,570 Men noen ganger må du ord som kan ha flere oversettelser. 1004 00:53:30,570 --> 00:53:32,210 Jeg kommer til å prøve å tenke av noe. 1005 00:53:32,210 --> 00:53:37,270 For eksempel, "manga" på portugisisk boks enten være "mangle" eller "sleeve". Så 1006 00:53:37,270 --> 00:53:40,450 når du prøver å oversette ordet av ord, kan det være å gi deg 1007 00:53:40,450 --> 00:53:42,050 noe som gir ingen mening. 1008 00:53:42,050 --> 00:53:45,770 >> Så du faktisk ønsker å du ser i det hele tatt de mulige oversettelser av 1009 00:53:45,770 --> 00:53:49,840 ord og se, først av alt, hva som er den rekkefølge. 1010 00:53:49,840 --> 00:53:52,000 Vi snakket om permutating de tingene? 1011 00:53:52,000 --> 00:53:54,150 For å se alle de mulige bestillinger og velge den med høyest 1012 00:53:54,150 --> 00:53:54,990 sannsynlighet? 1013 00:53:54,990 --> 00:53:57,860 Du kan også velge alle mulige oversettelser for hvert 1014 00:53:57,860 --> 00:54:00,510 ord og deretter se - 1015 00:54:00,510 --> 00:54:01,950 kombinert med permutasjoner - 1016 00:54:01,950 --> 00:54:03,710 som man har den høyeste sannsynlighet. 1017 00:54:03,710 --> 00:54:08,590 >> Plus, kan du også se på ikke bare ord, men setninger. 1018 00:54:08,590 --> 00:54:11,700 slik at du kan analysere forholdet mellom ordene og deretter få en 1019 00:54:11,700 --> 00:54:13,210 bedre oversettelse. 1020 00:54:13,210 --> 00:54:16,690 Også noe annet, så dette semesteret Jeg er faktisk driver forskning innen 1021 00:54:16,690 --> 00:54:19,430 Kinesisk-engelsk maskinoversettelse, så oversette fra 1022 00:54:19,430 --> 00:54:20,940 Kinesisk til engelsk. 1023 00:54:20,940 --> 00:54:26,760 >> Og noe vi gjør er, foruten å bruke en statistisk modell, som er bare 1024 00:54:26,760 --> 00:54:30,570 se sannsynlighetene for å se noen posisjon i en setning, er jeg 1025 00:54:30,570 --> 00:54:35,360 faktisk også legge noen syntaks til min modell, sier, oh, hvis jeg ser denne typen 1026 00:54:35,360 --> 00:54:39,420 av konstruksjonen, er dette hva jeg vil å endre det til når jeg oversette. 1027 00:54:39,420 --> 00:54:43,880 Så du kan også legge til noen form for element i syntaks for å gjøre 1028 00:54:43,880 --> 00:54:47,970 Mer effektiv og mer presis. 1029 00:54:47,970 --> 00:54:48,550 OK. 1030 00:54:48,550 --> 00:54:51,010 >> Så hvordan kan du komme i gang, hvis du vil ha å gjøre noe i beregnings 1031 00:54:51,010 --> 00:54:51,980 lingvistikk? 1032 00:54:51,980 --> 00:54:54,560 >> Først velger du et prosjekt som involverer språk. 1033 00:54:54,560 --> 00:54:56,310 Så, det er så mange der ute. 1034 00:54:56,310 --> 00:54:58,420 Det er så mange ting du kan gjøre. 1035 00:54:58,420 --> 00:55:00,510 Og så kan tenke på en modell som du kan bruke. 1036 00:55:00,510 --> 00:55:04,710 Vanligvis betyr det at å tenke på forutsetninger, som liker, oh, da jeg var 1037 00:55:04,710 --> 00:55:05,770 som tenker på tekstene. 1038 00:55:05,770 --> 00:55:09,510 Jeg var som, vel, hvis jeg ønsker å finne ut en som skrev dette, jeg sannsynligvis vil 1039 00:55:09,510 --> 00:55:15,400 å se på ordene personen som brukes og se hvem som bruker det ordet veldig ofte. 1040 00:55:15,400 --> 00:55:18,470 Så prøv å gjøre antagelser og prøv å tenke på modeller. 1041 00:55:18,470 --> 00:55:21,395 Og da kan du også søke på nettet for hva slags problem du har, 1042 00:55:21,395 --> 00:55:24,260 og det kommer til å foreslå til dere modeller som kanskje 1043 00:55:24,260 --> 00:55:26,560 modellert at ting godt. 1044 00:55:26,560 --> 00:55:29,080 >> Og også du kan alltid email meg. 1045 00:55:29,080 --> 00:55:31,140 me@lfreitas.com. 1046 00:55:31,140 --> 00:55:34,940 Og jeg kan bare svare på dine spørsmål. 1047 00:55:34,940 --> 00:55:38,600 Vi kan til og med kan møte opp så jeg kan gi forslag på måter 1048 00:55:38,600 --> 00:55:41,490 gjennomføre prosjektet. 1049 00:55:41,490 --> 00:55:45,610 Og jeg mener hvis du blir involvert med datalingvistikk, det kommer 1050 00:55:45,610 --> 00:55:46,790 å være stor. 1051 00:55:46,790 --> 00:55:48,370 Du kommer til å se det er så mye potensiale. 1052 00:55:48,370 --> 00:55:52,060 Og industrien ønsker å ansette du så dårlig på grunn av det. 1053 00:55:52,060 --> 00:55:54,720 Så jeg håper dere likte dette. 1054 00:55:54,720 --> 00:55:57,030 Hvis dere har noen spørsmål, du kan spørre meg etter dette. 1055 00:55:57,030 --> 00:55:58,280 Men takk. 1056 00:55:58,280 --> 00:56:00,150