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 Välkomna alla. 4 00:00:09,980 --> 00:00:11,216 Mitt namn är Lucas Freitas. 5 00:00:11,216 --> 00:00:15,220 Jag är en junior på [OHÖRBAR] studera datavetenskap med inriktning i 6 00:00:15,220 --> 00:00:16,410 datorlingvistik. 7 00:00:16,410 --> 00:00:19,310 Så min sekundära är på språket och språkteori. 8 00:00:19,310 --> 00:00:21,870 Jag är verkligen glad för att lära er lite om området. 9 00:00:21,870 --> 00:00:24,300 Det är ett väldigt spännande område att studera. 10 00:00:24,300 --> 00:00:27,260 Även med en stor potential för framtiden. 11 00:00:27,260 --> 00:00:30,160 Så, jag är verkligen glad att ni väger projekt i 12 00:00:30,160 --> 00:00:31,160 datorlingvistik. 13 00:00:31,160 --> 00:00:35,460 Och jag kommer att vara mer än glada att ge råd något av dig om du bestämmer dig för att 14 00:00:35,460 --> 00:00:37,090 bedriver någon av dem. 15 00:00:37,090 --> 00:00:40,010 >> Så först av allt det som är computational lingvistik? 16 00:00:40,010 --> 00:00:44,630 Så datorlingvistik är det skärningspunkten mellan lingvistik och 17 00:00:44,630 --> 00:00:46,390 datavetenskap. 18 00:00:46,390 --> 00:00:47,415 Så, vad är lingvistik? 19 00:00:47,415 --> 00:00:48,490 Vad är datavetenskap? 20 00:00:48,490 --> 00:00:51,580 Tja från lingvistik, vad vi tar är de språk. 21 00:00:51,580 --> 00:00:54,960 Så lingvistikk är faktiskt studien av naturligt språk i allmänhet. 22 00:00:54,960 --> 00:00:58,330 Så naturligt språk - vi talar om språk som vi faktiskt använder till 23 00:00:58,330 --> 00:00:59,770 kommunicera med varandra. 24 00:00:59,770 --> 00:01:02,200 Så vi är inte precis talar om C eller Java. 25 00:01:02,200 --> 00:01:05,900 Vi pratar mer om engelska och Kinesiska och andra språk som vi 26 00:01:05,900 --> 00:01:07,780 använder för att kommunicera med varandra. 27 00:01:07,780 --> 00:01:12,470 >> Den utmanande sak om det är att just nu har vi nästan 7000 28 00:01:12,470 --> 00:01:14,260 språk i världen. 29 00:01:14,260 --> 00:01:19,520 Så det finns en ganska stor variation språk som vi kan studera. 30 00:01:19,520 --> 00:01:22,600 Och då du tror att det är nog mycket svårt att göra, till exempel, 31 00:01:22,600 --> 00:01:26,960 översättning från ett språk till andra, med tanke på att du har 32 00:01:26,960 --> 00:01:28,240 nästan 7.000 av dem. 33 00:01:28,240 --> 00:01:31,450 Så, om du tänker på att göra översättning från ett språk till den andra du 34 00:01:31,450 --> 00:01:35,840 har nästan mer än en miljon olika kombinationer som du kan 35 00:01:35,840 --> 00:01:37,330 har från språk till språk. 36 00:01:37,330 --> 00:01:40,820 Så det är verkligen en utmaning att göra en del typ av exempel översättningssystemet för 37 00:01:40,820 --> 00:01:43,540 varje språk. 38 00:01:43,540 --> 00:01:47,120 >> Så, lingvistik behandlar med syntax, semantik, pragmatik. 39 00:01:47,120 --> 00:01:49,550 Ni behöver inte exakt behöver att veta vad de är. 40 00:01:49,550 --> 00:01:55,090 Men mycket intressant sak är att som en infödd talare, när du lär dig 41 00:01:55,090 --> 00:01:59,010 språk som barn, du faktiskt lära alla dessa saker - syntax semantik 42 00:01:59,010 --> 00:02:00,500 och pragmatik - 43 00:02:00,500 --> 00:02:01,430 själv. 44 00:02:01,430 --> 00:02:04,820 Och ingen har att lära dig syntax för dig att förstå hur meningar är 45 00:02:04,820 --> 00:02:05,290 strukturerad. 46 00:02:05,290 --> 00:02:07,980 Så det är verkligen intressant eftersom det är något som kommer mycket 47 00:02:07,980 --> 00:02:10,389 intuitivt. 48 00:02:10,389 --> 00:02:13,190 >> Och vad är det du tar från i datavetenskap? 49 00:02:13,190 --> 00:02:16,700 Tja, är det viktigaste att vi har i datavetenskap är först i 50 00:02:16,700 --> 00:02:19,340 alla, artificiell intelligens och maskininlärning. 51 00:02:19,340 --> 00:02:22,610 Så, vad vi försöker att göra datorlingvistik är teach 52 00:02:22,610 --> 00:02:26,990 datorn hur man gör något med språket. 53 00:02:26,990 --> 00:02:28,630 >> Så, till exempel, i maskin översättning. 54 00:02:28,630 --> 00:02:32,490 Jag försöker lära min dator hur att veta hur övergången från en 55 00:02:32,490 --> 00:02:33,310 språk till ett annat. 56 00:02:33,310 --> 00:02:35,790 Så i princip gillar undervisning en dator två språk. 57 00:02:35,790 --> 00:02:38,870 Om jag gör naturligt språk, vilket är fallet till exempel om 58 00:02:38,870 --> 00:02:41,810 Facebooks Graph Sök, lär dig datorn hur man kan förstå 59 00:02:41,810 --> 00:02:42,730 frågor väl. 60 00:02:42,730 --> 00:02:48,130 >> Så, om du säger "bilderna av min vänner. "Facebook behandlar inte att 61 00:02:48,130 --> 00:02:51,130 som helhet sträng som har bara en massa ord. 62 00:02:51,130 --> 00:02:56,020 Det förstår faktiskt relationen mellan "foton" och "mina vänner" och 63 00:02:56,020 --> 00:02:59,620 förstår att "bilder" är egenskap av "mina vänner." 64 00:02:59,620 --> 00:03:02,350 >> Så, det är en del av, till exempel, naturligt språk. 65 00:03:02,350 --> 00:03:04,790 Den försöker att förstå vad är relationen mellan 66 00:03:04,790 --> 00:03:07,520 orden i en mening. 67 00:03:07,520 --> 00:03:11,170 Och den stora frågan är, kan du lära en dator hur man talar 68 00:03:11,170 --> 00:03:12,650 ett språk i allmänhet? 69 00:03:12,650 --> 00:03:17,810 Vilket är en mycket intressant fråga att tänka, som om kanske i framtiden, 70 00:03:17,810 --> 00:03:19,930 du kommer att kunna tala med din mobiltelefon. 71 00:03:19,930 --> 00:03:23,290 Ungefär som vad vi gör med Siri, men något mer som kan du faktiskt 72 00:03:23,290 --> 00:03:25,690 säga vad du vill och telefonen kommer att förstå allt. 73 00:03:25,690 --> 00:03:28,350 Och det kan få följa upp frågor och fortsätta prata. 74 00:03:28,350 --> 00:03:30,880 Det är något riktigt spännande, i min mening. 75 00:03:30,880 --> 00:03:33,070 >> Så något om naturliga språk. 76 00:03:33,070 --> 00:03:36,220 Något riktigt intressant naturliga språk är att, och detta är 77 00:03:36,220 --> 00:03:38,470 kredit till min lingvistik professor, Maria Polinsky. 78 00:03:38,470 --> 00:03:40,830 Hon ger ett exempel och jag tror det är verkligen intressant. 79 00:03:40,830 --> 00:03:47,060 Därför att vi lär oss språk när vi föds och sedan vår infödda 80 00:03:47,060 --> 00:03:49,170 språk slags växer på oss. 81 00:03:49,170 --> 00:03:52,570 >> Och i grund och botten att du lär dig språk från minimal input, eller hur? 82 00:03:52,570 --> 00:03:56,700 Du bara få input från din föräldrar om vad ditt språk låter 83 00:03:56,700 --> 00:03:58,770 gillar och du bara lära sig det. 84 00:03:58,770 --> 00:04:02,240 Så det är intressant, för om man tittar på dessa meningar, till exempel. 85 00:04:02,240 --> 00:04:06,980 Du ser, "Mary sätter på en kappa varje När hon lämnar huset. " 86 00:04:06,980 --> 00:04:10,650 >> I detta fall är det möjligt att ha ordet "hon" avser Mary, eller hur? 87 00:04:10,650 --> 00:04:13,500 Du kan säga "Mary sätter på en kappa varje gång Maria lämnar 88 00:04:13,500 --> 00:04:14,960 hus. ", så det är bra. 89 00:04:14,960 --> 00:04:19,370 Men sedan om man tittar på den mening "Hon sätter på sig en kappa varje gång Mary 90 00:04:19,370 --> 00:04:22,850 lämnar huset. "du vet att det är omöjligt att säga att "hon" är 91 00:04:22,850 --> 00:04:24,260 hänvisning till Maria. 92 00:04:24,260 --> 00:04:27,070 >> Det finns inget sätt att säga att "Mary sätter på ett lager varje gång Mary lämnar 93 00:04:27,070 --> 00:04:30,790 huset. "Så det är intressant eftersom Detta är den typ av intuition 94 00:04:30,790 --> 00:04:32,890 att varje modersmål har. 95 00:04:32,890 --> 00:04:36,370 Och ingen fick lära mig att det här är det sätt som syntaxen fungerar. 96 00:04:36,370 --> 00:04:41,930 Och att du bara kan ha denna "henne" hänvisar till Maria i det här första fallet 97 00:04:41,930 --> 00:04:44,260 och faktiskt i denna andra också, men inte i det här en. 98 00:04:44,260 --> 00:04:46,500 Men alla typer av får till samma svar. 99 00:04:46,500 --> 00:04:48,580 Alla är överens om det. 100 00:04:48,580 --> 00:04:53,280 Så det är verkligen intressant hur även du vet inte alla regler 101 00:04:53,280 --> 00:04:55,575 på ditt språk du slags förstå hur språket fungerar. 102 00:04:55,575 --> 00:04:59,020 103 00:04:59,020 --> 00:05:01,530 >> Så det intressanta med naturlig språket är att du inte behöver 104 00:05:01,530 --> 00:05:06,970 vet någon syntax för att veta om en mening är grammatisk eller ungrammatical för 105 00:05:06,970 --> 00:05:08,810 de flesta fall. 106 00:05:08,810 --> 00:05:13,220 Vilket gör att du tror att det kanske vad händer är att genom ditt liv, du 107 00:05:13,220 --> 00:05:17,410 blir bara mer och mer meningar sa till dig. 108 00:05:17,410 --> 00:05:19,800 Och sedan hålla memorera alla meningar. 109 00:05:19,800 --> 00:05:24,230 Och sedan när någon säger till dig något, hör du denna mening och 110 00:05:24,230 --> 00:05:27,040 du tittar på ditt ordförråd meningar och se om 111 00:05:27,040 --> 00:05:28,270 den meningen är det. 112 00:05:28,270 --> 00:05:29,830 Och om det är det du säger att det är grammatiskt. 113 00:05:29,830 --> 00:05:31,740 Om det inte är du säger att det är ungrammatical. 114 00:05:31,740 --> 00:05:35,150 >> Så i så fall skulle du säga, åh, så att du har en enorm lista med alla 115 00:05:35,150 --> 00:05:36,140 möjliga meningar. 116 00:05:36,140 --> 00:05:38,240 Och sedan när du hör en mening, du vet om det är grammatiska eller 117 00:05:38,240 --> 00:05:39,450 inte på det. 118 00:05:39,450 --> 00:05:42,360 Saken är den att om man tittar på en mening, till exempel, "The 119 00:05:42,360 --> 00:05:47,540 fem-hövdade CS50 TF tillagas blinda bläckfisk med en DAPA mugg. "Det är 120 00:05:47,540 --> 00:05:49,630 definitivt inte en mening som ni hört tidigare. 121 00:05:49,630 --> 00:05:52,380 Men samtidigt som du vet att det är ganska mycket grammatiska, eller hur? 122 00:05:52,380 --> 00:05:55,570 Det finns inga grammatiska fel och man kan säga att 123 00:05:55,570 --> 00:05:57,020 det är en möjlig mening. 124 00:05:57,020 --> 00:06:01,300 >> Så det får oss att tro att faktiskt sätt som vi lär oss språket är inte bara 125 00:06:01,300 --> 00:06:07,090 genom att ha en enorm databas med möjliga ord eller meningar, men mer av 126 00:06:07,090 --> 00:06:11,490 förstå sambandet mellan ord i dessa meningar. 127 00:06:11,490 --> 00:06:14,570 Låter det vettigt? 128 00:06:14,570 --> 00:06:19,370 Så, då är frågan, kan datorer lära sig språk? 129 00:06:19,370 --> 00:06:21,490 Kan vi lära ut språk till datorer? 130 00:06:21,490 --> 00:06:24,230 >> Så, låt oss tänka på skillnaden mellan en infödd talare av ett språk 131 00:06:24,230 --> 00:06:25,460 och en dator. 132 00:06:25,460 --> 00:06:27,340 Så, vad händer med högtalaren? 133 00:06:27,340 --> 00:06:30,430 Tja, lär en infödda talare språk från exponering för det. 134 00:06:30,430 --> 00:06:34,200 Beräknad dess tidiga barnaåren. 135 00:06:34,200 --> 00:06:38,570 Så i princip, du bara har ett barn, och du fortsätter att prata med det, och det 136 00:06:38,570 --> 00:06:40,540 bara lär sig att tala språket, eller hur? 137 00:06:40,540 --> 00:06:42,660 Så, är du i princip ge insignal till barnet. 138 00:06:42,660 --> 00:06:45,200 Så, då kan man hävda att en dator kan göra samma sak, eller hur? 139 00:06:45,200 --> 00:06:49,510 Du kan bara ge språk som input till datorn. 140 00:06:49,510 --> 00:06:53,410 >> Som till exempel en grupp av filer som har böcker på engelska. 141 00:06:53,410 --> 00:06:56,190 Kanske är det ett sätt att du skulle kunna lära ut en 142 00:06:56,190 --> 00:06:57,850 Datorn engelska, eller hur? 143 00:06:57,850 --> 00:07:01,000 Och faktiskt, om man tänker på det, det tar kanske ett par 144 00:07:01,000 --> 00:07:02,680 dagar att läsa en bok. 145 00:07:02,680 --> 00:07:05,760 För en dator det tar en sekund att titta på alla ord i en bok. 146 00:07:05,760 --> 00:07:10,810 Så du kan tänka som kan vara just detta argument av input från omkring dig, 147 00:07:10,810 --> 00:07:15,440 det räcker inte att säga att det är något som bara människor kan göra. 148 00:07:15,440 --> 00:07:17,680 Du kan tänka datorer kan också få input. 149 00:07:17,680 --> 00:07:21,170 >> Det andra är att infödda talare också har en hjärna som har 150 00:07:21,170 --> 00:07:23,870 språkinlärning förmåga. 151 00:07:23,870 --> 00:07:27,020 Men om man tänker på det, en hjärna är en solid sak. 152 00:07:27,020 --> 00:07:30,450 När du är född, det är redan inställd - 153 00:07:30,450 --> 00:07:31,320 detta är din hjärna. 154 00:07:31,320 --> 00:07:34,660 Och när du växer upp, du bara få mer inmatning av språk och kanske näringsämnen 155 00:07:34,660 --> 00:07:35,960 och andra saker. 156 00:07:35,960 --> 00:07:38,170 Men ganska mycket din hjärna är en fast sak. 157 00:07:38,170 --> 00:07:41,290 >> Så du kan säga, ja, kanske du kan bygga en dator som har ett gäng 158 00:07:41,290 --> 00:07:45,890 funktioner och metoder som bara efterliknar språkinlärning förmåga. 159 00:07:45,890 --> 00:07:49,630 Så i den meningen kan man säga, ja, jag kan ha en dator som har alla 160 00:07:49,630 --> 00:07:52,270 saker som jag behöver för att lära sig språket. 161 00:07:52,270 --> 00:07:56,200 Och det sista är att en infödd högtalare lär sig av försök och misstag. 162 00:07:56,200 --> 00:08:01,090 Så i princip en annan viktig sak i språkinlärning är att du snäll 163 00:08:01,090 --> 00:08:05,340 av lära sig saker genom att göra generaliseringar av det du hör. 164 00:08:05,340 --> 00:08:10,280 >> Så när du växer upp du lära dig att vissa ord är mer som substantiv, 165 00:08:10,280 --> 00:08:11,820 några andra som är adjektiv. 166 00:08:11,820 --> 00:08:14,250 Och du behöver inte ha någon kunskaper i lingvistik 167 00:08:14,250 --> 00:08:15,040 för att förstå det. 168 00:08:15,040 --> 00:08:18,560 Men du bara vet att det finns vissa ord är positionerade i någon del av 169 00:08:18,560 --> 00:08:22,570 mening och några andra i andra delar av meningen. 170 00:08:22,570 --> 00:08:26,110 >> Och att när du gör något som är som en mening som inte är korrekt - 171 00:08:26,110 --> 00:08:28,770 kanske på grund av en över generalisering till exempel. 172 00:08:28,770 --> 00:08:32,210 Kanske när du växer upp, märker du att plural är vanligtvis 173 00:08:32,210 --> 00:08:35,809 bildas genom att sätta ett S på i slutet av ordet. 174 00:08:35,809 --> 00:08:40,042 Och sedan försöka göra plural av "deer" som "rådjur" eller "tand" som 175 00:08:40,042 --> 00:08:44,780 "tooths." Så då dina föräldrar eller någon rättar dig och säger, nej, det 176 00:08:44,780 --> 00:08:49,020 plural av "hjort" är "hjort," och plural av "tand" är "tänder." Och sedan 177 00:08:49,020 --> 00:08:50,060 du lär dig dessa saker. 178 00:08:50,060 --> 00:08:51,520 Så du lär av försök och misstag. 179 00:08:51,520 --> 00:08:53,100 >> Men du kan också göra det med en dator. 180 00:08:53,100 --> 00:08:55,310 Du kan ha något som kallas inlärningsförstärkning. 181 00:08:55,310 --> 00:08:58,560 Vilket egentligen är som att ge en dator en belöning närhelst den gör 182 00:08:58,560 --> 00:08:59,410 något korrekt. 183 00:08:59,410 --> 00:09:04,710 Och ge det motsatsen till en belöning och när den gör något fel. 184 00:09:04,710 --> 00:09:07,410 Du kan faktiskt se att om du går till Google Translate och du försöker 185 00:09:07,410 --> 00:09:10,220 översätta en mening, det ber dig om feedback. 186 00:09:10,220 --> 00:09:13,240 Så om du säger, åh, det finns en bättre översättning av denna mening. 187 00:09:13,240 --> 00:09:18,140 Du kan skriva upp det och sedan om en hel del folk säger det är en bättre 188 00:09:18,140 --> 00:09:21,560 översättning, bara lär sig det att det bör använda den översättningen i stället för 189 00:09:21,560 --> 00:09:22,960 den som den gav. 190 00:09:22,960 --> 00:09:28,830 >> Så det är en mycket filosofisk fråga för att se om datorer kommer att vara 191 00:09:28,830 --> 00:09:30,340 kunna prata eller inte i framtiden. 192 00:09:30,340 --> 00:09:34,440 Men jag har stora förhoppningar om att de kan bara baserat på dessa argument. 193 00:09:34,440 --> 00:09:38,570 Men det är bara mer av en filosofisk fråga. 194 00:09:38,570 --> 00:09:43,460 >> Så medan datorer fortfarande inte kan prata, vad är det som vi kan göra? 195 00:09:43,460 --> 00:09:47,070 Några riktigt coola saker är data klassificering. 196 00:09:47,070 --> 00:09:53,210 Så, till exempel, ni vet att e-tjänster gör, för 197 00:09:53,210 --> 00:09:55,580 exempel filtrering av skräppost. 198 00:09:55,580 --> 00:09:59,070 Så när du får skräppost, det försöker att välja en annan låda. 199 00:09:59,070 --> 00:10:00,270 Så hur går det göra det? 200 00:10:00,270 --> 00:10:06,080 Det är inte som att datorn bara vet vad e-postadresser att skicka skräppost. 201 00:10:06,080 --> 00:10:09,130 Så det är mer baserat på innehållet i meddelandet, eller kanske titeln, eller 202 00:10:09,130 --> 00:10:11,310 kanske något mönster som du har. 203 00:10:11,310 --> 00:10:15,690 >> Så, i grund och botten, vad du kan göra är att få en mycket data i e-postmeddelanden som är skräppost, 204 00:10:15,690 --> 00:10:19,980 e-post som inte är spam, och lära sig vad typ av mönster du har i 205 00:10:19,980 --> 00:10:21,000 de som är spam. 206 00:10:21,000 --> 00:10:23,260 Och detta är en del av beräknings lingvistik. 207 00:10:23,260 --> 00:10:24,720 Det kallas data klassificering. 208 00:10:24,720 --> 00:10:28,100 Och vi faktiskt kommer att se en exempel på detta i nästa diabilder. 209 00:10:28,100 --> 00:10:32,910 >> Det andra är naturligt språk behandling som är det som den 210 00:10:32,910 --> 00:10:36,580 Diagram Search gör att låta du skriver en mening. 211 00:10:36,580 --> 00:10:38,690 Och det litar på att du förstår vad är innebörden och ger 212 00:10:38,690 --> 00:10:39,940 du ett bättre resultat. 213 00:10:39,940 --> 00:10:43,880 Egentligen, om du går till Google eller Bing och du söker något som Lady 214 00:10:43,880 --> 00:10:47,060 Gagas höjd, du faktiskt kommer att få 5 "1" istället för informations 215 00:10:47,060 --> 00:10:50,170 från henne eftersom det faktiskt förstår vad du pratar om. 216 00:10:50,170 --> 00:10:52,140 Så det är en del av den naturliga språkbehandling. 217 00:10:52,140 --> 00:10:57,000 >> Eller även när du använder Siri, först du har en algoritm som försöker 218 00:10:57,000 --> 00:11:01,130 översätta vad du säger i ord, i text. 219 00:11:01,130 --> 00:11:03,690 Och sedan försöker att översätta som i mening. 220 00:11:03,690 --> 00:11:06,570 Så det är en del av naturliga språkbehandling. 221 00:11:06,570 --> 00:11:08,320 >> Då har du maskinöversättning - 222 00:11:08,320 --> 00:11:10,300 som faktiskt är en av mina favoriter - 223 00:11:10,300 --> 00:11:14,060 som bara är att översätta från ett språk till ett annat. 224 00:11:14,060 --> 00:11:17,950 Så du kan tro att när du gör maskinöversättning, har du 225 00:11:17,950 --> 00:11:19,750 oändliga möjligheter av meningar. 226 00:11:19,750 --> 00:11:22,960 Så det finns inget sätt att bara lagra varenda översättning. 227 00:11:22,960 --> 00:11:27,440 Så du har att komma med intressanta algoritmer för att kunna 228 00:11:27,440 --> 00:11:30,110 översätta varje enskild mening på något sätt. 229 00:11:30,110 --> 00:11:32,483 >> Ni har några frågor så här långt? 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å vad ska vi se idag? 233 00:11:36,900 --> 00:11:39,300 Först och främst kommer jag att tala om klassificeringsproblem. 234 00:11:39,300 --> 00:11:41,440 Så det som jag var säger om spam. 235 00:11:41,440 --> 00:11:46,820 Vad jag ska göra är, givna texter på en låt, kan du försöka lista ut 236 00:11:46,820 --> 00:11:49,810 med hög sannolikhet som är sångaren? 237 00:11:49,810 --> 00:11:53,590 Låt oss säga att jag har låtar från Lady Gaga och Katy Perry, om jag ger dig en 238 00:11:53,590 --> 00:11:58,130 ny låt, kan du räkna ut om det är Katy Perry och Lady Gaga? 239 00:11:58,130 --> 00:12:01,490 >> Den andra, jag ska bara prata om segmenteringsproblem. 240 00:12:01,490 --> 00:12:05,780 Så jag vet inte om ni vet, men Kinesiska, japanska, andra östasiatiska 241 00:12:05,780 --> 00:12:08,090 språk och andra språk i allmänhet, inte har 242 00:12:08,090 --> 00:12:09,830 mellanslag mellan orden. 243 00:12:09,830 --> 00:12:13,540 Och sedan om man tänker på det sätt som datorn typ av försök att 244 00:12:13,540 --> 00:12:18,600 förstå naturligt språk, det ser ut på orden och 245 00:12:18,600 --> 00:12:21,500 försöker förstå sambanden mellan dem, eller hur? 246 00:12:21,500 --> 00:12:25,440 Men sedan om du har kinesiska, och du har noll platser, det är verkligen svårt att 247 00:12:25,440 --> 00:12:28,360 reda på vad som är förhållandet mellan ord, eftersom de inte har någon 248 00:12:28,360 --> 00:12:29,530 ord i början. 249 00:12:29,530 --> 00:12:32,600 Så du måste göra något som kallas segmentering som just innebär att sätta 250 00:12:32,600 --> 00:12:36,490 utrymmen mellan vad vi skulle kalla ord på dessa språk. 251 00:12:36,490 --> 00:12:37,740 Vettigt? 252 00:12:37,740 --> 00:12:39,680 253 00:12:39,680 --> 00:12:41,540 >> Och sedan ska vi prata om syntax. 254 00:12:41,540 --> 00:12:44,050 Så bara lite om naturliga språkbehandling. 255 00:12:44,050 --> 00:12:45,420 Det kommer att vara bara en översikt. 256 00:12:45,420 --> 00:12:50,700 Så idag, i princip vad jag vill göra är att ge er en liten bit av en 257 00:12:50,700 --> 00:12:53,930 insidan av vilka möjligheter som du kan göra med beräknings 258 00:12:53,930 --> 00:12:54,960 lingvistik. 259 00:12:54,960 --> 00:13:00,410 Och sedan kan du se vad du tycker är coolt bland dessa saker. 260 00:13:00,410 --> 00:13:02,270 Och kanske kan du komma på ett projekt och kommer prata med mig. 261 00:13:02,270 --> 00:13:05,260 Och jag kan ge dig råd om hur man ska genomföra det. 262 00:13:05,260 --> 00:13:09,060 >> Så syntax kommer att vara lite om Graph Sök och maskin 263 00:13:09,060 --> 00:13:09,670 översättning. 264 00:13:09,670 --> 00:13:13,650 Jag ska bara ge ett exempel på hur du kan till exempel översätta 265 00:13:13,650 --> 00:13:16,020 något från portugisiska till engelska. 266 00:13:16,020 --> 00:13:17,830 Låter bra? 267 00:13:17,830 --> 00:13:19,293 >> Så först, klassificeringsproblem. 268 00:13:19,293 --> 00:13:23,590 Jag ska säga att denna del av seminariet kommer att vara den mest utmanande 269 00:13:23,590 --> 00:13:27,560 man bara för att det kommer vara någon kodning. 270 00:13:27,560 --> 00:13:29,470 Men det kommer att bli Python. 271 00:13:29,470 --> 00:13:34,380 Jag vet inte vet ni Python, så Jag kommer bara att förklara den höga 272 00:13:34,380 --> 00:13:35,750 nivå vad jag gör. 273 00:13:35,750 --> 00:13:40,900 Och du behöver inte verkligen bryr sig för mycket om syntaxen eftersom det är 274 00:13:40,900 --> 00:13:42,140 något ni kan lära sig. 275 00:13:42,140 --> 00:13:42,540 OK? 276 00:13:42,540 --> 00:13:43,580 Låter bra. 277 00:13:43,580 --> 00:13:46,020 >> Så vad är det klassificeringsproblem? 278 00:13:46,020 --> 00:13:49,140 Så du gett några texter till en sång, och du vill gissa 279 00:13:49,140 --> 00:13:50,620 vem sjunger den. 280 00:13:50,620 --> 00:13:54,045 Och detta kan vara för någon form andra problem. 281 00:13:54,045 --> 00:13:59,980 Så det kan vara, till exempel, har du presidentvalskampanjen och du har en 282 00:13:59,980 --> 00:14:02,610 tal, och du vill hitta reda på om det var, till exempel, 283 00:14:02,610 --> 00:14:04,470 Obama eller Mitt Romney. 284 00:14:04,470 --> 00:14:07,700 Eller så kan du få en massa e-post och du vill ta reda på om de är 285 00:14:07,700 --> 00:14:08,890 spam eller inte. 286 00:14:08,890 --> 00:14:11,440 Så det är bara att klassificera vissa data baserat på orden 287 00:14:11,440 --> 00:14:13,790 att du har det. 288 00:14:13,790 --> 00:14:16,295 >> Så för att göra det måste du göra vissa antaganden. 289 00:14:16,295 --> 00:14:20,570 Så mycket om datorlingvistik gör antaganden, 290 00:14:20,570 --> 00:14:24,100 oftast smarta antaganden, så att du kan få bra resultat. 291 00:14:24,100 --> 00:14:26,670 Att försöka skapa en modell för det. 292 00:14:26,670 --> 00:14:31,290 Och sedan prova det och se om det fungerar, Om det ger dig bra precision. 293 00:14:31,290 --> 00:14:33,940 Och om den gör det, då du försöka förbättra det. 294 00:14:33,940 --> 00:14:37,640 Om den inte gör, du gillar, OK, kanske jag bör göra en annan antagande. 295 00:14:37,640 --> 00:14:44,030 >> Så antagandet att vi ska göra är att en artist sjunger oftast 296 00:14:44,030 --> 00:14:49,220 om ett ämne flera gånger, och kanske använder ord flera gånger bara 297 00:14:49,220 --> 00:14:50,270 eftersom de är vana vid det. 298 00:14:50,270 --> 00:14:51,890 Du kan bara tänka på din vän. 299 00:14:51,890 --> 00:14:57,350 Jag är säker på att ni alla har vänner som säger att deras signaturfras, 300 00:14:57,350 --> 00:14:59,260 bokstavligen varenda mening - 301 00:14:59,260 --> 00:15:02,660 som något specifikt ord eller någon specifik fras som de säger för 302 00:15:02,660 --> 00:15:04,020 varenda mening. 303 00:15:04,020 --> 00:15:07,920 >> Och vad man kan säga är att om du ser en mening som har en signatur 304 00:15:07,920 --> 00:15:11,450 fras, kan du gissa att förmodligen din vän är den 305 00:15:11,450 --> 00:15:13,310 man säger det, eller hur? 306 00:15:13,310 --> 00:15:18,410 Så du gör det antagandet och därefter det är hur du skapar en modell. 307 00:15:18,410 --> 00:15:24,440 >> Exemplet som jag ska ge är på hur Lady Gaga, t.ex. människor 308 00:15:24,440 --> 00:15:27,430 säger att hon använder "baby" för alla hennes nummer ett sånger. 309 00:15:27,430 --> 00:15:32,270 Och faktiskt detta är en video som visar hon säger ordet "baby" för 310 00:15:32,270 --> 00:15:33,410 olika låtar. 311 00:15:33,410 --> 00:15:33,860 >> [VIDEO SPELA] 312 00:15:33,860 --> 00:15:34,310 >> - (Sång) 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 VIDEOAVSPELNING- 323 00:15:41,090 --> 00:15:44,020 >> LUCAS FREITAS: Så det finns, tror jag, 40 låtar här där hon säger det 324 00:15:44,020 --> 00:15:48,690 Ordet "behandla". Så du kan i princip gissa att om du ser en låt som har 325 00:15:48,690 --> 00:15:52,180 ordet "baby", det finns några höga Sannolikheten att det är Lady Gaga. 326 00:15:52,180 --> 00:15:56,450 Men låt oss försöka utveckla detta ytterligare mer formellt. 327 00:15:56,450 --> 00:16:00,470 >> Så dessa är texter till låtar av Lady Gaga och Katy Perry. 328 00:16:00,470 --> 00:16:04,120 Så du tittar på Lady Gaga, ser du de har en hel del händelser av "baby", en 329 00:16:04,120 --> 00:16:07,710 många förekomster av "sätt." Och sedan Katy Perry har en hel del förekomster av 330 00:16:07,710 --> 00:16:10,360 "Det," en hel del förekomster av "eld". 331 00:16:10,360 --> 00:16:14,560 >> Så i princip vad vi vill göra är, du får en lyrisk. 332 00:16:14,560 --> 00:16:20,480 Låt oss säga att du får en text för en låt som är "baby," bara "barn." Om 333 00:16:20,480 --> 00:16:24,750 du bara få ordet "baby", och detta är alla data som du har från 334 00:16:24,750 --> 00:16:27,880 Lady Gaga och Katy Perry, som skulle du gissar är den person 335 00:16:27,880 --> 00:16:29,370 som sjunger låten? 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, eller hur? 338 00:16:33,150 --> 00:16:37,400 För att hon är den enda som säger "Baby". Det låter dumt, eller hur? 339 00:16:37,400 --> 00:16:38,760 OK, det här är verkligen lätt. 340 00:16:38,760 --> 00:16:41,860 Jag bara tittar på de två låtar och Naturligtvis är hon den enda som har 341 00:16:41,860 --> 00:16:42,660 "Baby". 342 00:16:42,660 --> 00:16:44,740 >> Men om du har en massa ord? 343 00:16:44,740 --> 00:16:50,900 Om du har en verklig lyrik, något liknande, "baby, jag bara 344 00:16:50,900 --> 00:16:51,610 gick för att se en [? CFT?] 345 00:16:51,610 --> 00:16:54,020 föreläsning, "eller något liknande, och då du faktiskt måste lista ut - 346 00:16:54,020 --> 00:16:55,780 baserad på alla dessa ord - 347 00:16:55,780 --> 00:16:58,350 vem är konstnären som troligen sjöng den här låten? 348 00:16:58,350 --> 00:17:01,860 Så låt oss försöka utveckla detta lite längre. 349 00:17:01,860 --> 00:17:05,630 >> OK, så grundar sig bara på de data som vi fick, verkar det som Gaga är nog 350 00:17:05,630 --> 00:17:06,260 sångaren. 351 00:17:06,260 --> 00:17:07,904 Men hur kan vi skriva detta mer formellt? 352 00:17:07,904 --> 00:17:10,579 353 00:17:10,579 --> 00:17:13,140 Och det kommer att vara lite lite statistik. 354 00:17:13,140 --> 00:17:15,880 Så om du går vilse, bara prova förstå konceptet. 355 00:17:15,880 --> 00:17:18,700 Det spelar ingen roll om du förstår ekvationerna mycket väl. 356 00:17:18,700 --> 00:17:22,150 Detta är alla kommer att vara online. 357 00:17:22,150 --> 00:17:25,490 >> Så i princip vad jag beräkna den Sannolikheten att den här låten är med 358 00:17:25,490 --> 00:17:28,040 Lady Gaga med tanke på att - 359 00:17:28,040 --> 00:17:30,660 så detta fält innebär med tanke på att - 360 00:17:30,660 --> 00:17:33,680 Jag såg ordet "baby". Låter det vettigt? 361 00:17:33,680 --> 00:17:35,540 Så jag försöker beräkna att sannolikheten. 362 00:17:35,540 --> 00:17:38,540 >> Så det finns denna sats kallas Bayes teorem som säger att 363 00:17:38,540 --> 00:17:43,330 sannolikheten för en given B, är den sannolikheten för B givet A, gånger 364 00:17:43,330 --> 00:17:47,660 Sannolikheten för A, över sannolikheten av B. Detta är en lång-ekvationen. 365 00:17:47,660 --> 00:17:51,970 Men vad du måste förstå från det är att det här är vad jag vill 366 00:17:51,970 --> 00:17:52,830 beräkna, eller hur? 367 00:17:52,830 --> 00:17:56,570 Så sannolikheten att den låten är av Lady Gaga med tanke på att jag såg ordet 368 00:17:56,570 --> 00:17:58,230 "Baby". 369 00:17:58,230 --> 00:18:02,960 >> Och nu vad jag får är det sannolikheten för att ordet "baby" ges 370 00:18:02,960 --> 00:18:04,390 att jag har Lady Gaga. 371 00:18:04,390 --> 00:18:07,220 Och vad är det i grund och botten? 372 00:18:07,220 --> 00:18:10,500 Vad det betyder är, vad är det Sannolikheten för att se ordet "baby" 373 00:18:10,500 --> 00:18:12,130 i Gaga texter? 374 00:18:12,130 --> 00:18:16,240 Om jag vill räkna ut att i ett mycket enkelt sätt, det är bara antalet 375 00:18:16,240 --> 00:18:23,640 gånger jag ser "bebis" över det totala antalet ord i Gaga texter, eller hur? 376 00:18:23,640 --> 00:18:27,600 Vad är den frekvens som jag ser det ordet i Gagas arbete? 377 00:18:27,600 --> 00:18:30,530 Vettigt? 378 00:18:30,530 --> 00:18:33,420 >> Den andra termen är Sannolikheten för Gaga. 379 00:18:33,420 --> 00:18:34,360 Vad innebär det? 380 00:18:34,360 --> 00:18:38,550 Det innebär i grunden, vad är det Sannolikheten för att klassificera 381 00:18:38,550 --> 00:18:40,690 några texter som Gaga? 382 00:18:40,690 --> 00:18:45,320 Och det är lite konstigt, men låt oss tänka på ett exempel. 383 00:18:45,320 --> 00:18:49,230 Så låt oss säga att sannolikheten för som har "baby" i en låt är det samma 384 00:18:49,230 --> 00:18:51,760 för Gaga och Britney Spears. 385 00:18:51,760 --> 00:18:54,950 Men Britney Spears har två gånger fler låtar än Lady Gaga. 386 00:18:54,950 --> 00:19:00,570 Så om någon ger dig bara slumpmässigt texter "baby", det första du 387 00:19:00,570 --> 00:19:04,710 titta på är, vad är sannolikheten för med "baby" i en gaga låt, "baby" 388 00:19:04,710 --> 00:19:05,410 i en Britney låt? 389 00:19:05,410 --> 00:19:06,460 Och det är samma sak. 390 00:19:06,460 --> 00:19:10,040 >> Så den andra saken som du ser är, ja, vad är sannolikheten för 391 00:19:10,040 --> 00:19:13,770 denna lyriska av sig själv att vara en Gaga lyrisk, och vad är sannolikheten för 392 00:19:13,770 --> 00:19:15,380 vara en Britney text? 393 00:19:15,380 --> 00:19:18,950 Så eftersom Britney har så många fler texter än Gaga, skulle du antagligen 394 00:19:18,950 --> 00:19:21,470 säg, ja, detta är förmodligen en Britney lyrisk. 395 00:19:21,470 --> 00:19:23,340 Så det är därför vi har den här termen här. 396 00:19:23,340 --> 00:19:24,670 Sannolikhet att Gaga. 397 00:19:24,670 --> 00:19:26,950 Vettigt? 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 >> Och den sista är bara sannolikheten av "baby", som inte 401 00:19:33,500 --> 00:19:34,810 verkligen så stor roll. 402 00:19:34,810 --> 00:19:39,940 Men det är sannolikheten för se "baby" på engelska. 403 00:19:39,940 --> 00:19:42,725 Vi brukar inte bry sig om att mycket om den termen. 404 00:19:42,725 --> 00:19:44,490 Låter det vettigt? 405 00:19:44,490 --> 00:19:48,110 Så sannolikheten för senil är kallas den föregående sannolikheten 406 00:19:48,110 --> 00:19:49,530 av klassen Gaga. 407 00:19:49,530 --> 00:19:53,840 Därför att det betyder bara att, vad är det Sannolikheten för att ha den klassen - 408 00:19:53,840 --> 00:19:55,520 vilket är Gaga - 409 00:19:55,520 --> 00:19:59,350 bara i allmänhet bara utan villkor. 410 00:19:59,350 --> 00:20:02,560 >> Och sen när jag har sannolikheten för Gaga givet "baby", vi kallar det plus 411 00:20:02,560 --> 00:20:06,160 Teary en sannolikhet för att det är sannolikheten för att ha 412 00:20:06,160 --> 00:20:08,300 Gaga givet vissa bevis. 413 00:20:08,300 --> 00:20:11,050 Så jag ger dig bevis att jag såg ordet barnet och 414 00:20:11,050 --> 00:20:12,690 sången vettigt? 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å om jag räknat ut att för varje av låtarna på Lady Gaga, 418 00:20:22,400 --> 00:20:25,916 vad det skulle vara - 419 00:20:25,916 --> 00:20:27,730 tydligen, jag kan inte flytta den här. 420 00:20:27,730 --> 00:20:31,850 421 00:20:31,850 --> 00:20:36,920 Sannolikheten för Gaga kommer att vara något liknande, 2 över 24 ggr halv, 422 00:20:36,920 --> 00:20:38,260 över 2 över 53. 423 00:20:38,260 --> 00:20:40,640 Det spelar ingen roll om du vet vad dessa siffror kommer ifrån. 424 00:20:40,640 --> 00:20:44,750 Men det är bara ett nummer som går att vara mer än 0, eller hur? 425 00:20:44,750 --> 00:20:48,610 >> Och sedan när jag gör Katy Perry, den Sannolikheten för "baby" ges Katy är 426 00:20:48,610 --> 00:20:49,830 redan 0, eller hur? 427 00:20:49,830 --> 00:20:52,820 Eftersom det finns ingen "baby" i Katy Perry. 428 00:20:52,820 --> 00:20:56,360 Så då det blir 0, och Gaga segrar, vilket innebär att senil är 429 00:20:56,360 --> 00:20:57,310 förmodligen sångaren. 430 00:20:57,310 --> 00:20:58,560 Låter det vettigt? 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å om jag vill göra det mer officiellt, Jag kan faktiskt göra en modell 435 00:21:11,750 --> 00:21:12,700 för flera ord. 436 00:21:12,700 --> 00:21:14,610 Så låt oss säga att jag har något liknande, "baby, jag är 437 00:21:14,610 --> 00:21:16,030 eld, "eller något. 438 00:21:16,030 --> 00:21:17,760 Så det har flera ord. 439 00:21:17,760 --> 00:21:20,880 Och i detta fall, kan du se att "barnet" är i Gaga, 440 00:21:20,880 --> 00:21:21,710 men det är inte i Katy. 441 00:21:21,710 --> 00:21:24,940 Och "eld" är i Katy, men det är inte i Gaga, eller hur? 442 00:21:24,940 --> 00:21:27,200 Så det blir svårare, eller hur? 443 00:21:27,200 --> 00:21:31,440 Eftersom det verkar som om du nästan har ett band mellan de två. 444 00:21:31,440 --> 00:21:36,980 >> Så vad du behöver göra är att ta på sig självständighet bland orden. 445 00:21:36,980 --> 00:21:41,210 Så i princip vad det betyder är att Jag bara beräkna vad som är 446 00:21:41,210 --> 00:21:44,330 Sannolikheten för att se "baby", det som är sannolikheten av att se "I," och 447 00:21:44,330 --> 00:21:46,670 "Är", och "om" och "eld" allt separat. 448 00:21:46,670 --> 00:21:48,670 Då jag multiplicera dem alla. 449 00:21:48,670 --> 00:21:52,420 Och jag ser vad är sannolikheten av att se hela meningen. 450 00:21:52,420 --> 00:21:55,210 Vettigt? 451 00:21:55,210 --> 00:22:00,270 >> Så i princip, om jag har bara ett ord, vad jag vill hitta är arg max, 452 00:22:00,270 --> 00:22:05,385 vilket betyder, vad är den klass som är ger mig den högsta sannolikheten? 453 00:22:05,385 --> 00:22:10,010 Så vad är den klass som ger mig den högsta sannolikheten för 454 00:22:10,010 --> 00:22:11,940 sannolikheten för klass givet ord. 455 00:22:11,940 --> 00:22:17,610 Så i det här fallet, Gaga givet "barn." Eller Katy givet "barn." Vettigt? 456 00:22:17,610 --> 00:22:21,040 >> Och bara från Bayes, att ekvation som jag visade, 457 00:22:21,040 --> 00:22:24,780 vi skapar denna fraktion. 458 00:22:24,780 --> 00:22:28,750 Det enda är att du ser att sannolikheten för ord med tanke på 459 00:22:28,750 --> 00:22:31,370 klass ändras beroende på klass, eller hur? 460 00:22:31,370 --> 00:22:34,260 Antalet "baby" s som jag har i senil är annorlunda från Katy. 461 00:22:34,260 --> 00:22:37,640 Sannolikheten av klassen också förändringar eftersom det är bara antalet 462 00:22:37,640 --> 00:22:39,740 låtar var och en har. 463 00:22:39,740 --> 00:22:43,980 >> Men sannolikheten för själva ordet kommer att vara densamma för alla de 464 00:22:43,980 --> 00:22:44,740 konstnärer, eller hur? 465 00:22:44,740 --> 00:22:47,150 Så sannolikheten för att ordet är precis, vad är sannolikheten för 466 00:22:47,150 --> 00:22:49,820 ser att ordet i Engelska språket? 467 00:22:49,820 --> 00:22:51,420 Så det är samma för alla. 468 00:22:51,420 --> 00:22:55,790 Så eftersom detta är konstant, vi kan bara släppa detta och inte bryr sig om det. 469 00:22:55,790 --> 00:23:00,230 Så detta blir faktiskt den ekvation som vi letar efter. 470 00:23:00,230 --> 00:23:03,360 >> Och om jag har flera ord, jag är fortfarande kommer att ha den tidigare 471 00:23:03,360 --> 00:23:04,610 sannolikhet här. 472 00:23:04,610 --> 00:23:06,980 Det enda är att jag multiplicera sannolikheten för 473 00:23:06,980 --> 00:23:08,490 alla andra ord. 474 00:23:08,490 --> 00:23:10,110 Så jag multiplicera dem alla. 475 00:23:10,110 --> 00:23:12,610 Vettigt? 476 00:23:12,610 --> 00:23:18,440 Det ser konstigt, men i grund och botten innebär, beräkna den kända av klassen, och 477 00:23:18,440 --> 00:23:22,100 sedan multiplicera med sannolikheten för varje av orden vara i den klassen. 478 00:23:22,100 --> 00:23:24,620 479 00:23:24,620 --> 00:23:29,150 >> Och du vet att sannolikheten för en ord ges en klass kommer att bli det 480 00:23:29,150 --> 00:23:34,520 många gånger du ser det ordet i den klassen, dividerat med antalet 481 00:23:34,520 --> 00:23:37,020 ord du har i det klassen i allmänhet. 482 00:23:37,020 --> 00:23:37,990 Vettigt? 483 00:23:37,990 --> 00:23:41,680 Det är bara hur "barn" var 2 över antalet ord som 484 00:23:41,680 --> 00:23:43,020 Jag hade i texterna. 485 00:23:43,020 --> 00:23:45,130 Så bara frekvensen. 486 00:23:45,130 --> 00:23:46,260 >> Men det finns en sak. 487 00:23:46,260 --> 00:23:51,250 Minns hur jag visar att Sannolikheten för "baby" vara texter 488 00:23:51,250 --> 00:23:56,350 från Katy Perry var 0 bara för Katy Perry hade inte "baby" alls? 489 00:23:56,350 --> 00:24:04,900 Men det låter lite hård att bara helt enkelt säga att texter inte kan vara från 490 00:24:04,900 --> 00:24:10,040 en konstnär bara för att de inte har det ordet i synnerhet när som helst. 491 00:24:10,040 --> 00:24:13,330 >> Så du kan bara säga, ja, om du har inte detta ord, kommer jag att 492 00:24:13,330 --> 00:24:15,640 ge dig en lägre sannolikhet, men jag är bara inte att 493 00:24:15,640 --> 00:24:17,420 ge dig 0 direkt. 494 00:24:17,420 --> 00:24:21,040 Därför att det kanske var något i stil med, "Eld, eld, eld, eld," vilket är 495 00:24:21,040 --> 00:24:21,990 helt Katy Perry. 496 00:24:21,990 --> 00:24:26,060 Och sedan "baby", och det bara går att 0 direkt eftersom det fanns en 497 00:24:26,060 --> 00:24:27,250 "Baby". 498 00:24:27,250 --> 00:24:31,440 >> Så i princip det vi gör är något kallas Laplace utjämning. 499 00:24:31,440 --> 00:24:36,260 Och det betyder bara att jag ger viss sannolikhet även till orden 500 00:24:36,260 --> 00:24:37,850 som inte existerar. 501 00:24:37,850 --> 00:24:43,170 Så vad jag gör är att när jag är beräkna detta, jag lägger alltid 1 till 502 00:24:43,170 --> 00:24:44,180 täljaren. 503 00:24:44,180 --> 00:24:48,060 Så även om ordet inte finns i det här fallet, om det är 0, jag är fortfarande 504 00:24:48,060 --> 00:24:51,250 beräkning av denna som en över totala antalet ord. 505 00:24:51,250 --> 00:24:55,060 Annars får jag hur många ord Jag har och jag till 1. 506 00:24:55,060 --> 00:24:58,300 Så jag räknar båda fallen. 507 00:24:58,300 --> 00:25:00,430 Vettigt? 508 00:25:00,430 --> 00:25:03,060 >> Så nu ska vi göra en del kodning. 509 00:25:03,060 --> 00:25:06,440 Jag kommer att behöva göra det ganska fort, men det är bara viktigt att du 510 00:25:06,440 --> 00:25:08,600 ni förstå koncepten. 511 00:25:08,600 --> 00:25:13,450 Så vad vi försöker göra är exakt genomföra detta 512 00:25:13,450 --> 00:25:14,330 sak som jag sa - 513 00:25:14,330 --> 00:25:19,110 Jag vill att du sätter texter från Lady Gaga och Katy Perry. 514 00:25:19,110 --> 00:25:22,980 Och programmet kommer att kunna säga om dessa nya texter är från Gaga 515 00:25:22,980 --> 00:25:24,170 eller Katy Perry. 516 00:25:24,170 --> 00:25:25,800 Vettigt? 517 00:25:25,800 --> 00:25:27,530 OK. 518 00:25:27,530 --> 00:25:30,710 >> Så jag har det här programmet kommer jag att ringa classify.py. 519 00:25:30,710 --> 00:25:31,970 Så detta är Python. 520 00:25:31,970 --> 00:25:34,210 Det är ett nytt programmeringsspråk. 521 00:25:34,210 --> 00:25:38,020 Det är mycket lik i vissa vägar till C och PHP. 522 00:25:38,020 --> 00:25:43,180 Det är liknande för om du vill lära Python efter att veta C, är det 523 00:25:43,180 --> 00:25:46,270 egentligen inte så mycket av en utmaning bara för att Python är mycket lättare 524 00:25:46,270 --> 00:25:47,520 än C, först och främst. 525 00:25:47,520 --> 00:25:49,370 Och en hel del saker är redan implementeras för dig. 526 00:25:49,370 --> 00:25:56,820 Så hur som PHP har funktioner som sortera en lista, eller lägga till något 527 00:25:56,820 --> 00:25:58,780 till en array, eller bla, bla, bla. 528 00:25:58,780 --> 00:26:00,690 Python har alla dem också. 529 00:26:00,690 --> 00:26:05,960 >> Så jag ska bara förklara snabbt hur vi skulle kunna göra klassificeringen 530 00:26:05,960 --> 00:26:07,860 problem för här. 531 00:26:07,860 --> 00:26:13,230 Så låt oss säga att i det här fallet har jag texter från Gaga och Katy Perry. 532 00:26:13,230 --> 00:26:21,880 Det sätt som jag har dessa texter är att det första ordet i texterna är 533 00:26:21,880 --> 00:26:25,250 namnet på artisten, och resten är texterna. 534 00:26:25,250 --> 00:26:29,470 Så låt oss säga att jag har den här listan i vilka den första är texter av Gaga. 535 00:26:29,470 --> 00:26:31,930 Så här är jag på rätt väg. 536 00:26:31,930 --> 00:26:35,270 Och nästa gång det är Katy, och den har också texterna. 537 00:26:35,270 --> 00:26:38,040 >> Så detta är hur du deklarerar en variabel i Python. 538 00:26:38,040 --> 00:26:40,200 Du behöver inte ge datatyp. 539 00:26:40,200 --> 00:26:43,150 Du skriver bara "text", ungefär som i PHP. 540 00:26:43,150 --> 00:26:44,890 Vettigt? 541 00:26:44,890 --> 00:26:47,770 >> Så vad är det som jag måste beräkna för att kunna beräkna 542 00:26:47,770 --> 00:26:49,360 sannolikheter? 543 00:26:49,360 --> 00:26:55,110 Jag måste beräkna "priorerna" av var och en av de olika 544 00:26:55,110 --> 00:26:56,710 klasser som jag har. 545 00:26:56,710 --> 00:27:06,680 Jag måste beräkna "posteriors," eller ganska mycket sannolikheterna 546 00:27:06,680 --> 00:27:12,150 var och en av de olika ord som Jag kan få för varje artist. 547 00:27:12,150 --> 00:27:17,210 Så inom Gaga, till exempel, jag kommer att ha en lista på hur många gånger jag ser 548 00:27:17,210 --> 00:27:19,250 vart och ett av orden. 549 00:27:19,250 --> 00:27:20,760 Vettigt? 550 00:27:20,760 --> 00:27:25,370 >> Och slutligen, jag kommer bara att ha en lista som kallas "ord" som bara går 551 00:27:25,370 --> 00:27:29,780 att ha hur många ord jag har för varje artist. 552 00:27:29,780 --> 00:27:33,760 Så för Gaga, till exempel när jag ser till texterna, jag hade, tror jag, 24 553 00:27:33,760 --> 00:27:34,750 ord totalt. 554 00:27:34,750 --> 00:27:38,970 Så denna lista är bara att ha Gaga 24, och Katy annat nummer. 555 00:27:38,970 --> 00:27:40,130 Vettigt? 556 00:27:40,130 --> 00:27:40,560 OK. 557 00:27:40,560 --> 00:27:42,530 >> Så nu, faktiskt, låt oss gå till kodning. 558 00:27:42,530 --> 00:27:45,270 Så i Python, kan du faktiskt returnera en massa olika 559 00:27:45,270 --> 00:27:46,630 saker från en funktion. 560 00:27:46,630 --> 00:27:50,810 Så jag kommer att skapa denna funktion "villkorat", som kommer 561 00:27:50,810 --> 00:27:53,890 att returnera alla dessa saker, det "priorerna," de "sannolikheter" och det 562 00:27:53,890 --> 00:28:05,690 "ord." Så "villkorligt", och det är kommer att ringa in "texter." 563 00:28:05,690 --> 00:28:11,510 >> Så nu vill jag att du faktiskt skriva denna funktion. 564 00:28:11,510 --> 00:28:17,750 Så långt som jag kan skriva det här Funktionen är jag bara definierat detta 565 00:28:17,750 --> 00:28:20,620 fungera med "def." Så jag gjorde "def villkorlig, "och det tar 566 00:28:20,620 --> 00:28:28,700 "Texter." Och vad detta kommer att göra är, först och främst, jag har mina priors 567 00:28:28,700 --> 00:28:31,030 att jag vill beräkna. 568 00:28:31,030 --> 00:28:34,330 >> Så långt som jag kan göra detta är att skapa en ordbok i Python, vilket 569 00:28:34,330 --> 00:28:37,320 är ungefär samma sak som en hash bord, eller det är som en iterativ 570 00:28:37,320 --> 00:28:40,480 array i PHP. 571 00:28:40,480 --> 00:28:44,150 Detta är hur jag förklarar en ordbok. 572 00:28:44,150 --> 00:28:53,580 Och i grund och botten vad detta innebär är att prior av senil är 0,5, till exempel, om 573 00:28:53,580 --> 00:28:57,200 50% av texterna är från Gaga, 50% är från Katy. 574 00:28:57,200 --> 00:28:58,450 Vettigt? 575 00:28:58,450 --> 00:29:00,680 576 00:29:00,680 --> 00:29:03,680 Så jag måste ta reda på hur att beräkna prior. 577 00:29:03,680 --> 00:29:07,120 >> De följande de som jag måste göra, även, är de sannolikheter och ord. 578 00:29:07,120 --> 00:29:17,100 Så sannolikheterna för senil är listan av alla sannolikheter att jag 579 00:29:17,100 --> 00:29:19,160 har för varje ord för Gaga. 580 00:29:19,160 --> 00:29:23,880 Så om jag går till sannolikheter för Gaga "Baby", till exempel, det ger mig 581 00:29:23,880 --> 00:29:28,750 något i stil med 2 över 24 i det fallet. 582 00:29:28,750 --> 00:29:30,070 Vettigt? 583 00:29:30,070 --> 00:29:36,120 Så jag går till "sannolikheter," gå till "Gaga" bucket som har en lista på alla 584 00:29:36,120 --> 00:29:40,550 de Gaga ord, då går jag till "baby" och jag ser sannolikheten. 585 00:29:40,550 --> 00:29:45,940 >> Och till sist har jag här "Ord" ordlistan. 586 00:29:45,940 --> 00:29:53,620 Så här, "sannolikheter". Och sedan "ord." Så om jag gör "ord", "Gaga," 587 00:29:53,620 --> 00:29:58,330 vad som kommer att hända är att det är kommer att ge mig 24, säger att jag 588 00:29:58,330 --> 00:30:01,990 har 24 ord i texter från Gaga. 589 00:30:01,990 --> 00:30:04,110 Vettigt? 590 00:30:04,110 --> 00:30:07,070 Så här, "ord" är lika dah-dah-dah. 591 00:30:07,070 --> 00:30:07,620 OK 592 00:30:07,620 --> 00:30:12,210 >> Så vad jag ska göra är att jag ska iterera över var och en av texterna, så 593 00:30:12,210 --> 00:30:14,490 var och en av de strängar som Jag har i listan. 594 00:30:14,490 --> 00:30:18,040 Och jag kommer att beräkna dessa saker för var och en av kandidaterna. 595 00:30:18,040 --> 00:30:19,950 Vettigt? 596 00:30:19,950 --> 00:30:21,700 Så jag måste göra en for-loop. 597 00:30:21,700 --> 00:30:26,300 >> Så i Python vad jag kan göra är "för linje i texter. "Samma sak som en 598 00:30:26,300 --> 00:30:28,000 "För varje" påstående i PHP. 599 00:30:28,000 --> 00:30:33,420 Minns hur om det var PHP jag kunde säga "för varje text som 600 00:30:33,420 --> 00:30:35,220 linje. "Vettigt? 601 00:30:35,220 --> 00:30:38,900 Så jag tar var och en av raderna, i detta fall, den här strängen och nästa 602 00:30:38,900 --> 00:30:44,540 sträng så att var och en av raderna vad jag är ska göra är att först, jag ska 603 00:30:44,540 --> 00:30:49,150 dela upp denna linje i en lista med ord separerade med mellanslag. 604 00:30:49,150 --> 00:30:53,730 >> Så det häftiga med Python är att du kan bara Google som "hur kan jag 605 00:30:53,730 --> 00:30:58,220 dela upp en sträng i ord? "Och det är ska berätta hur man gör det. 606 00:30:58,220 --> 00:31:04,890 Och sättet att göra det, det är bara "linje = Line.split () "och det är i princip 607 00:31:04,890 --> 00:31:08,640 kommer att ge dig en lista med varje ord här. 608 00:31:08,640 --> 00:31:09,620 Vettigt? 609 00:31:09,620 --> 00:31:15,870 Så nu när jag gjorde det jag vill veta som är sångare i den låten. 610 00:31:15,870 --> 00:31:20,130 Och för att göra det jag måste bara få det första elementet i arrayen, eller hur? 611 00:31:20,130 --> 00:31:26,390 Så jag kan bara säga att jag "sångare = Line (0) "Vettigt? 612 00:31:26,390 --> 00:31:32,010 >> Och vad jag behöver göra är att först och allt kommer jag att uppdatera hur många 613 00:31:32,010 --> 00:31:36,130 ord har jag under "Gaga". så jag är bara kommer att beräkna hur många ord jag 614 00:31:36,130 --> 00:31:38,690 har i denna lista, eller hur? 615 00:31:38,690 --> 00:31:41,910 Eftersom det är så många ord jag har i texterna, och jag ska bara 616 00:31:41,910 --> 00:31:44,120 lägg till den "Gaga" array. 617 00:31:44,120 --> 00:31:47,090 Låter det vettigt? 618 00:31:47,090 --> 00:31:49,010 Fokusera inte för mycket på syntaxen. 619 00:31:49,010 --> 00:31:50,430 Tänk mer om begreppen. 620 00:31:50,430 --> 00:31:52,400 Det är den viktigaste delen. 621 00:31:52,400 --> 00:31:52,720 OK. 622 00:31:52,720 --> 00:32:00,260 >> Så vad jag kan göra det är om "Gaga" är redan i den listan, så "om sångaren i 623 00:32:00,260 --> 00:32:03,190 ord ", vilket innebär att jag redan har ord av Gaga. 624 00:32:03,190 --> 00:32:06,640 Jag vill bara lägga till ytterligare ord till det. 625 00:32:06,640 --> 00:32:15,810 Så vad jag gör är "ord (sångare) + = Len (linje) - 1 ". 626 00:32:15,810 --> 00:32:18,250 Och då kan jag bara göra det längden på linjen. 627 00:32:18,250 --> 00:32:21,860 Så hur många element I har i arrayen. 628 00:32:21,860 --> 00:32:27,060 Och jag måste göra minus 1 bara för att det första elementet i arrayen är bara 629 00:32:27,060 --> 00:32:29,180 sångare och de är inte texter. 630 00:32:29,180 --> 00:32:31,420 Vettigt? 631 00:32:31,420 --> 00:32:32,780 OK. 632 00:32:32,780 --> 00:32:35,820 >> "Else", det betyder att jag vill faktiskt infoga gaga i listan. 633 00:32:35,820 --> 00:32:45,990 Så jag gör bara "ord (sångare) = Len (linje) - 1, "förlåt. 634 00:32:45,990 --> 00:32:49,200 Så den enda skillnaden mellan de två linjer är att den här, det gör det inte 635 00:32:49,200 --> 00:32:51,080 finns ännu, så jag är bara initierade den. 636 00:32:51,080 --> 00:32:53,820 Den här jag faktiskt lägga. 637 00:32:53,820 --> 00:32:55,570 OK. 638 00:32:55,570 --> 00:32:59,480 Så detta var att lägga till ord. 639 00:32:59,480 --> 00:33:03,040 >> Nu vill jag lägga till priorerna. 640 00:33:03,040 --> 00:33:05,480 Hur beräknar jag Priors? 641 00:33:05,480 --> 00:33:11,580 De prior kan beräknas av hur många gånger. 642 00:33:11,580 --> 00:33:15,340 Så hur många gånger du ser att sångaren bland alla de sångare som du 643 00:33:15,340 --> 00:33:16,380 ha, eller hur? 644 00:33:16,380 --> 00:33:18,810 Så för Gaga och Katy Perry, i det här fallet ser jag Gaga 645 00:33:18,810 --> 00:33:20,570 gång, Katy Perry gång. 646 00:33:20,570 --> 00:33:23,320 >> Så i stort sett priorerna för Gaga och för Katy Perry skulle 647 00:33:23,320 --> 00:33:24,390 bara vara en, eller hur? 648 00:33:24,390 --> 00:33:26,500 Du precis hur många gånger Jag konstnären. 649 00:33:26,500 --> 00:33:28,740 Så det är mycket lätt att beräkna. 650 00:33:28,740 --> 00:33:34,100 Jag kan bara något liknande som liknande "om sångare i priorerna, "jag ska bara 651 00:33:34,100 --> 00:33:38,970 att lägga till en till sin prior låda. 652 00:33:38,970 --> 00:33:51,000 Så, "priors (sjunger)" + = 1 "och sedan" annat " Jag kommer att göra "priors (sångare) 653 00:33:51,000 --> 00:33:55,000 = 1. "Vettigt? 654 00:33:55,000 --> 00:34:00,080 >> Så om det inte finns jag bara sätta som 1, annars jag bara lägga till 1. 655 00:34:00,080 --> 00:34:11,280 OK, så nu är allt som jag har kvar att göra är också lägga varje ord till 656 00:34:11,280 --> 00:34:12,290 sannolikheter. 657 00:34:12,290 --> 00:34:14,889 Så jag måste räkna hur många gånger Jag ser varje ord. 658 00:34:14,889 --> 00:34:18,780 Så jag har bara att göra en annan för slinga i rad. 659 00:34:18,780 --> 00:34:25,190 >> Så första som jag kommer att göra är kontrollera om sångaren har redan en 660 00:34:25,190 --> 00:34:26,969 sannolikheter array. 661 00:34:26,969 --> 00:34:31,739 Så jag kollar om sångaren inte har en sannolikhet array, jag är bara 662 00:34:31,739 --> 00:34:34,480 kommer att initiera en för dem. 663 00:34:34,480 --> 00:34:36,400 Det är inte ens en array, sorry, det är ett lexikon. 664 00:34:36,400 --> 00:34:43,080 Så sannolikheten för sångaren går att vara en öppen lexikon, så jag är 665 00:34:43,080 --> 00:34:45,830 bara att initiera en ordbok för det. 666 00:34:45,830 --> 00:34:46,820 OK? 667 00:34:46,820 --> 00:34:58,330 >> Och nu kan jag faktiskt göra en for-loop beräkna varje ord " 668 00:34:58,330 --> 00:35:00,604 sannolikheter. 669 00:35:00,604 --> 00:35:01,540 OK. 670 00:35:01,540 --> 00:35:04,160 Så vad jag kan göra är en for-loop. 671 00:35:04,160 --> 00:35:06,590 Så jag ska bara iterera över arrayen. 672 00:35:06,590 --> 00:35:15,320 Så långt som jag kan göra det i Python är "för i inom räckhåll." Från 1 673 00:35:15,320 --> 00:35:19,200 eftersom jag vill starta i det andra element eftersom det första är den 674 00:35:19,200 --> 00:35:20,260 sångare namn. 675 00:35:20,260 --> 00:35:24,990 Så från en upp till det längden på linjen. 676 00:35:24,990 --> 00:35:29,760 Och när jag gör allt det faktiskt gå från som här från 1 till len av 677 00:35:29,760 --> 00:35:30,740 line minus 1. 678 00:35:30,740 --> 00:35:33,810 Så det redan gör det där att göra n minus 1 för matriser som är mycket 679 00:35:33,810 --> 00:35:35,500 bekvämt. 680 00:35:35,500 --> 00:35:37,850 Vettigt? 681 00:35:37,850 --> 00:35:42,770 >> Så för var och en av dessa, vad jag ska göra är att, precis som i den andra, 682 00:35:42,770 --> 00:35:50,320 Jag ska kolla om det ordet i detta position i linjen är redan i 683 00:35:50,320 --> 00:35:51,570 sannolikheter. 684 00:35:51,570 --> 00:35:53,400 685 00:35:53,400 --> 00:35:57,260 Och sedan som jag sagt här, sannolikheter ord, som i jag satte 686 00:35:57,260 --> 00:35:58,400 "sannolikheter (sångare)". 687 00:35:58,400 --> 00:35:59,390 Så namnet på sångaren. 688 00:35:59,390 --> 00:36:03,450 Så om det är redan i "Probabilit (sångare)", betyder det att jag 689 00:36:03,450 --> 00:36:11,960 vill lägga till 1 till det, så jag kommer att göra "sannolikheter (sångare)", och 690 00:36:11,960 --> 00:36:14,100 ord kallas "linjen (i)". 691 00:36:14,100 --> 00:36:22,630 Jag kommer att lägga till 1 och "annat" Jag är bara kommer att initiera den till 1. 692 00:36:22,630 --> 00:36:23,880 "Linje (i)". 693 00:36:23,880 --> 00:36:26,920 694 00:36:26,920 --> 00:36:28,420 Vettigt? 695 00:36:28,420 --> 00:36:30,180 >> Så jag räknat alla matriser. 696 00:36:30,180 --> 00:36:36,580 Så, nu är allt som jag måste göra för den här är bara "tillbaka priorerna, 697 00:36:36,580 --> 00:36:43,230 sannolikheter och ord. "Låt oss se om det finns några, OK. 698 00:36:43,230 --> 00:36:45,690 Det verkar som allt fungerar så långt. 699 00:36:45,690 --> 00:36:46,900 Så, gör det vettigt? 700 00:36:46,900 --> 00:36:47,750 På något sätt? 701 00:36:47,750 --> 00:36:49,280 OK. 702 00:36:49,280 --> 00:36:51,980 Så nu har jag alla sannolikheter. 703 00:36:51,980 --> 00:36:55,100 Så nu det enda jag har kvar är bara att ha den där saken som 704 00:36:55,100 --> 00:36:58,650 beräknar produkten av alla de sannolikheter när jag får texterna. 705 00:36:58,650 --> 00:37:06,270 >> Så låt oss säga att jag vill nu kalla funktionen "klassificera ()" och 706 00:37:06,270 --> 00:37:08,880 sak som funktionen tar är bara ett argument. 707 00:37:08,880 --> 00:37:13,170 Låt oss säga "Baby, jag är på elden" och det är går att räkna ut vad som är det 708 00:37:13,170 --> 00:37:14,490 Sannolikheten för att detta är Gaga? 709 00:37:14,490 --> 00:37:16,405 Vad är sannolikheten att detta är Katie? 710 00:37:16,405 --> 00:37:19,690 Låter bra? 711 00:37:19,690 --> 00:37:25,750 Så jag ska bara behöva skapa en ny funktion som heter "klassificera ()" och 712 00:37:25,750 --> 00:37:29,180 det kommer att ta lite texter också. 713 00:37:29,180 --> 00:37:31,790 714 00:37:31,790 --> 00:37:36,160 Och förutom texterna jag också måste skicka prior, den 715 00:37:36,160 --> 00:37:37,700 sannolikheter och ord. 716 00:37:37,700 --> 00:37:44,000 Så jag kommer att skicka texter, priors, sannolikheter, ord. 717 00:37:44,000 --> 00:37:51,840 >> Så här tar texter, priors, sannolikheter, ord. 718 00:37:51,840 --> 00:37:53,530 Så, vad gör det? 719 00:37:53,530 --> 00:37:57,180 Det i princip kommer att gå igenom alla de möjliga kandidater som du 720 00:37:57,180 --> 00:37:58,510 har som sångare. 721 00:37:58,510 --> 00:37:59,425 Och var är de sökande? 722 00:37:59,425 --> 00:38:01,020 De är i priorerna, eller hur? 723 00:38:01,020 --> 00:38:02,710 Så jag har alla dem där. 724 00:38:02,710 --> 00:38:07,870 Så jag kommer att ha en ordbok av alla tänkbara kandidater. 725 00:38:07,870 --> 00:38:14,220 Och sedan för varje kandidat i priorerna, så det betyder att det kommer att 726 00:38:14,220 --> 00:38:17,740 vara Gaga, Katie om jag hade mer det skulle vara mer. 727 00:38:17,740 --> 00:38:20,410 Jag ska börja beräkna denna sannolikhet. 728 00:38:20,410 --> 00:38:28,310 Sannolikheten som vi såg i PowerPoint är de tidigare gånger 729 00:38:28,310 --> 00:38:30,800 produkt av var och en av andra sannolikheter. 730 00:38:30,800 --> 00:38:32,520 >> Så jag kan göra samma sak här. 731 00:38:32,520 --> 00:38:36,330 Jag kan bara göra sannolikheten är initialt bara känd. 732 00:38:36,330 --> 00:38:40,340 So prior av kandidaten. 733 00:38:40,340 --> 00:38:40,870 Rätt? 734 00:38:40,870 --> 00:38:45,360 Och nu har jag att iterera över alla ord som jag har i texterna som 735 00:38:45,360 --> 00:38:48,820 lägga till sannolikheten för var och en av dem, OK? 736 00:38:48,820 --> 00:38:57,900 Så, "för ord i texterna" vad jag ska göra är att, om ordet är i 737 00:38:57,900 --> 00:39:01,640 "sannolikheter (kandidat)", vilket betyder att det är ett ord som de 738 00:39:01,640 --> 00:39:03,640 kandidat har i sina texter - 739 00:39:03,640 --> 00:39:05,940 till exempel, "baby" för Gaga - 740 00:39:05,940 --> 00:39:11,710 vad jag ska göra är att sannolikhet kommer att multipliceras 741 00:39:11,710 --> 00:39:22,420 med 1 plus sannolikheten för kandidaten för det ordet. 742 00:39:22,420 --> 00:39:25,710 Och det kallas "word". 743 00:39:25,710 --> 00:39:32,440 Detta dividerat med antalet ord att jag har för den sökande. 744 00:39:32,440 --> 00:39:37,450 Det totala antalet ord som jag har för sångaren som jag tittar på. 745 00:39:37,450 --> 00:39:40,290 >> "Saker". det betyder att det är ett nytt ord så det skulle vara som till exempel 746 00:39:40,290 --> 00:39:41,860 "Eld" för Lady Gaga. 747 00:39:41,860 --> 00:39:45,760 Så jag vill bara göra 1 över "Ord (kandidat)". 748 00:39:45,760 --> 00:39:47,710 Så jag vill inte sätta denna term här. 749 00:39:47,710 --> 00:39:50,010 >> Så det kommer att vara i stort sett kopiera och klistra in den här. 750 00:39:50,010 --> 00:39:54,380 751 00:39:54,380 --> 00:39:56,000 Men jag ska ta bort den här delen. 752 00:39:56,000 --> 00:39:57,610 Så det är bara att vara 1 under det. 753 00:39:57,610 --> 00:40:00,900 754 00:40:00,900 --> 00:40:02,150 Låter bra? 755 00:40:02,150 --> 00:40:03,980 756 00:40:03,980 --> 00:40:09,700 Och nu i slutet, jag kommer bara att skriva ut namnet på den sökande och 757 00:40:09,700 --> 00:40:15,750 sannolikheten att du har av ha S på sina texter. 758 00:40:15,750 --> 00:40:16,200 Vettigt? 759 00:40:16,200 --> 00:40:18,390 Och jag faktiskt inte ens behöver denna ordbok. 760 00:40:18,390 --> 00:40:19,510 Vettigt? 761 00:40:19,510 --> 00:40:21,810 >> Så, låt oss se om det verkligen fungerar. 762 00:40:21,810 --> 00:40:24,880 Så om jag kör det här, det fungerade inte. 763 00:40:24,880 --> 00:40:26,130 Vänta en sekund. 764 00:40:26,130 --> 00:40:28,870 765 00:40:28,870 --> 00:40:31,720 "Words (kandidat)", "ord (kandidat)", det är 766 00:40:31,720 --> 00:40:33,750 namnet på arrayen. 767 00:40:33,750 --> 00:40:41,435 OK så står det att det är någon bugg för kandidat i priors. 768 00:40:41,435 --> 00:40:46,300 769 00:40:46,300 --> 00:40:48,760 Låt mig bara kyla lite. 770 00:40:48,760 --> 00:40:50,360 OK. 771 00:40:50,360 --> 00:40:51,305 Låt oss försöka. 772 00:40:51,305 --> 00:40:51,720 OK. 773 00:40:51,720 --> 00:40:58,710 >> Så det ger Katy Perry har detta Sannolikheten för detta gånger 10 till 774 00:40:58,710 --> 00:41:02,200 minus 7, och Gaga har denna gånger 10 till minus 6. 775 00:41:02,200 --> 00:41:05,610 Så ser du det visar att Gaga har en högre sannolikhet. 776 00:41:05,610 --> 00:41:09,260 Så "Baby, jag är på Fire" är förmodligen en gaga låt. 777 00:41:09,260 --> 00:41:10,580 Vettigt? 778 00:41:10,580 --> 00:41:12,030 Så det här är vad vi gjorde. 779 00:41:12,030 --> 00:41:16,010 >> Denna kod kommer att läggas ut på nätet, så ni kan kolla upp det. 780 00:41:16,010 --> 00:41:20,720 Kanske använda en del av den för om du vill göra ett projekt eller något liknande. 781 00:41:20,720 --> 00:41:22,150 OK. 782 00:41:22,150 --> 00:41:25,930 Det var bara för att visa vad computational 783 00:41:25,930 --> 00:41:27,230 lingvistik kod ser ut. 784 00:41:27,230 --> 00:41:33,040 Men nu ska vi gå till mer hög nivå grejer. 785 00:41:33,040 --> 00:41:33,340 OK. 786 00:41:33,340 --> 00:41:35,150 >> Så de andra problem som jag talade om - 787 00:41:35,150 --> 00:41:37,550 segmenteringsproblem är den första av dem. 788 00:41:37,550 --> 00:41:40,820 Så du har här japanska. 789 00:41:40,820 --> 00:41:43,420 Och då ser du att det finns inga utrymmen. 790 00:41:43,420 --> 00:41:49,110 Så detta är i grund och botten innebär att det är toppen av stolen, eller hur? 791 00:41:49,110 --> 00:41:50,550 Du talar japanska? 792 00:41:50,550 --> 00:41:52,840 Det är högst upp i stolen, eller hur? 793 00:41:52,840 --> 00:41:54,480 >> STUDENT: Jag vet inte vad kanji över det. 794 00:41:54,480 --> 00:41:57,010 >> LUCAS FREITAS: Det är [TALA JAPANSK] 795 00:41:57,010 --> 00:41:57,950 OK. 796 00:41:57,950 --> 00:42:00,960 Så det i princip innebär ordförande i toppen. 797 00:42:00,960 --> 00:42:03,620 Så om du var tvungen att sätta en plats det skulle vara här. 798 00:42:03,620 --> 00:42:05,970 Och så har du [? Ueda-san. ?] 799 00:42:05,970 --> 00:42:09,040 Vilket i princip innebär Mr Ueda. 800 00:42:09,040 --> 00:42:13,180 Och du ser att "Ueda" och du har en utrymme och sedan "san." Så du ser att 801 00:42:13,180 --> 00:42:15,470 här du "Ue" är som sig själv. 802 00:42:15,470 --> 00:42:17,750 Och här har en karaktär bredvid den. 803 00:42:17,750 --> 00:42:21,720 >> Så det är inte som på dessa språk tecken som betyder ett ord den så att du 804 00:42:21,720 --> 00:42:23,980 bara sätta en massa utrymmen. 805 00:42:23,980 --> 00:42:25,500 Tecken förhåller sig till varandra. 806 00:42:25,500 --> 00:42:28,680 Och de kan vara tillsammans som två, tre, en. 807 00:42:28,680 --> 00:42:34,520 Så du faktiskt måste skapa någon form av sätt att uttrycka dessa utrymmen. 808 00:42:34,520 --> 00:42:38,850 >> Och det här är att när du får data från dessa asiatiska språk, 809 00:42:38,850 --> 00:42:40,580 allting kommer unsegmented. 810 00:42:40,580 --> 00:42:45,940 Eftersom ingen som skriver japanska eller kinesiska skriver med mellanslag. 811 00:42:45,940 --> 00:42:48,200 Varje gång du skriver kinesiska, Japanska du bara skriva allt 812 00:42:48,200 --> 00:42:48,710 utan mellanslag. 813 00:42:48,710 --> 00:42:52,060 Det är inte ens vettigt att sätta mellanslag. 814 00:42:52,060 --> 00:42:57,960 Så då när du får data från en del Östasiatiska språk, om du vill 815 00:42:57,960 --> 00:43:00,760 faktiskt göra något med det du måste segmentet först. 816 00:43:00,760 --> 00:43:05,130 >> Tänk på att göra exemplet texterna utan mellanslag. 817 00:43:05,130 --> 00:43:07,950 Så de enda texter som du har blir meningar, eller hur? 818 00:43:07,950 --> 00:43:09,470 Åtskilda av perioder. 819 00:43:09,470 --> 00:43:13,930 Men sedan har bara meningen kommer inte verkligen hjälpa på att ge information 820 00:43:13,930 --> 00:43:17,760 av vem dessa texter är av. 821 00:43:17,760 --> 00:43:18,120 Rätt? 822 00:43:18,120 --> 00:43:20,010 Så bör du sätter mellanslag först. 823 00:43:20,010 --> 00:43:21,990 Så hur kan du göra det? 824 00:43:21,990 --> 00:43:24,920 >> Så då kommer tanken på ett språk modell som är något riktigt 825 00:43:24,920 --> 00:43:26,870 viktigt för beräknings lingvistik. 826 00:43:26,870 --> 00:43:32,790 Så en språkmodell är i grunden en bord av sannolikheter som visar 827 00:43:32,790 --> 00:43:36,260 först av allt vad är sannolikheten av att ha ordet i ett språk? 828 00:43:36,260 --> 00:43:39,590 Så visar hur ofta ett ord är. 829 00:43:39,590 --> 00:43:43,130 Och sedan också visar sambandet mellan orden i en mening. 830 00:43:43,130 --> 00:43:51,500 >> Så den huvudsakliga idén är, om en främling kom till dig och sa en mening till 831 00:43:51,500 --> 00:43:55,600 dig, vad är sannolikheten att, för exempel "det här är min syster [? GTF"?] 832 00:43:55,600 --> 00:43:57,480 var det meningen att den personen sa? 833 00:43:57,480 --> 00:44:00,380 Så uppenbarligen vissa meningar är vanligare än andra. 834 00:44:00,380 --> 00:44:04,450 Till exempel, "god morgon" eller "bra kväll, "eller" hej där, "är mycket mer 835 00:44:04,450 --> 00:44:08,260 vanligare än de flesta meningar att vi har en engelsk. 836 00:44:08,260 --> 00:44:11,060 Så varför är dessa meningar oftare? 837 00:44:11,060 --> 00:44:14,060 >> Först och främst är det för att du har ord som är mer frekventa. 838 00:44:14,060 --> 00:44:20,180 Så, till exempel, om du säger, är hunden stor, och hunden är gigantisk, du 839 00:44:20,180 --> 00:44:23,880 oftast förmodligen höra hunden är stor oftare eftersom "stora" är mer 840 00:44:23,880 --> 00:44:27,260 vanligare på engelska än "gigantisk." Så, en av 841 00:44:27,260 --> 00:44:30,100 saker är frekvensen ordet. 842 00:44:30,100 --> 00:44:34,490 >> Den andra saken som är riktigt viktigt är bara 843 00:44:34,490 --> 00:44:35,490 ordning av orden. 844 00:44:35,490 --> 00:44:39,500 Så, är det vanligt att säga "katten är i lådan. "men du vanligtvis inte 845 00:44:39,500 --> 00:44:44,250 se i "Lådan inuti är katten." så du ser att det finns en viss betydelse 846 00:44:44,250 --> 00:44:46,030 i den ordning av orden. 847 00:44:46,030 --> 00:44:50,160 Du kan inte bara säga att dessa två meningar har samma sannolikhet 848 00:44:50,160 --> 00:44:53,010 bara för att de har samma ord. 849 00:44:53,010 --> 00:44:55,550 Du har faktiskt att bry sig om ordning också. 850 00:44:55,550 --> 00:44:57,650 Vettigt? 851 00:44:57,650 --> 00:44:59,490 >> Så vad gör vi? 852 00:44:59,490 --> 00:45:01,550 Så vad jag kan försöka att få dig? 853 00:45:01,550 --> 00:45:04,400 Jag försöker få dig vad vi call n-grammet modeller. 854 00:45:04,400 --> 00:45:09,095 Så n-grammodeller princip antar att det för varje ord som 855 00:45:09,095 --> 00:45:10,960 du har i en mening. 856 00:45:10,960 --> 00:45:15,020 Det är sannolikheten för att ha att ord det beror inte bara på den 857 00:45:15,020 --> 00:45:18,395 Frekvensen av detta ord i språket, utan även på de ord som 858 00:45:18,395 --> 00:45:19,860 omger den. 859 00:45:19,860 --> 00:45:25,810 >> Så till exempel, oftast när du ser något som den eller du är 860 00:45:25,810 --> 00:45:28,040 förmodligen kommer att se en substantiv efter det, eller hur? 861 00:45:28,040 --> 00:45:31,750 Därför att när du har en preposition vanligtvis tar ett substantiv efter det. 862 00:45:31,750 --> 00:45:35,540 Eller om du har ett verb som är transitiv du oftast kommer att 863 00:45:35,540 --> 00:45:36,630 har en nominalfras. 864 00:45:36,630 --> 00:45:38,780 Så det kommer att ha ett substantiv någonstans runt den. 865 00:45:38,780 --> 00:45:44,950 >> Så i princip, vad den gör är att den anser att sannolikheten för att ha 866 00:45:44,950 --> 00:45:47,960 ord bredvid varandra, när du beräkna den 867 00:45:47,960 --> 00:45:49,050 sannolikheten för en mening. 868 00:45:49,050 --> 00:45:50,960 Och det är vad ett språk Modellen är i grund och botten. 869 00:45:50,960 --> 00:45:54,620 Bara att säga vad är sannolikheten för att ha en specifik 870 00:45:54,620 --> 00:45:57,120 mening på ett språk? 871 00:45:57,120 --> 00:45:59,110 Så varför är det användbart, i grund och botten? 872 00:45:59,110 --> 00:46:02,390 Och först av allt det som är ett n-gram-modell, då? 873 00:46:02,390 --> 00:46:08,850 >> Så en n-gram-modell innebär att varje ord beror på 874 00:46:08,850 --> 00:46:12,700 nästa N minus 1 ord. 875 00:46:12,700 --> 00:46:18,150 Så, i grund och botten betyder det att om jag ser, till exempel, vid CS50 TF när 876 00:46:18,150 --> 00:46:21,500 Jag beräkna sannolikheten för meningen, kommer du att vara som "den 877 00:46:21,500 --> 00:46:25,280 sannolikheten för att ha ordet "the" gånger sannolikheten för att ha " 878 00:46:25,280 --> 00:46:31,720 CS50 "gånger sannolikheten för att ha "Den CS50 TF." Så i princip, räknar jag 879 00:46:31,720 --> 00:46:35,720 alla möjliga sätt att sträcka det. 880 00:46:35,720 --> 00:46:41,870 >> Och då oftast när du gör detta, som i ett projekt, sätta dig N vara 881 00:46:41,870 --> 00:46:42,600 ett lågt värde. 882 00:46:42,600 --> 00:46:45,930 Så, har oftast bigrams eller trigrams. 883 00:46:45,930 --> 00:46:51,090 Så att du bara räkna två ord, en grupp av två ord, eller tre ord, 884 00:46:51,090 --> 00:46:52,620 bara för prestandaproblem. 885 00:46:52,620 --> 00:46:56,395 Och också för att kanske om du har något i stil med "Den CS50 TF." När du 886 00:46:56,395 --> 00:47:00,510 har "TF", det är mycket viktigt att "CS50" är bredvid det, eller hur? 887 00:47:00,510 --> 00:47:04,050 Dessa två saker är oftast bredvid varandra. 888 00:47:04,050 --> 00:47:06,410 >> Om du tänker på "TF", det är nog kommer att ha vad 889 00:47:06,410 --> 00:47:07,890 klass det TF'ing efter. 890 00:47:07,890 --> 00:47:11,330 Också "det" är verkligen viktigt för CS50 TF. 891 00:47:11,330 --> 00:47:14,570 Men om du har något som "The CS50 TF gick till klass och gav sitt 892 00:47:14,570 --> 00:47:20,060 eleverna lite godis. "" Godis "och" de " har något samband egentligen, eller hur? 893 00:47:20,060 --> 00:47:23,670 De är så långt från varandra att Det spelar egentligen ingen roll vad 894 00:47:23,670 --> 00:47:25,050 ord du har. 895 00:47:25,050 --> 00:47:31,210 >> Så genom att göra en bigram eller en trigram, det betyder bara att du begränsar 896 00:47:31,210 --> 00:47:33,430 dig några ord som är runt. 897 00:47:33,430 --> 00:47:35,810 Vettigt? 898 00:47:35,810 --> 00:47:40,630 Så när du vill göra segmentering, i grund och botten, vad du vill göra är att se 899 00:47:40,630 --> 00:47:44,850 vad är alla möjliga sätt som du kan segmentera meningen. 900 00:47:44,850 --> 00:47:49,090 >> Så att du ser vad som är den sannolikheten för vart och ett av dessa meningar 901 00:47:49,090 --> 00:47:50,880 finns i språket? 902 00:47:50,880 --> 00:47:53,410 Så vad du gör är som, ja, låt mig försöka sätta en plats här. 903 00:47:53,410 --> 00:47:55,570 Så du sätter en plats där och du ser vad som är den 904 00:47:55,570 --> 00:47:57,590 sannolikheten för den meningen? 905 00:47:57,590 --> 00:48:00,240 Då du är som, OK, kanske det var inte så bra. 906 00:48:00,240 --> 00:48:03,420 Så jag satte en plats där och en plats det, och du beräkna 907 00:48:03,420 --> 00:48:06,240 sannolikhet nu, och du ser att det är en högre sannolikhet. 908 00:48:06,240 --> 00:48:12,160 >> Så detta är en algoritm som kallas TANGO segmenteringsalgoritmen, som är 909 00:48:12,160 --> 00:48:14,990 faktiskt något som skulle vara riktigt cool för ett projekt, som 910 00:48:14,990 --> 00:48:20,860 i grund och botten tar unsegmented text som kan vara japanska eller kinesiska eller kanske 911 00:48:20,860 --> 00:48:26,080 Engelska utan mellanslag och försöker sätta mellanslag mellan ord och det gör 912 00:48:26,080 --> 00:48:29,120 att med hjälp av en språkmodell och försöker se vad som är den högsta 913 00:48:29,120 --> 00:48:31,270 Sannolikheten att du kan få. 914 00:48:31,270 --> 00:48:32,230 OK. 915 00:48:32,230 --> 00:48:33,800 Så det här är segmentering. 916 00:48:33,800 --> 00:48:35,450 >> Nu syntax. 917 00:48:35,450 --> 00:48:40,940 Så, syntax används för så många saker just nu. 918 00:48:40,940 --> 00:48:44,880 Så för Graph Search, för Siri för ganska mycket någon form av naturlig 919 00:48:44,880 --> 00:48:46,490 språkbehandling du har. 920 00:48:46,490 --> 00:48:49,140 Så vad är det viktiga saker om syntax? 921 00:48:49,140 --> 00:48:52,390 Så, meningar i allmänhet har det vi kallar beståndsdelar. 922 00:48:52,390 --> 00:48:57,080 Vilket är ungefär som grupper av ord som har en funktion i meningen. 923 00:48:57,080 --> 00:49:02,220 Och de kan inte riktigt vara på avstånd från varandra. 924 00:49:02,220 --> 00:49:07,380 >> Så, om jag säger, till exempel, "Lauren älskar Milo. "Jag vet att" Lauren "är en 925 00:49:07,380 --> 00:49:10,180 beståndsdel och sedan "älskar Milo "är också en annan. 926 00:49:10,180 --> 00:49:16,860 Eftersom du inte kan säga som "Lauren Milo älskar "att ha samma betydelse. 927 00:49:16,860 --> 00:49:18,020 Det kommer inte att ha samma betydelse. 928 00:49:18,020 --> 00:49:22,500 Eller jag kan inte säga som "Milo Lauren älskar. "Inte allt har samma 929 00:49:22,500 --> 00:49:25,890 vilket innebär att göra det. 930 00:49:25,890 --> 00:49:31,940 >> Så de två viktigaste sakerna syntaxen är de lexikala typer som är 931 00:49:31,940 --> 00:49:35,390 i grund och botten den funktion som du har för ord av sig själva. 932 00:49:35,390 --> 00:49:39,180 Så du måste veta att "Lauren" och "Milo" är substantiv. 933 00:49:39,180 --> 00:49:41,040 "Love" är ett verb. 934 00:49:41,040 --> 00:49:45,660 Och den andra viktiga är att de är phrasal typer. 935 00:49:45,660 --> 00:49:48,990 Så du vet att "älskar Milo" är faktiskt en verbal fras. 936 00:49:48,990 --> 00:49:52,390 Så när jag säger "Lauren," Jag vet att Lauren gör något. 937 00:49:52,390 --> 00:49:53,620 Vad gör hon? 938 00:49:53,620 --> 00:49:54,570 Hon älskar Milo. 939 00:49:54,570 --> 00:49:56,440 Så det är en hela. 940 00:49:56,440 --> 00:50:01,640 Men dess komponenter är ett substantiv och ett verb. 941 00:50:01,640 --> 00:50:04,210 Men tillsammans gör de en verbfras. 942 00:50:04,210 --> 00:50:08,680 >> Så, vad kan vi egentligen göra med datorlingvistik? 943 00:50:08,680 --> 00:50:13,810 Så, om jag har något till exempel "vänner av Allison." Jag se om jag bara 944 00:50:13,810 --> 00:50:17,440 gjorde en syntaktisk träd jag skulle veta att "Vänner" är en nominalfras det är en 945 00:50:17,440 --> 00:50:21,480 substantiv och sedan "av Allison" är en prepositional fras där "i" är 946 00:50:21,480 --> 00:50:24,810 en proposition och "Allison" är ett substantiv. 947 00:50:24,810 --> 00:50:30,910 Vad jag kan göra är att lära min dator att när jag har en nominalfras ett och 948 00:50:30,910 --> 00:50:33,080 sedan en prepositional fras. 949 00:50:33,080 --> 00:50:39,020 Så i det här fallet, "vänner" och sedan "av Milo "Jag vet att detta innebär att 950 00:50:39,020 --> 00:50:43,110 NP2, den andra, äger NP1. 951 00:50:43,110 --> 00:50:47,680 >> Så jag kan skapa någon form av relation, någon typ av funktion för den. 952 00:50:47,680 --> 00:50:52,370 Så när jag ser denna struktur, som matchar exakt med "vänner av 953 00:50:52,370 --> 00:50:56,030 Allison, "Jag vet att Allison äger vänner. 954 00:50:56,030 --> 00:50:58,830 Så vänner är något att Allison har. 955 00:50:58,830 --> 00:50:59,610 Vettigt? 956 00:50:59,610 --> 00:51:01,770 Så det är i princip vad Diagram Search gör. 957 00:51:01,770 --> 00:51:04,360 Det skapar bara regler för en massa saker. 958 00:51:04,360 --> 00:51:08,190 Så "vänner av Allison", "mina vänner som bor i Cambridge, "" mina vänner 959 00:51:08,190 --> 00:51:12,970 som går till Harvard. "Det skapar regler för alla dessa saker. 960 00:51:12,970 --> 00:51:14,930 >> Nu maskinöversättning. 961 00:51:14,930 --> 00:51:18,850 Så, är maskinöversättning också något statistisk. 962 00:51:18,850 --> 00:51:21,340 Och faktiskt, om du engagera dig i datalingvistik, en hel del 963 00:51:21,340 --> 00:51:23,580 dina saker kommer att bli statistik. 964 00:51:23,580 --> 00:51:26,670 Så som jag gjorde i exemplet med mycket av sannolikheter att jag var 965 00:51:26,670 --> 00:51:30,540 beräkning, och sedan får du här mycket litet antal som är det sista 966 00:51:30,540 --> 00:51:33,180 sannolikhet, och det är vad ger dig svaret. 967 00:51:33,180 --> 00:51:37,540 Maskinöversättning används också en statistisk modell. 968 00:51:37,540 --> 00:51:44,790 Och om du vill tänka på maskin översättning på enklast möjliga 969 00:51:44,790 --> 00:51:48,970 sätt, vad du kan tänka dig är bara översätta ord för ord, eller hur? 970 00:51:48,970 --> 00:51:52,150 >> När du studerar ett språk för första gången, det är oftast det som 971 00:51:52,150 --> 00:51:52,910 du gör, eller hur? 972 00:51:52,910 --> 00:51:57,050 Om du vill kan översätta en mening på ditt språk till det språk 973 00:51:57,050 --> 00:52:00,060 du lär dig, oftast först, du översätta varje ord 974 00:52:00,060 --> 00:52:03,180 för sig, och sedan försöker att sätta ord på plats. 975 00:52:03,180 --> 00:52:07,100 >> Så om jag ville översätta detta, [Pratar PORTUGISISKA] 976 00:52:07,100 --> 00:52:10,430 vilket betyder "den vita katten sprang iväg." Om jag ville översätta den från 977 00:52:10,430 --> 00:52:13,650 Portugisiska till engelska, vad jag skulle kunna göra är, först, jag bara 978 00:52:13,650 --> 00:52:14,800 översätta ord för ord. 979 00:52:14,800 --> 00:52:20,570 Så "o" är "," "gato", "katt" "Branco," "vit" och sedan "fugio" är 980 00:52:20,570 --> 00:52:21,650 "Sprang iväg." 981 00:52:21,650 --> 00:52:26,130 >> Så då har jag alla ord här, men de är inte i ordning. 982 00:52:26,130 --> 00:52:29,590 Det är som "katten vita sprang iväg" vilket är ungrammatical. 983 00:52:29,590 --> 00:52:34,490 Så, då kan jag få ett andra steg, som kommer att vara att hitta den perfekta 984 00:52:34,490 --> 00:52:36,610 positionen för varje ord. 985 00:52:36,610 --> 00:52:40,240 Så jag vet att jag faktiskt vill ha "Vit katt" istället för "katt vit." Så 986 00:52:40,240 --> 00:52:46,050 vad jag kan göra är, den mest naiva metoden skulle vara att skapa alla 987 00:52:46,050 --> 00:52:49,720 möjliga permutationer av ord, av positioner. 988 00:52:49,720 --> 00:52:53,300 Och sedan se vilken som har högsta sannolikhet enligt 989 00:52:53,300 --> 00:52:54,970 till min språkmodell. 990 00:52:54,970 --> 00:52:58,390 Och sen när jag hittar den som har den högsta sannolikheten det, vilket är 991 00:52:58,390 --> 00:53:01,910 förmodligen "den vita katten sprang iväg," det är min översättning. 992 00:53:01,910 --> 00:53:06,710 >> Och det här är ett enkelt sätt att förklara hur mycket av maskinöversättning 993 00:53:06,710 --> 00:53:07,910 algoritmer fungerar. 994 00:53:07,910 --> 00:53:08,920 Låter det vettigt? 995 00:53:08,920 --> 00:53:12,735 Detta är också något riktigt spännande som ni kanske kan utforska för en 996 00:53:12,735 --> 00:53:13,901 slutprojekt, ja? 997 00:53:13,901 --> 00:53:15,549 >> STUDENT: Du sa att det var den naiva sätt, så vad är 998 00:53:15,549 --> 00:53:17,200 den icke-naiva sätt? 999 00:53:17,200 --> 00:53:18,400 >> LUCAS FREITAS: Den icke-naiva sätt? 1000 00:53:18,400 --> 00:53:19,050 OK. 1001 00:53:19,050 --> 00:53:22,860 Så det första som är dåligt om denna metod är att jag översatt bara 1002 00:53:22,860 --> 00:53:24,330 ord, ord för ord. 1003 00:53:24,330 --> 00:53:30,570 Men ibland måste ord som kan ha flera översättningar. 1004 00:53:30,570 --> 00:53:32,210 Jag ska försöka tänka av något. 1005 00:53:32,210 --> 00:53:37,270 Till exempel, "manga" på portugisiska burk antingen vara "mangel" eller "hylsa." Så 1006 00:53:37,270 --> 00:53:40,450 när du försöker översätta ord genom ord, kan det vara så att du 1007 00:53:40,450 --> 00:53:42,050 något som är meningslöst. 1008 00:53:42,050 --> 00:53:45,770 >> Så du verkligen vill att du tittar på alla de eventuella översättningar av 1009 00:53:45,770 --> 00:53:49,840 ord och se, först och främst, vad är det ordning. 1010 00:53:49,840 --> 00:53:52,000 Vi pratade om permutating saker? 1011 00:53:52,000 --> 00:53:54,150 För att se alla möjliga beställningar och välja ett som har den högsta 1012 00:53:54,150 --> 00:53:54,990 sannolikhet? 1013 00:53:54,990 --> 00:53:57,860 Man kan också välja alla möjliga översättningar för varje 1014 00:53:57,860 --> 00:54:00,510 ord och sedan se - 1015 00:54:00,510 --> 00:54:01,950 i kombination med de permutationer - 1016 00:54:01,950 --> 00:54:03,710 som en har den högsta sannolikheten. 1017 00:54:03,710 --> 00:54:08,590 >> Dessutom kan du också titta på inte bara ord utan fraser. 1018 00:54:08,590 --> 00:54:11,700 så du kan analyserar relationerna mellan ord och sedan få en 1019 00:54:11,700 --> 00:54:13,210 bättre översättning. 1020 00:54:13,210 --> 00:54:16,690 Också något annat, så den här terminen Jag är faktiskt forskar i 1021 00:54:16,690 --> 00:54:19,430 Kinesisk-engelsk maskinöversättning, så att översätta från 1022 00:54:19,430 --> 00:54:20,940 Kinesiska till engelska. 1023 00:54:20,940 --> 00:54:26,760 >> Och något vi gör är, förutom att använda en statistisk modell, som är bara 1024 00:54:26,760 --> 00:54:30,570 ser sannolikheterna för att se viss position i en mening, jag är 1025 00:54:30,570 --> 00:54:35,360 faktiskt också lägga till några syntax till min modell, säger, åh, om jag ser den här typen 1026 00:54:35,360 --> 00:54:39,420 konstruktion, det är vad jag vill ha för att ändra det till när jag översätter. 1027 00:54:39,420 --> 00:54:43,880 Så kan du också lägga till någon form av inslag av syntax för att göra 1028 00:54:43,880 --> 00:54:47,970 översättning effektivare och mer exakt. 1029 00:54:47,970 --> 00:54:48,550 OK. 1030 00:54:48,550 --> 00:54:51,010 >> Så hur kan du komma igång, om du vill att göra något i beräknings 1031 00:54:51,010 --> 00:54:51,980 lingvistik? 1032 00:54:51,980 --> 00:54:54,560 >> Först väljer du ett projekt som innebär språk. 1033 00:54:54,560 --> 00:54:56,310 Så, det finns så många där ute. 1034 00:54:56,310 --> 00:54:58,420 Det finns så många saker du kan göra. 1035 00:54:58,420 --> 00:55:00,510 Och då kan komma på en modell som du kan använda. 1036 00:55:00,510 --> 00:55:04,710 Vanligtvis innebär det att tänka på antaganden, som liksom, åh, när jag var 1037 00:55:04,710 --> 00:55:05,770 liksom att tänka på texterna. 1038 00:55:05,770 --> 00:55:09,510 Jag var som, ja, om jag vill räkna en som skrev det här, jag vill förmodligen 1039 00:55:09,510 --> 00:55:15,400 att titta på orden den person som används och se vem som använder det ordet väldigt ofta. 1040 00:55:15,400 --> 00:55:18,470 Så försök att göra antaganden och försöka tänka på modeller. 1041 00:55:18,470 --> 00:55:21,395 Och sedan kan du också söka på nätet efter den typ av problem som du har, 1042 00:55:21,395 --> 00:55:24,260 och det kommer att föreslå till er modeller som kanske 1043 00:55:24,260 --> 00:55:26,560 modellerade den saken också. 1044 00:55:26,560 --> 00:55:29,080 >> Och dessutom kan du alltid maila mig. 1045 00:55:29,080 --> 00:55:31,140 me@lfreitas.com. 1046 00:55:31,140 --> 00:55:34,940 Och jag kan bara svara på dina frågor. 1047 00:55:34,940 --> 00:55:38,600 Vi kan till och med skulle kunna möta upp så jag kan ge förslag på olika sätt att 1048 00:55:38,600 --> 00:55:41,490 genomföra ditt projekt. 1049 00:55:41,490 --> 00:55:45,610 Och jag menar om du delta med datorlingvistik, det kommer 1050 00:55:45,610 --> 00:55:46,790 att vara stor. 1051 00:55:46,790 --> 00:55:48,370 Du kommer att se det är så mycket potential. 1052 00:55:48,370 --> 00:55:52,060 Och branschen vill anställa du så dåligt på grund av det. 1053 00:55:52,060 --> 00:55:54,720 Så jag hoppas att ni haft detta. 1054 00:55:54,720 --> 00:55:57,030 Om ni har några frågor, Du kan fråga mig efter detta. 1055 00:55:57,030 --> 00:55:58,280 Men tack. 1056 00:55:58,280 --> 00:56:00,150