LUCAS FREITAS: Hey. Welkom iedereen. Mijn naam is Lucas Freitas. Ik ben een junior op de [onverstaanbaar] studeren informatica met een focus op computationele taalkunde. Dus mijn secundaire is in taal en taalkundige theorie. Ik ben echt opgewonden om jullie te leren een beetje over het veld. Het is een heel spannend gebied om te studeren. Ook met veel potentieel voor de toekomst. Dus, ik ben echt blij dat jullie overweegt projecten in computationele taalkunde. En ik zal meer dan gelukkig om te adviseren iemand van u als u besluit om streven een van die. Dus eerst wat computationele zijn taalkunde? Dus computationele taalkunde is de kruising tussen taalkunde en computer science. Dus, wat is taalkunde? Wat is informatica? Goed uit de taalkunde, wat we zijn de talen. Dus taalkunde is eigenlijk de studie van natuurlijke taal in het algemeen. Dus natuurlijke taal - we praten over taal die we eigenlijk gebruiken om met elkaar communiceren. Dus we zijn niet echt praten over C of Java. We praten meer over het Engels en Chinese en andere talen die we gebruiken voor communicatie met elkaar. De uitdagende ding over dat is dat nu hebben we bijna 7000 talen in de wereld. Dus er zijn nogal hoog verscheidenheid van talen die we kunnen bestuderen. En dan denk je dat het waarschijnlijk zeer moeilijk te doen, bijvoorbeeld, vertaling van de ene taal naar de andere, gezien het feit dat je hebt bijna 7000 van hen. Dus, als je denkt aan het doen van de vertaling van de ene taal naar de andere u hebben bijna meer dan een miljoen verschillende combinaties die je kunt hebben van taal tot taal. Dus het is echt een uitdaging om wat te doen voor voorbeeld vertaalsysteem voor elke taal. Dus, taalkunde behandelt met syntax, semantiek, pragmatiek. Jullie niet precies nodig om te weten wat ze zijn. Maar de zeer interessante is dat als een native speaker, wanneer je leert taal als kind, je eigenlijk leren al die dingen - syntaxis semantiek en pragmatiek - door jezelf. En niemand hoeft u syntaxis voor leren u om te begrijpen hoe zinnen zijn gestructureerd. Dus, het is zeer interessant, omdat het is iets dat heel komt intuïtief. En wat bent u nemen van de informatica? Nou, het belangrijkste ding dat we hebben in de informatica is in de eerste alle, kunstmatige intelligentie en machine learning. Dus, wat we proberen te doen computationele taalkunde is teach uw computer hoe iets te doen met taal. Dus, bijvoorbeeld, in de machinebouw vertaling. Ik probeer te leren mijn computer hoe om te weten hoe de overgang van de ene taal naar de andere. Dus, eigenlijk willen lesgeven een computer twee talen. Als ik de natuurlijke taalverwerking, dat is bijvoorbeeld het geval van Facebook's Graph zoeken, je leren uw computer hoe om te begrijpen queries goed. Dus, als je zegt "de foto's van mijn vrienden. "Facebook is niet te behandelen dat gehele tekenreeks die moet gewoon een stel woorden. Ze begrijpt eigenlijk de relatie tussen "foto's" en "mijn vrienden" en begrijpt dat "foto's" zijn eigendom van "mijn vrienden." Dus, dat is een deel van, bijvoorbeeld, natuurlijke taalverwerking. Het probeert te begrijpen wat is de relatie tussen de woorden in een zin. En de grote vraag is, kunt u leren een computer hoe om te spreken een taal in het algemeen? Dat is een zeer interessante vraag om denken, alsof misschien in de toekomst je gaat om te kunnen overleg dan met uw mobiele telefoon. Zoiets als wat we met Siri, maar iets meer wilt, kun je eigenlijk zeggen wat je wilt en de telefoon gaat om alles te begrijpen. En het kan hebben follow-up vragen en blijven praten. Dat is iets heel spannend, in mijn mening. Dus, iets over natuurlijke talen. Iets heel interessants over natuurlijke talen is dat, en dit krediet aan mijn taalkunde professor, Maria Polinsky. Ze geeft een voorbeeld en ik denk het is echt interessant. Omdat we leren de taal van toen we zijn geboren en dan onze inheemse taal soort groeit op ons. En eigenlijk je taal te leren van minimale input, toch? Je bent gewoon je input van uw ouders van wat uw taal klinkt wilt en je gewoon leren. Dus, het is interessant, want als je kijkt van die zinnen, bijvoorbeeld. Je ziet, "Mary legt op een jas elke keer dat ze verlaat het huis. " In dit geval is het mogelijk om de woord "zij" verwijzen naar Mary, toch? Je kunt zeggen: "Maria legt op een jas elke keer als Mary verlaat de huis. "dus dat is prima. Maar dan als je kijkt naar de zin "Ze doet een jas elke keer Mary verlaat het huis. "je weet dat het onmogelijk om te zeggen dat "ze" is verwijzend naar Mary. Er is geen manier om te zeggen dat "Maria zet op een jas elke keer Mary verlaat het huis. "Dus het is interessant omdat dit is het soort van intuïtie dat elke native speaker heeft. En niemand werd geleerd dat dit de manier waarop de syntaxis werkt. En dat kun je alleen hebben dit "zij" verwijzend naar Maria in dit eerste geval, en eigenlijk in deze andere Ook, maar niet in deze. Maar iedereen soort van krijgt hetzelfde antwoord. Iedereen het eens over dat. Dus het is echt interessant hoe hoewel je weet niet alle regels in uw taal je soort van begrijpen hoe de taal werkt. Dus het interessante ding over natuurlijke taal is dat je niet hoeft te weet elke syntax om te weten of een zin grammaticaal is of ongrammaticaal voor meeste gevallen. Die je doet denken dat misschien wat gebeurt is dat door je leven, je worden steeds meer en meer zinnen verteld aan u. En dan onthouden houden u alle zinnen. En dan wanneer iemand je vertelt iets, hoor je dat zin en je kijkt naar uw woordenschat van zinnen en kijk of die zin is er. En als het er u zeggen dat het grammaticale. Als het je niet zeggen dat het ongrammaticaal. Dus, in dat geval, zou je zeggen, oh, dus je hebt een enorme lijst van alle mogelijk zinnen. En dan wanneer je een zin te horen, u weten of het grammaticale of niet op basis van dat. Het ding is dat als je kijkt naar een zin, bijvoorbeeld "The vijfkoppige CS50 TFs gekookt blinden octopus met behulp van een DAPA mok. "Het is zeker niet een zin dat je eerder gehoord. Maar op hetzelfde moment dat u weet dat het vrij veel grammaticale, toch? Er zijn geen grammaticale fouten en je kunt zeggen dat het is een mogelijke straf. Dus het maakt ons denken dat eigenlijk de manier waarop we leren taal is niet alleen door het hebben van een enorme database van mogelijke woorden of zinnen, maar meer van begrip van de relatie tussen woorden die zinnen. Is dat logisch? Dus, dan is de vraag, kan computers talen leren? Kunnen we leren taal om computers? Dus, laten we denken aan het verschil tussen een native speaker van een taal en een computer. Dus, wat gebeurt er met de spreker? Nou, de native speaker leert een taal van de blootstelling aan het. Meestal zijn jaren de vroege kindertijd. Dus eigenlijk moet je gewoon een baby, en je blijven praten, en het alleen leert hoe om te spreken de taal, toch? Dus, bent u in principe geven input voor de baby. Zo is, dan kun je stellen dat een computer kan hetzelfde doen, toch? Je kunt gewoon de taal te geven als invoer voor de computer. Zoals bijvoorbeeld een bos van bestanden die boeken moeten in het Engels. Misschien is dat een manier waarop je zou kunnen leren een computer Engels, toch? En in feite, als je erover nadenkt, het kost je misschien een paar dagen om een ​​boek te lezen. Voor een computer duurt het een seconde om kijk naar alle woorden in een boek. Zo kunt u denken dat misschien net dit argument van de input van om je heen, dat is niet genoeg om te zeggen dat dat iets dat alleen mensen kunnen doen. U kunt hierbij denken computers Ook kan input te krijgen. Het tweede ding is dat native speakers ook een hersenen die is taalonderwijs vermogen. Maar als je erover nadenkt, een brein is een solide ding. Als je geboren bent, het is al ingesteld - dit is uw hersenen. En als je groot bent, krijg je alleen maar meer ingang van de taal en misschien voedingsstoffen en andere dingen. Maar vrij veel je hersenen is een solide ding. Dus je kunt zeggen, nou ja, misschien kunt u bouwen van een computer die een stelletje heeft functies en methoden die precies nabootsen taalonderwijs vermogen. Dus in die zin zou je kunnen zeggen, nou ja, ik een computer die alle heeft zijn dingen die ik moet leren. En het laatste wat is dat een native spreker leert van trial and error. Dus eigenlijk een ander belangrijk ding in het leren van talen is dat je soort dingen van leren door het maken van generalisaties van wat je hoort. Dus als je opgroeit leer je dat sommige woorden zijn meer als zelfstandige naamwoorden, sommige anderen zijn bijvoeglijke naamwoorden. En je hoeft niet aan een hebben kennis van de taalkunde te begrijpen dat. Maar je weet dat er een aantal woorden worden geplaatst in een deel van de zin en enkele anderen in andere delen van de zin. En dat wanneer je iets dat te doen als een zin die niet juist is - misschien omdat van een over generalisatie bijvoorbeeld. Misschien als je opgroeit, je merkt dat het meervoud meestal gevormd door het een S op het einde van het woord. En dan probeer je het meervoud van doen "Hert" als "herten" of "tand" als "Tooths." Dus dan je ouders of iemand die je corrigeert en zegt, nee, het meervoud van "hert" is "herten," en de meervoud van "tand" is "tanden." En dan je leert die dingen. Dus je leert van trial and error. Maar je kunt ook doen met een computer. U kunt iets geroepen hebben reinforcement learning. Die in feite is als het geven van een computer een beloning wanneer het doet iets correct. En waardoor het het tegenovergestelde van een beloning en wanneer het iets verkeerd doet. Je kunt echt zien dat als je Google Translate en je probeert vertalen van een zin, het vraagt ​​u om feedback. Dus als je zegt, oh, er is een betere vertaling voor deze zin. U kunt tijdens het typen en dan als er veel mensen blijven zeggen dat is een betere vertaling, het is gewoon leert dat het moet gebruiken in plaats van translatie de een was het geven. Dus, het is een heel filosofische vraag om te zien of computers zullen worden kunnen niet praten of in de toekomst. Maar ik heb goede hoop dat ze kunnen alleen op basis van deze argumenten. Maar het is gewoon meer van een filosofische vraag. Dus terwijl computers nog steeds niet kan praten, wat zijn de dingen die we kunnen doen? Sommige echt coole dingen zijn data classificatie. Dus, bijvoorbeeld, jullie weten dat e-maildiensten doen, want bijvoorbeeld spamfilters. Dus wanneer je spam ontvangt, probeert filteren andere doos. Hoe doet het dat? Het is niet zoals de computer weet precies wat e-mailadressen worden het versturen van spam. Dus het is meer gebaseerd op de inhoud van de boodschap, of misschien de titel of misschien wat patroon dat je hebt. Dus, in principe, wat je kunt doen is een veel gegevens van de e-mails die spam zijn, e-mails die geen spam zijn, en leren wat soort patronen die u in de degenen die spam zijn. En dit is een onderdeel van computationele taalkunde. Het heet data classificatie. En we eigenlijk gaan zien een voorbeeld dat de volgende dia. Het tweede ding is de natuurlijke taal verwerking die is het ding dat de Grafiek Zoek doet laten je schrijft een zin. En vertrouwt u begrijpt wat is de betekenis en geeft u een beter resultaat. Eigenlijk, als je naar Google of Bing en je hebt iets als Lady zoeken Gaga's hoogte, je eigenlijk aan de hand 5 '1 "in plaats van informatie van haar omdat het eigenlijk begrijpt waar je het over hebt. Dus dat is een deel van de natuurlijke taalverwerking. Of ook wanneer u gebruik maakt Siri, eerste heb je een algoritme dat probeert te vertalen wat je zegt in woorden, in tekst. En dan probeert te vertalen dat in betekenis. Dus dat is allemaal onderdeel van de natuurlijke taalverwerking. Dan heb je automatische vertaling - dat is eigenlijk een van mijn favorieten - die net is het vertalen van een taal naar de andere. Dus je kunt denken dat wanneer je doet machine translation, je hebt oneindige mogelijkheden van zinnen. Dus er is geen manier om alleen het opslaan elke vertaling. Dus je hebt om te komen met interessante algoritmen kunnen vertalen elke zin op een bepaalde manier. Jullie vragen tot nu toe? Nee? OK. Dus wat gaan we vandaag zien? Allereerst ga ik om te praten over de indeling probleem. Dus degene die ik was zeggen over spam. Wat ik ga doen is, gegeven lyrics een song, kunt u proberen te achterhalen met grote waarschijnlijkheid wie is de zanger? Laten we zeggen dat ik nummers van Lady Gaga en Katy Perry, als ik u een nieuwe song, kunt u uitzoeken of het is Katy Perry of Lady Gaga? De tweede, ik ben gewoon ga praten over de segmentatie probleem. Dus ik weet niet of jullie weten, maar Chinees, Japans, andere Oost-Aziatische talen en andere talen in het algemeen, niet over spaties tussen de woorden. En dan als je nadenkt over de manier waarop uw computer soort pogingen tot begrijpen natuurlijke taalverwerking, het ziet er op de woorden en probeert de relaties te begrijpen tussen hen, toch? Maar dan als je Chinees, en u hebben nul ruimten, het is echt moeilijk om te erachter te komen wat is de relatie tussen woorden, omdat ze geen hebben woorden op het eerste. Dus je moet iets te noemen doen segmentatie die net betekent het zetten spaties tussen wat we zouden noemen woorden in die talen. Zinvol? En dan gaan we praten over syntax. Dus gewoon een beetje over natuurlijke taalverwerking. Het zal alleen een overzicht te zijn. Dus vandaag, eigenlijk wat ik wil doen is geven jullie een beetje een binnenzijde van wat de mogelijkheden dat je kunt doen met computationele taalkunde. En dan kun je zien wat je denkt is koel onder die dingen. En misschien kun je denken aan een project en kom met me praten. En ik kan u advies geven over hoe het te implementeren. Dus syntax gaat een beetje te zijn over Grafiek Search en machine vertaling. Ik ga gewoon een voorbeeld van hoe te geven je kan bijvoorbeeld, vertalen iets van Portugees naar Engels. Klinkt goed? Dus eerst, de indeling probleem. Ik zal zeggen dat dit deel van het seminar gaat de meest uitdagend men alleen maar omdat er gaat sommige codering zijn. Maar het gaat om Python zijn. Ik weet dat jullie niet weten Python, dus Ik ga gewoon uit te leggen aan de hoge niveau wat ik doe. En je hoeft niet echt zorgen te veel over de syntaxis, want dat is iets wat jullie kunnen leren. OK? Klinkt goed. Dus wat is de indeling probleem? Dus je krijgt een aantal teksten van een nummer en je wilt raden wie zingt het. En dit kan voor elk soort andere problemen. Zodat het kan worden, bijvoorbeeld, heb je een presidentiële campagne en je hebt een spraak, en je wilt weten uit als het was, bijvoorbeeld, Obama of Mitt Romney. Of u kunt een heleboel e-mails en u willen uitzoeken of ze spam is of niet. Dus het is gewoon classificeren sommige gegevens op basis van de woorden dat je hebt daar. Dus om dat te doen, moet je maken een aantal aannames. Dus veel over computationele taalkunde is het maken van aannames, meestal slimme aannames, zodat kunt u goede resultaten. Proberen om een ​​model voor het te creëren. En probeer het uit en kijk of het werkt, als het geeft je goede precisie. En als dat zo is, dan heb je proberen te verbeteren. Als het niet, je bent zoals, OK, misschien heb ik moet een andere veronderstelling. Dus de veronderstelling dat we gaan maken is dat een kunstenaar meestal zingt over een onderwerp meerdere keren, en misschien gebruikt woorden meerdere keren net omdat ze gewend. Je kunt gewoon denken van uw vriend. Ik weet zeker dat jullie allemaal vrienden dat hun handtekening zin zeggen, letterlijk voor elke zin - zoals sommige specifiek woord of een specifieke zin die ze zeggen voor elke zin. En wat je kan zeggen is dat als je een zin die een handtekening heeft uitdrukking, kun je raden dat waarschijnlijk je vriend is het men zeggen, toch? Zodat je die aanname en vervolgens dat is hoe je een model te creëren. Het voorbeeld dat ik ga geven is op hoe Lady Gaga, bijvoorbeeld mensen zeggen dat ze gebruik maakt van "Baby" voor al haar nummer een liedjes. En eigenlijk is dit een video die laat zien haar zeggen het woord "kind" voor verschillende nummers. [VIDEO AFSPELEN] - (ZINGEN) Baby. Baby. Baby. Baby. Baby. Babe. Baby. Baby. Baby. Baby. [EINDE VIDEOWEERGAVE- LUCAS FREITAS: Dus er zijn, denk ik, 40 liedjes hier, waarin ze zegt dat de woord "baby." Dus je kunt in principe raden dat als je een lied dat heeft het woord "baby," er is een aantal hoge waarschijnlijkheid dat het Lady Gaga. Maar laten we proberen om dit te ontwikkelen verder meer formeel. Dus dit zijn teksten van liedjes door Lady Gaga en Katy Perry. Dus je kijkt naar Lady Gaga, ze zien je hebben veel van de gebeurtenissen "baby", een veel van de gebeurtenissen van "way." En dan Katy Perry heeft een veel van de gebeurtenissen van "Het," veel van de gebeurtenissen van 'vuur'. Dus eigenlijk wat we willen doen is, je een songtekst te krijgen. Laten we zeggen dat je een songtekst voor een te krijgen song die "baby" gewoon "baby." Indien krijg je alleen maar het woord "baby" en dit is alle data die je hebt van Lady Gaga en Katy Perry, die zou u raden is de persoon die zingt het lied? Lady Gaga of Katy Perry? Lady Gaga, toch? Want zij is de enige die zegt "Baby." Dit klinkt stom, toch? OK, dit is echt makkelijk. Ik ben gewoon op zoek naar de twee liedjes en van Natuurlijk, ze is de enige die heeft "Baby." Maar wat als je een bos van woorden? Als je een echte lyric, iets als: "baby, ik ging naar een [zie? CFT?] lezing, "of iets dergelijks, en dan je eigenlijk moet uitzoeken - op basis van al die woorden - wie is de kunstenaar die waarschijnlijk zong dit lied? Dus laten we proberen te ontwikkelen dit een beetje verder. OK, dus gewoon gebaseerd op de gegevens die we kreeg, lijkt het erop dat Gaga is waarschijnlijk de zanger. Maar hoe kunnen we schrijven dit formeler? En er gaat een beetje te zijn beetje statistiek. Dus als je de weg kwijt, gewoon proberen om het concept te begrijpen. Het maakt niet uit als je begrijpt de vergelijkingen heel goed. Dit is allemaal online te zijn. Dus eigenlijk wat ik de berekening is de kans dat dit nummer door Lady Gaga gezien het feit dat - dus deze bar betekent aangezien - Ik zag het woord "baby." Is dat logisch? Dus ik probeer te berekenen De kans. Dus er is deze stelling heet de Bayes theorema dat zegt dat de Een bepaalde waarschijnlijkheid B, is de waarschijnlijkheid B gegeven A, keer de waarschijnlijkheid van A, via waarschijnlijkheid B. Dit is een lang vergelijking. Maar wat je moet begrijpen van dat is dat dit is wat ik wil te berekenen, toch? Dus de kans dat song van Lady Gaga gezien het feit dat ik zag het woord "Baby." En nu, wat ik krijg is de waarschijnlijkheid van het woord "kind" gegeven dat ik Lady Gaga. En wat is dat eigenlijk? Wat dat betekent is, wat is de kans op het zien van het woord "kind" in Gaga teksten? Als ik wil berekenen dat in een zeer eenvoudige manier, het is gewoon het aantal keren dat ik zie "kindje" over het totale aantal woorden in Gaga teksten, toch? Wat is de frequentie die ik zie dat woord in Gaga's werk? Zinvol? De tweede term is de waarschijnlijkheid van Gaga. Wat betekent dat? Dat betekent in feite, wat is de waarschijnlijkheid van het classificeren sommige teksten als Gaga? En dat is een beetje raar, maar Laten we denken aan een voorbeeld. Dus laten we zeggen dat de kans op het hebben van "Baby" in een lied is hetzelfde voor Gaga en Britney Spears. Maar Britney Spears heeft twee keer meer liedjes dan Lady Gaga. Dus als iemand gewoon willekeurig geeft je songtekst van 'baby, "het eerste wat je kijken is, wat is de kans van het hebben van "Baby" in een Gaga lied, "Baby" in een Britney nummer? En het is hetzelfde. Dus het tweede ding dat je zult zien is, nou ja, wat is de kans op deze tekst op zichzelf als een Gaga lyric, en wat is de kans op zijnde een Britney songtekst? Dus omdat Britney heeft zoveel meer lyrics dan Gaga, zou je waarschijnlijk zeg, nou, dit is waarschijnlijk een Britney lyric. Dus dat is de reden waarom we hebben dit noemen hier. Waarschijnlijkheid van Gaga. Zinvol? Is dat zo? OK. En de laatste is net de kans "baby" die niet echt zo veel uit. Maar het is de kans op het zien van "Baby" in het Engels. We meestal niet schelen dat veel over die term. Is dat logisch? Dus de kans dat Gaga is genoemd voorafkans van de klasse Gaga. Want het betekent alleen dat, wat is de waarschijnlijkheid van het hebben van die klasse - dat is Gaga - gewoon in het algemeen, maar zonder voorwaarden. En toen heb ik kans op Gaga gegeven "baby," we noemen het plus Teary een kans, want het is de waarschijnlijkheid van Gaga gegeven enig bewijs. Dus ik geef u het bewijs dat zag ik het woord baby en het lied zinvol? OK. Dus als ik berekend dat voor elke van de nummers voor Lady Gaga, wat dat zou zijn - blijkbaar, ik kan dit niet bewegen. De kans Gaga zal iets dergelijks, 2 meer dan 24 keer 1/2, meer dan 2 meer dan 53. Het maakt niet uit als je weet wat deze nummers vandaan komen. Maar het is gewoon een nummer dat gaat meer dan 0, toch? En toen ik doe Katy Perry, de waarschijnlijkheid "baby" gegeven Katy is al 0, toch? Omdat er geen "Baby" in Katy Perry. Dus dan wordt dit 0, en Gaga wint, waardoor Gaga waarschijnlijk de zanger. Is dat logisch? OK. Dus als ik wil dit nog officieel te maken, Ik kan eigenlijk doen een model voor meerdere woorden. Dus laten we zeggen dat ik iets als, "schatje, ik ben in brand, "of zoiets. Dus het heeft meerdere woorden. En in dit geval, kunt u zien dat "de baby" is in Gaga, maar het is niet in Katy. En "vuur" is in Katy, maar het is niet in Gaga, toch? Dus het wordt steeds lastiger, toch? Want het lijkt erop dat je bijna hebben een band tussen de twee. Dus wat je moet doen is veronderstellen onafhankelijkheid tussen de woorden. Dus eigenlijk wat dat betekent is dat Ik ben gewoon te berekenen wat de kans op het zien van "baby," wat is de kans op het zien van 'ik' en "Ben", en "on" en "vuur" allemaal afzonderlijk. Dan vermenigvuldig ik ze allemaal. En ik zie wat is de kans van het zien van de hele zin. Zinvol? Dus eigenlijk, als ik slechts een woord, wat ik wil weten is de arg max, wat betekent, wat is de klasse die geeft mij de grootste kans? Dus wat is de klasse die is het geven van me de hoogste waarschijnlijkheid voor waarschijnlijkheid van klasse gegeven woord. Dus in dit geval, Gaga gegeven "baby." Of Katy gegeven "baby." Zinvol? En net van Bayes, dat vergelijking die ik liet zien, we creëren deze fractie. Het enige ding is dat je ziet dat de waarschijnlijkheid van woord gegeven de klasse verandert afhankelijk van de klasse, toch? Het aantal "baby" s die ik heb in Gaga is verschillend van Katy. De waarschijnlijkheid van de klas ook veranderingen want het is gewoon het nummer liedjes elk van hen heeft. Maar de waarschijnlijkheid van het woord zelf zal hetzelfde zijn voor alle kunstenaars, toch? Dus de waarschijnlijkheid van het woord gewoon, wat is de kans op aangezien woord in de Engels taal? Dus het is hetzelfde voor hen allen. Dus omdat dit constant is, kunnen we alleen maar vallen deze en niet schelen. Dus dit ook daadwerkelijk zal worden de vergelijking die we zoeken. En als ik meerdere woorden, ik ben nog steeds het voorafgaande hebben kans hier. Het enige ding is dat ik te vermenigvuldigen de kans alle andere woorden. Dus ik ben vermenigvuldigen ze allemaal. Zinvol? Het ziet er raar maar in feite betekent, het berekenen van de prior van de klas, en dan vermenigvuldigen met de waarschijnlijkheid van elk van de woorden zijn in die klasse. En je weet dat de kans op een woord gegeven een klasse gaat worden de aantal keren zie je dat woord in deze klasse, gedeeld door het aantal woorden die u in dat klasse in het algemeen. Zinvol? Het is gewoon hoe "kindje" was 2 over het aantal woorden dat Ik had in de teksten. Dus gewoon de frequentie. Maar er is een ding. Herinner me hoe ik liet zien dat de waarschijnlijkheid "baby" zijn lyrics van Katy Perry is 0 gewoon omdat Katy Perry heeft "kindje" niet helemaal? Maar het klinkt een beetje hard om gewoon gewoon zeggen dat teksten niet kan worden van een kunstenaar alleen maar omdat ze niet hebben dat woord in het bijzonder op elk moment. Dus je zou gewoon zeggen, nou, als je doe dit woord niet, ik ga geven u een lagere kans, maar ik ben gewoon niet van plan om geef je 0 meteen. Want misschien was het iets als, "Brand, brand, brand, brand," dat is helemaal Katy Perry. En dan "baby" en het gaat gewoon om 0 meteen omdat er was een "Baby." Dus eigenlijk wat we doen is iets riep Laplace smoothing. En dit betekent gewoon dat ik geef sommige waarschijnlijkheid zelfs de woorden die niet bestaan. Dus wat ik doe is dat wanneer ik ben de berekening van dit, heb ik altijd voeg 1 tot de teller. Dus zelfs als het woord niet bestaat, in dit geval, als deze is 0, ik ben nog steeds berekenen dit als 1 over de totaal aantal woorden. Anders krijg ik hoeveel woorden Ik heb en ik voeg 1. Dus ik reken voor beide gevallen. Zinvol? Dus laten we nu eens doen wat codering. Ik ga te hebben om het vrij snel te doen, maar het is gewoon belangrijk dat je jongens begrijpen van de concepten. Dus wat we proberen te doen is dit precies uit te voeren wat ik net zei - Ik wil dat je teksten uit zetten Lady Gaga en Katy Perry. En het programma zal in staat zijn om zeggen of deze nieuwe tekst komt uit Gaga of Katy Perry. Zinvol? OK. Dus ik heb dit programma ga ik naar classify.py bellen. Dus dit is Python. Het is een nieuwe programmeertaal. Het is zeer vergelijkbaar in sommige manieren C en PHP. Het is vergelijkbaar, want als je wilt leren Python na het kennen van C, het is echt niet zo veel van een uitdaging gewoon omdat Python is veel gemakkelijker dan C, beginnen. En een heleboel dingen zijn al geïmplementeerd voor u. Dus hoe zoals PHP heeft functies die sorteren van een lijst of voeg iets een array, of blah, blah, blah. Python heeft al die ook. Dus ik ga gewoon snel uitleggen hoe we de indeling konden doen probleem voor hier. Dus laten we zeggen dat in dit geval, ik heb lyrische gedichten van Gaga en Katy Perry. De manier waarop ik die teksten is dat het eerste woord van de tekst is de naam van de kunstenaar, en de rest is de teksten. Dus laten we zeggen dat ik deze lijst in waarvan de eerste is lyrics by Gaga. Dus hier ben ik op het juiste spoor. En de volgende is Katy, en het heeft ook de teksten. Dus dit is hoe verklaart u een variabele in Python. Je hoeft niet om het type gegevens te geven. Je schrijft gewoon "lyrics" soort graag in PHP. Zinvol? Dus wat zijn de dingen die ik moet berekenen kunnen berekenen waarschijnlijkheden? Ik moet de "prior" bereken van elk van de verschillende klassen die ik heb. Ik moet de "posteriors," bereken of vrijwel de waarschijnlijkheid van elk van de verschillende woorden Ik kan hebben voor elke kunstenaar. Dus binnen Gaga, bijvoorbeeld, ik ga om een ​​lijst van hoe vaak ik zien elk van de woorden. Zinvol? En tot slot, ik ga gewoon naar een lijst met de naam "woorden" die net gaat om hoeveel woorden ik have voor elke kunstenaar. Dus voor Gaga, bijvoorbeeld, als ik kijk om de teksten, ik had, denk ik, 24 woorden in totaal. Dus deze lijst is gewoon te hebben Gaga 24 en Katy ander nummer. Zinvol? OK. Dus nu, eigenlijk, laten we naar de codering. Dus in Python, kun je eigenlijk terug een bos van verschillende dingen van een functie. Dus ga ik deze functie te creëren genaamd "voorwaardelijk," die gaat om al die dingen terug te keren, de "Strafblad" de "waarschijnlijkheid," en de "Woorden." Dus "voorwaardelijk", en het is zal worden ter discussie "lyrics." Dus nu wil ik dat je eigenlijk schrijf deze functie. Dus de manier waarop ik dit kan schrijven functie is dat ik alleen deze gedefinieerd werken met "def". Dus ik deed "def voorwaardelijk, "en het neemt "Lyrics." En wat dit gaat doen wordt, in de eerste plaats, ik heb mijn strafblad dat ik wil berekenen. Dus de manier dat ik dit kan doen is het creëren een woordenboek in Python, waarin is vrijwel hetzelfde als een hash tafel, of het is als een iteratief array in PHP. Dit is hoe ik verklaar een woordenboek. En eigenlijk wat dit betekent is dat priors van Gaga is 0,5, bijvoorbeeld als 50% van de tekst komt uit Gaga, 50% zijn van Katy. Zinvol? Dus ik moet uitzoeken hoe aan de priors berekenen. De volgende degenen die ik moet doen, ook, zijn de kansen en de woorden. Dus de waarschijnlijkheid van Gaga is de lijst alle waarschijnlijkheden die ik hebben voor elk van de woorden Gaga. Dus als ik naar waarschijnlijkheid van Gaga "Baby," bijvoorbeeld, het zal mij zoiets als 2 op 24 in dat geval. Zinvol? Dus ik ga naar "waarschijnlijkheden," ga naar de "Gaga" emmer die een lijst van alle heeft de Gaga woorden, dan ga ik naar "baby" en ik zie de kans. En tenslotte heb ik dit "Woorden" woordenboek. Dus hier, "waarschijnlijkheden." En dan "Woorden." Dus als ik doe "woorden", "Gaga," wat er gaat gebeuren is dat het gaat me 24 te geven, te zeggen dat ik hebben 24 woorden in teksten van Gaga. Zinvol? Dus hier, "woorden" is gelijk aan dah-dah-dah. OK Dus wat ik ga doen is ik ga itereren over elk van de teksten, dus elk van de snaren die Ik heb in de lijst. En ik ga die dingen te berekenen voor elke kandidaat. Zinvol? Dus ik moet een doen voor lus. Dus in Python wat ik kan doen is "voor lijn in teksten. "Hetzelfde als een "Voor elk" statement in PHP. Weet je nog hoe het was als PHP ik kon zeggen "voor elk teksten als lijn. "Zinvol? Dus ik ben het nemen van elk van de lijnen, in dit geval deze string en de volgende snaar zodat voor elk van de lijnen wat ik gaan doen, is het eerste, ik ga splitsen deze lijn in een lijst van woorden gescheiden door spaties. Zodat de koele ding over Python is dat je kon gewoon Google als "hoe kan ik split een string in woorden? "En de ga u vertellen hoe dat te doen. En de manier om het te doen, het is gewoon "lijn = Line.split () 'en het is eigenlijk ga u een lijst met elk van de woorden hier. Zinvol? Dus nu dat ik dat deed ik wil weten wie is de zanger van dat lied. En om dat te doen ik moet alleen de krijgen eerste element van de array, toch? Dus ik kan alleen zeggen dat ik "zanger = Lijn (0) "Zinvol? En wat ik moet doen is in de eerste Alle, ik ga updaten hoeveel woorden die ik heb onder "Gaga." dus ik ben gewoon gaan berekenen hoeveel woorden ik hebben in deze lijst, toch? Want dit is hoeveel woorden ik heb in de teksten en ik ga gewoon toevoegen aan de "Gaga" array. Is dat logisch? Niet te veel focussen op de syntaxis. Denk meer over de concepten. Dat is het belangrijkste onderdeel. OK. Dus wat ik kan doen is als "Gaga" is reeds in die lijst, dus "als zanger in woorden ", wat betekent dat ik al hebben woorden door Gaga. Ik wil gewoon de extra toe te voegen woorden om dat. Dus wat ik doe is 'woorden (zanger) + = Len (lijn) - 1 ". En dan kan ik gewoon de lengte van de lijn. Dus hoeveel elementen I hebben de array. En ik moet doen minus 1, alleen maar omdat het eerste element van de array slechts een zanger en dat zijn geen teksten. Zinvol? OK. "Anders," het betekent dat ik wil eigenlijk Steek Gaga in de lijst. Dus ik gewoon doen "woorden (zanger) = Len (lijn) - 1, "sorry. Dus de enige verschil tussen de twee lijnen dat dit het niet Er bestaan ​​nog, dus ik ben gewoon initialiseren. Dit degene die ik ben eigenlijk te voegen. OK. Dus werd deze toe te voegen aan woorden. Nu wil ik toevoegen aan de priors. Hoe bereken ik het strafblad? De veroordelingen kan worden berekend door hoe vaak. Dus hoe vaak zie je dat zanger tussen alle zangers u hebben, toch? Dus voor Gaga en Katy Perry, in dit geval zie ik Gaga eenmaal, Katy Perry eenmaal. Dus eigenlijk de veroordelingen voor Gaga en voor Katy Perry zou gewoon een, toch? Je hoe vaak Ik zie de kunstenaar. Dus dit is zeer eenvoudig te berekenen. Ik kan het gewoon zoiets als als "als zanger in strafblad "Ik ga gewoon om 1 toe te voegen aan hun priors doos. Dus, "priors (zingen)" + = 1 "en dan" anders " Ik ga "priors (zanger) doen = 1. "Zinvol? Dus als het niet bestaat Ik heb net als 1, anders had ik voeg 1. OK, dus nu alles wat ik nog heb te doen Ook alle woorden toevoegen waarschijnlijkheden. Dus ik moet tellen hoe vaak Ik zie elk van de woorden. Dus ik moet gewoon een ander doen lus in de lijn. Dus eerste wat ik ga doen is controleren of de zanger heeft al een waarschijnlijkheden array. Dus ik ga kijken of de zanger niet hebben een waarschijnlijkheden array, ik ben gewoon naar een voor hen te initialiseren. Het is niet eens een array, sorry, het is een woordenboek. Dus de waarschijnlijkheden van zanger gaat een open woordenboek, dus ik ben gewoon het initialiseren van een woordenboek voor. OK? En nu kan ik eigenlijk doen een lus elk van de woorden "bereken waarschijnlijkheden. OK. Dus wat ik kan doen is een lus. Dus ik ga gewoon herhalen over de array. Dus de manier waarop ik dat kan doen in Python is "for i in range." Vanaf 1 want ik wil starten in de tweede element omdat de eerste is de zanger naam. Dus van een tot de lengte van de lijn. En als ik bereik het eigenlijk gaan van zoals hier van 1 tot len ​​van de lijn minus 1. Dus het doet al dat ding doen n minus 1 voor arrays die zeer handig. Zinvol? Dus voor elk van deze, wat ik ga doen is, net als in de andere, Ik ga om te controleren of het woord in deze positie in de lijn is al in waarschijnlijkheden. En dan zoals ik al zei hier, waarschijnlijkheden woorden, zoals in ik "Waarschijnlijkheden (zangeres)". Dus de naam van de zanger. Dus als het al in "Probabilit (zanger)", betekent dit dat ik wilt 1 toe te voegen, dus ik ga do "waarschijnlijkheden (zanger)", en de woord "lijn (i)" genoemd. Ik ga voeg 1 en "anders" Ik ben gewoon ga het initialiseren op 1. "Line (i)". Zinvol? Dus ik berekende Alle matrices. Zo, nu al wat ik moet doen voor dit is gewoon "terug strafblad, waarschijnlijkheden en woorden. "Laten we te zien of er sprake is van, OK. Het lijkt erop dat alles tot nu toe werkt. Zo, dat is logisch? Op een bepaalde manier? OK. Dus nu heb ik alle kansen. Dus nu het enige wat ik nog heb is gewoon om dat ding hebben dat berekent het product van alle waarschijnlijkheden als ik de teksten. Dus laten we zeggen dat ik wil nu bellen Deze functie "classificeren ()" en de ding die functie neemt is slechts een argument. Laten we zeggen: "Schat, ik ben in brand" en het is gaan om erachter te komen wat is de waarschijnlijkheid dat dit Gaga? Wat is de kans dat dit Katie? Klinkt goed? Dus ik ga gewoon moeten creëren een nieuwe functie genaamd "classificeren ()" en het gaat om een ​​aantal te nemen teksten ook. En naast de teksten heb ik ook moeten de priors te sturen, de waarschijnlijkheden en de woorden. Dus ik ga naar teksten, priors sturen, waarschijnlijkheden, woorden. Dus dit is het nemen van teksten, priors, waarschijnlijkheden, woorden. Dus, wat doet het? Het in principe gaat om te gaan door alle de mogelijke kandidaten die u hebben als zanger. En waar zijn de kandidaten? Ze zitten in het strafblad, toch? Dus ik heb al die daar. Dus ik ga een woordenboek hebben alle mogelijke kandidaten. En dan voor elke kandidaat in de strafblad, dus dat betekent dat het gaat om zijn Gaga, Katie als ik had meer zou het meer zijn. Ik ga om te beginnen berekenen deze kans. De kans zoals we zagen in de PowerPoint is voorafgaande maal de product van elk van de andere waarschijnlijkheden. Dus ik kan hier hetzelfde doen. Ik kan het gewoon doen kans is aanvankelijk juist voorafgaande. Dus priors van de kandidaat. Rechts? En nu moet ik itereren over alle woorden die ik in de teksten te kan de waarschijnlijkheid voegen voor elk van hen, OK? Dus, "voor woord in lyrics" wat ik ga te doen is, als het woord in "Waarschijnlijkheden (kandidaat)", die betekent dat het een woord dat de kandidaat heeft in hun teksten - bijvoorbeeld, "Baby" voor Gaga - wat ik ga doen, is dat de waarschijnlijkheid zal worden vermenigvuldigd door 1 plus de waarschijnlijkheid van de kandidaat voor dat woord. En het "woord" genoemd. Dit gedeeld door het aantal woorden dat ik voor die kandidaat. Het totaal aantal woorden die ik heb voor de zanger die ik naar kijk. "Anders." het betekent dat het een nieuw woord dus het zou zijn zoals bijvoorbeeld "Vuur" voor Lady Gaga. Dus ik wil gewoon dan doen 1 "Woord (kandidaat)". Dus ik wil niet dat deze term hier plaatsen. Dus het gaat om in principe worden kopiëren en deze te plakken. Maar ik ga dit deel te verwijderen. Dus het is gewoon gaat worden 1 over dat. Klinkt goed? En nu aan het eind, ik ben gewoon gaan print de naam van de kandidaat en de kans dat je hebt van met de S op hun teksten. Zinvol? En ik eigenlijk niet eens moet dit woordenboek. Zinvol? Dus, laten we eens zien of dit echt werkt. Dus als ik dit uitvoeren, werkte het niet. Wacht een seconde. "Woorden (kandidaat)", "woorden (kandidaat)", dat de naam van de array. OK Dus, het zegt dat er een aantal bug voor kandidaat in strafblad. Laat me gewoon chill een beetje. OK. Laten we het proberen. OK. Het geeft dus Katy Perry heeft dit kans hierop maal 10 tot min 7, en Gaga heeft deze maal 10 tot min 6. Zo zie je maar het laat zien dat Gaga heeft een hogere kans. Dus "Baby, ik ben on Fire" is waarschijnlijk een Gaga lied. Zinvol? Dus dit is wat we deden. Deze code zal online worden geplaatst, dus jullie kunt het controleren. Misschien gebruik maken van een deel van het voor als je wilt doe een project of iets dergelijks. OK. Dit was gewoon om te laten zien wat computationele taalkunde code eruit ziet. Maar nu laten we gaan naar meer hoog niveau spul. OK. Dus de andere problemen I had het over - de segmentatie probleem de eerste daarvan. Dus je hebt hier Japans. En dan zie je dat er geen spaties. Dus dit is in feite betekent dat het de bovenkant van de stoel, toch? Je spreekt Japans? Het is de top van de stoel, toch? STUDENT: Ik weet niet wat de kanji dan is er. LUCAS FREITAS: Het is [SPREKEN JAPANSE] OK. Dus het betekent in feite voorzitter van de top. Dus als je moest een ruimte zetten hier zijn. En dan heb je [? Ueda-san. ?] Die in feite betekent Mr Ueda. En je ziet dat "Ueda" en je hebt een ruimte en vervolgens "san." Zo zie je dat hier je "Ue" is als op zichzelf. En hier heeft een karakter ernaast. Dus het is niet zoals in die talen karakters zin een woord zodat je net een groot aantal spaties. Personages zich tot elkaar verhouden. En ze kunnen samen zijn als twee, drie, een. Dus je eigenlijk om een ​​soort te creëren van de manier van het zetten van die ruimten. En deze zaak is dat wanneer je gegevens uit deze Aziatische talen, alles komt unsegmented. Omdat niemand die Japanse schrijft of Chinees schrijft met spaties. Wanneer je aan het schrijven bent Chinees, Japanse je schrijft alles zonder spaties. Er wordt zelfs niet zinvol om ruimtes te zetten. Dus dan wanneer u gegevens krijgt van sommige Oost-Aziatische taal, als je wilt iets wat eigenlijk doen met dat je moet segment eerste. Denk aan het doen van het voorbeeld van de teksten zonder spaties. Dus de enige teksten die je hebt zal zijn zinnen, toch? Gescheiden door punten. Maar dan met alleen de zin zal niet echt helpen op het geven van informatie van wie die teksten zijn door. Rechts? Dus je moet eerst zet ruimtes. Dus hoe kun je dat doen? Dus dan komt het idee van een taal model dat is iets heel belangrijk voor computationele taalkunde. Dus een taal model is eigenlijk een tafel van waarschijnlijkheden die shows Allereerst wat is de kans van het hebben van het woord in een taal? Dus laten zien hoe vaak een woord is. En dan ook die het verband tussen de woorden in een zin. Dus de belangrijkste idee is, als een vreemdeling kwam om u en zei een zin om u, wat is de kans dat, voor Bijvoorbeeld, "dit is mijn zus [? GTF"?] was de zin die de persoon zei? Dus uiteraard sommige zinnen zijn vaker voor dan anderen. Bijvoorbeeld, "goedemorgen" of "goed nacht, "of" hey daar, "is veel meer voor dan de meeste zinnen dat we een Engels. Dus waarom zijn die zinnen vaker? Allereerst, het is omdat je woorden die vaker voorkomen. Dus, bijvoorbeeld, als je zegt, de hond is groot, en de hond is gigantisch, je meestal waarschijnlijk hoort de hond is groot vaker omdat "big" is meer frequent in het Engels dan "gigantisch." Dus een van de dingen is het woord frequentie. Het tweede ding dat is echt belangrijk is gewoon de volgorde van de woorden. Dus, is het gebruikelijk om te zeggen "de kat binnen het strafschopgebied. "maar je meestal niet zien in "De doos in de kat is." dus je ziet dat er een belang in de volgorde van de woorden. Je kunt niet zomaar zeggen dat die twee zinnen hebben dezelfde kans alleen maar omdat ze dezelfde woorden. Je eigenlijk de zorg over de volgorde ook. Zinvol? Dus wat doen we? Dus wat ik zou kunnen proberen om je krijgen? Ik probeer je wat we krijgen bellen met de n-gram modellen. Dus n-gram modellen principe aannemen dat voor elk woord dat je hebt in een zin. Het is de waarschijnlijkheid van die woord er hangt niet alleen af ​​van de frequentie van dat woord in de taal, maar ook op de woorden die worden eromheen. Dus bijvoorbeeld, meestal als je ziet iets op of aan je waarschijnlijk gaat om een ​​te zien zelfstandig naamwoord na, toch? Want als je een voorzetsel meestal duurt het een zelfstandig naamwoord na het. Of als u een werkwoord dat is transitieve je meestal gaat hebben een nominale constituent. Dus het gaat om een ​​zelfstandig naamwoord hebben ergens eromheen. Dus, in principe, wat het doet is dat het beschouwt de waarschijnlijkheid van het hebben van woorden naast elkaar, bij je bent het berekenen van de waarschijnlijkheid van een zin. En dat is wat een taal model in wezen. Gewoon zeggen wat is de kans van een specifieke zin in een taal? Dus waarom is dat nuttig, eigenlijk? En in de eerste plaats wat een n-gram model, dan? Dus een n-gram-model houdt in dat elk woord afhankelijk van volgende N minus 1 woorden. Dus eigenlijk betekent het dat als ik kijk, bijvoorbeeld aan de CS50 TF bij Ik berekenen de kans de zin, zul je worden als "de waarschijnlijkheid van het woord "de" maal de waarschijnlijkheid van "de CS50 "keer de kans van het hebben van "De CS50 TF." Dus, eigenlijk, ik tel alle mogelijke manieren van te rekken. En dan meestal als je dit doet, als in een project, zet je N te zijn een lage waarde. Dus, hebben meestal bigrammen of trigrammen. Zodat je gewoon tellen twee woorden, een groep twee woorden of drie woorden, alleen voor problemen met de prestaties. En ook omdat misschien als je iets als "De CS50 TF." Wanneer je hebben "TF," het is heel belangrijk dat "CS50" is ernaast, toch? Die twee dingen zijn meestal naast elkaar. Als je denkt van "TF," het is waarschijnlijk gaat hebben wat klasse het is TF'ing voor. Ook "de" is echt belangrijk voor CS50 TF. Maar als je iets als "De CS50 hebben TF ging naar klas en gaven hun studenten wat snoep. "" Candy "en" de " hebben geen relatie echt, toch? Ze zijn zo ver van elkaar dat Het maakt eigenlijk niet uit wat woorden die je hebt. Dus door het doen van een bigram of een trigram, het betekent gewoon dat je te beperken uzelf op een aantal woorden dat de buurt zijn. Zinvol? Dus als je wilt segmentatie doen, Kortom, wat je wilt doen is zien welke alle mogelijke manieren je kunt het segment van de zin. Zodanig dat je ziet wat is de waarschijnlijkheid van elk van deze zinnen bestaande in de taal? Dus wat je doet is als, nou ja, laat me proberen om een ​​ruimte hier zetten. Dus je zet er een spatie en je ziet wat is de waarschijnlijkheid van die zin? Dan bent u als, OK, misschien dat was niet zo goed. Dus heb ik een ruimte is er en een spatie daar, en berekent u de waarschijnlijkheid nu, en je ziet dat het is een hogere waarschijnlijkheid. Dus dit is een algoritme genaamd de TANGO segmentatie-algoritme, dat is eigenlijk iets dat echt zou zijn cool voor een project, dat neemt in principe unsegmented tekst die kunnen Japanse of Chinese of misschien zijn Engels zonder spaties en probeert te zetten spaties tussen woorden en doet dat door een taalmodel en proberen om te zien wat is de hoogste kans je kunt krijgen. OK. Dus dit is segmentatie. Syntaxis. Dus, wordt syntax gebruikt voor nu zoveel dingen. Dus voor Graph zoeken, voor Siri voor vrijwel elke vorm van natuurlijke taalverwerking je hebt. Dus wat zijn de belangrijke dingen over syntax? Dus, zinnen in het algemeen wat wij noemen kiezers. Welke zijn een soort groepen van woorden dat een functie in de zin hebben. En ze kunnen niet echt zijn uit elkaar. Dus, als ik zeg, bijvoorbeeld, "Lauren houdt Milo. "Ik weet dat" Lauren "is een bestanddeel en dan "liefdes Milo "is ook een andere. Want je kunt niet zeggen als "Lauren Milo houdt van "dezelfde betekenis hebben. Het gaat niet om dezelfde betekenis. Of ik kan niet zeggen als "Milo Lauren houdt. "Niet alles heeft dezelfde wat betekent dat te doen. Dus de twee belangrijke dingen over syntaxis zijn de lexicale types die in feite de functie die u hebben voor de woorden zelf. Dus je moet weten dat "Lauren" en "Milo" zijn zelfstandige naamwoorden. "Love" is een werkwoord. En de tweede belangrijkste is dat ze phrasal types. Dus je weet dat "houdt Milo" is eigenlijk een verbale zin. Dus als ik zeg "Lauren," Ik weet dat Lauren is iets te doen. Wat doet ze? Ze is liefdevol Milo. Dus het is een hele zaak. Maar de componenten een zelfstandig naamwoord en een werkwoord. Maar samen maken ze een werkwoord frase. Dus, wat kunnen we eigenlijk doen met computationele taalkunde? Dus, als ik iets voor bijvoorbeeld "Vrienden van Allison." Ik zie als ik gewoon heeft een syntactische boom ik zou weten dat "Vrienden" is een zelfstandig naamwoord zin is het een zelfstandig naamwoord en dan "van Allison" is een voorzetselconstituent waarin "uit" is een propositie en "Allison" is een zelfstandig naamwoord. Wat ik zou doen is leer mijn computer dat als ik een zelfstandig naamwoord zin een en dan een voorzetsel. Dus in dit geval, "vrienden" en dan "van Milo "Ik weet dat dit betekent dat NP2, de tweede, bezit NP1. Dus ik kan een soort van relatie te creëren, enkele soort functie voor. Dus wanneer ik zie deze structuur, die exact overeenkomt met "vrienden van Allison, "Ik weet dat Allison is eigenaar van de vrienden. Dus de vrienden zijn iets dat Allison heeft. Zinvol? Dus dit is eigenlijk wat Grafiek Search doet. Het creëert alleen maar regels voor een heleboel dingen. Dus "vrienden van Allison," "mijn vrienden die wonen in Cambridge, "" mijn vrienden die naar Harvard. "Het creëert regels voor al die dingen. Nu automatische vertaling. Dus, automatische vertaling is ook iets statistische. En eigenlijk als je betrokken bij krijgen computationele taalkunde, veel je spullen gaat statistieken zijn. Dus zoals ik deed het voorbeeld met veel waarschijnlijkheden dat ik was berekenen, en dan krijg je dit zeer klein aantal dat is de uiteindelijke kans, en dat is wat geeft u het antwoord. Machine vertaling gebruikt ook een statistisch model. En als je wilt om te denken van de machine vertaling eenvoudig mogelijke manier, wat je maar kunt bedenken is gewoon vertalen woord voor woord, toch? Als je leren een taal voor de eerste keer, dat is meestal wat je doen, toch? Als u wilt kunt een zin vertalen in uw taal om de taal je leert, meestal eerst, je vertalen elk van de woorden individueel, en dan probeer je om de woorden op zijn plaats te zetten. Dus als ik wilde dit te vertalen, [SPREKEN PORTUGESE] wat betekent "de witte kat liep weg." Als ik wilde het vertalen van Portugees naar Engels, wat ik zou kunnen doen is in de eerste, ik heb net vertalen woord voor woord. Dus "o" is "de", "Gato", "kat" "Branco", "wit," en dan "Fugio" is "Rende weg." Dus dan heb ik alle woorden hier, maar ze zijn niet in orde. Het is als "de kat witte rende weg" dat is ongrammaticaal. Zo, dan kan ik een tweede stap, hebben die zal het vinden van het ideale positie van elk van de woorden. Dus ik weet dat ik eigenlijk willen hebben "Witte kat" in plaats van "kat wit." Dus wat ik kan doen is, de meest naïeve methode zou maken alle mogelijke permutaties van woorden, van posities. En dan zien welke men heeft de hoogste waarschijnlijkheid volgens naar mijn taal model. En toen ik degene die heeft de hoogste waarschijnlijkheid, dat waarschijnlijk "de witte kat liep weg," dat is mijn vertaling. Dit is een eenvoudige manier om te verklaren hoe veel automatische vertaling algoritmen werken. Is dat logisch? Dit is ook iets wat echt spannend dat jullie misschien kunnen verkennen voor een afstudeerproject, ja? STUDENT: Nou, je zei dat het de naïeve manier, dus wat is de niet-naïeve manier? LUCAS FREITAS: De niet-naïeve manier? OK. Dus het eerste wat dat is slecht over deze methode is dat ik gewoon vertaald woorden, woord voor woord. Maar soms moet je woorden die kan meerdere vertalingen. Ik ga proberen te denken van iets. Bijvoorbeeld, "manga" in het Portugees kan ofwel "mangel" of "sleeve". Dus als je probeert te woord te vertalen door woord, kan het worden waardoor u iets dat geen zin heeft. Dus je eigenlijk wilt u kijken naar alle de mogelijke vertalingen van de woorden zien, allereerst wat is de volgorde. We hadden het over permutating de dingen? Om alle mogelijke volgordes zien en kiezen met de hoogste waarschijnlijkheid? U kunt er ook voor kiezen alle mogelijke vertalingen voor elk woord en dan zien - gecombineerd met de permutaties - welke de hoogste waarschijnlijkheid. Bovendien kunt u ook kijken naar niet alleen woorden maar zinnen. dus je kunt de relaties tussen analyseren de woorden en krijgen dan een betere vertaling. Ook nog iets anders, dus dit semester Ik ben eigenlijk het doen van onderzoek in Chinees-Engels automatische vertaling, dus het vertalen van Chinees naar het Engels. En iets wat we doen is, naast het gebruik van een statistisch model, dat is gewoon het zien van de kansen van het zien een bepaalde positie in een zin, ik ben eigenlijk ook het toevoegen van enkele syntax aan mijn model, het zeggen, oh, als ik zie dit soort van de bouw, dit is wat ik wil om het te veranderen toen ik vertalen. Dus je kunt ook een soort van add element syntax om de vertaling efficiënter en nauwkeuriger. OK. Dus hoe kan je aan de slag, als je wilt om iets te doen in de computationele taalkunde? Kies eerst je een project die inhoudt talen. Dus, er zijn zoveel die er zijn. Er zijn zoveel dingen die je kunt doen. En dan kunnen denken aan een model die u kunt gebruiken. Meestal dat betekent denken van veronderstellingen, zoals als, oh, toen ik als het denken van de teksten. Ik was als, nou ja, als ik wil achterhalen een die dit schreef, wil ik waarschijnlijk om te kijken naar de woorden die de persoon gebruikt en zien wie gebruikt dat woord heel vaak. Dus probeer veronderstellingen en probeer te denken aan modellen. En dan kun je ook online zoeken naar het soort probleem dat je hebt, en het gaat om te suggereren u modellen die misschien gemodelleerd dat ding goed. En ook u kunt me altijd mailen. me@lfreitas.com. En ik kan het gewoon antwoord geven op uw vragen. We kunnen zelfs kunnen ontmoeten zodat ik kan suggesties geven over de wijze waarop de uitvoering van uw project. En ik bedoel als je meedoen met computationele taalkunde, het gaat groot te zijn. Je gaat daar te zien is zo veel potentieel. En de sector wil huren dat je zo slecht vanwege dat. Dus ik hoop dat jullie genoten van deze. Als jullie nog vragen hebben, kunt u mij vraagt ​​na deze. Maar toch bedankt.