Tip:
Highlight text to annotate it
X
>> LUCAS FREITAS: Hej.
Välkomna alla.
Mitt namn är Lucas Freitas.
Jag är en junior på [OHÖRBAR] studera datavetenskap med inriktning i
datorlingvistik.
Så min sekundära är på språket och språkteori.
Jag är verkligen glad för att lära er lite om området.
Det är ett väldigt spännande område att studera.
Även med en stor potential för framtiden.
Så, jag är verkligen glad att ni väger projekt i
datorlingvistik.
Och jag kommer att vara mer än glada att ge råd något av dig om du bestämmer dig för att
bedriver någon av dem.
>> Så först av allt det som är computational lingvistik?
Så datorlingvistik är det skärningspunkten mellan lingvistik och
datavetenskap.
Så, vad är lingvistik?
Vad är datavetenskap?
Tja från lingvistik, vad vi tar är de språk.
Så lingvistikk är faktiskt studien av naturligt språk i allmänhet.
Så naturligt språk - vi talar om språk som vi faktiskt använder till
kommunicera med varandra.
Så vi är inte precis talar om C eller Java.
Vi pratar mer om engelska och Kinesiska och andra språk som vi
använder för att kommunicera med varandra.
>> Den utmanande sak om det är att just nu har vi nästan 7000
språk i världen.
Så det finns en ganska stor variation språk som vi kan studera.
Och då du tror att det är nog mycket svårt att göra, till exempel,
översättning från ett språk till andra, med tanke på att du har
nästan 7.000 av dem.
Så, om du tänker på att göra översättning från ett språk till den andra du
har nästan mer än en miljon olika kombinationer som du kan
har från språk till språk.
Så det är verkligen en utmaning att göra en del typ av exempel översättningssystemet för
varje språk.
>> Så, lingvistik behandlar med syntax, semantik, pragmatik.
Ni behöver inte exakt behöver att veta vad de är.
Men mycket intressant sak är att som en infödd talare, när du lär dig
språk som barn, du faktiskt lära alla dessa saker - syntax semantik
och pragmatik -
själv.
Och ingen har att lära dig syntax för dig att förstå hur meningar är
strukturerad.
Så det är verkligen intressant eftersom det är något som kommer mycket
intuitivt.
>> Och vad är det du tar från i datavetenskap?
Tja, är det viktigaste att vi har i datavetenskap är först i
alla, artificiell intelligens och maskininlärning.
Så, vad vi försöker att göra datorlingvistik är teach
datorn hur man gör något med språket.
>> Så, till exempel, i maskin översättning.
Jag försöker lära min dator hur att veta hur övergången från en
språk till ett annat.
Så i princip gillar undervisning en dator två språk.
Om jag gör naturligt språk, vilket är fallet till exempel om
Facebooks Graph Sök, lär dig datorn hur man kan förstå
frågor väl.
>> Så, om du säger "bilderna av min vänner. "Facebook behandlar inte att
som helhet sträng som har bara en *** ord.
Det förstår faktiskt relationen mellan "foton" och "mina vänner" och
förstår att "bilder" är egenskap av "mina vänner."
>> Så, det är en del av, till exempel, naturligt språk.
Den försöker att förstå vad är relationen mellan
orden i en mening.
Och den stora frågan är, kan du lära en dator hur man talar
ett språk i allmänhet?
Vilket är en mycket intressant fråga att tänka, som om kanske i framtiden,
du kommer att kunna tala med din mobiltelefon.
Ungefär som vad vi gör med Siri, men något mer som kan du faktiskt
säga vad du vill och telefonen kommer att förstå allt.
Och det kan få följa upp frågor och fortsätta prata.
Det är något riktigt spännande, i min mening.
>> Så något om naturliga språk.
Något riktigt intressant naturliga språk är att, och detta är
kredit till min lingvistik professor, Maria Polinsky.
Hon ger ett exempel och jag tror det är verkligen intressant.
Därför att vi lär oss språk när vi föds och sedan vår infödda
språk slags växer på oss.
>> Och i grund och botten att du lär dig språk från minimal input, eller hur?
Du bara få input från din föräldrar om vad ditt språk låter
gillar och du bara lära sig det.
Så det är intressant, för om man tittar på dessa meningar, till exempel.
Du ser, "Mary sätter på en kappa varje När hon lämnar huset. "
>> I detta fall är det möjligt att ha ordet "hon" avser Mary, eller hur?
Du kan säga "Mary sätter på en kappa varje gång Maria lämnar
hus. ", så det är bra.
Men sedan om man tittar på den mening "Hon sätter på sig en kappa varje gång Mary
lämnar huset. "du vet att det är omöjligt att säga att "hon" är
hänvisning till Maria.
>> Det finns inget sätt att säga att "Mary sätter på ett lager varje gång Mary lämnar
huset. "Så det är intressant eftersom Detta är den typ av intuition
att varje modersmål har.
Och ingen fick lära mig att det här är det sätt som syntaxen fungerar.
Och att du bara kan ha denna "henne" hänvisar till Maria i det här första fallet
och faktiskt i denna andra också, men inte i det här en.
Men alla typer av får till samma svar.
Alla är överens om det.
Så det är verkligen intressant hur även du vet inte alla regler
på ditt språk du slags förstå hur språket fungerar.
>> Så det intressanta med naturlig språket är att du inte behöver
vet någon syntax för att veta om en mening är grammatisk eller ungrammatical för
de flesta fall.
Vilket gör att du tror att det kanske vad händer är att genom ditt liv, du
blir bara mer och mer meningar sa till dig.
Och sedan hålla memorera alla meningar.
Och sedan när någon säger till dig något, hör du denna mening och
du tittar på ditt ordförråd meningar och se om
den meningen är det.
Och om det är det du säger att det är grammatiskt.
Om det inte är du säger att det är ungrammatical.
>> Så i så fall skulle du säga, åh, så att du har en enorm lista med alla
möjliga meningar.
Och sedan när du hör en mening, du vet om det är grammatiska eller
inte på det.
Saken är den att om man tittar på en mening, till exempel, "The
fem-hövdade CS50 TF tillagas blinda bläckfisk med en DAPA mugg. "Det är
definitivt inte en mening som ni hört tidigare.
Men samtidigt som du vet att det är ganska mycket grammatiska, eller hur?
Det finns inga grammatiska fel och man kan säga att
det är en möjlig mening.
>> Så det får oss att tro att faktiskt sätt som vi lär oss språket är inte bara
genom att ha en enorm databas med möjliga ord eller meningar, men mer av
förstå sambandet mellan ord i dessa meningar.
Låter det vettigt?
Så, då är frågan, kan datorer lära sig språk?
Kan vi lära ut språk till datorer?
>> Så, låt oss tänka på skillnaden mellan en infödd talare av ett språk
och en dator.
Så, vad händer med högtalaren?
Tja, lär en infödda talare språk från exponering för det.
Beräknad dess tidiga barnaåren.
Så i princip, du bara har ett barn, och du fortsätter att prata med det, och det
bara lär sig att tala språket, eller hur?
Så, är du i princip ge insignal till barnet.
Så, då kan man hävda att en dator kan göra samma sak, eller hur?
Du kan bara ge språk som input till datorn.
>> Som till exempel en grupp av filer som har böcker på engelska.
Kanske är det ett sätt att du skulle kunna lära ut en
Datorn engelska, eller hur?
Och faktiskt, om man tänker på det, det tar kanske ett par
dagar att läsa en bok.
För en dator det tar en sekund att titta på alla ord i en bok.
Så du kan tänka som kan vara just detta argument av input från omkring dig,
det räcker inte att säga att det är något som bara människor kan göra.
Du kan tänka datorer kan också få input.
>> Det andra är att infödda talare också har en hjärna som har
språkinlärning förmåga.
Men om man tänker på det, en hjärna är en solid sak.
När du är född, det är redan inställd -
detta är din hjärna.
Och när du växer upp, du bara få mer inmatning av språk och kanske näringsämnen
och andra saker.
Men ganska mycket din hjärna är en fast sak.
>> Så du kan säga, ja, kanske du kan bygga en dator som har ett gäng
funktioner och metoder som bara efterliknar språkinlärning förmåga.
Så i den meningen kan man säga, ja, jag kan ha en dator som har alla
saker som jag behöver för att lära sig språket.
Och det sista är att en infödd högtalare lär sig av försök och misstag.
Så i princip en annan viktig sak i språkinlärning är att du snäll
av lära sig saker genom att göra generaliseringar av det du hör.
>> Så när du växer upp du lära dig att vissa ord är mer som substantiv,
några andra som är adjektiv.
Och du behöver inte ha någon kunskaper i lingvistik
för att förstå det.
Men du bara vet att det finns vissa ord är positionerade i någon del av
mening och några andra i andra delar av meningen.
>> Och att när du gör något som är som en mening som inte är korrekt -
kanske på grund av en över generalisering till exempel.
Kanske när du växer upp, märker du att plural är vanligtvis
bildas genom att sätta ett S på i slutet av ordet.
Och sedan försöka göra plural av "deer" som "rådjur" eller "tand" som
"tooths." Så då dina föräldrar eller någon rättar dig och säger, nej, det
plural av "hjort" är "hjort," och plural av "tand" är "tänder." Och sedan
du lär dig dessa saker.
Så du lär av försök och misstag.
>> Men du kan också göra det med en dator.
Du kan ha något som kallas inlärningsförstärkning.
Vilket egentligen är som att ge en dator en belöning närhelst den gör
något korrekt.
Och ge det motsatsen till en belöning och när den gör något fel.
Du kan faktiskt se att om du går till Google Translate och du försöker
översätta en mening, det ber dig om feedback.
Så om du säger, åh, det finns en bättre översättning av denna mening.
Du kan skriva upp det och sedan om en hel del folk säger det är en bättre
översättning, bara lär sig det att det bör använda den översättningen i stället för
den som den gav.
>> Så det är en mycket filosofisk fråga för att se om datorer kommer att vara
kunna prata eller inte i framtiden.
Men jag har stora förhoppningar om att de kan bara baserat på dessa argument.
Men det är bara mer av en filosofisk fråga.
>> Så medan datorer fortfarande inte kan prata, vad är det som vi kan göra?
Några riktigt coola saker är data klassificering.
Så, till exempel, ni vet att e-tjänster gör, för
exempel filtrering av skräppost.
Så när du får skräppost, det försöker att välja en annan låda.
Så hur går det göra det?
Det är inte som att datorn bara vet vad e-postadresser att skicka skräppost.
Så det är mer baserat på innehållet i meddelandet, eller kanske titeln, eller
kanske något mönster som du har.
>> Så, i grund och botten, vad du kan göra är att få en mycket data i e-postmeddelanden som är skräppost,
e-post som inte är spam, och lära sig vad typ av mönster du har i
de som är spam.
Och detta är en del av beräknings lingvistik.
Det kallas data klassificering.
Och vi faktiskt kommer att se en exempel på detta i nästa diabilder.
>> Det andra är naturligt språk behandling som är det som den
Diagram Search gör att låta du skriver en mening.
Och det litar på att du förstår vad är innebörden och ger
du ett bättre resultat.
Egentligen, om du går till Google eller Bing och du söker något som Lady
Gagas höjd, du faktiskt kommer att få 5 "1" istället för informations
från henne eftersom det faktiskt förstår vad du pratar om.
Så det är en del av den naturliga språkbehandling.
>> Eller även när du använder Siri, först du har en algoritm som försöker
översätta vad du säger i ord, i text.
Och sedan försöker att översätta som i mening.
Så det är en del av naturliga språkbehandling.
>> Då har du maskinöversättning -
som faktiskt är en av mina favoriter -
som bara är att översätta från ett språk till ett annat.
Så du kan tro att när du gör maskinöversättning, har du
oändliga möjligheter av meningar.
Så det finns inget sätt att bara lagra varenda översättning.
Så du har att komma med intressanta algoritmer för att kunna
översätta varje enskild mening på något sätt.
>> Ni har några frågor så här långt?
Nej?
OK.
>> Så vad ska vi se idag?
Först och främst kommer jag att tala om klassificeringsproblem.
Så det som jag var säger om spam.
Vad jag ska göra är, givna texter på en låt, kan du försöka lista ut
med hög sannolikhet som är sångaren?
Låt oss säga att jag har låtar från Lady Gaga och Katy Perry, om jag ger dig en
ny låt, kan du räkna ut om det är Katy Perry och Lady Gaga?
>> Den andra, jag ska bara prata om segmenteringsproblem.
Så jag vet inte om ni vet, men Kinesiska, japanska, andra östasiatiska
språk och andra språk i allmänhet, inte har
mellanslag mellan orden.
Och sedan om man tänker på det sätt som datorn typ av försök att
förstå naturligt språk, det ser ut på orden och
försöker förstå sambanden mellan dem, eller hur?
Men sedan om du har kinesiska, och du har noll platser, det är verkligen svårt att
reda på vad som är förhållandet mellan ord, eftersom de inte har någon
ord i början.
Så du måste göra något som kallas segmentering som just innebär att sätta
utrymmen mellan vad vi skulle kalla ord på dessa språk.
Vettigt?
>> Och sedan ska vi prata om syntax.
Så bara lite om naturliga språkbehandling.
Det kommer att vara bara en översikt.
Så idag, i princip vad jag vill göra är att ge er en liten bit av en
insidan av vilka möjligheter som du kan göra med beräknings
lingvistik.
Och sedan kan du se vad du tycker är coolt bland dessa saker.
Och kanske kan du komma på ett projekt och kommer prata med mig.
Och jag kan ge dig råd om hur man ska genomföra det.
>> Så syntax kommer att vara lite om Graph Sök och maskin
översättning.
Jag ska bara ge ett exempel på hur du kan till exempel översätta
något från portugisiska till engelska.
Låter bra?
>> Så först, klassificeringsproblem.
Jag ska säga att denna del av seminariet kommer att vara den mest utmanande
man bara för att det kommer vara någon kodning.
Men det kommer att bli Python.
Jag vet inte vet ni Python, så Jag kommer bara att förklara den höga
nivå vad jag gör.
Och du behöver inte verkligen bryr sig för mycket om syntaxen eftersom det är
något ni kan lära sig.
OK?
Låter bra.
>> Så vad är det klassificeringsproblem?
Så du gett några texter till en sång, och du vill gissa
vem sjunger den.
Och detta kan vara för någon form andra problem.
Så det kan vara, till exempel, har du presidentvalskampanjen och du har en
tal, och du vill hitta reda på om det var, till exempel,
Obama eller Mitt Romney.
Eller så kan du få en *** e-post och du vill ta reda på om de är
spam eller inte.
Så det är bara att klassificera vissa data baserat på orden
att du har det.
>> Så för att göra det måste du göra vissa antaganden.
Så mycket om datorlingvistik gör antaganden,
oftast smarta antaganden, så att du kan få bra resultat.
Att försöka skapa en modell för det.
Och sedan prova det och se om det fungerar, Om det ger dig bra precision.
Och om den gör det, då du försöka förbättra det.
Om den inte gör, du gillar, OK, kanske jag bör göra en annan antagande.
>> Så antagandet att vi ska göra är att en artist sjunger oftast
om ett ämne flera gånger, och kanske använder ord flera gånger bara
eftersom de är vana vid det.
Du kan bara tänka på din vän.
Jag är säker på att ni alla har vänner som säger att deras signaturfras,
bokstavligen varenda mening -
som något specifikt ord eller någon specifik fras som de säger för
varenda mening.
>> Och vad man kan säga är att om du ser en mening som har en signatur
fras, kan du gissa att förmodligen din vän är den
man säger det, eller hur?
Så du gör det antagandet och därefter det är hur du skapar en modell.
>> Exemplet som jag ska ge är på hur Lady Gaga, t.ex. människor
säger att hon använder "baby" för alla hennes nummer ett sånger.
Och faktiskt detta är en video som visar hon säger ordet "baby" för
olika låtar.
>> [VIDEO SPELA]
>> - (Sång) Baby.
Baby.
Baby.
Baby.
Baby.
Babe.
Baby.
Baby.
Baby.
Baby.
>> [END VIDEOAVSPELNING-
>> LUCAS FREITAS: Så det finns, tror jag, 40 låtar här där hon säger det
Ordet "behandla". Så du kan i princip gissa att om du ser en låt som har
ordet "baby", det finns några höga Sannolikheten att det är Lady Gaga.
Men låt oss försöka utveckla detta ytterligare mer formellt.
>> Så dessa är texter till låtar av Lady Gaga och Katy Perry.
Så du tittar på Lady Gaga, ser du de har en hel del händelser av "baby", en
många förekomster av "sätt." Och sedan Katy Perry har en hel del förekomster av
"Det," en hel del förekomster av "eld".
>> Så i princip vad vi vill göra är, du får en lyrisk.
Låt oss säga att du får en text för en låt som är "baby," bara "barn." Om
du bara få ordet "baby", och detta är alla data som du har från
Lady Gaga och Katy Perry, som skulle du gissar är den person
som sjunger låten?
Lady Gaga eller Katy Perry?
Lady Gaga, eller hur?
För att hon är den enda som säger "Baby". Det låter dumt, eller hur?
OK, det här är verkligen lätt.
Jag bara tittar på de två låtar och Naturligtvis är hon den enda som har
"Baby".
>> Men om du har en *** ord?
Om du har en verklig lyrik, något liknande, "baby, jag bara
gick för att se en [? CFT?]
föreläsning, "eller något liknande, och då du faktiskt måste lista ut -
baserad på alla dessa ord -
vem är konstnären som troligen sjöng den här låten?
Så låt oss försöka utveckla detta lite längre.
>> OK, så grundar sig bara på de data som vi fick, verkar det som Gaga är nog
sångaren.
Men hur kan vi skriva detta mer formellt?
Och det kommer att vara lite lite statistik.
Så om du går vilse, bara prova förstå konceptet.
Det spelar ingen roll om du förstår ekvationerna mycket väl.
Detta är alla kommer att vara online.
>> Så i princip vad jag beräkna den Sannolikheten att den här låten är med
Lady Gaga med tanke på att -
så detta fält innebär med tanke på att -
Jag såg ordet "baby". Låter det vettigt?
Så jag försöker beräkna att sannolikheten.
>> Så det finns denna sats kallas Bayes teorem som säger att
sannolikheten för en given B, är den sannolikheten för B givet A, gånger
Sannolikheten för A, över sannolikheten av B. Detta är en lång-ekvationen.
Men vad du måste förstå från det är att det här är vad jag vill
beräkna, eller hur?
Så sannolikheten att den låten är av Lady Gaga med tanke på att jag såg ordet
"Baby".
>> Och nu vad jag får är det sannolikheten för att ordet "baby" ges
att jag har Lady Gaga.
Och vad är det i grund och botten?
Vad det betyder är, vad är det Sannolikheten för att se ordet "baby"
i Gaga texter?
Om jag vill räkna ut att i ett mycket enkelt sätt, det är bara antalet
gånger jag ser "bebis" över det totala antalet ord i Gaga texter, eller hur?
Vad är den frekvens som jag ser det ordet i Gagas arbete?
Vettigt?
>> Den andra termen är Sannolikheten för Gaga.
Vad innebär det?
Det innebär i grunden, vad är det Sannolikheten för att klassificera
några texter som Gaga?
Och det är lite konstigt, men låt oss tänka på ett exempel.
Så låt oss säga att sannolikheten för som har "baby" i en låt är det samma
för Gaga och Britney Spears.
Men Britney Spears har två gånger fler låtar än Lady Gaga.
Så om någon ger dig bara slumpmässigt texter "baby", det första du
titta på är, vad är sannolikheten för med "baby" i en gaga låt, "baby"
i en Britney låt?
Och det är samma sak.
>> Så den andra saken som du ser är, ja, vad är sannolikheten för
denna lyriska av sig själv att vara en Gaga lyrisk, och vad är sannolikheten för
vara en Britney text?
Så eftersom Britney har så många fler texter än Gaga, skulle du antagligen
säg, ja, detta är förmodligen en Britney lyrisk.
Så det är därför vi har den här termen här.
Sannolikhet att Gaga.
Vettigt?
Gör det?
OK.
>> Och den sista är bara sannolikheten av "baby", som inte
verkligen så stor roll.
Men det är sannolikheten för se "baby" på engelska.
Vi brukar inte bry sig om att mycket om den termen.
Låter det vettigt?
Så sannolikheten för senil är kallas den föregående sannolikheten
av klassen Gaga.
Därför att det betyder bara att, vad är det Sannolikheten för att ha den klassen -
vilket är Gaga -
bara i allmänhet bara utan villkor.
>> Och sen när jag har sannolikheten för Gaga givet "baby", vi kallar det plus
Teary en sannolikhet för att det är sannolikheten för att ha
Gaga givet vissa bevis.
Så jag ger dig bevis att jag såg ordet barnet och
sången vettigt?
OK.
>> Så om jag räknat ut att för varje av låtarna på Lady Gaga,
vad det skulle vara -
tydligen, jag kan inte flytta den här.
Sannolikheten för Gaga kommer att vara något liknande, 2 över 24 ggr halv,
över 2 över 53.
Det spelar ingen roll om du vet vad dessa siffror kommer ifrån.
Men det är bara ett nummer som går att vara mer än 0, eller hur?
>> Och sedan när jag gör Katy Perry, den Sannolikheten för "baby" ges Katy är
redan 0, eller hur?
Eftersom det finns ingen "baby" i Katy Perry.
Så då det blir 0, och Gaga segrar, vilket innebär att senil är
förmodligen sångaren.
Låter det vettigt?
OK.
>> Så om jag vill göra det mer officiellt, Jag kan faktiskt göra en modell
för flera ord.
Så låt oss säga att jag har något liknande, "baby, jag är
eld, "eller något.
Så det har flera ord.
Och i detta fall, kan du se att "barnet" är i Gaga,
men det är inte i Katy.
Och "eld" är i Katy, men det är inte i Gaga, eller hur?
Så det blir svårare, eller hur?
Eftersom det verkar som om du nästan har ett band mellan de två.
>> Så vad du behöver göra är att ta på sig självständighet bland orden.
Så i princip vad det betyder är att Jag bara beräkna vad som är
Sannolikheten för att se "baby", det som är sannolikheten av att se "I," och
"Är", och "om" och "eld" allt separat.
Då jag multiplicera dem alla.
Och jag ser vad är sannolikheten av att se hela meningen.
Vettigt?
>> Så i princip, om jag har bara ett ord, vad jag vill hitta är arg max,
vilket betyder, vad är den klass som är ger mig den högsta sannolikheten?
Så vad är den klass som ger mig den högsta sannolikheten för
sannolikheten för klass givet ord.
Så i det här fallet, Gaga givet "barn." Eller Katy givet "barn." Vettigt?
>> Och bara från Bayes, att ekvation som jag visade,
vi skapar denna fraktion.
Det enda är att du ser att sannolikheten för ord med tanke på
klass ändras beroende på klass, eller hur?
Antalet "baby" s som jag har i senil är annorlunda från Katy.
Sannolikheten av klassen också förändringar eftersom det är bara antalet
låtar var och en har.
>> Men sannolikheten för själva ordet kommer att vara densamma för alla de
konstnärer, eller hur?
Så sannolikheten för att ordet är precis, vad är sannolikheten för
ser att ordet i Engelska språket?
Så det är samma för alla.
Så eftersom detta är konstant, vi kan bara släppa detta och inte bryr sig om det.
Så detta blir faktiskt den ekvation som vi letar efter.
>> Och om jag har flera ord, jag är fortfarande kommer att ha den tidigare
sannolikhet här.
Det enda är att jag multiplicera sannolikheten för
alla andra ord.
Så jag multiplicera dem alla.
Vettigt?
Det ser konstigt, men i grund och botten innebär, beräkna den kända av klassen, och
sedan multiplicera med sannolikheten för varje av orden vara i den klassen.
>> Och du vet att sannolikheten för en ord ges en klass kommer att bli det
många gånger du ser det ordet i den klassen, dividerat med antalet
ord du har i det klassen i allmänhet.
Vettigt?
Det är bara hur "barn" var 2 över antalet ord som
Jag hade i texterna.
Så bara frekvensen.
>> Men det finns en sak.
Minns hur jag visar att Sannolikheten för "baby" vara texter
från Katy Perry var 0 bara för Katy Perry hade inte "baby" alls?
Men det låter lite hård att bara helt enkelt säga att texter inte kan vara från
en konstnär bara för att de inte har det ordet i synnerhet när som helst.
>> Så du kan bara säga, ja, om du har inte detta ord, kommer jag att
ge dig en lägre sannolikhet, men jag är bara inte att
ge dig 0 direkt.
Därför att det kanske var något i stil med, "Eld, eld, eld, eld," vilket är
helt Katy Perry.
Och sedan "baby", och det bara går att 0 direkt eftersom det fanns en
"Baby".
>> Så i princip det vi gör är något kallas Laplace utjämning.
Och det betyder bara att jag ger viss sannolikhet även till orden
som inte existerar.
Så vad jag gör är att när jag är beräkna detta, jag lägger alltid 1 till
täljaren.
Så även om ordet inte finns i det här fallet, om det är 0, jag är fortfarande
beräkning av denna som en över totala antalet ord.
Annars får jag hur många ord Jag har och jag till 1.
Så jag räknar båda fallen.
Vettigt?
>> Så nu ska vi göra en del kodning.
Jag kommer att behöva göra det ganska fort, men det är bara viktigt att du
ni förstå koncepten.
Så vad vi försöker göra är exakt genomföra detta
sak som jag sa -
Jag vill att du sätter texter från Lady Gaga och Katy Perry.
Och programmet kommer att kunna säga om dessa nya texter är från Gaga
eller Katy Perry.
Vettigt?
OK.
>> Så jag har det här programmet kommer jag att ringa classify.py.
Så detta är Python.
Det är ett nytt programmeringsspråk.
Det är mycket lik i vissa vägar till C och PHP.
Det är liknande för om du vill lära Python efter att veta C, är det
egentligen inte så mycket av en utmaning bara för att Python är mycket lättare
än C, först och främst.
Och en hel del saker är redan implementeras för dig.
Så hur som PHP har funktioner som sortera en lista, eller lägga till något
till en array, eller bla, bla, bla.
Python har alla dem också.
>> Så jag ska bara förklara snabbt hur vi skulle kunna göra klassificeringen
problem för här.
Så låt oss säga att i det här fallet har jag texter från Gaga och Katy Perry.
Det sätt som jag har dessa texter är att det första ordet i texterna är
namnet på artisten, och resten är texterna.
Så låt oss säga att jag har den här listan i vilka den första är texter av Gaga.
Så här är jag på rätt väg.
Och nästa gång det är Katy, och den har också texterna.
>> Så detta är hur du deklarerar en variabel i Python.
Du behöver inte ge datatyp.
Du skriver bara "text", ungefär som i PHP.
Vettigt?
>> Så vad är det som jag måste beräkna för att kunna beräkna
sannolikheter?
Jag måste beräkna "priorerna" av var och en av de olika
klasser som jag har.
Jag måste beräkna "posteriors," eller ganska mycket sannolikheterna
var och en av de olika ord som Jag kan få för varje artist.
Så inom Gaga, till exempel, jag kommer att ha en lista på hur många gånger jag ser
vart och ett av orden.
Vettigt?
>> Och slutligen, jag kommer bara att ha en lista som kallas "ord" som bara går
att ha hur många ord jag har för varje artist.
Så för Gaga, till exempel när jag ser till texterna, jag hade, tror jag, 24
ord totalt.
Så denna lista är bara att ha Gaga 24, och Katy annat nummer.
Vettigt?
OK.
>> Så nu, faktiskt, låt oss gå till kodning.
Så i Python, kan du faktiskt returnera en *** olika
saker från en funktion.
Så jag kommer att skapa denna funktion "villkorat", som kommer
att returnera alla dessa saker, det "priorerna," de "sannolikheter" och det
"ord." Så "villkorligt", och det är kommer att ringa in "texter."
>> Så nu vill jag att du faktiskt skriva denna funktion.
Så långt som jag kan skriva det här Funktionen är jag bara definierat detta
fungera med "def." Så jag gjorde "def villkorlig, "och det tar
"Texter." Och vad detta kommer att göra är, först och främst, jag har mina priors
att jag vill beräkna.
>> Så långt som jag kan göra detta är att skapa en ordbok i Python, vilket
är ungefär samma sak som en hash bord, eller det är som en iterativ
array i PHP.
Detta är hur jag förklarar en ordbok.
Och i grund och botten vad detta innebär är att prior av senil är 0,5, till exempel, om
50% av texterna är från Gaga, 50% är från Katy.
Vettigt?
Så jag måste ta reda på hur att beräkna prior.
>> De följande de som jag måste göra, även, är de sannolikheter och ord.
Så sannolikheterna för senil är listan av alla sannolikheter att jag
har för varje ord för Gaga.
Så om jag går till sannolikheter för Gaga "Baby", till exempel, det ger mig
något i stil med 2 över 24 i det fallet.
Vettigt?
Så jag går till "sannolikheter," gå till "Gaga" bucket som har en lista på alla
de Gaga ord, då går jag till "baby" och jag ser sannolikheten.
>> Och till sist har jag här "Ord" ordlistan.
Så här, "sannolikheter". Och sedan "ord." Så om jag gör "ord", "Gaga,"
vad som kommer att hända är att det är kommer att ge mig 24, säger att jag
har 24 ord i texter från Gaga.
Vettigt?
Så här, "ord" är lika dah-dah-dah.
OK
>> Så vad jag ska göra är att jag ska iterera över var och en av texterna, så
var och en av de strängar som Jag har i listan.
Och jag kommer att beräkna dessa saker för var och en av kandidaterna.
Vettigt?
Så jag måste göra en for-loop.
>> Så i Python vad jag kan göra är "för linje i texter. "Samma sak som en
"För varje" påstående i PHP.
Minns hur om det var PHP jag kunde säga "för varje text som
linje. "Vettigt?
Så jag tar var och en av raderna, i detta fall, den här strängen och nästa
sträng så att var och en av raderna vad jag är ska göra är att först, jag ska
dela upp denna linje i en lista med ord separerade med mellanslag.
>> Så det häftiga med Python är att du kan bara Google som "hur kan jag
dela upp en sträng i ord? "Och det är ska berätta hur man gör det.
Och sättet att göra det, det är bara "linje = Line.split () "och det är i princip
kommer att ge dig en lista med varje ord här.
Vettigt?
Så nu när jag gjorde det jag vill veta som är sångare i den låten.
Och för att göra det jag måste bara få det första elementet i arrayen, eller hur?
Så jag kan bara säga att jag "sångare = Line (0) "Vettigt?
>> Och vad jag behöver göra är att först och allt kommer jag att uppdatera hur många
ord har jag under "Gaga". så jag är bara kommer att beräkna hur många ord jag
har i denna lista, eller hur?
Eftersom det är så många ord jag har i texterna, och jag ska bara
lägg till den "Gaga" array.
Låter det vettigt?
Fokusera inte för mycket på syntaxen.
Tänk mer om begreppen.
Det är den viktigaste delen.
OK.
>> Så vad jag kan göra det är om "Gaga" är redan i den listan, så "om sångaren i
ord ", vilket innebär att jag redan har ord av Gaga.
Jag vill bara lägga till ytterligare ord till det.
Så vad jag gör är "ord (sångare) + = Len (linje) - 1 ".
Och då kan jag bara göra det längden på linjen.
Så hur många element I har i arrayen.
Och jag måste göra minus 1 bara för att det första elementet i arrayen är bara
sångare och de är inte texter.
Vettigt?
OK.
>> "Else", det betyder att jag vill faktiskt infoga gaga i listan.
Så jag gör bara "ord (sångare) = Len (linje) - 1, "förlåt.
Så den enda skillnaden mellan de två linjer är att den här, det gör det inte
finns ännu, så jag är bara initierade den.
Den här jag faktiskt lägga.
OK.
Så detta var att lägga till ord.
>> Nu vill jag lägga till priorerna.
Hur beräknar jag Priors?
De prior kan beräknas av hur många gånger.
Så hur många gånger du ser att sångaren bland alla de sångare som du
ha, eller hur?
Så för Gaga och Katy Perry, i det här fallet ser jag Gaga
gång, Katy Perry gång.
>> Så i stort sett priorerna för Gaga och för Katy Perry skulle
bara vara en, eller hur?
Du precis hur många gånger Jag konstnären.
Så det är mycket lätt att beräkna.
Jag kan bara något liknande som liknande "om sångare i priorerna, "jag ska bara
att lägga till en till sin prior låda.
Så, "priors (sjunger)" + = 1 "och sedan" annat " Jag kommer att göra "priors (sångare)
= 1. "Vettigt?
>> Så om det inte finns jag bara sätta som 1, annars jag bara lägga till 1.
OK, så nu är allt som jag har kvar att göra är också lägga varje ord till
sannolikheter.
Så jag måste räkna hur många gånger Jag ser varje ord.
Så jag har bara att göra en annan för slinga i rad.
>> Så första som jag kommer att göra är kontrollera om sångaren har redan en
sannolikheter array.
Så jag kollar om sångaren inte har en sannolikhet array, jag är bara
kommer att initiera en för dem.
Det är inte ens en array, sorry, det är ett lexikon.
Så sannolikheten för sångaren går att vara en öppen lexikon, så jag är
bara att initiera en ordbok för det.
OK?
>> Och nu kan jag faktiskt göra en for-loop beräkna varje ord "
sannolikheter.
OK.
Så vad jag kan göra är en for-loop.
Så jag ska bara iterera över arrayen.
Så långt som jag kan göra det i Python är "för i inom räckhåll." Från 1
eftersom jag vill starta i det andra element eftersom det första är den
sångare namn.
Så från en upp till det längden på linjen.
Och när jag gör allt det faktiskt gå från som här från 1 till len av
line minus 1.
Så det redan gör det där att göra n minus 1 för matriser som är mycket
bekvämt.
Vettigt?
>> Så för var och en av dessa, vad jag ska göra är att, precis som i den andra,
Jag ska kolla om det ordet i detta position i linjen är redan i
sannolikheter.
Och sedan som jag sagt här, sannolikheter ord, som i jag satte
"sannolikheter (sångare)".
Så namnet på sångaren.
Så om det är redan i "Probabilit (sångare)", betyder det att jag
vill lägga till 1 till det, så jag kommer att göra "sannolikheter (sångare)", och
ord kallas "linjen (i)".
Jag kommer att lägga till 1 och "annat" Jag är bara kommer att initiera den till 1.
"Linje (i)".
Vettigt?
>> Så jag räknat alla matriser.
Så, nu är allt som jag måste göra för den här är bara "tillbaka priorerna,
sannolikheter och ord. "Låt oss se om det finns några, OK.
Det verkar som allt fungerar så långt.
Så, gör det vettigt?
På något sätt?
OK.
Så nu har jag alla sannolikheter.
Så nu det enda jag har kvar är bara att ha den där saken som
beräknar produkten av alla de sannolikheter när jag får texterna.
>> Så låt oss säga att jag vill nu kalla funktionen "klassificera ()" och
sak som funktionen tar är bara ett argument.
Låt oss säga "Baby, jag är på elden" och det är går att räkna ut vad som är det
Sannolikheten för att detta är Gaga?
Vad är sannolikheten att detta är Katie?
Låter bra?
Så jag ska bara behöva skapa en ny funktion som heter "klassificera ()" och
det kommer att ta lite texter också.
Och förutom texterna jag också måste skicka prior, den
sannolikheter och ord.
Så jag kommer att skicka texter, priors, sannolikheter, ord.
>> Så här tar texter, priors, sannolikheter, ord.
Så, vad gör det?
Det i princip kommer att gå igenom alla de möjliga kandidater som du
har som sångare.
Och var är de sökande?
De är i priorerna, eller hur?
Så jag har alla dem där.
Så jag kommer att ha en ordbok av alla tänkbara kandidater.
Och sedan för varje kandidat i priorerna, så det betyder att det kommer att
vara Gaga, Katie om jag hade mer det skulle vara mer.
Jag ska börja beräkna denna sannolikhet.
Sannolikheten som vi såg i PowerPoint är de tidigare gånger
produkt av var och en av andra sannolikheter.
>> Så jag kan göra samma sak här.
Jag kan bara göra sannolikheten är initialt bara känd.
So prior av kandidaten.
Rätt?
Och nu har jag att iterera över alla ord som jag har i texterna som
lägga till sannolikheten för var och en av dem, OK?
Så, "för ord i texterna" vad jag ska göra är att, om ordet är i
"sannolikheter (kandidat)", vilket betyder att det är ett ord som de
kandidat har i sina texter -
till exempel, "baby" för Gaga -
vad jag ska göra är att sannolikhet kommer att multipliceras
med 1 plus sannolikheten för kandidaten för det ordet.
Och det kallas "word".
Detta dividerat med antalet ord att jag har för den sökande.
Det totala antalet ord som jag har för sångaren som jag tittar på.
>> "Saker". det betyder att det är ett nytt ord så det skulle vara som till exempel
"Eld" för Lady Gaga.
Så jag vill bara göra 1 över "Ord (kandidat)".
Så jag vill inte sätta denna term här.
>> Så det kommer att vara i stort sett kopiera och klistra in den här.
Men jag ska ta bort den här delen.
Så det är bara att vara 1 under det.
Låter bra?
Och nu i slutet, jag kommer bara att skriva ut namnet på den sökande och
sannolikheten att du har av ha S på sina texter.
Vettigt?
Och jag faktiskt inte ens behöver denna ordbok.
Vettigt?
>> Så, låt oss se om det verkligen fungerar.
Så om jag kör det här, det fungerade inte.
Vänta en sekund.
"Words (kandidat)", "ord (kandidat)", det är
namnet på arrayen.
OK så står det att det är någon bugg för kandidat i priors.
Låt mig bara kyla lite.
OK.
Låt oss försöka.
OK.
>> Så det ger Katy Perry har detta Sannolikheten för detta gånger 10 till
minus 7, och Gaga har denna gånger 10 till minus 6.
Så ser du det visar att Gaga har en högre sannolikhet.
Så "Baby, jag är på Fire" är förmodligen en gaga låt.
Vettigt?
Så det här är vad vi gjorde.
>> Denna kod kommer att läggas ut på nätet, så ni kan kolla upp det.
Kanske använda en del av den för om du vill göra ett projekt eller något liknande.
OK.
Det var bara för att visa vad computational
lingvistik kod ser ut.
Men nu ska vi gå till mer hög nivå grejer.
OK.
>> Så de andra problem som jag talade om -
segmenteringsproblem är den första av dem.
Så du har här japanska.
Och då ser du att det finns inga utrymmen.
Så detta är i grund och botten innebär att det är toppen av stolen, eller hur?
Du talar japanska?
Det är högst upp i stolen, eller hur?
>> STUDENT: Jag vet inte vad kanji över det.
>> LUCAS FREITAS: Det är [TALA JAPANSK]
OK.
Så det i princip innebär ordförande i toppen.
Så om du var tvungen att sätta en plats det skulle vara här.
Och så har du [? Ueda-san. ?]
Vilket i princip innebär Mr Ueda.
Och du ser att "Ueda" och du har en utrymme och sedan "san." Så du ser att
här du "Ue" är som sig själv.
Och här har en karaktär bredvid den.
>> Så det är inte som på dessa språk tecken som betyder ett ord den så att du
bara sätta en *** utrymmen.
Tecken förhåller sig till varandra.
Och de kan vara tillsammans som två, tre, en.
Så du faktiskt måste skapa någon form av sätt att uttrycka dessa utrymmen.
>> Och det här är att när du får data från dessa asiatiska språk,
allting kommer unsegmented.
Eftersom ingen som skriver japanska eller kinesiska skriver med mellanslag.
Varje gång du skriver kinesiska, Japanska du bara skriva allt
utan mellanslag.
Det är inte ens vettigt att sätta mellanslag.
Så då när du får data från en del Östasiatiska språk, om du vill
faktiskt göra något med det du måste segmentet först.
>> Tänk på att göra exemplet texterna utan mellanslag.
Så de enda texter som du har blir meningar, eller hur?
Åtskilda av perioder.
Men sedan har bara meningen kommer inte verkligen hjälpa på att ge information
av vem dessa texter är av.
Rätt?
Så bör du sätter mellanslag först.
Så hur kan du göra det?
>> Så då kommer tanken på ett språk modell som är något riktigt
viktigt för beräknings lingvistik.
Så en språkmodell är i grunden en bord av sannolikheter som visar
först av allt vad är sannolikheten av att ha ordet i ett språk?
Så visar hur ofta ett ord är.
Och sedan också visar sambandet mellan orden i en mening.
>> Så den huvudsakliga idén är, om en främling kom till dig och sa en mening till
dig, vad är sannolikheten att, för exempel "det här är min syster [? GTF"?]
var det meningen att den personen sa?
Så uppenbarligen vissa meningar är vanligare än andra.
Till exempel, "god morgon" eller "bra kväll, "eller" hej där, "är mycket mer
vanligare än de flesta meningar att vi har en engelsk.
Så varför är dessa meningar oftare?
>> Först och främst är det för att du har ord som är mer frekventa.
Så, till exempel, om du säger, är hunden stor, och hunden är gigantisk, du
oftast förmodligen höra hunden är stor oftare eftersom "stora" är mer
vanligare på engelska än "gigantisk." Så, en av
saker är frekvensen ordet.
>> Den andra saken som är riktigt viktigt är bara
ordning av orden.
Så, är det vanligt att säga "katten är i lådan. "men du vanligtvis inte
se i "Lådan inuti är katten." så du ser att det finns en viss betydelse
i den ordning av orden.
Du kan inte bara säga att dessa två meningar har samma sannolikhet
bara för att de har samma ord.
Du har faktiskt att bry sig om ordning också.
Vettigt?
>> Så vad gör vi?
Så vad jag kan försöka att få dig?
Jag försöker få dig vad vi call n-grammet modeller.
Så n-grammodeller princip antar att det för varje ord som
du har i en mening.
Det är sannolikheten för att ha att ord det beror inte bara på den
Frekvensen av detta ord i språket, utan även på de ord som
omger den.
>> Så till exempel, oftast när du ser något som den eller du är
förmodligen kommer att se en substantiv efter det, eller hur?
Därför att när du har en preposition vanligtvis tar ett substantiv efter det.
Eller om du har ett verb som är transitiv du oftast kommer att
har en nominalfras.
Så det kommer att ha ett substantiv någonstans runt den.
>> Så i princip, vad den gör är att den anser att sannolikheten för att ha
ord bredvid varandra, när du beräkna den
sannolikheten för en mening.
Och det är vad ett språk Modellen är i grund och botten.
Bara att säga vad är sannolikheten för att ha en specifik
mening på ett språk?
Så varför är det användbart, i grund och botten?
Och först av allt det som är ett n-gram-modell, då?
>> Så en n-gram-modell innebär att varje ord beror på
nästa N minus 1 ord.
Så, i grund och botten betyder det att om jag ser, till exempel, vid CS50 TF när
Jag beräkna sannolikheten för meningen, kommer du att vara som "den
sannolikheten för att ha ordet "the" gånger sannolikheten för att ha "
CS50 "gånger sannolikheten för att ha "Den CS50 TF." Så i princip, räknar jag
alla möjliga sätt att sträcka det.
>> Och då oftast när du gör detta, som i ett projekt, sätta dig N vara
ett lågt värde.
Så, har oftast bigrams eller trigrams.
Så att du bara räkna två ord, en grupp av två ord, eller tre ord,
bara för prestandaproblem.
Och också för att kanske om du har något i stil med "Den CS50 TF." När du
har "TF", det är mycket viktigt att "CS50" är bredvid det, eller hur?
Dessa två saker är oftast bredvid varandra.
>> Om du tänker på "TF", det är nog kommer att ha vad
klass det TF'ing efter.
Också "det" är verkligen viktigt för CS50 TF.
Men om du har något som "The CS50 TF gick till klass och gav sitt
eleverna lite godis. "" Godis "och" de " har något samband egentligen, eller hur?
De är så långt från varandra att Det spelar egentligen ingen roll vad
ord du har.
>> Så genom att göra en bigram eller en trigram, det betyder bara att du begränsar
dig några ord som är runt.
Vettigt?
Så när du vill göra segmentering, i grund och botten, vad du vill göra är att se
vad är alla möjliga sätt som du kan segmentera meningen.
>> Så att du ser vad som är den sannolikheten för vart och ett av dessa meningar
finns i språket?
Så vad du gör är som, ja, låt mig försöka sätta en plats här.
Så du sätter en plats där och du ser vad som är den
sannolikheten för den meningen?
Då du är som, OK, kanske det var inte så bra.
Så jag satte en plats där och en plats det, och du beräkna
sannolikhet nu, och du ser att det är en högre sannolikhet.
>> Så detta är en algoritm som kallas TANGO segmenteringsalgoritmen, som är
faktiskt något som skulle vara riktigt cool för ett projekt, som
i grund och botten tar unsegmented text som kan vara japanska eller kinesiska eller kanske
Engelska utan mellanslag och försöker sätta mellanslag mellan ord och det gör
att med hjälp av en språkmodell och försöker se vad som är den högsta
Sannolikheten att du kan få.
OK.
Så det här är segmentering.
>> Nu syntax.
Så, syntax används för så många saker just nu.
Så för Graph Search, för Siri för ganska mycket någon form av naturlig
språkbehandling du har.
Så vad är det viktiga saker om syntax?
Så, meningar i allmänhet har det vi kallar beståndsdelar.
Vilket är ungefär som grupper av ord som har en funktion i meningen.
Och de kan inte riktigt vara på avstånd från varandra.
>> Så, om jag säger, till exempel, "Lauren älskar Milo. "Jag vet att" Lauren "är en
beståndsdel och sedan "älskar Milo "är också en annan.
Eftersom du inte kan säga som "Lauren Milo älskar "att ha samma betydelse.
Det kommer inte att ha samma betydelse.
Eller jag kan inte säga som "Milo Lauren älskar. "Inte allt har samma
vilket innebär att göra det.
>> Så de två viktigaste sakerna syntaxen är de lexikala typer som är
i grund och botten den funktion som du har för ord av sig själva.
Så du måste veta att "Lauren" och "Milo" är substantiv.
"Love" är ett verb.
Och den andra viktiga är att de är phrasal typer.
Så du vet att "älskar Milo" är faktiskt en verbal fras.
Så när jag säger "Lauren," Jag vet att Lauren gör något.
Vad gör hon?
Hon älskar Milo.
Så det är en hela.
Men dess komponenter är ett substantiv och ett verb.
Men tillsammans gör de en verbfras.
>> Så, vad kan vi egentligen göra med datorlingvistik?
Så, om jag har något till exempel "vänner av Allison." Jag se om jag bara
gjorde en syntaktisk träd jag skulle veta att "Vänner" är en nominalfras det är en
substantiv och sedan "av Allison" är en prepositional fras där "i" är
en proposition och "Allison" är ett substantiv.
Vad jag kan göra är att lära min dator att när jag har en nominalfras ett och
sedan en prepositional fras.
Så i det här fallet, "vänner" och sedan "av Milo "Jag vet att detta innebär att
NP2, den andra, äger NP1.
>> Så jag kan skapa någon form av relation, någon typ av funktion för den.
Så när jag ser denna struktur, som matchar exakt med "vänner av
Allison, "Jag vet att Allison äger vänner.
Så vänner är något att Allison har.
Vettigt?
Så det är i princip vad Diagram Search gör.
Det skapar bara regler för en *** saker.
Så "vänner av Allison", "mina vänner som bor i Cambridge, "" mina vänner
som går till Harvard. "Det skapar regler för alla dessa saker.
>> Nu maskinöversättning.
Så, är maskinöversättning också något statistisk.
Och faktiskt, om du engagera dig i datalingvistik, en hel del
dina saker kommer att bli statistik.
Så som jag gjorde i exemplet med mycket av sannolikheter att jag var
beräkning, och sedan får du här mycket litet antal som är det sista
sannolikhet, och det är vad ger dig svaret.
Maskinöversättning används också en statistisk modell.
Och om du vill tänka på maskin översättning på enklast möjliga
sätt, vad du kan tänka dig är bara översätta ord för ord, eller hur?
>> När du studerar ett språk för första gången, det är oftast det som
du gör, eller hur?
Om du vill kan översätta en mening på ditt språk till det språk
du lär dig, oftast först, du översätta varje ord
för sig, och sedan försöker att sätta ord på plats.
>> Så om jag ville översätta detta, [Pratar PORTUGISISKA]
vilket betyder "den vita katten sprang iväg." Om jag ville översätta den från
Portugisiska till engelska, vad jag skulle kunna göra är, först, jag bara
översätta ord för ord.
Så "o" är "," "gato", "katt" "Branco," "vit" och sedan "fugio" är
"Sprang iväg."
>> Så då har jag alla ord här, men de är inte i ordning.
Det är som "katten vita sprang iväg" vilket är ungrammatical.
Så, då kan jag få ett andra steg, som kommer att vara att hitta den perfekta
positionen för varje ord.
Så jag vet att jag faktiskt vill ha "Vit katt" istället för "katt vit." Så
vad jag kan göra är, den mest naiva metoden skulle vara att skapa alla
möjliga permutationer av ord, av positioner.
Och sedan se vilken som har högsta sannolikhet enligt
till min språkmodell.
Och sen när jag hittar den som har den högsta sannolikheten det, vilket är
förmodligen "den vita katten sprang iväg," det är min översättning.
>> Och det här är ett enkelt sätt att förklara hur mycket av maskinöversättning
algoritmer fungerar.
Låter det vettigt?
Detta är också något riktigt spännande som ni kanske kan utforska för en
slutprojekt, ja?
>> STUDENT: Du sa att det var den naiva sätt, så vad är
den icke-naiva sätt?
>> LUCAS FREITAS: Den icke-naiva sätt?
OK.
Så det första som är dåligt om denna metod är att jag översatt bara
ord, ord för ord.
Men ibland måste ord som kan ha flera översättningar.
Jag ska försöka tänka av något.
Till exempel, "manga" på portugisiska burk antingen vara "mangel" eller "hylsa." Så
när du försöker översätta ord genom ord, kan det vara så att du
något som är meningslöst.
>> Så du verkligen vill att du tittar på alla de eventuella översättningar av
ord och se, först och främst, vad är det ordning.
Vi pratade om permutating saker?
För att se alla möjliga beställningar och välja ett som har den högsta
sannolikhet?
Man kan också välja alla möjliga översättningar för varje
ord och sedan se -
i kombination med de permutationer -
som en har den högsta sannolikheten.
>> Dessutom kan du också titta på inte bara ord utan fraser.
så du kan analyserar relationerna mellan ord och sedan få en
bättre översättning.
Också något annat, så den här terminen Jag är faktiskt forskar i
Kinesisk-engelsk maskinöversättning, så att översätta från
Kinesiska till engelska.
>> Och något vi gör är, förutom att använda en statistisk modell, som är bara
ser sannolikheterna för att se viss position i en mening, jag är
faktiskt också lägga till några syntax till min modell, säger, åh, om jag ser den här typen
konstruktion, det är vad jag vill ha för att ändra det till när jag översätter.
Så kan du också lägga till någon form av inslag av syntax för att göra
översättning effektivare och mer exakt.
OK.
>> Så hur kan du komma igång, om du vill att göra något i beräknings
lingvistik?
>> Först väljer du ett projekt som innebär språk.
Så, det finns så många där ute.
Det finns så många saker du kan göra.
Och då kan komma på en modell som du kan använda.
Vanligtvis innebär det att tänka på antaganden, som liksom, åh, när jag var
liksom att tänka på texterna.
Jag var som, ja, om jag vill räkna en som skrev det här, jag vill förmodligen
att titta på orden den person som används och se vem som använder det ordet väldigt ofta.
Så försök att göra antaganden och försöka tänka på modeller.
Och sedan kan du också söka på nätet efter den typ av problem som du har,
och det kommer att föreslå till er modeller som kanske
modellerade den saken också.
>> Och dessutom kan du alltid maila mig.
me@lfreitas.com.
Och jag kan bara svara på dina frågor.
Vi kan till och med skulle kunna möta upp så jag kan ge förslag på olika sätt att
genomföra ditt projekt.
Och jag menar om du delta med datorlingvistik, det kommer
att vara stor.
Du kommer att se det är så mycket potential.
Och branschen vill anställa du så dåligt på grund av det.
Så jag hoppas att ni haft detta.
Om ni har några frågor, Du kan fråga mig efter detta.
Men tack.