1 00:00:00,000 --> 00:00:08,364 2 00:00:08,364 --> 00:00:08,870 >> LUCAS FREITAS: Hej. 3 00:00:08,870 --> 00:00:09,980 Velkommen alle. 4 00:00:09,980 --> 00:00:11,216 Mit navn er Lucas Freitas. 5 00:00:11,216 --> 00:00:15,220 Jeg er en junior på [uhørligt] studere datalogi med fokus på 6 00:00:15,220 --> 00:00:16,410 datalingvistik. 7 00:00:16,410 --> 00:00:19,310 Så mit sekundære er på sprog og sproglige teori. 8 00:00:19,310 --> 00:00:21,870 Jeg er virkelig spændt på at lære jer lidt om området. 9 00:00:21,870 --> 00:00:24,300 Det er et meget spændende område for at studere. 10 00:00:24,300 --> 00:00:27,260 Også med en masse potentiale for fremtiden. 11 00:00:27,260 --> 00:00:30,160 Så jeg er virkelig begejstret, at du fyre overvejer projekter i 12 00:00:30,160 --> 00:00:31,160 datalingvistik. 13 00:00:31,160 --> 00:00:35,460 Og jeg vil være mere end glade for at rådgive nogen af ​​jer, hvis du beslutter at 14 00:00:35,460 --> 00:00:37,090 forfølge en af ​​dem. 15 00:00:37,090 --> 00:00:40,010 >> Så først og fremmest hvad er beregningsmæssige lingvistik? 16 00:00:40,010 --> 00:00:44,630 Så datalingvistik er skæringspunktet mellem lingvistik og 17 00:00:44,630 --> 00:00:46,390 datalogi. 18 00:00:46,390 --> 00:00:47,415 Så hvad er lingvistik? 19 00:00:47,415 --> 00:00:48,490 Hvad er datalogi? 20 00:00:48,490 --> 00:00:51,580 Godt fra lingvistik, hvad vi tager er de sprog. 21 00:00:51,580 --> 00:00:54,960 Så lingvistik er faktisk studiet af naturligt sprog i almindelighed. 22 00:00:54,960 --> 00:00:58,330 Så naturligt sprog - vi taler om sprog, at vi faktisk bruger til at 23 00:00:58,330 --> 00:00:59,770 kommunikere med hinanden. 24 00:00:59,770 --> 00:01:02,200 Så vi ikke ligefrem taler om C eller Java. 25 00:01:02,200 --> 00:01:05,900 Vi taler mere om engelsk og Kinesisk og andre sprog, som vi 26 00:01:05,900 --> 00:01:07,780 bruger til at kommunikere med hinanden. 27 00:01:07,780 --> 00:01:12,470 >> Den udfordrende ting om det er, at lige nu har vi næsten 7.000 28 00:01:12,470 --> 00:01:14,260 sprog i verden. 29 00:01:14,260 --> 00:01:19,520 Så der er en ganske høj sort sprog, som vi kan studere. 30 00:01:19,520 --> 00:01:22,600 Og så tror du, at det er nok meget svært at gøre, for eksempel, 31 00:01:22,600 --> 00:01:26,960 oversættelse fra et sprog til anden, i betragtning af, at du har 32 00:01:26,960 --> 00:01:28,240 næsten 7.000 af dem. 33 00:01:28,240 --> 00:01:31,450 Så hvis du tænker på at gøre oversættelse fra et sprog til det andet, du 34 00:01:31,450 --> 00:01:35,840 har næsten mere end en million forskellige kombinationer, som du kan 35 00:01:35,840 --> 00:01:37,330 har fra sprog til sprog. 36 00:01:37,330 --> 00:01:40,820 Så det er virkelig udfordrende at gøre nogle form for eksempel oversættelse for 37 00:01:40,820 --> 00:01:43,540 hver enkelt sprog. 38 00:01:43,540 --> 00:01:47,120 >> Så lingvistik behandler med syntaks, semantik, pragmatik. 39 00:01:47,120 --> 00:01:49,550 Du fyre har ikke ligefrem brug at vide, hvad der er de er. 40 00:01:49,550 --> 00:01:55,090 Men meget interessant ting er, at som en indfødt, når du lærer 41 00:01:55,090 --> 00:01:59,010 sprog som barn, du faktisk lære alle disse ting - syntaks semantik 42 00:01:59,010 --> 00:02:00,500 og pragmatik - 43 00:02:00,500 --> 00:02:01,430 ved dig selv. 44 00:02:01,430 --> 00:02:04,820 Og ingen har til at lære dig syntaks for dig til at forstå, hvordan sætninger er 45 00:02:04,820 --> 00:02:05,290 struktureret. 46 00:02:05,290 --> 00:02:07,980 Så det er virkelig interessant, fordi det er noget, der kommer meget 47 00:02:07,980 --> 00:02:10,389 intuitivt. 48 00:02:10,389 --> 00:02:13,190 >> Og hvad tager du fra datalogi? 49 00:02:13,190 --> 00:02:16,700 Nå, det vigtigste, at vi har i datalogi er først 50 00:02:16,700 --> 00:02:19,340 alt, kunstig intelligens og machine learning. 51 00:02:19,340 --> 00:02:22,610 Så, hvad vi forsøger at gøre Datalingvistik er underviser 52 00:02:22,610 --> 00:02:26,990 din computer, hvordan man gør noget med sproget. 53 00:02:26,990 --> 00:02:28,630 >> Så for eksempel i maskinen translation. 54 00:02:28,630 --> 00:02:32,490 Jeg forsøger at lære min computer, hvordan at vide, hvordan overgangen fra én 55 00:02:32,490 --> 00:02:33,310 sprog til det andet. 56 00:02:33,310 --> 00:02:35,790 Så dybest set gerne undervisning en computer to sprog. 57 00:02:35,790 --> 00:02:38,870 Hvis jeg gør naturlig sprogbehandling, som det er tilfældet for eksempel 58 00:02:38,870 --> 00:02:41,810 Facebooks Graph Søg, du underviser din computer hvordan man kan forstå 59 00:02:41,810 --> 00:02:42,730 forespørgsler godt. 60 00:02:42,730 --> 00:02:48,130 >> Så hvis du siger "de billeder af min venner. "Facebook ikke behandler det 61 00:02:48,130 --> 00:02:51,130 som en hel streng, der har bare en masse ord. 62 00:02:51,130 --> 00:02:56,020 Det faktisk forstår relationen mellem "fotos" og "mine venner" og 63 00:02:56,020 --> 00:02:59,620 forstår, at "billeder" er egenskab af "mine venner." 64 00:02:59,620 --> 00:03:02,350 >> Så det er en del af, for eksempel, naturlig sprogbehandling. 65 00:03:02,350 --> 00:03:04,790 Det er at forsøge at forstå, hvad er forholdet mellem 66 00:03:04,790 --> 00:03:07,520 ordene i en sætning. 67 00:03:07,520 --> 00:03:11,170 Og det store spørgsmål er, kan du lære en computer hvordan man taler 68 00:03:11,170 --> 00:03:12,650 et sprog i almindelighed? 69 00:03:12,650 --> 00:03:17,810 Hvilket er et meget interessant spørgsmål til mener, som hvis måske i fremtiden, 70 00:03:17,810 --> 00:03:19,930 du kommer til at være i stand til at tale med din mobiltelefon. 71 00:03:19,930 --> 00:03:23,290 Lidt ligesom, hvad vi gør med Siri, men noget mere ligesom, kan du faktisk 72 00:03:23,290 --> 00:03:25,690 sige, hvad du ønsker, og telefonen kommer til at forstå alt. 73 00:03:25,690 --> 00:03:28,350 Og det kan have opfølgende spørgsmål og holde taler. 74 00:03:28,350 --> 00:03:30,880 Det er noget virkelig spændende, efter min mening. 75 00:03:30,880 --> 00:03:33,070 >> Så noget om naturlige sprog. 76 00:03:33,070 --> 00:03:36,220 Noget virkelig interessant om naturlige sprog er, og det er 77 00:03:36,220 --> 00:03:38,470 kredit til mit lingvistik professor, Maria Polinsky. 78 00:03:38,470 --> 00:03:40,830 Hun giver et eksempel, og jeg tror det er virkelig interessant. 79 00:03:40,830 --> 00:03:47,060 Fordi vi lærer sprog, når vi er født og derefter vores indfødte 80 00:03:47,060 --> 00:03:49,170 sprog slags vokser på os. 81 00:03:49,170 --> 00:03:52,570 >> Og dybest set du lære sprog fra minimal input, right? 82 00:03:52,570 --> 00:03:56,700 Du er bare at få input fra din forældre, hvad dit sprog lyder 83 00:03:56,700 --> 00:03:58,770 vil, og du bare lære det. 84 00:03:58,770 --> 00:04:02,240 Så det er interessant, fordi hvis man ser på de sætninger, for eksempel. 85 00:04:02,240 --> 00:04:06,980 Du ser, "Maria lægger på en frakke hver gang hun forlader huset. " 86 00:04:06,980 --> 00:04:10,650 >> I dette tilfælde er det muligt at få ordet "hun" refererer til Mary, right? 87 00:04:10,650 --> 00:04:13,500 Du kan sige "Mary lægger på en frakke hver gang Mary forlader 88 00:04:13,500 --> 00:04:14,960 hus. ", så det er fint. 89 00:04:14,960 --> 00:04:19,370 Men så hvis man ser på sætningen "Hun lægger på en frakke, hver gang Mary 90 00:04:19,370 --> 00:04:22,850 forlader huset. "Du ved, det er umuligt at sige, at "hun" er 91 00:04:22,850 --> 00:04:24,260 med henvisning til Mary. 92 00:04:24,260 --> 00:04:27,070 >> Der er ingen måde at sige, at "Mary sætter på en frakke, hver gang Mary blade 93 00:04:27,070 --> 00:04:30,790 i huset. "Så det er interessant, fordi dette er den slags intuition 94 00:04:30,790 --> 00:04:32,890 at hver indfødt har. 95 00:04:32,890 --> 00:04:36,370 Og ingen blev undervist, at dette er den måde, at syntaksen virker. 96 00:04:36,370 --> 00:04:41,930 Og at du kun kan få denne "hun" med henvisning til Maria i denne første sag, 97 00:04:41,930 --> 00:04:44,260 og faktisk i denne anden også, men ikke i denne ene. 98 00:04:44,260 --> 00:04:46,500 Men alle slags får til det 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 ikke kender alle de regler 101 00:04:53,280 --> 00:04:55,575 på dit sprog du slags forstår hvordan sproget fungerer. 102 00:04:55,575 --> 00:04:59,020 103 00:04:59,020 --> 00:05:01,530 >> Så det interessante ting om naturlige sprog er, at du ikke behøver at 104 00:05:01,530 --> 00:05:06,970 kender nogen syntaks til at vide, hvis en sætning er grammatiske eller grammatisk ukorrekt for 105 00:05:06,970 --> 00:05:08,810 de fleste tilfælde. 106 00:05:08,810 --> 00:05:13,220 Hvilket gør du tror, ​​at måske, hvad sker er, at gennem dit liv, du 107 00:05:13,220 --> 00:05:17,410 bare bliver mere og mere sætninger fortalt til dig. 108 00:05:17,410 --> 00:05:19,800 Og så skal du holde lagrer alle de sætninger. 109 00:05:19,800 --> 00:05:24,230 Og så når nogen fortæller dig noget, man hører denne sætning og 110 00:05:24,230 --> 00:05:27,040 du ser på dit ordforråd sætninger og se, om 111 00:05:27,040 --> 00:05:28,270 denne sætning er der. 112 00:05:28,270 --> 00:05:29,830 Og hvis det er der du sige, det er grammatisk. 113 00:05:29,830 --> 00:05:31,740 Hvis det ikke er, du siger, det er grammatisk ukorrekt. 114 00:05:31,740 --> 00:05:35,150 >> Så i dette tilfælde, ville du sige, åh, så du har en enorm liste over alle 115 00:05:35,150 --> 00:05:36,140 mulige sætninger. 116 00:05:36,140 --> 00:05:38,240 Og så når du hører en sætning, du vide, hvis det er grammatisk eller 117 00:05:38,240 --> 00:05:39,450 ikke baseret på denne. 118 00:05:39,450 --> 00:05:42,360 Sagen er, at hvis man ser på en sætning, for eksempel "The 119 00:05:42,360 --> 00:05:47,540 fem-ledet CS50 TFs kogt blinde blæksprutte med en DAPA krus. "Det er 120 00:05:47,540 --> 00:05:49,630 bestemt ikke en sætning da du ved tidligere. 121 00:05:49,630 --> 00:05:52,380 Men på samme tid, du ved, det er temmelig meget grammatisk, right? 122 00:05:52,380 --> 00:05:55,570 Der findes ingen grammatiske fejl og du kan sige, at 123 00:05:55,570 --> 00:05:57,020 Det er en mulig straf. 124 00:05:57,020 --> 00:06:01,300 >> Så det gør os tænke, at faktisk måde, at vi lærer sproget er ikke kun 125 00:06:01,300 --> 00:06:07,090 ved at have en enorm database af mulige ord eller sætninger, men flere af 126 00:06:07,090 --> 00:06:11,490 forstå forholdet mellem ord i disse sætninger. 127 00:06:11,490 --> 00:06:14,570 Giver det mening? 128 00:06:14,570 --> 00:06:19,370 Ja, så spørgsmålet er, kan computere lære sprog? 129 00:06:19,370 --> 00:06:21,490 Kan vi lære sproget til computere? 130 00:06:21,490 --> 00:06:24,230 >> Så lad os tænke på forskellen mellem en indfødt af et sprog 131 00:06:24,230 --> 00:06:25,460 og en computer. 132 00:06:25,460 --> 00:06:27,340 Så hvad sker der taler? 133 00:06:27,340 --> 00:06:30,430 Nå, den indfødt lærer en sprog fra eksponering for det. 134 00:06:30,430 --> 00:06:34,200 Sendes sine tidlige barndom. 135 00:06:34,200 --> 00:06:38,570 Så dybest set, du bare have en baby, og du holder taler til det, og det 136 00:06:38,570 --> 00:06:40,540 bare lærer at tale sproget, right? 137 00:06:40,540 --> 00:06:42,660 Så er du dybest set giver input til barnet. 138 00:06:42,660 --> 00:06:45,200 Ja, så kan du argumentere for, at en computer kan gøre de samme ting, right? 139 00:06:45,200 --> 00:06:49,510 Du kan bare give sprog som input til computeren. 140 00:06:49,510 --> 00:06:53,410 >> Som for eksempel en masse filer der har bøger på engelsk. 141 00:06:53,410 --> 00:06:56,190 Måske er det en måde at du kunne muligvis lære et 142 00:06:56,190 --> 00:06:57,850 computer engelsk, ikke sandt? 143 00:06:57,850 --> 00:07:01,000 Og i virkeligheden, hvis du tænker over det, det tager dig måske et par 144 00:07:01,000 --> 00:07:02,680 dage til at læse en bog. 145 00:07:02,680 --> 00:07:05,760 For en computer, det tager et sekund for at se på alle de ord i en bog. 146 00:07:05,760 --> 00:07:10,810 Så du kan tro, at måske netop dette argument af input fra omkring dig, 147 00:07:10,810 --> 00:07:15,440 det er ikke nok at sige, at det er noget, som kun mennesker kan gøre. 148 00:07:15,440 --> 00:07:17,680 Du kan tænke computere også kan få input. 149 00:07:17,680 --> 00:07:21,170 >> Den anden ting er, at modersmål også have en hjerne, der har 150 00:07:21,170 --> 00:07:23,870 sprogindlæring kapacitet. 151 00:07:23,870 --> 00:07:27,020 Men hvis du tænker over det, en hjerne er en solid ting. 152 00:07:27,020 --> 00:07:30,450 Når du bliver født, er det allerede - 153 00:07:30,450 --> 00:07:31,320 dette er din hjerne. 154 00:07:31,320 --> 00:07:34,660 Og som du vokser op, kan du få mere input af sprog og måske næringsstoffer 155 00:07:34,660 --> 00:07:35,960 og andre ting. 156 00:07:35,960 --> 00:07:38,170 Men temmelig meget din hjerne er en solid ting. 157 00:07:38,170 --> 00:07:41,290 >> Så du kan sige, ja, måske du kan bygge en computer, der har en flok 158 00:07:41,290 --> 00:07:45,890 funktioner og metoder, der bare efterligner sprogindlæring kapacitet. 159 00:07:45,890 --> 00:07:49,630 Så i den forstand kan man sige, ja, jeg kan have en computer, der har alt det 160 00:07:49,630 --> 00:07:52,270 ting jeg har brug for at lære sprog. 161 00:07:52,270 --> 00:07:56,200 Og den sidste ting er, at en indfødt højttaler lærer fra trial and error. 162 00:07:56,200 --> 00:08:01,090 Så dybest set en anden vigtig ting i sprogindlæring er, at du slags 163 00:08:01,090 --> 00:08:05,340 af lære ting ved at gøre generaliseringer af det, du hører. 164 00:08:05,340 --> 00:08:10,280 >> Så som du vokser op du lærer at nogle ord er mere som substantiver, 165 00:08:10,280 --> 00:08:11,820 nogle andre dem er adjektiver. 166 00:08:11,820 --> 00:08:14,250 Og du behøver ikke at have nogen kendskab til lingvistik 167 00:08:14,250 --> 00:08:15,040 at forstå, at. 168 00:08:15,040 --> 00:08:18,560 Men du skal bare vide, at der er nogle ord er placeret i en del af 169 00:08:18,560 --> 00:08:22,570 sætning og nogle andre i andre dele af sætningen. 170 00:08:22,570 --> 00:08:26,110 >> Og at når du gør noget, der er som en sætning, der ikke er korrekt - 171 00:08:26,110 --> 00:08:28,770 måske på grund af en over generalisering for eksempel. 172 00:08:28,770 --> 00:08:32,210 Måske når du vokser op, du bemærker at flertalsformen er normalt 173 00:08:32,210 --> 00:08:35,809 dannet ved at sætte en S på slutningen af ​​ordet. 174 00:08:35,809 --> 00:08:40,042 Og så skal du prøve at gøre flertalsformen af "hjorte" som "hjorte" eller "tand" som 175 00:08:40,042 --> 00:08:44,780 "tooths." Så dine forældre eller nogen korrigerer dig og siger, nej, det 176 00:08:44,780 --> 00:08:49,020 flertalsformen af ​​"hjorte" er "hjorte", og den flertalsformen af ​​"tand" er "tænder". Og så 177 00:08:49,020 --> 00:08:50,060 du lære disse ting. 178 00:08:50,060 --> 00:08:51,520 Så du lærer fra trial and error. 179 00:08:51,520 --> 00:08:53,100 >> Men du kan også gøre det med en computer. 180 00:08:53,100 --> 00:08:55,310 Du kan få noget, der hedder forstærkning læring. 181 00:08:55,310 --> 00:08:58,560 Som er dybest set som at give en computer en belønning, når det gør 182 00:08:58,560 --> 00:08:59,410 noget korrekt. 183 00:08:59,410 --> 00:09:04,710 Og giver det modsatte af en belønning og når det gør noget forkert. 184 00:09:04,710 --> 00:09:07,410 Du kan faktisk se, at hvis du går til Google Translate og du forsøger at 185 00:09:07,410 --> 00:09:10,220 oversætte en sætning, det beder om feedback. 186 00:09:10,220 --> 00:09:13,240 Så hvis du siger, åh, der er en bedre oversættelse for denne sætning. 187 00:09:13,240 --> 00:09:18,140 Du kan skrive det op og derefter, hvis en masse af folk holde siger, der er en bedre 188 00:09:18,140 --> 00:09:21,560 oversættelse, det bare lærer, at det skal bruge den oversættelse i stedet for 189 00:09:21,560 --> 00:09:22,960 den ene var det at give. 190 00:09:22,960 --> 00:09:28,830 >> Så det er en meget filosofisk spørgsmål at se, om computere vil være 191 00:09:28,830 --> 00:09:30,340 stand til at tale eller ej i fremtiden. 192 00:09:30,340 --> 00:09:34,440 Men jeg har store forhåbninger om, at de kan blot baseret på disse argumenter. 193 00:09:34,440 --> 00:09:38,570 Men det er bare mere af en filosofisk spørgsmål. 194 00:09:38,570 --> 00:09:43,460 >> Så mens computere stadig ikke kan tale, hvad er de ting, vi kan gøre? 195 00:09:43,460 --> 00:09:47,070 Nogle virkelig cool ting er dataklassificering. 196 00:09:47,070 --> 00:09:53,210 Så for eksempel, du fyre kender at e-mail-tjenester gør det, for 197 00:09:53,210 --> 00:09:55,580 eksempel spam filtrering. 198 00:09:55,580 --> 00:09:59,070 Så når du modtager spam, det forsøger at foretage en anden kasse. 199 00:09:59,070 --> 00:10:00,270 Så hvordan gør den det? 200 00:10:00,270 --> 00:10:06,080 Det er ikke ligesom computeren bare kender hvad e-mailadresser sender spam. 201 00:10:06,080 --> 00:10:09,130 Så det er mere baseret på indholdet af beskeden, eller måske titlen, eller 202 00:10:09,130 --> 00:10:11,310 måske nogle mønster, du har. 203 00:10:11,310 --> 00:10:15,690 >> Så dybest set, hvad du kan gøre, er at få et masse data af e-mails, der er spam, 204 00:10:15,690 --> 00:10:19,980 e-mails, som ikke er spam, og lære, hvad slags mønstre, du har i 205 00:10:19,980 --> 00:10:21,000 dem, der er spam. 206 00:10:21,000 --> 00:10:23,260 Og dette er en del af beregningsmæssige lingvistik. 207 00:10:23,260 --> 00:10:24,720 Det hedder dataklassificering. 208 00:10:24,720 --> 00:10:28,100 Og vi faktisk kommer til at se en eksempel på, at der i de næste objektglas. 209 00:10:28,100 --> 00:10:32,910 >> Den anden ting er naturligt sprog forarbejdning der er den ting, at 210 00:10:32,910 --> 00:10:36,580 Graf Søg gør for at lade du skriver en sætning. 211 00:10:36,580 --> 00:10:38,690 Og det stoler du forstår, hvad er meningen, og giver 212 00:10:38,690 --> 00:10:39,940 du et bedre resultat. 213 00:10:39,940 --> 00:10:43,880 Faktisk, hvis du går til Google eller Bing og du søger noget som Lady 214 00:10:43,880 --> 00:10:47,060 Gagas højde, er du faktisk går at få 5 '1 "i stedet for oplysninger 215 00:10:47,060 --> 00:10:50,170 fra hende, fordi det rent faktisk forstår hvad du taler om. 216 00:10:50,170 --> 00:10:52,140 Så det er en del af naturlige sprogbehandling. 217 00:10:52,140 --> 00:10:57,000 >> Eller også, når du bruger Siri, først du har en algoritme, der forsøger at 218 00:10:57,000 --> 00:11:01,130 oversætte, hvad du siger i ord, i teksten. 219 00:11:01,130 --> 00:11:03,690 Og så forsøger at oversætte der i betydning. 220 00:11:03,690 --> 00:11:06,570 Så det er alt sammen en del af naturlige sprogbehandling. 221 00:11:06,570 --> 00:11:08,320 >> Så har du maskinoversættelse - 222 00:11:08,320 --> 00:11:10,300 der er faktisk en af mine favoritter - 223 00:11:10,300 --> 00:11:14,060 som er lige oversætte fra et sprog til et andet. 224 00:11:14,060 --> 00:11:17,950 Så du kan tro, at når du laver maskinoversættelse, har du 225 00:11:17,950 --> 00:11:19,750 uendelige muligheder af sætninger. 226 00:11:19,750 --> 00:11:22,960 Så der er ingen måde blot at lagre hver enkelt oversættelse. 227 00:11:22,960 --> 00:11:27,440 Så du er nødt til at komme op med interessante algoritmer til at være i stand til 228 00:11:27,440 --> 00:11:30,110 oversætte hver enkelt sætning i en eller anden måde. 229 00:11:30,110 --> 00:11:32,483 >> Jer har nogen spørgsmål, så vidt? 230 00:11:32,483 --> 00:11:34,450 Nej? 231 00:11:34,450 --> 00:11:34,830 OK. 232 00:11:34,830 --> 00:11:36,900 >> Så hvad skal vi se i dag? 233 00:11:36,900 --> 00:11:39,300 Først og fremmest, jeg vil tale om klassificering problem. 234 00:11:39,300 --> 00:11:41,440 Så det, jeg var siger om spam. 235 00:11:41,440 --> 00:11:46,820 Hvad jeg har tænkt mig at gøre, er, givet lyrics til en sang, kan du prøve at finde ud af 236 00:11:46,820 --> 00:11:49,810 med stor sandsynlighed der er sangeren? 237 00:11:49,810 --> 00:11:53,590 Lad os sige, at jeg har sange fra Lady Gaga og Katy Perry, hvis jeg giver dig en 238 00:11:53,590 --> 00:11:58,130 ny sang, kan du regne ud, hvis it's Katy Perry eller dame Gaga? 239 00:11:58,130 --> 00:12:01,490 >> Den anden, jeg bare at snakke om segmentering problem. 240 00:12:01,490 --> 00:12:05,780 Så jeg ved ikke, hvis du fyre kender, men Kinesisk, japansk, andre østasiatiske 241 00:12:05,780 --> 00:12:08,090 sprog og andre sprog i almindelighed, ikke har 242 00:12:08,090 --> 00:12:09,830 mellemrum mellem ordene. 243 00:12:09,830 --> 00:12:13,540 Og så hvis du tænker over den måde, din computer slags forsøger at 244 00:12:13,540 --> 00:12:18,600 forstå naturligt sprog forarbejdning, det ser på ordene og 245 00:12:18,600 --> 00:12:21,500 forsøger at forstå relationerne mellem dem, ikke? 246 00:12:21,500 --> 00:12:25,440 Men så hvis du har kinesisk, og du har nul mellemrum, er det virkelig svært at 247 00:12:25,440 --> 00:12:28,360 finde ud af, hvad er forholdet mellem ord, fordi de ikke har nogen 248 00:12:28,360 --> 00:12:29,530 ord i første. 249 00:12:29,530 --> 00:12:32,600 Så du er nødt til at gøre noget, der hedder segmentering som netop betyder at sætte 250 00:12:32,600 --> 00:12:36,490 mellemrum mellem, hvad vi ville kalde ord på disse sprog. 251 00:12:36,490 --> 00:12:37,740 Mening? 252 00:12:37,740 --> 00:12:39,680 253 00:12:39,680 --> 00:12:41,540 >> Og så vil vi tale om syntaks. 254 00:12:41,540 --> 00:12:44,050 Så bare en lille smule om naturlig sprogbehandling. 255 00:12:44,050 --> 00:12:45,420 Det kommer til at være lige et overblik. 256 00:12:45,420 --> 00:12:50,700 Så i dag, dybest set, hvad jeg ønsker at gøre er at give jer en lille smule af en 257 00:12:50,700 --> 00:12:53,930 indersiden af ​​hvilke muligheder er at du kan gøre med beregningsmæssige 258 00:12:53,930 --> 00:12:54,960 lingvistik. 259 00:12:54,960 --> 00:13:00,410 Og så kan du se hvad du mener er cool blandt disse ting. 260 00:13:00,410 --> 00:13:02,270 Og måske du kan tænke på et projekt og kommer tale med mig. 261 00:13:02,270 --> 00:13:05,260 Og jeg kan give dig råd om, hvordan man gennemfører det. 262 00:13:05,260 --> 00:13:09,060 >> Så syntaks kommer til at være en lille smule om Graph Søg og maskine 263 00:13:09,060 --> 00:13:09,670 translation. 264 00:13:09,670 --> 00:13:13,650 Jeg bare at give et eksempel på, hvordan du kan for eksempel oversætte 265 00:13:13,650 --> 00:13:16,020 noget fra portugisisk til engelsk. 266 00:13:16,020 --> 00:13:17,830 Lyder godt? 267 00:13:17,830 --> 00:13:19,293 >> Så det første, klassificeringen problem. 268 00:13:19,293 --> 00:13:23,590 Jeg vil sige, at denne del af seminaret kommer til at være den mest udfordrende 269 00:13:23,590 --> 00:13:27,560 man bare fordi der kommer at være nogle kodning. 270 00:13:27,560 --> 00:13:29,470 Men det kommer til at være Python. 271 00:13:29,470 --> 00:13:34,380 Jeg kender jer ikke kender Python, så Jeg skal bare til at forklare den høje 272 00:13:34,380 --> 00:13:35,750 niveau, hvad jeg laver. 273 00:13:35,750 --> 00:13:40,900 Og du behøver ikke at virkelig pleje for meget om syntaksen, fordi det er 274 00:13:40,900 --> 00:13:42,140 noget du fyre kan lære. 275 00:13:42,140 --> 00:13:42,540 OK? 276 00:13:42,540 --> 00:13:43,580 Lyder godt. 277 00:13:43,580 --> 00:13:46,020 >> Så hvad er den klassifikation problemet? 278 00:13:46,020 --> 00:13:49,140 Så du får nogle tekster til en sang, og du ønsker at gætte 279 00:13:49,140 --> 00:13:50,620 hvem synger den. 280 00:13:50,620 --> 00:13:54,045 Og det kan være til nogen form andre problemer. 281 00:13:54,045 --> 00:13:59,980 Så det kan, for eksempel, har du en præsidentkampagne og du har en 282 00:13:59,980 --> 00:14:02,610 tale, og du ønsker at finde ud, 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 have en masse e-mails og du ønsker at finde ud af, om de er 285 00:14:07,700 --> 00:14:08,890 spam eller ej. 286 00:14:08,890 --> 00:14:11,440 Så det er bare at klassificere nogle data baseret på de ord 287 00:14:11,440 --> 00:14:13,790 at du har der. 288 00:14:13,790 --> 00:14:16,295 >> Så for at gøre det, du er nødt til at foretage nogle antagelser. 289 00:14:16,295 --> 00:14:20,570 Så en masse om datalingvistik gør antagelser, 290 00:14:20,570 --> 00:14:24,100 normalt intelligente forudsætninger, således at du kan få gode resultater. 291 00:14:24,100 --> 00:14:26,670 Forsøger at skabe en model for det. 292 00:14:26,670 --> 00:14:31,290 Og så prøve det og se om det virker, hvis det giver dig god præcision. 293 00:14:31,290 --> 00:14:33,940 Og hvis det gør, så du forsøge at forbedre den. 294 00:14:33,940 --> 00:14:37,640 Hvis det ikke sker, er du ligesom, OK, måske jeg bør gøre en anden antagelse. 295 00:14:37,640 --> 00:14:44,030 >> Så den antagelse, at vi kommer til at gøre er, at en kunstner som regel synger 296 00:14:44,030 --> 00:14:49,220 om et emne flere gange, og måske bruger ord flere gange 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 tænke på din ven. 299 00:14:51,890 --> 00:14:57,350 Jeg er sikker på jer alle har venner der siger, at deres underskrift sætning, 300 00:14:57,350 --> 00:14:59,260 bogstaveligt for hver enkelt sætning - 301 00:14:59,260 --> 00:15:02,660 ligesom nogle bestemt ord eller en bestemt sætning, som de siger for 302 00:15:02,660 --> 00:15:04,020 hver eneste sætning. 303 00:15:04,020 --> 00:15:07,920 >> Og hvad du kan sige er, at hvis du ser en sætning, der har en signatur 304 00:15:07,920 --> 00:15:11,450 sætning, kan du gætte på, at nok din ven er den 305 00:15:11,450 --> 00:15:13,310 der siger det, ikke? 306 00:15:13,310 --> 00:15:18,410 Så du gøre denne antagelse, og derefter det er hvordan du opretter en model. 307 00:15:18,410 --> 00:15:24,440 >> Det eksempel, som jeg har tænkt mig at give, er på hvordan Lady Gaga, for eksempel folk 308 00:15:24,440 --> 00:15:27,430 siger, at hun bruger "baby" for alle hendes nummer et sange. 309 00:15:27,430 --> 00:15:32,270 Og faktisk er det en video, der viser hende at sige ordet "baby" for 310 00:15:32,270 --> 00:15:33,410 forskellige sange. 311 00:15:33,410 --> 00:15:33,860 >> [VIDEOAFSPILNING] 312 00:15:33,860 --> 00:15:34,310 >> - (Sang) 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 VIDEOAFSPILNING- 323 00:15:41,090 --> 00:15:44,020 >> LUCAS FREITAS: Så der er, tror jeg, 40 sange her, hvor hun siger 324 00:15:44,020 --> 00:15:48,690 Ordet "baby". Så du kan stort set gætte at hvis du ser en sang, der har 325 00:15:48,690 --> 00:15:52,180 ordet "baby," der er nogle høje sandsynlighed for, at det er Lady Gaga. 326 00:15:52,180 --> 00:15:56,450 Men lad os prøve at udvikle denne yderligere, mere formelt. 327 00:15:56,450 --> 00:16:00,470 >> Så disse er tekster til sange af Lady Gaga og Katy Perry. 328 00:16:00,470 --> 00:16:04,120 Så du ser på Lady Gaga, kan du se de har en masse begivenheder af "baby", en 329 00:16:04,120 --> 00:16:07,710 masser af forekomster af "måde." Og så Katy Perry har en masse forekomster af 330 00:16:07,710 --> 00:16:10,360 "Den," en masse forekomster af "ild". 331 00:16:10,360 --> 00:16:14,560 >> Så dybest set, hvad vi ønsker at gøre, er, at du får en lyrisk. 332 00:16:14,560 --> 00:16:20,480 Lad os sige, at du får en sangtekst for en sang, der er "baby" bare "baby". Hvis 333 00:16:20,480 --> 00:16:24,750 du bare få ordet "baby", og det er alle de data, du har fra 334 00:16:24,750 --> 00:16:27,880 Lady Gaga og Katy Perry, som ville du gætte er den person 335 00:16:27,880 --> 00:16:29,370 der synger den sang? 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, right? 338 00:16:33,150 --> 00:16:37,400 Fordi hun er den eneste, der siger "Baby". Det lyder dumt, ikke? 339 00:16:37,400 --> 00:16:38,760 OK, det er virkelig nemt. 340 00:16:38,760 --> 00:16:41,860 Jeg er bare at kigge på de to sange og Selvfølgelig, hun er den eneste, der har 341 00:16:41,860 --> 00:16:42,660 "Baby". 342 00:16:42,660 --> 00:16:44,740 >> Men hvad nu hvis du har en masse ord? 343 00:16:44,740 --> 00:16:50,900 Hvis du har et virkeligt lyrik, noget lignende, "baby, jeg bare 344 00:16:50,900 --> 00:16:51,610 gik for at se en [? CFT?] 345 00:16:51,610 --> 00:16:54,020 foredrag, "eller noget lignende, og så er du faktisk nødt til at regne ud - 346 00:16:54,020 --> 00:16:55,780 på grundlag af alle disse ord - 347 00:16:55,780 --> 00:16:58,350 hvem er kunstneren, der sandsynligvis sang denne sang? 348 00:16:58,350 --> 00:17:01,860 Så lad os prøve at udvikle dette lidt længere. 349 00:17:01,860 --> 00:17:05,630 >> OK, så bygger kun på de data, vi fik, ser det ud til, at Gaga er sandsynligvis 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 mere formelt? 352 00:17:07,904 --> 00:17:10,579 353 00:17:10,579 --> 00:17:13,140 Og der kommer til at være lidt bit af statistikker. 354 00:17:13,140 --> 00:17:15,880 Så hvis du fare vild, bare prøve at forstå konceptet. 355 00:17:15,880 --> 00:17:18,700 Det betyder ikke noget, hvis du forstår ligningerne udmærket. 356 00:17:18,700 --> 00:17:22,150 Dette er alle kommer til at være online. 357 00:17:22,150 --> 00:17:25,490 >> Så dybest set, hvad jeg beregne den sandsynlighed for, at denne sang er ved 358 00:17:25,490 --> 00:17:28,040 Lady Gaga eftersom - 359 00:17:28,040 --> 00:17:30,660 så denne bar betyder da - 360 00:17:30,660 --> 00:17:33,680 Jeg så ordet "baby". Giver det mening? 361 00:17:33,680 --> 00:17:35,540 Så jeg forsøger at beregne at sandsynlighed. 362 00:17:35,540 --> 00:17:38,540 >> Så der er denne sætning kaldes Bayes teorem, der siger, at den 363 00:17:38,540 --> 00:17:43,330 sandsynligheden for et givet B, er det sandsynlighed for B givet A, gange 364 00:17:43,330 --> 00:17:47,660 sandsynligheden for A over sandsynligheden B. Dette er en lang ligning. 365 00:17:47,660 --> 00:17:51,970 Men hvad du nødt til at forstå fra det er, at dette er hvad jeg ønsker at 366 00:17:51,970 --> 00:17:52,830 beregne, right? 367 00:17:52,830 --> 00:17:56,570 Så sandsynligheden for, at den sang er ved Lady Gaga, da jeg så ordet 368 00:17:56,570 --> 00:17:58,230 "Baby". 369 00:17:58,230 --> 00:18:02,960 >> Og nu, hvad jeg får, er den sandsynligheden for, at ordet "baby" givet 370 00:18:02,960 --> 00:18:04,390 at jeg har Lady Gaga. 371 00:18:04,390 --> 00:18:07,220 Og hvad er det dybest set? 372 00:18:07,220 --> 00:18:10,500 Hvad det betyder er, hvad er det sandsynligheden for at se ordet "baby" 373 00:18:10,500 --> 00:18:12,130 i Gaga lyrics? 374 00:18:12,130 --> 00:18:16,240 Hvis jeg ønsker at beregne, at der i en meget enkel måde, er det kun antallet af 375 00:18:16,240 --> 00:18:23,640 gange ser jeg "baby" over det samlede antal af ord i Gaga sangtekster, right? 376 00:18:23,640 --> 00:18:27,600 Hvad er den frekvens, som jeg ser at ord i Gagas arbejde? 377 00:18:27,600 --> 00:18:30,530 Mening? 378 00:18:30,530 --> 00:18:33,420 >> Det andet led er sandsynlighed for Gaga. 379 00:18:33,420 --> 00:18:34,360 Hvad betyder det? 380 00:18:34,360 --> 00:18:38,550 Det betyder dybest set, hvad der er den sandsynligheden for at klassificere 381 00:18:38,550 --> 00:18:40,690 nogle sangtekster som Gaga? 382 00:18:40,690 --> 00:18:45,320 Og det er lidt underligt, men lad os tænke på et eksempel. 383 00:18:45,320 --> 00:18:49,230 Så lad os sige, at sandsynligheden for have "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 gange flere sange end Lady Gaga. 386 00:18:54,950 --> 00:19:00,570 Så hvis nogen bare tilfældigt giver dig sangtekster af "baby", den første ting du 387 00:19:00,570 --> 00:19:04,710 se på, er, hvad er sandsynligheden for have "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 det samme. 390 00:19:06,460 --> 00:19:10,040 >> Så den anden ting, som du kan se, er, godt, hvad er sandsynligheden for 391 00:19:10,040 --> 00:19:13,770 denne lyriske ved selv at være en Gaga lyrik, og hvad er sandsynligheden for 392 00:19:13,770 --> 00:19:15,380 være en Britney lyrik? 393 00:19:15,380 --> 00:19:18,950 Så da Britney har så mange flere lyrics end Gaga, ville du sikkert 394 00:19:18,950 --> 00:19:21,470 sige, godt, det er nok en Britney lyrik. 395 00:19:21,470 --> 00:19:23,340 Så det er derfor vi har denne betegne lige her. 396 00:19:23,340 --> 00:19:24,670 Sandsynligheden for Gaga. 397 00:19:24,670 --> 00:19:26,950 Giver mening? 398 00:19:26,950 --> 00:19:28,660 Gør det? 399 00:19:28,660 --> 00:19:29,370 OK. 400 00:19:29,370 --> 00:19:33,500 >> Og den sidste er bare sandsynligheden af "baby", som ikke 401 00:19:33,500 --> 00:19:34,810 virkelig betyder så meget. 402 00:19:34,810 --> 00:19:39,940 Men det er sandsynligheden for se "baby" på engelsk. 403 00:19:39,940 --> 00:19:42,725 Vi plejer ligeglade med, at meget om dette begreb. 404 00:19:42,725 --> 00:19:44,490 Giver det mening? 405 00:19:44,490 --> 00:19:48,110 Så sandsynligheden for Gaga er kaldet forudgående sandsynlighed 406 00:19:48,110 --> 00:19:49,530 af klassen Gaga. 407 00:19:49,530 --> 00:19:53,840 Fordi det bare betyder, at hvad der er den sandsynligheden for at få denne klasse - 408 00:19:53,840 --> 00:19:55,520 som er Gaga - 409 00:19:55,520 --> 00:19:59,350 bare i almindelighed, kun uden betingelser. 410 00:19:59,350 --> 00:20:02,560 >> Og så når jeg har sandsynligheden for Gaga givet "baby", kalder vi det plus 411 00:20:02,560 --> 00:20:06,160 teary en sandsynlighed, fordi det er sandsynligheden for at have 412 00:20:06,160 --> 00:20:08,300 Gaga givet nogle beviser. 413 00:20:08,300 --> 00:20:11,050 Så jeg giver dig beviserne at jeg så ordet baby og 414 00:20:11,050 --> 00:20:12,690 sangen mening? 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 af sangene til Lady Gaga, 418 00:20:22,400 --> 00:20:25,916 hvad der ville være - 419 00:20:25,916 --> 00:20:27,730 tilsyneladende kan jeg ikke flytte denne. 420 00:20:27,730 --> 00:20:31,850 421 00:20:31,850 --> 00:20:36,920 Sandsynligheden for Gaga vil være noget lignende, 2 over 24 gange 1/2, 422 00:20:36,920 --> 00:20:38,260 over 2 over 53 år. 423 00:20:38,260 --> 00:20:40,640 Det betyder ikke noget, hvis du ved, hvad disse tal kommer fra. 424 00:20:40,640 --> 00:20:44,750 Men det er bare et tal, der vil at være mere end 0, right? 425 00:20:44,750 --> 00:20:48,610 >> Og så når jeg gør Katy Perry, den sandsynligheden for "baby" givet Katy er 426 00:20:48,610 --> 00:20:49,830 allerede 0, right? 427 00:20:49,830 --> 00:20:52,820 Fordi der er ingen "baby" i Katy Perry. 428 00:20:52,820 --> 00:20:56,360 Så det bliver 0, og Gaga vinder, hvilket betyder, at Gaga er 429 00:20:56,360 --> 00:20:57,310 sandsynligvis sangeren. 430 00:20:57,310 --> 00:20:58,560 Giver det mening? 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 at gøre dette mere officielle, Jeg kan faktisk gøre en model 435 00:21:11,750 --> 00:21:12,700 efter flere ord. 436 00:21:12,700 --> 00:21:14,610 Så lad os sige, at jeg har noget lignende, "baby, jeg er 437 00:21:14,610 --> 00:21:16,030 i brand, "eller noget. 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 tilfælde, 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, right? 442 00:21:24,940 --> 00:21:27,200 Så det bliver vanskeligere, ikke? 443 00:21:27,200 --> 00:21:31,440 Fordi det lader til, at du næsten har en uafgjort mellem de to. 444 00:21:31,440 --> 00:21:36,980 >> Så hvad du skal gøre er at påtage sig uafhængighed blandt ordene. 445 00:21:36,980 --> 00:21:41,210 Så dybest set, hvad det betyder, er, at Jeg er bare at beregne, hvad der er 446 00:21:41,210 --> 00:21:44,330 sandsynlighed for at se "baby," hvad er sandsynligheden for at se "jeg", og 447 00:21:44,330 --> 00:21:46,670 "AM", og "on" og "brand" alt særskilt. 448 00:21:46,670 --> 00:21:48,670 Så jeg multiplicere dem alle. 449 00:21:48,670 --> 00:21:52,420 Og jeg ser, hvad er sandsynligheden for at se hele sætningen. 450 00:21:52,420 --> 00:21:55,210 Mening? 451 00:21:55,210 --> 00:22:00,270 >> Så dybest set, hvis jeg har bare ét ord, hvad jeg ønsker at finde er arg max, 452 00:22:00,270 --> 00:22:05,385 hvilket betyder, hvad der er den klasse, der er giver mig den højeste sandsynlighed? 453 00:22:05,385 --> 00:22:10,010 Så hvad er den klasse, der giver mig den højeste sandsynlighed for 454 00:22:10,010 --> 00:22:11,940 sandsynlighed for klassen givet ord. 455 00:22:11,940 --> 00:22:17,610 Så i dette tilfælde Gaga givet "baby". Eller Katy givet "baby". Mening? 456 00:22:17,610 --> 00:22:21,040 >> Og bare fra Bayes, at ligning, jeg viste, 457 00:22:21,040 --> 00:22:24,780 vi skaber denne fraktion. 458 00:22:24,780 --> 00:22:28,750 Det eneste er, at du kan se, at sandsynligheden for ordet givet 459 00:22:28,750 --> 00:22:31,370 klasse skifter afhængigt af den klasse, right? 460 00:22:31,370 --> 00:22:34,260 Antallet af "baby" s, som jeg har i Gaga er forskellig fra Katy. 461 00:22:34,260 --> 00:22:37,640 Sandsynligheden for klassen også ændringer, fordi det er kun antallet 462 00:22:37,640 --> 00:22:39,740 sange hver af dem har. 463 00:22:39,740 --> 00:22:43,980 >> Men sandsynligheden for selve ordet vil være den samme for alle 464 00:22:43,980 --> 00:22:44,740 kunstnere, right? 465 00:22:44,740 --> 00:22:47,150 Så sandsynligheden for ordet bare, hvad er sandsynligheden for 466 00:22:47,150 --> 00:22:49,820 se, at ord i Engelsk? 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å da dette er konstant, kan vi bare droppe dette og ikke bekymre sig om det. 469 00:22:55,790 --> 00:23:00,230 Så dette vil være faktisk ligning, vi leder efter. 470 00:23:00,230 --> 00:23:03,360 >> Og hvis jeg har flere ord, jeg er stadig vil have forudgående 471 00:23:03,360 --> 00:23:04,610 sandsynlighed her. 472 00:23:04,610 --> 00:23:06,980 Det eneste er, at jeg multiplicere sandsynligheden for 473 00:23:06,980 --> 00:23:08,490 alle de andre ord. 474 00:23:08,490 --> 00:23:10,110 Så jeg multiplicere dem alle. 475 00:23:10,110 --> 00:23:12,610 Mening? 476 00:23:12,610 --> 00:23:18,440 Det ser underligt, men dybest set betyder, beregne inden for klassen, og 477 00:23:18,440 --> 00:23:22,100 multiplicerer med sandsynligheden for hver af de ord, at være i denne klasse. 478 00:23:22,100 --> 00:23:24,620 479 00:23:24,620 --> 00:23:29,150 >> Og du ved, at sandsynligheden for en ord givet en klasse kommer til at være den 480 00:23:29,150 --> 00:23:34,520 antal gange, du ser dette ord i denne klasse, divideret med antallet af 481 00:23:34,520 --> 00:23:37,020 ord, du har i det klasse i almindelighed. 482 00:23:37,020 --> 00:23:37,990 Mening? 483 00:23:37,990 --> 00:23:41,680 Det er bare hvordan "baby" var 2 over antallet af ord, der 484 00:23:41,680 --> 00:23:43,020 Jeg havde i teksterne. 485 00:23:43,020 --> 00:23:45,130 Så bare frekvensen. 486 00:23:45,130 --> 00:23:46,260 >> Men der er én ting. 487 00:23:46,260 --> 00:23:51,250 Husk, hvordan jeg var der viser, at sandsynlighed for "baby" bliver lyrics 488 00:23:51,250 --> 00:23:56,350 fra Katy Perry var 0 bare fordi Katy Perry havde ikke "baby" på alle? 489 00:23:56,350 --> 00:24:04,900 Men det lyder lidt barsk at bare blot sige, at teksten ikke kan være fra 490 00:24:04,900 --> 00:24:10,040 en kunstner, blot fordi de ikke har dette ord navnlig på ethvert tidspunkt. 491 00:24:10,040 --> 00:24:13,330 >> Så man kan bare sige, godt, hvis du ikke har dette ord, vil jeg 492 00:24:13,330 --> 00:24:15,640 give dig en lavere sandsynlighed, men jeg er bare ikke kommer til at 493 00:24:15,640 --> 00:24:17,420 give dig 0 højre væk. 494 00:24:17,420 --> 00:24:21,040 Fordi måske var det noget lignende, "Ild, brand, brand, brand", 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 går lige til 0 højre væk, fordi der var en 497 00:24:26,060 --> 00:24:27,250 "Baby". 498 00:24:27,250 --> 00:24:31,440 >> Så dybest set, hvad vi gør, er noget kaldet Laplace udjævning. 499 00:24:31,440 --> 00:24:36,260 Og det betyder bare, at jeg giver vis sandsynlighed selv til ordene 500 00:24:36,260 --> 00:24:37,850 der ikke eksisterer. 501 00:24:37,850 --> 00:24:43,170 Så hvad jeg gør, er, at når jeg er beregning af denne, jeg altid tilføje 1 til 502 00:24:43,170 --> 00:24:44,180 tælleren. 503 00:24:44,180 --> 00:24:48,060 Så selv om ordet ikke findes, i dette tilfælde, hvis det er 0, jeg er stadig 504 00:24:48,060 --> 00:24:51,250 beregning af denne som en over samlede antal ord. 505 00:24:51,250 --> 00:24:55,060 Ellers får jeg hvor mange ord Jeg har og jeg tilføje 1. 506 00:24:55,060 --> 00:24:58,300 Så jeg regner for begge sager. 507 00:24:58,300 --> 00:25:00,430 Mening? 508 00:25:00,430 --> 00:25:03,060 >> Så lad os nu gøre nogle kodning. 509 00:25:03,060 --> 00:25:06,440 Jeg har tænkt mig at have at gøre det temmelig hurtigt, men det er bare vigtigt, at du 510 00:25:06,440 --> 00:25:08,600 fyre forstå begreberne. 511 00:25:08,600 --> 00:25:13,450 Så hvad vi forsøger at gøre er præcis gennemføre denne 512 00:25:13,450 --> 00:25:14,330 ting, som jeg lige har sagt - 513 00:25:14,330 --> 00:25:19,110 Jeg vil have dig til at sætte teksterne fra Lady Gaga og Katy Perry. 514 00:25:19,110 --> 00:25:22,980 Og programmet vil være i stand til at sige, hvis disse nye tekster er fra Gaga 515 00:25:22,980 --> 00:25:24,170 eller Katy Perry. 516 00:25:24,170 --> 00:25:25,800 Mening? 517 00:25:25,800 --> 00:25:27,530 OK. 518 00:25:27,530 --> 00:25:30,710 >> Så jeg har dette program, jeg har tænkt mig at kalde 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 nyt programmeringssprog. 521 00:25:34,210 --> 00:25:38,020 Det er meget ens i nogle måder at C og PHP. 522 00:25:38,020 --> 00:25:43,180 Det er ens, fordi hvis du ønsker at lære Python efter at vide C, er det 523 00:25:43,180 --> 00:25:46,270 virkelig ikke så meget af en udfordring bare fordi Python er meget lettere 524 00:25:46,270 --> 00:25:47,520 end C, først og fremmest. 525 00:25:47,520 --> 00:25:49,370 Og en masse ting er allerede implementeret for dig. 526 00:25:49,370 --> 00:25:56,820 Så bare hvordan som PHP har funktioner, sortere en liste, eller tilføje noget 527 00:25:56,820 --> 00:25:58,780 til et array, eller bla, bla, bla. 528 00:25:58,780 --> 00:26:00,690 Python har alle dem så godt. 529 00:26:00,690 --> 00:26:05,960 >> Så jeg vil bare forklare hurtigt hvordan vi kunne gøre klassificeringen 530 00:26:05,960 --> 00:26:07,860 problem her. 531 00:26:07,860 --> 00:26:13,230 Så lad os sige, at i denne sag, har jeg sangtekster fra Gaga og Katy Perry. 532 00:26:13,230 --> 00:26:21,880 Den måde, at jeg har disse tekster er, at det første ord i teksterne er 533 00:26:21,880 --> 00:26:25,250 navnet på kunstneren, og resten er teksterne. 534 00:26:25,250 --> 00:26:29,470 Så lad os sige, at jeg har denne liste i som den første er lyrics by Gaga. 535 00:26:29,470 --> 00:26:31,930 Så her er jeg på rette spor. 536 00:26:31,930 --> 00:26:35,270 Og den næste er Katy, og det har også teksterne. 537 00:26:35,270 --> 00:26:38,040 >> Så dette er, hvordan du erklærer en variabel i Python. 538 00:26:38,040 --> 00:26:40,200 Du behøver ikke at give datatype. 539 00:26:40,200 --> 00:26:43,150 Du skal bare skrive "lyrics" slags gerne i PHP. 540 00:26:43,150 --> 00:26:44,890 Mening? 541 00:26:44,890 --> 00:26:47,770 >> Så hvad er de ting, jeg er nødt til at beregn for at være i stand til at beregne 542 00:26:47,770 --> 00:26:49,360 sandsynligheder? 543 00:26:49,360 --> 00:26:55,110 Jeg er nødt til at beregne "Priors" i hver af de forskellige 544 00:26:55,110 --> 00:26:56,710 klasser, jeg har. 545 00:26:56,710 --> 00:27:06,680 Jeg er nødt til at beregne de "posteriors," eller temmelig meget sandsynlighederne for 546 00:27:06,680 --> 00:27:12,150 hver af de forskellige ord, Jeg kan have for hver kunstner. 547 00:27:12,150 --> 00:27:17,210 Så inden Gaga, for eksempel, jeg har tænkt mig at have en liste over, hvor mange gange jeg ser 548 00:27:17,210 --> 00:27:19,250 hvert af ordene. 549 00:27:19,250 --> 00:27:20,760 Mening? 550 00:27:20,760 --> 00:27:25,370 >> Og endelig, jeg bare vil have en liste kaldet "ord", der er bare 551 00:27:25,370 --> 00:27:29,780 at have, hvor mange ord, jeg har for hver kunstner. 552 00:27:29,780 --> 00:27:33,760 Så for Gaga, for eksempel, når jeg ser til teksterne, jeg havde, tror jeg, 24 553 00:27:33,760 --> 00:27:34,750 ord i alt. 554 00:27:34,750 --> 00:27:38,970 Så denne liste er bare at have Gaga 24, og Katy et andet nummer. 555 00:27:38,970 --> 00:27:40,130 Mening? 556 00:27:40,130 --> 00:27:40,560 OK. 557 00:27:40,560 --> 00:27:42,530 >> Så nu, faktisk, lad os gå til kodning. 558 00:27:42,530 --> 00:27:45,270 Så i Python, kan du faktisk returnere en masse forskellige 559 00:27:45,270 --> 00:27:46,630 ting fra en funktion. 560 00:27:46,630 --> 00:27:50,810 Så jeg har tænkt mig at oprette denne funktion kaldet "betinget", som går 561 00:27:50,810 --> 00:27:53,890 til at returnere alle disse ting, det "Priors," de "sandsynligheder", og 562 00:27:53,890 --> 00:28:05,690 "ord". Så "betinget", og det er kommer til at kalde til "lyrics". 563 00:28:05,690 --> 00:28:11,510 >> Så nu jeg vil have dig til rent faktisk at skrive denne funktion. 564 00:28:11,510 --> 00:28:17,750 Så den måde, at jeg kan skrive dette funktion er jeg lige har defineret dette 565 00:28:17,750 --> 00:28:20,620 fungere med "def." Så jeg gjorde "def betinget ", og det tager 566 00:28:20,620 --> 00:28:28,700 "Lyrics". Og hvad det kommer til at gøre er først og fremmest, jeg har mine priors 567 00:28:28,700 --> 00:28:31,030 at jeg ønsker at beregne. 568 00:28:31,030 --> 00:28:34,330 >> Så den måde, at jeg kan gøre dette, er at skabe en ordbog i Python, hvilket 569 00:28:34,330 --> 00:28:37,320 er stort set det samme som en hash bord, eller det er ligesom 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 ordbog. 572 00:28:44,150 --> 00:28:53,580 Og dybest set, hvad dette betyder, at priors af Gaga er 0,5, for eksempel, hvis 573 00:28:53,580 --> 00:28:57,200 50% af teksterne er fra Gaga, 50% er fra Katy. 574 00:28:57,200 --> 00:28:58,450 Mening? 575 00:28:58,450 --> 00:29:00,680 576 00:29:00,680 --> 00:29:03,680 Så jeg er nødt til at regne ud, hvordan at beregne Priors. 577 00:29:03,680 --> 00:29:07,120 >> De næste dem, jeg skal gøre, også, er sandsynligheder og ordene. 578 00:29:07,120 --> 00:29:17,100 Så sandsynligheden for Gaga er listen alle de sandsynligheder, at jeg 579 00:29:17,100 --> 00:29:19,160 har for hver af de ord for Gaga. 580 00:29:19,160 --> 00:29:23,880 Så hvis jeg går til sandsynligheder for Gaga "Baby", for eksempel, det vil give mig 581 00:29:23,880 --> 00:29:28,750 noget lignende 2 over 24 i dette tilfælde. 582 00:29:28,750 --> 00:29:30,070 Mening? 583 00:29:30,070 --> 00:29:36,120 Så jeg går til "sandsynligheder", gå til "Gaga" spand, der har en liste over alle 584 00:29:36,120 --> 00:29:40,550 Gaga ord, så jeg går til "baby" og jeg ser sandsynlighed. 585 00:29:40,550 --> 00:29:45,940 >> Og endelig har jeg det "Ordene" ordbog. 586 00:29:45,940 --> 00:29:53,620 Så her, "sandsynligheder". Og så "ord". Så hvis jeg gør "ord", "Gaga", 587 00:29:53,620 --> 00:29:58,330 hvad der kommer til at ske, er, at det er kommer til at give mig 24 og sagde, at jeg 588 00:29:58,330 --> 00:30:01,990 har 24 ord i sangtekster fra Gaga. 589 00:30:01,990 --> 00:30:04,110 Giver mening? 590 00:30:04,110 --> 00:30:07,070 Så her, "ord" er lig dah-dah-dah. 591 00:30:07,070 --> 00:30:07,620 OK 592 00:30:07,620 --> 00:30:12,210 >> Så hvad jeg har tænkt mig at gøre, er at jeg har tænkt mig at gentage over hver af teksterne, så 593 00:30:12,210 --> 00:30:14,490 hver af de strenge, der Jeg har på listen. 594 00:30:14,490 --> 00:30:18,040 Og jeg har tænkt mig at beregne disse ting for hver af kandidaterne. 595 00:30:18,040 --> 00:30:19,950 Giver mening? 596 00:30:19,950 --> 00:30:21,700 Så jeg er nødt til at gøre en for-løkke. 597 00:30:21,700 --> 00:30:26,300 >> Så i Python, hvad jeg kan gøre, er "for linje i tekster. "Det samme som en 598 00:30:26,300 --> 00:30:28,000 "For hver" erklæring i PHP. 599 00:30:28,000 --> 00:30:33,420 Husk, hvordan, hvis det var PHP kunne jeg sige "hver sangtekster som for 600 00:30:33,420 --> 00:30:35,220 line ". Giver mening? 601 00:30:35,220 --> 00:30:38,900 Så jeg tager hver af linjerne i denne tilfælde denne streng og den næste 602 00:30:38,900 --> 00:30:44,540 snor så for hver af linjerne, hvad jeg vil gøre, er først, jeg har tænkt mig at 603 00:30:44,540 --> 00:30:49,150 opdele denne linje i en liste over ord adskilt af mellemrum. 604 00:30:49,150 --> 00:30:53,730 >> Så den kølige ting om Python, er, at du kan bare Google som "hvordan kan jeg 605 00:30:53,730 --> 00:30:58,220 opdele en streng i ord? ", Og det er vil fortælle dig, hvordan du gør det. 606 00:30:58,220 --> 00:31:04,890 Og måden at gøre det på, det er bare "linjen = Line.split () ", og det er dybest set 607 00:31:04,890 --> 00:31:08,640 kommer til at give dig en liste med hvert af ordene her. 608 00:31:08,640 --> 00:31:09,620 Giver mening? 609 00:31:09,620 --> 00:31:15,870 Så nu, at jeg gjorde, at jeg ønsker at vide der er sanger i den sang. 610 00:31:15,870 --> 00:31:20,130 Og for at gøre, at jeg bare nødt til at få første element i array, right? 611 00:31:20,130 --> 00:31:26,390 Så jeg kan bare sige, at jeg "sanger = Linje (0) "Giver det mening? 612 00:31:26,390 --> 00:31:32,010 >> Og så hvad jeg skal gøre, er først alt, jeg kommer til at opdatere, hvor mange 613 00:31:32,010 --> 00:31:36,130 ord, jeg har under "Gaga". så jeg er bare kommer til at beregne, hvor mange ord, jeg 614 00:31:36,130 --> 00:31:38,690 har på denne liste, ikke? 615 00:31:38,690 --> 00:31:41,910 Fordi det er, hvor mange ord, jeg har i teksterne, og jeg vil bare 616 00:31:41,910 --> 00:31:44,120 føje det til "Gaga" array. 617 00:31:44,120 --> 00:31:47,090 Giver det mening? 618 00:31:47,090 --> 00:31:49,010 Må ikke fokusere for meget på syntaks. 619 00:31:49,010 --> 00:31:50,430 Tænk mere om begreberne. 620 00:31:50,430 --> 00:31:52,400 Det er den vigtigste del. 621 00:31:52,400 --> 00:31:52,720 OK. 622 00:31:52,720 --> 00:32:00,260 >> Så hvad jeg kan gøre, det er, hvis "Gaga" er allerede på denne liste, så ", hvis sanger i 623 00:32:00,260 --> 00:32:03,190 ord ", hvilket betyder, at jeg allerede har ord af Gaga. 624 00:32:03,190 --> 00:32:06,640 Jeg ønsker blot at tilføje ekstra ord til det. 625 00:32:06,640 --> 00:32:15,810 Så hvad jeg gør, er "ord (Singer) + = LEN (linje) - 1 ". 626 00:32:15,810 --> 00:32:18,250 Og så kan jeg bare gøre det længden af ​​linien. 627 00:32:18,250 --> 00:32:21,860 Så hvor mange elementer, som jeg har i array'et. 628 00:32:21,860 --> 00:32:27,060 Og jeg er nødt til at gøre minus 1 bare fordi det første element i array er bare 629 00:32:27,060 --> 00:32:29,180 en sanger og de er ikke lyrics. 630 00:32:29,180 --> 00:32:31,420 Giver mening? 631 00:32:31,420 --> 00:32:32,780 OK. 632 00:32:32,780 --> 00:32:35,820 >> "Else", betyder det, at jeg vil faktisk Indsæt Gaga på listen. 633 00:32:35,820 --> 00:32:45,990 Så jeg bare gør "ord (sanger) = LEN (linje) - 1, "undskyld. 634 00:32:45,990 --> 00:32:49,200 Så den eneste forskel mellem de to linjer er, at denne ene, ikke det gør 635 00:32:49,200 --> 00:32:51,080 eksisterer endnu, så jeg er bare initialisere den. 636 00:32:51,080 --> 00:32:53,820 Denne ene jeg faktisk tilføjer. 637 00:32:53,820 --> 00:32:55,570 OK. 638 00:32:55,570 --> 00:32:59,480 Så dette var at tilføje til ord. 639 00:32:59,480 --> 00:33:03,040 >> Nu vil jeg tilføje til de tidligere straffet. 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 tidligere straffet kan beregnes ved hvor mange gange. 642 00:33:11,580 --> 00:33:15,340 Så hvor mange gange du kan se, at sangeren blandt alle de sangere, som du 643 00:33:15,340 --> 00:33:16,380 har, ikke sandt? 644 00:33:16,380 --> 00:33:18,810 Så for Gaga og Katy Perry, i dette tilfælde, 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å dybest set tidligere straffet for Gaga og for Katy Perry ville 647 00:33:23,320 --> 00:33:24,390 bare være én, right? 648 00:33:24,390 --> 00:33:26,500 Du skal bare hvor mange gange Jeg ser kunstneren. 649 00:33:26,500 --> 00:33:28,740 Så det er meget let at beregne. 650 00:33:28,740 --> 00:33:34,100 Jeg kan bare noget lignende som gerne ", hvis sanger i Priors, "jeg bare 651 00:33:34,100 --> 00:33:38,970 at tilføje 1 til deres kasse Priors. 652 00:33:38,970 --> 00:33:51,000 Så "priors (synge)" + = 1 "og derefter" andet " Jeg har tænkt mig at gøre "priors (Singer) 653 00:33:51,000 --> 00:33:55,000 = 1 ". Giver mening? 654 00:33:55,000 --> 00:34:00,080 >> Så hvis det ikke findes, jeg bare sætte som 1, ellers er jeg bare tilføje 1. 655 00:34:00,080 --> 00:34:11,280 OK, så nu alt, hvad jeg har tilbage at gøre også tilføje hver af de ord til 656 00:34:11,280 --> 00:34:12,290 sandsynligheder. 657 00:34:12,290 --> 00:34:14,889 Så jeg er nødt til at tælle, hvor mange gange Jeg ser hvert af ordene. 658 00:34:14,889 --> 00:34:18,780 Så jeg bare nødt til at gøre en anden for loop i linjen. 659 00:34:18,780 --> 00:34:25,190 >> Så første ting, jeg har tænkt mig at gøre, er kontrollere, om sangeren har allerede en 660 00:34:25,190 --> 00:34:26,969 sandsynligheder array. 661 00:34:26,969 --> 00:34:31,739 Så jeg kontrollere, hvis sangeren ikke har en sandsynlighederne array, jeg er bare 662 00:34:31,739 --> 00:34:34,480 kommer til at initialisere for dem. 663 00:34:34,480 --> 00:34:36,400 Det er ikke engang et array, undskyld, Det er en ordbog. 664 00:34:36,400 --> 00:34:43,080 Så sandsynligheden for sanger går at være en åben ordbog, så jeg 665 00:34:43,080 --> 00:34:45,830 bare initialisering en ordbog til det. 666 00:34:45,830 --> 00:34:46,820 OK? 667 00:34:46,820 --> 00:34:58,330 >> Og nu kan jeg rent faktisk gør en for-løkke til at beregne hver af ordene ' 668 00:34:58,330 --> 00:35:00,604 sandsynligheder. 669 00:35:00,604 --> 00:35:01,540 OK. 670 00:35:01,540 --> 00:35:04,160 Så hvad jeg kan gøre, er en for-løkke. 671 00:35:04,160 --> 00:35:06,590 Så jeg vil bare gentage over array. 672 00:35:06,590 --> 00:35:15,320 Så den måde, at jeg kan gøre det i Python er "for jeg i området." Fra 1. 673 00:35:15,320 --> 00:35:19,200 fordi jeg ønsker at starte i anden element, fordi den første er den 674 00:35:19,200 --> 00:35:20,260 sanger navn. 675 00:35:20,260 --> 00:35:24,990 Så fra en op til længden af ​​linien. 676 00:35:24,990 --> 00:35:29,760 Og når jeg spænder det faktisk gå fra som her fra 1 til len af 677 00:35:29,760 --> 00:35:30,740 line minus 1. 678 00:35:30,740 --> 00:35:33,810 Så det allerede gør, at ting at gøre n minus 1 til arrays, som er meget 679 00:35:33,810 --> 00:35:35,500 praktisk. 680 00:35:35,500 --> 00:35:37,850 Giver mening? 681 00:35:37,850 --> 00:35:42,770 >> Så for hver af disse, hvad jeg har tænkt mig at gøre er, ligesom i den anden, 682 00:35:42,770 --> 00:35:50,320 Jeg har tænkt mig at kontrollere, om ord i denne position i linjen er allerede 683 00:35:50,320 --> 00:35:51,570 sandsynligheder. 684 00:35:51,570 --> 00:35:53,400 685 00:35:53,400 --> 00:35:57,260 Og så som jeg sagde her, sandsynligheder ord, som i jeg sætte 686 00:35:57,260 --> 00:35:58,400 "sandsynligheder (Singer)". 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)", betyder det, at jeg 689 00:36:03,450 --> 00:36:11,960 ønsker at tilføje 1 til det, så jeg har tænkt mig at gøre "sandsynligheder (Singer)", og 690 00:36:11,960 --> 00:36:14,100 ord kaldes "linje (i)". 691 00:36:14,100 --> 00:36:22,630 Jeg har tænkt mig at tilføje 1 og "andet" Jeg er bare kommer til at initialisere den til 1.. 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 Giver mening? 695 00:36:28,420 --> 00:36:30,180 >> Så jeg beregnet alle arrays. 696 00:36:30,180 --> 00:36:36,580 Så nu alt, hvad jeg er nødt til at gøre for denne ene er bare "tilbage Priors, 697 00:36:36,580 --> 00:36:43,230 sandsynligheder og ord. "Lad os se om der er nogen, OK. 698 00:36:43,230 --> 00:36:45,690 Det synes alt fungerer hidtil. 699 00:36:45,690 --> 00:36:46,900 Så det giver mening? 700 00:36:46,900 --> 00:36:47,750 På en eller anden måde? 701 00:36:47,750 --> 00:36:49,280 OK. 702 00:36:49,280 --> 00:36:51,980 Så nu har jeg alle sandsynligheder. 703 00:36:51,980 --> 00:36:55,100 Så nu er det eneste, jeg har tilbage er bare for at få at ting at 704 00:36:55,100 --> 00:36:58,650 beregner produktet af alle sandsynligheder når jeg får teksterne. 705 00:36:58,650 --> 00:37:06,270 >> Så lad os sige, at jeg vil nu kalder denne funktion "klassificere ()", og 706 00:37:06,270 --> 00:37:08,880 ting, som funktion tager er bare et argument. 707 00:37:08,880 --> 00:37:13,170 Lad os sige "Baby, jeg er på brand", og det er kommer til at regne ud, hvad er det 708 00:37:13,170 --> 00:37:14,490 sandsynlighed for, at dette er Gaga? 709 00:37:14,490 --> 00:37:16,405 Hvad er sandsynligheden at dette er Katie? 710 00:37:16,405 --> 00:37:19,690 Lyder godt? 711 00:37:19,690 --> 00:37:25,750 Så jeg bare nødt til at skabe en ny funktion kaldet "klassificere ()" og 712 00:37:25,750 --> 00:37:29,180 det kommer til at tage nogle sangtekster så godt. 713 00:37:29,180 --> 00:37:31,790 714 00:37:31,790 --> 00:37:36,160 Og udover teksterne jeg også nødt til at sende priors den 715 00:37:36,160 --> 00:37:37,700 sandsynligheder og ordene. 716 00:37:37,700 --> 00:37:44,000 Så jeg har tænkt mig at sende lyrics, Priors, sandsynligheder, ord. 717 00:37:44,000 --> 00:37:51,840 >> Så dette er ved at tage sangtekster, Priors, sandsynligheder, ord. 718 00:37:51,840 --> 00:37:53,530 Så hvad gør den? 719 00:37:53,530 --> 00:37:57,180 Det dybest set kommer til at gå igennem alle de 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 kandidater? 722 00:37:59,425 --> 00:38:01,020 De er I tidligere straffet, ikke? 723 00:38:01,020 --> 00:38:02,710 Så jeg har alle dem der. 724 00:38:02,710 --> 00:38:07,870 Så jeg har tænkt mig at have en ordbog af alle mulige kandidater. 725 00:38:07,870 --> 00:38:14,220 Og så for hver kandidat i Priors, så det betyder, at det kommer til at 726 00:38:14,220 --> 00:38:17,740 være Gaga, Katie, hvis jeg havde mere det ville være mere. 727 00:38:17,740 --> 00:38:20,410 Jeg har tænkt mig at begynde at beregne denne sandsynlighed. 728 00:38:20,410 --> 00:38:28,310 Sandsynligheden som vi så i PowerPoint er de kendte gange 729 00:38:28,310 --> 00:38:30,800 produkt i hver af de andre sandsynligheder. 730 00:38:30,800 --> 00:38:32,520 >> Så jeg kan gøre det samme her. 731 00:38:32,520 --> 00:38:36,330 Jeg kan bare gøre sandsynligheden er i første omgang bare forudgående. 732 00:38:36,330 --> 00:38:40,340 Så Priors af kandidaten. 733 00:38:40,340 --> 00:38:40,870 Right? 734 00:38:40,870 --> 00:38:45,360 Og nu er jeg nødt til at gentage over alle de ord, som jeg har i teksterne til at være 735 00:38:45,360 --> 00:38:48,820 stand til at tilføje sandsynligheden for hver af dem, okay? 736 00:38:48,820 --> 00:38:57,900 Så "for ord i teksterne" hvad jeg har tænkt mig at gøre, er, hvis ordet er i 737 00:38:57,900 --> 00:39:01,640 "sandsynligheder (kandidat)", som betyder, at det er et ord, at 738 00:39:01,640 --> 00:39:03,640 kandidat har i deres tekster - 739 00:39:03,640 --> 00:39:05,940 for eksempel, "baby" for Gaga - 740 00:39:05,940 --> 00:39:11,710 hvad jeg har tænkt mig at gøre, er, at den sandsynlighed vil blive multipliceret 741 00:39:11,710 --> 00:39:22,420 med 1 plus sandsynlighederne for kandidat til det ord. 742 00:39:22,420 --> 00:39:25,710 Og det hedder "ordet". 743 00:39:25,710 --> 00:39:32,440 Dette divideret med antallet af ord , jeg har for denne kandidat. 744 00:39:32,440 --> 00:39:37,450 Det samlede antal ord, som jeg har for sangeren, som jeg kigger på. 745 00:39:37,450 --> 00:39:40,290 >> "Else". det betyder, at det er et nyt 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 gøre 1 i løbet "Ord (kandidat)." 748 00:39:45,760 --> 00:39:47,710 Så jeg ønsker ikke at sætte dette udtryk her. 749 00:39:47,710 --> 00:39:50,010 >> Så det kommer til at være stort set kopiere og indsætte dette. 750 00:39:50,010 --> 00:39:54,380 751 00:39:54,380 --> 00:39:56,000 Men jeg har tænkt mig at slette denne del. 752 00:39:56,000 --> 00:39:57,610 Så det er bare at være 1 over. 753 00:39:57,610 --> 00:40:00,900 754 00:40:00,900 --> 00:40:02,150 Lyder godt? 755 00:40:02,150 --> 00:40:03,980 756 00:40:03,980 --> 00:40:09,700 Og nu i slutningen, jeg bare at udskrive navnet på den kandidat og 757 00:40:09,700 --> 00:40:15,750 sandsynligheden for, at du har på have S på deres tekster. 758 00:40:15,750 --> 00:40:16,200 Giver mening? 759 00:40:16,200 --> 00:40:18,390 Og jeg faktisk ikke engang brug for denne ordbog. 760 00:40:18,390 --> 00:40:19,510 Giver mening? 761 00:40:19,510 --> 00:40:21,810 >> Så lad os se, om det rent faktisk virker. 762 00:40:21,810 --> 00:40:24,880 Så hvis jeg køre dette, gjorde det ikke. 763 00:40:24,880 --> 00:40:26,130 Vent et sekund. 764 00:40:26,130 --> 00:40:28,870 765 00:40:28,870 --> 00:40:31,720 "Ord (kandidat)", "ord (kandidat)", der er 766 00:40:31,720 --> 00:40:33,750 navnet af matrixen. 767 00:40:33,750 --> 00:40:41,435 OK Så det siger, at der er nogle fejl til kandidat i Priors. 768 00:40:41,435 --> 00:40:46,300 769 00:40:46,300 --> 00:40:48,760 Lad mig bare slappe en lille smule. 770 00:40:48,760 --> 00:40:50,360 OK. 771 00:40:50,360 --> 00:40:51,305 Lad os prøve. 772 00:40:51,305 --> 00:40:51,720 OK. 773 00:40:51,720 --> 00:40:58,710 >> Så det giver Katy Perry har denne sandsynlighed for denne gange 10 til 774 00:40:58,710 --> 00:41:02,200 minus 7, og Gaga har dette gange 10 til minus 6.. 775 00:41:02,200 --> 00:41:05,610 Så du kan se det viser, at Gaga har en højere sandsynlighed. 776 00:41:05,610 --> 00:41:09,260 Så "Baby, jeg er på Fire" er sandsynligvis et Gaga sang. 777 00:41:09,260 --> 00:41:10,580 Giver mening? 778 00:41:10,580 --> 00:41:12,030 Så dette er hvad vi gjorde. 779 00:41:12,030 --> 00:41:16,010 >> Denne kode vil blive lagt online, så du fyre kan tjekke det ud. 780 00:41:16,010 --> 00:41:20,720 Måske bruge noget af det, hvis du ønsker at lave et projekt eller noget lignende. 781 00:41:20,720 --> 00:41:22,150 OK. 782 00:41:22,150 --> 00:41:25,930 Det var bare for at vise hvad beregningsmæssige 783 00:41:25,930 --> 00:41:27,230 lingvistik kode ser ud. 784 00:41:27,230 --> 00:41:33,040 Men lad os nu gå til mere højt stuff. 785 00:41:33,040 --> 00:41:33,340 OK. 786 00:41:33,340 --> 00:41:35,150 >> Så de andre problemer, jeg talte om - 787 00:41:35,150 --> 00:41:37,550 segmentering problem er den første af 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å skal du se, at der ikke er mellemrum. 790 00:41:43,420 --> 00:41:49,110 Så dette er dybest set betyder, at det er toppen af ​​stolen, right? 791 00:41:49,110 --> 00:41:50,550 Du taler japansk? 792 00:41:50,550 --> 00:41:52,840 Det er toppen af ​​stolen, right? 793 00:41:52,840 --> 00:41:54,480 >> STUDENT: Jeg ved ikke, hvad kanji derovre er. 794 00:41:54,480 --> 00:41:57,010 >> LUCAS FREITAS: Det er [SPEAKING JAPANSKE] 795 00:41:57,010 --> 00:41:57,950 OK. 796 00:41:57,950 --> 00:42:00,960 Så det dybest set betyder stol på toppen. 797 00:42:00,960 --> 00:42:03,620 Så hvis du havde at sætte et mellemrum ville det være her. 798 00:42:03,620 --> 00:42:05,970 Og så har du [? Ueda-san. ?] 799 00:42:05,970 --> 00:42:09,040 Som dybest set betyder Mr. Ueda. 800 00:42:09,040 --> 00:42:13,180 Og du kan se, at "Ueda", og du har en plads og derefter "san". Så du kan se, at 801 00:42:13,180 --> 00:42:15,470 her "UE" er ligesom af sig selv. 802 00:42:15,470 --> 00:42:17,750 Og her har en karakter ved siden af. 803 00:42:17,750 --> 00:42:21,720 >> Så det er ikke ligesom på disse sprog tegn betyder et ord det, så du 804 00:42:21,720 --> 00:42:23,980 bare sætte en masse rum. 805 00:42:23,980 --> 00:42:25,500 Tegn relaterer til hinanden. 806 00:42:25,500 --> 00:42:28,680 Og de kan være sammen som to, tre, et. 807 00:42:28,680 --> 00:42:34,520 Så du faktisk nødt til at skabe en form af måde at sætte disse rum. 808 00:42:34,520 --> 00:42:38,850 >> Og denne ting er, at når du får data fra de asiatiske sprog, 809 00:42:38,850 --> 00:42:40,580 alt kommer unsegmented. 810 00:42:40,580 --> 00:42:45,940 Fordi ingen, der skriver japansk eller kinesisk skriver med mellemrum. 811 00:42:45,940 --> 00:42:48,200 Når du skriver kinesisk, Japanske du bare skrive alt 812 00:42:48,200 --> 00:42:48,710 uden mellemrum. 813 00:42:48,710 --> 00:42:52,060 Det er ikke engang mening at sætte mellemrum. 814 00:42:52,060 --> 00:42:57,960 Så når du får data fra nogle Østasiatiske sprog, hvis du vil 815 00:42:57,960 --> 00:43:00,760 faktisk gøre noget med det du er nødt til at segment først. 816 00:43:00,760 --> 00:43:05,130 >> Tænk på at gøre eksemplet med teksterne uden mellemrum. 817 00:43:05,130 --> 00:43:07,950 Så det eneste tekster, som du har vil være sætninger, right? 818 00:43:07,950 --> 00:43:09,470 Adskilt af punktummer. 819 00:43:09,470 --> 00:43:13,930 Men derefter har bare den sætning vil ikke rigtig hjælpe på at give oplysninger 820 00:43:13,930 --> 00:43:17,760 af hvem disse tekster er forbi. 821 00:43:17,760 --> 00:43:18,120 Right? 822 00:43:18,120 --> 00:43:20,010 Så du bør sætter mellemrum først. 823 00:43:20,010 --> 00:43:21,990 Så hvordan kan du gøre det? 824 00:43:21,990 --> 00:43:24,920 >> Så kommer ideen om et sprog model, som er noget virkelig 825 00:43:24,920 --> 00:43:26,870 vigtigt for beregningsmæssige lingvistik. 826 00:43:26,870 --> 00:43:32,790 Så en sprogmodel er dybest set en tabel af sandsynligheder, der viser 827 00:43:32,790 --> 00:43:36,260 først og fremmest hvad er sandsynligheden for at have ordet i et sprog? 828 00:43:36,260 --> 00:43:39,590 Så viser hvor ofte et ord. 829 00:43:39,590 --> 00:43:43,130 Og derefter også viser forholdet mellem ord i en sætning. 830 00:43:43,130 --> 00:43:51,500 >> Så den vigtigste idé er, at hvis en fremmed kom til dig og sagde en sætning til 831 00:43:51,500 --> 00:43:55,600 dig, hvad er sandsynligheden for, at for eksempel, "det er min søster [? GTF"?] 832 00:43:55,600 --> 00:43:57,480 var den sætning, at personen sagde? 833 00:43:57,480 --> 00:44:00,380 Så selvfølgelig nogle sætninger er mere udbredt end andre. 834 00:44:00,380 --> 00:44:04,450 For eksempel, "god morgen" eller "god nat, "eller" hey der, "er meget mere 835 00:44:04,450 --> 00:44:08,260 fælles end de fleste sætninger at vi har en engelsk. 836 00:44:08,260 --> 00:44:11,060 Så hvorfor er de sætninger hyppigere? 837 00:44:11,060 --> 00:44:14,060 >> Først og fremmest, er det fordi du har ord, der er mere hyppige. 838 00:44:14,060 --> 00:44:20,180 Så for eksempel, hvis du siger, at hunden er store, og hunden er gigantisk, du 839 00:44:20,180 --> 00:44:23,880 normalt sikkert høre hunden er stor oftere, fordi "store" er mere 840 00:44:23,880 --> 00:44:27,260 hyppige i engelsk end "gigantisk". Så en af 841 00:44:27,260 --> 00:44:30,100 ting er ordet frekvens. 842 00:44:30,100 --> 00:44:34,490 >> Den anden ting, som er virkelig vigtigt er bare 843 00:44:34,490 --> 00:44:35,490 Rækkefølgen af ​​ordene. 844 00:44:35,490 --> 00:44:39,500 Så det er almindeligt at sige "katten er inde i boksen. ", men du normalt ikke 845 00:44:39,500 --> 00:44:44,250 se i "Boksen inde er katten." så du se, at der er en vis betydning 846 00:44:44,250 --> 00:44:46,030 i den rækkefølge af ord. 847 00:44:46,030 --> 00:44:50,160 Du kan ikke bare sige, at de to sætninger har samme sandsynlighed 848 00:44:50,160 --> 00:44:53,010 bare fordi de har de samme ord. 849 00:44:53,010 --> 00:44:55,550 Du rent faktisk har til at pleje om orden samt. 850 00:44:55,550 --> 00:44:57,650 Mening? 851 00:44:57,650 --> 00:44:59,490 >> Så hvad gør vi? 852 00:44:59,490 --> 00:45:01,550 Så hvad jeg kan prøve at få dig? 853 00:45:01,550 --> 00:45:04,400 Jeg forsøger at få dig, hvad vi kalde n-gram-modeller. 854 00:45:04,400 --> 00:45:09,095 Så n-gram modeller dybest set antage at der for hvert ord, 855 00:45:09,095 --> 00:45:10,960 du har i en sætning. 856 00:45:10,960 --> 00:45:15,020 Det er sandsynligheden for at få at ord er der ikke kun afhænger af den 857 00:45:15,020 --> 00:45:18,395 frekvens af dette ord i sproget, men også på de ord, 858 00:45:18,395 --> 00:45:19,860 er omkring det. 859 00:45:19,860 --> 00:45:25,810 >> Så for eksempel, som regel, når du ser noget lignende på eller ved du 860 00:45:25,810 --> 00:45:28,040 sandsynligvis kommer til at se en navneord efter det, ikke? 861 00:45:28,040 --> 00:45:31,750 Fordi når du har en præposition normalt tager det et navneord efter den. 862 00:45:31,750 --> 00:45:35,540 Eller hvis du har et verbum, der er transitive du normalt kommer til at 863 00:45:35,540 --> 00:45:36,630 har et substantiv sætning. 864 00:45:36,630 --> 00:45:38,780 Så det kommer til at have et substantiv sted omkring den. 865 00:45:38,780 --> 00:45:44,950 >> Så dybest set, hvad det gør, er, at det mener, sandsynligheden for at have 866 00:45:44,950 --> 00:45:47,960 ord ved siden af ​​hinanden, når du beregne den 867 00:45:47,960 --> 00:45:49,050 sandsynlighed for en sætning. 868 00:45:49,050 --> 00:45:50,960 Og det er hvad et sprog Modellen er dybest set. 869 00:45:50,960 --> 00:45:54,620 Bare at sige, hvad der er sandsynligheden have en specifik 870 00:45:54,620 --> 00:45:57,120 sætning på et sprog? 871 00:45:57,120 --> 00:45:59,110 Så hvorfor er det nyttigt, dybest set? 872 00:45:59,110 --> 00:46:02,390 Og først og fremmest, hvad er en n-gram-modellen, så? 873 00:46:02,390 --> 00:46:08,850 >> Så en n-gram model betyder, at hvert ord afhænger 874 00:46:08,850 --> 00:46:12,700 næste N minus 1 ord. 875 00:46:12,700 --> 00:46:18,150 Så dybest set betyder det, at hvis jeg ser, for eksempel ved CS50 TF når 876 00:46:18,150 --> 00:46:21,500 Jeg beregne sandsynligheden for sætningen, vil du være ligesom "den 877 00:46:21,500 --> 00:46:25,280 sandsynligheden for at ordet "den" gange sandsynligheden for have " 878 00:46:25,280 --> 00:46:31,720 CS50 "gange sandsynligheden for at have "The CS50 TF". Så dybest set, jeg tæller 879 00:46:31,720 --> 00:46:35,720 alle muligheder for at strække det. 880 00:46:35,720 --> 00:46:41,870 >> Og så som regel, når du gør dette, som i et projekt, sætte dig på N for at være 881 00:46:41,870 --> 00:46:42,600 en lav værdi. 882 00:46:42,600 --> 00:46:45,930 Så normalt har bigrams eller trigrammer. 883 00:46:45,930 --> 00:46:51,090 Så du bare tælle to ord, et gruppe af to ord, eller tre ord, 884 00:46:51,090 --> 00:46:52,620 bare for problemer med ydeevnen. 885 00:46:52,620 --> 00:46:56,395 Og også fordi måske, hvis du har noget som "Den CS50 TF". Når du 886 00:46:56,395 --> 00:47:00,510 har "TF," det er meget vigtigt, at "CS50" er ved siden af ​​det, ikke? 887 00:47:00,510 --> 00:47:04,050 Disse to ting er som regel ved siden af ​​hinanden. 888 00:47:04,050 --> 00:47:06,410 >> Hvis du tænker på "TF", er det sandsynligvis nødt til, hvad 889 00:47:06,410 --> 00:47:07,890 klasse er det TF'ing efter. 890 00:47:07,890 --> 00:47:11,330 Også "den" er virkelig vigtigt for CS50 TF. 891 00:47:11,330 --> 00:47:14,570 Men hvis du har noget som "The CS50 TF gik til klassen og gav deres 892 00:47:14,570 --> 00:47:20,060 eleverne nogle slik. "" Candy "og" de " har nogen relation rigtig, vel? 893 00:47:20,060 --> 00:47:23,670 De er så langt fra hinanden, at Det er faktisk ligegyldigt, hvad 894 00:47:23,670 --> 00:47:25,050 ord, du har. 895 00:47:25,050 --> 00:47:31,210 >> Så ved at gøre en bigram eller en trigram, det betyder blot, at du begrænser 896 00:47:31,210 --> 00:47:33,430 dig selv til nogle ord der er omkring. 897 00:47:33,430 --> 00:47:35,810 Mening? 898 00:47:35,810 --> 00:47:40,630 Så når du ønsker at gøre segmentering, dybest set, hvad du ønsker at gøre, er at se 899 00:47:40,630 --> 00:47:44,850 hvad er alle de mulige måder, du kan segmentere sætningen. 900 00:47:44,850 --> 00:47:49,090 >> Sådan, at du se, hvad der er den sandsynligheden for hver af disse sætninger 901 00:47:49,090 --> 00:47:50,880 findes i sproget? 902 00:47:50,880 --> 00:47:53,410 Så hvad du skal gøre er ligesom, ja, lad mig prøve at sætte en plads her. 903 00:47:53,410 --> 00:47:55,570 Så du sætte en plads der og du kan se, hvad der er 904 00:47:55,570 --> 00:47:57,590 sandsynlighed for denne sætning? 905 00:47:57,590 --> 00:48:00,240 Så er du ligesom, OK, måske det var ikke så god. 906 00:48:00,240 --> 00:48:03,420 Så jeg sætte en plads der og et rum der, og du beregne 907 00:48:03,420 --> 00:48:06,240 sandsynlighed nu, og du kan se, at Det er en højere sandsynlighed. 908 00:48:06,240 --> 00:48:12,160 >> Så dette er en algoritme kaldet TANGO segmentering algoritme, som er 909 00:48:12,160 --> 00:48:14,990 faktisk noget, der ville være virkelig cool for et projekt, der 910 00:48:14,990 --> 00:48:20,860 dybest set tager unsegmented tekst, som kan være japansk eller kinesisk eller måske 911 00:48:20,860 --> 00:48:26,080 Engelsk uden mellemrum og forsøger at sætte mellemrum mellem ord og det gør 912 00:48:26,080 --> 00:48:29,120 at ved hjælp af en sprogmodel og forsøger at se, hvad der er den højeste 913 00:48:29,120 --> 00:48:31,270 sandsynlighed 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 >> Nu syntaks. 917 00:48:35,450 --> 00:48:40,940 Så er syntaks, der anvendes til så mange ting lige nu. 918 00:48:40,940 --> 00:48:44,880 Så for Graph Søg for Siri for stort set enhver form for naturlig 919 00:48:44,880 --> 00:48:46,490 sprogbehandling du har. 920 00:48:46,490 --> 00:48:49,140 Så hvad er det vigtige ting om syntaks? 921 00:48:49,140 --> 00:48:52,390 Så sætninger i almindelighed har hvad vi kalder vælgere. 922 00:48:52,390 --> 00:48:57,080 Hvilket er lidt ligesom grupper af ord der har en funktion i sætningen. 923 00:48:57,080 --> 00:49:02,220 Og de kan ikke rigtig være fra hinanden. 924 00:49:02,220 --> 00:49:07,380 >> Så hvis jeg siger, for eksempel, "Lauren elsker Milo. "Jeg ved, at" Lauren "er en 925 00:49:07,380 --> 00:49:10,180 konstituerende og derefter "elsker Milo "er også en anden. 926 00:49:10,180 --> 00:49:16,860 Fordi du ikke kan sige som "Lauren Milo vild "for at have samme mening. 927 00:49:16,860 --> 00:49:18,020 Det kommer ikke til at have den samme betydning. 928 00:49:18,020 --> 00:49:22,500 Eller jeg kan ikke sige som "Milo Lauren elsker. "Ikke alt har samme 929 00:49:22,500 --> 00:49:25,890 hvilket betyder at gøre det. 930 00:49:25,890 --> 00:49:31,940 >> Så de to mere vigtige ting om syntaks er leksikale typer, som er 931 00:49:31,940 --> 00:49:35,390 dybest set den funktion, du have for ord af sig selv. 932 00:49:35,390 --> 00:49:39,180 Så du er nødt til at vide, at "Lauren" og "Milo" er navneord. 933 00:49:39,180 --> 00:49:41,040 "Love" er et verbum. 934 00:49:41,040 --> 00:49:45,660 Og den anden vigtige ting er at de er phrasal typer. 935 00:49:45,660 --> 00:49:48,990 Så du ved, at "elsker Milo" er faktisk en verbal sætning. 936 00:49:48,990 --> 00:49:52,390 Så når jeg siger "Lauren," Jeg ved, at Lauren laver noget. 937 00:49:52,390 --> 00:49:53,620 Hvad laver hun? 938 00:49:53,620 --> 00:49:54,570 Hun kærlig Milo. 939 00:49:54,570 --> 00:49:56,440 Så det er et hele. 940 00:49:56,440 --> 00:50:01,640 Men dens komponenter er et navneord og et udsagnsord. 941 00:50:01,640 --> 00:50:04,210 Men sammen, de gør et verbum sætning. 942 00:50:04,210 --> 00:50:08,680 >> Så hvad kan vi egentlig gøre med datalingvistik? 943 00:50:08,680 --> 00:50:13,810 Så hvis jeg har noget for eksempel "venner af Allison." Jeg se, hvis jeg bare 944 00:50:13,810 --> 00:50:17,440 gjorde en syntaktisk træ jeg ville vide, at "Venner" er en substantiv sætning er det en 945 00:50:17,440 --> 00:50:21,480 navneord og derefter "af Allison" er en prepositional sætning hvor "af" er 946 00:50:21,480 --> 00:50:24,810 en proposition og "Allison" er et navneord. 947 00:50:24,810 --> 00:50:30,910 Hvad jeg kunne gøre, er at lære min computer at når jeg har en substantiv sætning én og 948 00:50:30,910 --> 00:50:33,080 derefter en prepositional sætning. 949 00:50:33,080 --> 00:50:39,020 Så i dette tilfælde, "venner" og derefter "af Milo "Jeg ved, at det betyder, at 950 00:50:39,020 --> 00:50:43,110 NP2, den anden ejer NP1. 951 00:50:43,110 --> 00:50:47,680 >> Så jeg kan skabe en form for relation, en slags funktion for det. 952 00:50:47,680 --> 00:50:52,370 Så hver gang jeg ser denne struktur, som matcher nøjagtigt med "venner af 953 00:50:52,370 --> 00:50:56,030 Allison, "Jeg ved, at Allison ejer venner. 954 00:50:56,030 --> 00:50:58,830 Så venner er noget at Allison har. 955 00:50:58,830 --> 00:50:59,610 Giver mening? 956 00:50:59,610 --> 00:51:01,770 Så det er dybest set, hvad Graf Søg gør. 957 00:51:01,770 --> 00:51:04,360 Det skaber bare regler for en masse ting. 958 00:51:04,360 --> 00:51:08,190 Så "venner af Allison", "mine venners der bor i Cambridge "," mine venner 959 00:51:08,190 --> 00:51:12,970 der går til Harvard. "Det skaber regler for alle disse ting. 960 00:51:12,970 --> 00:51:14,930 >> Nu maskinoversættelse. 961 00:51:14,930 --> 00:51:18,850 Så maskinoversættelse er også noget statistisk. 962 00:51:18,850 --> 00:51:21,340 Og faktisk, hvis du bliver involveret i datalingvistik, en masse af 963 00:51:21,340 --> 00:51:23,580 dine ting bliver statistik. 964 00:51:23,580 --> 00:51:26,670 Så som jeg lavede eksemplet med en masse sandsynligheder, at jeg var 965 00:51:26,670 --> 00:51:30,540 beregning, og derefter får du dette meget lille antal, der er den endelige 966 00:51:30,540 --> 00:51:33,180 sandsynlighed, og det er hvad giver dig svaret. 967 00:51:33,180 --> 00:51:37,540 Maskinoversættelse bruger også en statistisk model. 968 00:51:37,540 --> 00:51:44,790 Og hvis du ønsker at tænke på maskine oversættelse på den nemmest mulige 969 00:51:44,790 --> 00:51:48,970 måde, hvad du kan tænke er bare oversætte ord for ord, right? 970 00:51:48,970 --> 00:51:52,150 >> Når du lærer et sprog for første gang, det er normalt, hvad 971 00:51:52,150 --> 00:51:52,910 du gør, ikke? 972 00:51:52,910 --> 00:51:57,050 Hvis du vil kan du oversætte en sætning på dit sprog til sprog 973 00:51:57,050 --> 00:52:00,060 du lærer, som regel først, du oversætte hvert af ordene 974 00:52:00,060 --> 00:52:03,180 enkeltvis, og så skal du prøve at sætte ord på plads. 975 00:52:03,180 --> 00:52:07,100 >> Så hvis jeg ønskede at oversætte dette, [TALE PORTUGISISKE] 976 00:52:07,100 --> 00:52:10,430 som betyder "den hvide kat løb væk." Hvis jeg ønskede at oversætte det fra 977 00:52:10,430 --> 00:52:13,650 Portugisisk til engelsk, hvad jeg kunne gøre, er det første, jeg bare 978 00:52:13,650 --> 00:52:14,800 oversætte ord for ord. 979 00:52:14,800 --> 00:52:20,570 Så "o" er "," "gato", "kat", "Branco", "hvid", og derefter "fugio" er 980 00:52:20,570 --> 00:52:21,650 "Kørte derfra." 981 00:52:21,650 --> 00:52:26,130 >> Så har jeg alle de ord her, men de er ikke i orden. 982 00:52:26,130 --> 00:52:29,590 Det er ligesom "katten hvide løb væk" som er grammatisk ukorrekt. 983 00:52:29,590 --> 00:52:34,490 Så så jeg kan få et andet trin, som kommer til at finde den ideelle 984 00:52:34,490 --> 00:52:36,610 position for hvert af ordene. 985 00:52:36,610 --> 00:52:40,240 Så jeg ved, at jeg rent faktisk ønsker at have "Hvid kat" i stedet for "kat hvid." Så 986 00:52:40,240 --> 00:52:46,050 hvad jeg kan gøre, er, den mest naive metode ville være at skabe alle de 987 00:52:46,050 --> 00:52:49,720 mulige permutationer af ord af positioner. 988 00:52:49,720 --> 00:52:53,300 Og så se, hvor man har højeste sandsynlighed ifølge 989 00:52:53,300 --> 00:52:54,970 til mit sprog model. 990 00:52:54,970 --> 00:52:58,390 Og så når jeg finder den, der har den højeste sandsynlighed, hvilket er 991 00:52:58,390 --> 00:53:01,910 sandsynligvis "den hvide kat løb væk," det er min oversættelse. 992 00:53:01,910 --> 00:53:06,710 >> Og det er en enkel måde at forklare hvordan en masse af maskinoversættelse 993 00:53:06,710 --> 00:53:07,910 algoritmer virker. 994 00:53:07,910 --> 00:53:08,920 Giver det mening? 995 00:53:08,920 --> 00:53:12,735 Dette er også noget virkelig spændende at du fyre måske kan udforske for en 996 00:53:12,735 --> 00:53:13,901 afgangsprojekt, ja? 997 00:53:13,901 --> 00:53:15,549 >> STUDENT: Jamen, du sagde, at det var den naive måde, så hvad er 998 00:53:15,549 --> 00:53:17,200 den ikke-naive måde? 999 00:53:17,200 --> 00:53:18,400 >> LUCAS FREITAS: Den ikke-naive måde? 1000 00:53:18,400 --> 00:53:19,050 OK. 1001 00:53:19,050 --> 00:53:22,860 Så den første ting, der er dårligt om denne metode er, at jeg bare oversat 1002 00:53:22,860 --> 00:53:24,330 ord, ord for ord. 1003 00:53:24,330 --> 00:53:30,570 Men nogle gange har du ord, kan have flere oversættelser. 1004 00:53:30,570 --> 00:53:32,210 Jeg har tænkt mig at prøve at tænke af noget. 1005 00:53:32,210 --> 00:53:37,270 For eksempel, "manga" på portugisisk dåse enten være "mangle" eller "hylster". Så 1006 00:53:37,270 --> 00:53:40,450 når du forsøger at oversætte ord af ord, kan det være at give dig 1007 00:53:40,450 --> 00:53:42,050 noget, der ikke giver nogen mening. 1008 00:53:42,050 --> 00:53:45,770 >> Så du rent faktisk ønsker at du ser på alle de mulige oversættelser af 1009 00:53:45,770 --> 00:53:49,840 ord og se, først og fremmest, hvad er rækkefølgen. 1010 00:53:49,840 --> 00:53:52,000 Vi talte om permutating de ting? 1011 00:53:52,000 --> 00:53:54,150 Hvis du vil se alle de mulige ordrer, og vælge den ene med den højeste 1012 00:53:54,150 --> 00:53:54,990 sandsynlighed? 1013 00:53:54,990 --> 00:53:57,860 Man kan også vælge alle mulige oversættelser for hvert 1014 00:53:57,860 --> 00:54:00,510 ord og derefter se - 1015 00:54:00,510 --> 00:54:01,950 kombineret med permutationer - 1016 00:54:01,950 --> 00:54:03,710 hvor man har den højeste sandsynlighed. 1017 00:54:03,710 --> 00:54:08,590 >> Plus, kan du også se på ikke kun ord, men sætninger. 1018 00:54:08,590 --> 00:54:11,700 så du kan analysere forholdet mellem ord og derefter få en 1019 00:54:11,700 --> 00:54:13,210 bedre oversættelse. 1020 00:54:13,210 --> 00:54:16,690 Også noget andet, så dette semester Jeg er faktisk gør forskning i 1021 00:54:16,690 --> 00:54:19,430 Kinesisk-engelsk maskinoversættelse, så oversætte fra 1022 00:54:19,430 --> 00:54:20,940 Kinesisk til engelsk. 1023 00:54:20,940 --> 00:54:26,760 >> Og noget, vi gør, er, udover at bruge en statistisk model, som er lige 1024 00:54:26,760 --> 00:54:30,570 se sandsynlighederne for at se nogle position i en sætning, jeg er 1025 00:54:30,570 --> 00:54:35,360 faktisk også tilføje nogle syntaks til min model, sagde, åh, hvis jeg ser den slags 1026 00:54:35,360 --> 00:54:39,420 af bygning, dette er hvad jeg ønsker at ændre det til, når jeg oversætte. 1027 00:54:39,420 --> 00:54:43,880 Så du kan også tilføje nogle slags element i syntaks for at gøre 1028 00:54:43,880 --> 00:54:47,970 oversættelse mere effektiv og mere præcis. 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 til at gøre noget i datamatisk 1031 00:54:51,010 --> 00:54:51,980 lingvistik? 1032 00:54:51,980 --> 00:54:54,560 >> Først skal du vælge et projekt der involverer sprog. 1033 00:54:54,560 --> 00:54:56,310 Så der er så mange derude. 1034 00:54:56,310 --> 00:54:58,420 Der er så mange ting, du kan gøre. 1035 00:54:58,420 --> 00:55:00,510 Og så kan tænke på en model som du kan bruge. 1036 00:55:00,510 --> 00:55:04,710 Normalt det betyder at tænke på antagelser, som ligesom, åh, da jeg var 1037 00:55:04,710 --> 00:55:05,770 Ligesom at tænke på teksterne. 1038 00:55:05,770 --> 00:55:09,510 Jeg var ligesom, godt, hvis jeg ønsker at finde en der skrev dette, jeg sandsynligvis vil 1039 00:55:09,510 --> 00:55:15,400 til at se på de ord, den person, der anvendes og se, hvem der bruger det ord meget ofte. 1040 00:55:15,400 --> 00:55:18,470 Så prøv at gøre antagelser og prøv at tænke på modeller. 1041 00:55:18,470 --> 00:55:21,395 Og så kan du også søge online for den form for problem, du har, 1042 00:55:21,395 --> 00:55:24,260 og det kommer til at foreslå til jer modeller, der måske 1043 00:55:24,260 --> 00:55:26,560 modelleret at ting godt. 1044 00:55:26,560 --> 00:55:29,080 >> Og også du kan altid maile mig. 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 besvare dine spørgsmål. 1047 00:55:34,940 --> 00:55:38,600 Vi kan endda måske mødes, så jeg kan give forslag om, hvordan de 1048 00:55:38,600 --> 00:55:41,490 gennemføre dit projekt. 1049 00:55:41,490 --> 00:55:45,610 Og jeg mener, hvis du får involveret med datalingvistik, går det 1050 00:55:45,610 --> 00:55:46,790 at være stor. 1051 00:55:46,790 --> 00:55:48,370 Du kommer til at se, at der er så meget potentiale. 1052 00:55:48,370 --> 00:55:52,060 Og industrien ønsker at ansætte du så dårligt på grund af det. 1053 00:55:52,060 --> 00:55:54,720 Så jeg håber du fyre nød dette. 1054 00:55:54,720 --> 00:55:57,030 Hvis du fyre har nogen spørgsmål, du kan spørge mig efter dette. 1055 00:55:57,030 --> 00:55:58,280 Men tak. 1056 00:55:58,280 --> 00:56:00,150