>> LUCAS FREITAS: Hei.
Velkommen alle.
Mitt navn er Lucas Freitas.
Jeg er en junior på [uhørbart] studere informatikk med fokus på
datalingvistikk.
Så min videregående er i språk og lingvistisk teori.
Jeg er virkelig spent på å lære dere litt om på feltet.
Det er et veldig spennende område å studere.
Også med mye potensial for fremtiden.
Så, jeg er veldig spent på at dere vurderer prosjekter i
datalingvistikk.
Og jeg vil være mer enn glade for å gi råd noen av deg hvis du bestemmer deg for å
forfølge en av disse.
>> Så først av alt hva er beregnings lingvistikk?
Så datalingvistikk er skjæringspunktet mellom lingvistikk og
informatikk.
Så, hva er lingvistikk?
Hva er informatikk?
Godt fra lingvistikk, hva vi tar er de språkene.
Så lingvistikk er faktisk studien av naturlige språk generelt.
Så naturlig språk - vi snakker om språk som vi faktisk bruker til
kommunisere med hverandre.
Så vi ikke akkurat snakker om C eller Java.
Vi snakker mer om engelsk og Kinesisk og andre språk som vi
bruke for å kommunisere med hverandre.
>> Den utfordrende ting om det er at akkurat nå har vi nesten 7000
språk i verden.
Så det er ganske høy variasjon språk som vi kan studere.
Og så du tror at det er nok meget vanskelig å gjøre, f.eks
oversettelse fra ett språk til andre, med tanke på at du har
nesten 7000 av dem.
Så, hvis du tenker på å gjøre oversettelse fra ett språk til den andre du
har nesten mer enn en million forskjellige kombinasjoner som du kan
har fra språk til språk.
Så det er virkelig vanskelig å gjøre noen slags eksempel oversettelsessystem for
hvert enkelt språk.
>> Så, lingvistikk behandler med syntaks, semantikk, pragmatikk.
Dere trenger ikke akkurat trenger å vite hva de er.
Men veldig interessant ting er at som en innfødt, når du lærer
språk som barn, du faktisk lære alle disse tingene - syntaks semantikk
og pragmatikk -
selv.
Og ingen trenger å lære deg syntaks for deg å forstå hvordan setninger er
strukturert.
Så, det er virkelig interessant fordi det er noe som kommer svært
intuitivt.
>> Og hva er det du tar fra informatikk?
Vel, det viktigste er at vi har i informatikk er første av
alt, kunstig intelligens og maskinlæring.
Så, hva vi prøver å gjøre beregnings lingvistikk er lærer
datamaskinen hvordan du gjør noe med språket.
>> Så, for eksempel i maskin oversettelse.
Jeg prøver å lære min datamaskin hvordan å vite hvordan overgangen fra ett
språket til den andre.
Så, i utgangspunktet liker undervisning en datamaskin to språk.
Hvis jeg gjør naturlig språk prosessering, som er tilfellet for eksempel på
Facebooks Graf Søk, lære deg datamaskinen hvordan å forstå
spørsmål også.
>> Så, hvis du sier "bilder av min venner. "Facebook behandler ikke at
som et hele streng som har bare en haug med ord.
Det forstår faktisk forholdet mellom "bilder" og "mine venner" og
forstår at "bilder" er eiendom av "mine venner."
>> Så, det er en del av, for eksempel, naturlig språkbehandling.
Det prøver å forstå hva er forholdet mellom
ordene i en setning.
Og det store spørsmålet er, kan du undervise en datamaskin hvordan å snakke
et språk generelt?
Som er et veldig interessant spørsmål å tror, ​​som om kanskje i fremtiden,
du kommer til å være i stand til snakk med din mobiltelefon.
Typen som hva vi gjør med Siri, men noe mer som, kan du faktisk
si hva du vil og telefonen kommer til å forstå alt.
Og det kan ha følge opp spørsmål og fortsetter å snakke.
Det er noe veldig spennende, etter min mening.
>> Så noe om naturlige språk.
Noe virkelig interessant om naturlige språk er det, og dette er
kreditt til min lingvistikk professor, Maria Polinsky.
Hun gir et eksempel, og jeg tror det er virkelig interessant.
Fordi vi lærer språket fra når vi er født og deretter vår hjem
språket slags vokser på oss.
>> Og i utgangspunktet du lære språk fra minimal input, ikke sant?
Du er bare å få innspill fra Foreldrene til hva din språklyder
liker og du bare lære det.
Så, er det interessant fordi hvis du ser på disse setninger, for eksempel.
Du ser, "Mary setter på en frakk hver gang hun forlater huset. "
>> I dette tilfellet er det mulig å ha Ordet "hun" refererer til Mary, ikke sant?
Du kan si "Mary setter på en frakk hver gang Mary forlater
huset. "så er det helt greit.
Men så hvis du ser på setningen "Hun setter på en frakk hver gang Mary
forlater huset. "du vet det er umulig å si at "hun" er
henviser til Mary.
>> Det er ingen måte å si at "Mary setter på en frakk hver gang Mary forlater
huset. "Så det er interessant fordi Dette er den type intuisjon
at hver innfødt har.
Og ingen ble lært at dette er slik at syntaks virker.
Og at du bare kan ha denne "hun" henvisning til Mary i denne første tilfellet
og faktisk i denne andre også, men ikke i denne.
Men alle slags blir til den samme svar.
Alle er enige om det.
Så det er virkelig interessant hvordan selv du vet ikke alle reglene
på ditt språk du slags forstå hvordan språket fungerer.
>> Så det interessante ting om naturlig språket er at du ikke trenger å
vet noen syntaks å vite om en setning er grammatisk eller ungrammatical for
de fleste tilfeller.
Som gjør at du tror at kanskje det skjer er at gjennom livet ditt, du
blir bare mer og mer setninger fortalt til deg.
Og så du holder memorering alle setninger.
Og så når noen forteller deg noe, hører du den setningen og
du ser på ditt vokabular av setninger og se om
den setningen er der.
Og hvis det er det du si det er grammatisk.
Hvis det ikke er du si at det er ungrammatical.
>> Så, i så fall, ville du si, oh, så du har en stor liste over alle
mulige setninger.
Og så når du hører en setning, du vet om det er grammatisk eller
ikke basert på det.
Saken er at hvis du ser på en setning, for eksempel "The
fem-ledet CS50 TFs kokte blinde blekksprut med en DAPA krus. "Det er
definitivt ikke en setning at du har hørt før.
Men på samme tid du vet at det er ganske mye grammatisk, ikke sant?
Det er ingen grammatiske feil og du kan si at
det er en mulig setning.
>> Så det gjør oss tror at faktisk måte at vi lærer språket er ikke bare
ved å ha en stor database med mulig ord eller setninger, men mer av
å forstå forholdet mellom ord i disse setningene.
Betyr det fornuftig?
Så da er spørsmålet, kan datamaskiner lære språk?
Kan vi lære språk til datamaskiner?
>> Så, la oss tenke på forskjellen mellom en innfødt av et språk
og en datamaskin.
Så, hva skjer med den som snakker?
Vel, lærer morsmål en språk fra eksponering til det.
Sendes sine tidlige barneår.
Så, i utgangspunktet, du bare har en baby, og du fortsetter å snakke til den, og det
bare lærer å snakke språket, ikke sant?
Så, er du i utgangspunktet gi innspill til babyen.
Så, så kan du argumentere for at en datamaskin kan gjøre det samme, ikke sant?
Du kan bare gi språk som input til datamaskinen.
>> Som for eksempel en haug med filer som har bøker på engelsk.
Kanskje det er en måte at du kunne undervise en
datamaskin engelsk, ikke sant?
Og faktisk, hvis du tenker på det, det tar deg kanskje et par
dager til å lese en bok.
For en datamaskin tar det et sekund å se på alle ord i en bok.
Så du kan tenke som kan være nettopp dette argument for innspill fra rundt deg,
det er ikke nok å si at det er noe som bare mennesker kan gjøre.
Du kan tenke datamaskiner også kan få innspill.
>> Den andre tingen er at morsmål også har en hjerne som har
språklæring evne.
Men hvis du tenker på det, en hjerne er en solid ting.
Når du blir født, er det allerede satt -
dette er hjernen din.
Og som du vokser opp, får du bare mer input av språk og kanskje næringsstoffer
og andre ting.
Men ganske mye hjernen din er en solid ting.
>> Så du kan si, vel, kanskje du kan bygge en datamaskin som har en haug med
funksjoner og fremgangsmåter som bare etterligne språklæring evne.
Så i den forstand, kan du si, vel, jeg kan ha en datamaskin som har alt
ting jeg trenger å lære språket.
Og det siste er at en innfødt speaker lærer av prøving og feiling.
Så i utgangspunktet en annen viktig ting i språklæring er at du på en måte
av å lære ting ved å gjøre generaliseringer av det du hører.
>> Så som du vokser opp du lære at noen ord er mer som substantiver,
noen andre som er adjektiver.
Og du trenger ikke å ha noen kunnskap om lingvistikk
å forstå at.
Men du bare vet det er noen ord er plassert på en eller annen del av
setning og noen andre i andre deler av setningen.
>> Og at når du gjør noe som er som en setning som ikke er riktig -
kanskje på grunn av en over generalisering for eksempel.
Kanskje når du vokser opp, merker du at flertall er vanligvis
dannet ved å sette en S i slutten av ordet.
Og så du prøver å gjøre det flertall av "hjort" som "rådyr" eller "tann" som
"tooths." Så da dine foreldre eller noen korrigerer deg og sier, nei, det
flertall av "hjort" er "hjort", og flertall av "tann" er "tenner". Og så
du lære disse tingene.
Så du lære av prøving og feiling.
>> Men du kan også gjøre det med en datamaskin.
Du kan ha noe som kalles forsterkning læring.
Som er utgangspunktet som å gi en datamaskin en belønning når den gjør
noe riktig.
Og gir det motsatte av en belønning og når den gjør noe galt.
Du kan faktisk se at hvis du går til Google Translate og du prøver å
sette en setning, det ber deg om tilbakemelding.
Så hvis du sier, oh, det er en bedre oversettelse for denne setningen.
Du kan skrive det ut og så hvis en masse folk holder å si at er en bedre
oversettelse, bare lærer det at det bør bruke som oversettelse i stedet for
den ene det var å gi.
>> Så, det er en veldig filosofisk spørsmål for å se om datamaskiner kommer til å være
stand til å snakke eller ikke i fremtiden.
Men jeg har store forhåpninger om at de kan bare basert på disse argumentene.
Men det er bare mer av en filosofisk spørsmål.
>> Så mens datamaskiner fortsatt ikke kan snakke, hva er de tingene som vi kan gjøre?
Noen virkelig kule tingene er dataklassifisering.
Så, for eksempel, dere vet at e-posttjenester gjør, for
eksempel spamfiltrering.
Så når du mottar spam, det prøver å filtrere til en annen boks.
Så hvordan gjør den det?
Det er ikke som maskinen bare vet hva e-postadresser sender spam.
Så det er mer basert på innholdet i meldingen, eller kanskje tittelen, eller
kanskje noen mønster som du har.
>> Så, i utgangspunktet, hva du kan gjøre er å få en mye data av e-poster som er spam,
e-poster som ikke er spam, og lære hva slags mønstre du har i
de som er spam.
Og dette er en del av beregnings lingvistikk.
Det kalles dataklassifisering.
Og vi faktisk kommer til å se en eksempel på at i de neste lysbildene.
>> Den andre tingen er naturlig språk behandling som er den tingen som
Graf Søk gjør for å la du skrive en setning.
Og den stoler du forstår hva er meningen og gir
du et bedre resultat.
Egentlig, hvis du går til Google eller Bing og du søker noe som Lady
Gagas høyde, er du faktisk kommer å få 5 '1 "i stedet for informasjon
fra henne fordi det faktisk forstår hva du snakker om.
Så det er en del av naturlig språkbehandling.
>> Eller også når du bruker Siri, først du har en algoritme som prøver å
sette hva du sier i ord, i tekst.
Og så den prøver å oversette som til mening.
Så det er alle en del av naturlig språkbehandling.
>> Da har du maskinoversettelse -
som er faktisk en av mine favoritter -
som er bare oversette fra et språk til et annet.
Så du kan tenke at når du gjør maskinoversettelse, har du
uendelige muligheter for setninger.
Så det er ingen måte å bare lagre hver eneste oversettelse.
Så du må komme opp med interessante algoritmer for å kunne
sette hver enkelt setning på noen måte.
>> Dere har noen spørsmål så langt?
Nei?
OK.
>> Så hva skal vi ser i dag?
Først av alt, jeg kommer til å snakke om klassifiseringen problem.
Så den som jeg var sier om spam.
Hva jeg kommer til å gjøre er, gitt tekster til en sang, kan du prøve å finne ut
med høy sannsynlighet som er sangeren?
La oss si at jeg har sanger fra Lady Gaga og Katy Perry, hvis jeg gir deg en
ny sang, kan du finne ut om det er Katy Perry eller Lady Gaga?
>> Den andre, jeg bare kommer til å snakke om segmentering problem.
Så jeg vet ikke om dere vet, men Kinesisk, japansk, andre østasiatiske
språk og andre språk generelt, ikke har
mellomrom mellom ord.
Og så hvis du tenker på den måten at datamaskinen slags prøver å
forstå naturlig språk prosessering, den ser på ordene og
forsøker å forstå forholdet mellom dem, ikke sant?
Men så hvis du har kinesisk, og du ha null mellomrom, det er virkelig vanskelig å
finne ut hva som er forholdet mellom ord, fordi de ikke har noen
ord først.
Så du trenger å gjøre noe som kalles segmentering som bare betyr å sette
mellomrom mellom hva vi vil kalle ord på disse språkene.
Fornuftig?
>> Og så skal vi snakke om syntaks.
Så bare litt om naturlig språkbehandling.
Det kommer til å være bare en oversikt.
Så i dag, i utgangspunktet det jeg ønsker å gjøre er å gi dere en liten bit av en
innsiden av det som er mulighetene at du kan gjøre med beregnings
lingvistikk.
Og så kan du se hva du tror er kult blant de tingene.
Og kanskje du kan tenke på et prosjekt og komme å snakke med meg.
Og jeg kan gi deg råd på hvordan man implementerer den.
>> Så syntaks kommer til å være litt om Graf Søk og maskin
oversettelse.
Jeg skal bare gi et eksempel på hvordan du kan for eksempel oversette
noe fra portugisisk til engelsk.
Høres bra ut?
>> Så først, problemet klassifisering.
Jeg vil si at denne delen av seminaret kommer til å være den mest utfordrende
en bare fordi det kommer å være noen koding.
Men det kommer til å bli Python.
Jeg vet at dere ikke vet Python, så Jeg skal bare forklare på den høye
nivå hva jeg gjør.
Og du trenger ikke å virkelig bryr seg for mye om syntaksen fordi det er
noe dere kan lære.
OK?
Høres bra ut.
>> Så hva er problemet klassifisering?
Så du får noen tekster til en sang, og du ønsker å gjette
som synger den.
Og dette kan være for noe slag andre problemer.
Så det kan være, for eksempel, har du en presidentvalgkamp, ​​og du har en
tale, og du vil finne ut hvis det var, for eksempel,
Obama eller Mitt Romney.
Eller du kan ha en haug med e-poster og du ønsker å finne ut om de er
spam eller ikke.
Så det er bare å klassifisere noen data basert på ordene
at du har det.
>> Så for å gjøre det, må du gjøre noen forutsetninger.
Så mye om datalingvistikk er å gjøre antakelser,
vanligvis smart forutsetninger, slik at du kan få gode resultater.
Prøver å lage en modell for det.
Og så prøve det ut og se om det fungerer, hvis det gir deg god presisjon.
Og hvis den gjør det, så du forsøke å forbedre den.
Hvis det ikke gjør det, er du liker, OK, kanskje jeg bør gjøre en annen forutsetning.
>> Så antakelsen om at vi kommer til å gjøre er at en artist vanligvis synger
om et tema flere ganger, og kanskje bruker ord flere ganger bare
fordi de er vant til det.
Du kan bare tenke på din venn.
Jeg er sikker på at dere alle har venner som sier at deres signatur setning,
bokstavelig talt for hver enkelt setning -
som noen bestemt ord eller noen spesifikke setning som de sier for
hver eneste setning.
>> Og hva du kan si er at hvis du ser en setning som har en signatur
setning, kan du gjette at sannsynligvis din venn er den
en sier det, ikke sant?
Så du gjøre denne antakelsen og deretter det er hvordan du lage en modell.
>> Eksempelet som jeg kommer til å gi er på hvordan Lady Gaga, for eksempel, folk
si at hun bruker "baby" for alle hennes nummer én sanger.
Og faktisk dette er en video som viser hun sa ordet "baby" for
forskjellige sanger.
>> [VIDEOAVSPILLING]
>> - (Synger) Baby.
Baby.
Babe.
Baby.
>> [END VIDEOAVSPILLING-
>> LUCAS FREITAS: Så det er, tror jeg, 40 sanger her som sier hun
ordet "baby". Så du kan i utgangspunktet gjette at hvis du ser en sang som har
ordet "baby", det er noen høy Sannsynligheten for at det er Lady Gaga.
Men la oss prøve å utvikle dette ytterligere mer formelt.
>> Så disse er tekster til sanger av Lady Gaga og Katy Perry.
Så du ser på Lady Gaga, ser du de har mange forekomster av "baby", en
mange forekomster av "måte." Og så Katy Perry har mange forekomster av
"Det," en rekke forekomster av "ild".
>> Så i utgangspunktet det vi ønsker å gjøre er, du får en lyrisk.
La oss si at du får en lyrisk for en sang som er "baby", bare "baby". Hvis
du bare få ordet "baby", og dette er alle data som du har fra
Lady Gaga og Katy Perry, som ville du tror er den personen
som synger den sangen?
Lady Gaga eller Katy Perry?
Lady Gaga, ikke sant?
Fordi hun er den eneste som sier "Baby". Dette høres dumt, ikke sant?
OK, dette er virkelig enkelt.
Jeg bare ser på de to sangene og av Selvfølgelig, hun er den eneste som har
"Baby".
>> Men hva om du har en haug med ord?
Hvis du har en faktisk lyrisk, noe som "baby, jeg bare
gikk for å se et [? CFT?]
foredrag, "eller noe sånt, og så du faktisk nødt til å finne ut -
basert på alle disse ordene -
hvem er kunstneren som trolig sang denne sangen?
Så la oss prøve å utvikle dette litt nærmere.
>> OK, så basert bare på data som vi fikk, virker det som Gaga er trolig
sangeren.
Men hvordan kan vi skrive dette mer formelt?
Og det kommer til å være litt litt statistikk.
Så hvis du går deg bort, bare prøv å forstå konseptet.
Det spiller ingen rolle om du forstår ligningene utmerket godt.
Dette er alle kommer til å være online.
>> Så i utgangspunktet det jeg beregning er Sannsynligheten for at denne sangen er av
Lady Gaga gitt at -
så dette bar betyr gitt at -
Jeg så ordet "baby". Betyr det fornuftig?
Så jeg prøver å beregne at sannsynligheten.
>> Så det er dette teoremet kalt Bayes teorem som sier at
sannsynligheten for et gitt B, er sannsynligheten for B gitt A, ganger
Sannsynligheten for A, over sannsynligheten av B. Dette er en lang ligning.
Men hva du har å forstå fra det er at dette er det jeg ønsker å
beregne, ikke sant?
Så sannsynligheten for at den sangen er av Lady Gaga gitt at jeg så ordet
"Baby".
>> Og hva jeg får nå er det Sannsynligheten for ordet "baby" gitt
at jeg har Lady Gaga.
Og hva er det egentlig?
Hva det betyr er, hva er det Sannsynligheten for å se ordet "baby"
i Gaga tekster?
Hvis jeg ønsker å beregne at i en svært enkel måte, er det bare antall
ganger jeg ser "baby" over det totale antall ord i Gaga tekster, ikke sant?
Hva er frekvensen som jeg ser det ordet i Gagas arbeid?
Fornuftig?
>> Det andre leddet er det Sannsynligheten for Gaga.
Hva betyr det?
Som i utgangspunktet betyr, hva er det sannsynligheten for å klassifisere
noen tekster som Gaga?
Og det er litt rart, men la oss tenke på et eksempel.
Så la oss si at sannsynligheten for å ha "baby" i en sang er den samme
for Gaga og Britney Spears.
Men Britney Spears har to ganger flere sanger enn Lady Gaga.
Så hvis noen gir deg bare tilfeldig tekster av "baby", den første tingen du
se på er, hva er sannsynligheten for å ha "baby" i en Gaga sang, "baby"
i en Britney sang?
Og det er den samme tingen.
>> Så den andre tingen som du vil se er, vel, hva er sannsynligheten for
denne lyrisk av seg selv å være en Gaga lyrisk, og hvilke er sannsynligheten for
å være en Britney lyrisk?
Så siden Britney har så mange flere tekster enn Gaga, ville du sannsynligvis
si, vel, dette er trolig en Britney lyrisk.
Så det er derfor vi har denne kaller akkurat her.
Sannsynlighet for Gaga.
Gir mening?
Gjør det?
OK.
>> Og den siste er bare sannsynligheten av "baby" som ikke
virkelig betyr så mye.
Men det er sannsynligheten for se "baby" på engelsk.
Vi vanligvis ikke bryr seg at mye om dette ordet.
Betyr det fornuftig?
Så sannsynligheten for Gaga er kalt før sannsynlighet
av klassen Gaga.
Fordi det betyr bare at det er den Sannsynligheten for at den klassen -
som er Gaga -
bare i sin alminnelighet, bare uten betingelser.
>> Og så når jeg har sannsynligheten for Gaga gitt "baby", vi kaller det pluss
tårevåte en sannsynlighet fordi det er sannsynligheten for å måtte
Gaga gitt noen bevis.
Så jeg gir deg bevis at jeg så ordet baby og
sangen fornuftig?
OK.
>> Så hvis jeg beregnet at for hver av sangene til Lady Gaga,
hva som ville være -
tilsynelatende, jeg kan ikke flytte denne.
Sannsynligheten for gal vil bli noe sånt, 2 over 24, ganger 1/2,
løpet av 2 over 53.
Det spiller ingen rolle om du vet hva disse tallene kommer fra.
Men det er bare et tall som kommer å være mer enn 0, hva?
>> Og så når jeg gjør Katy Perry, den Sannsynligheten for "baby" gitt Katy er
allerede 0, ikke sant?
Fordi det er ingen "baby" i Katy Perry.
Så da dette blir 0, og Gaga vinner, noe som betyr at Gaga er
sannsynligvis sangeren.
Betyr det fornuftig?
OK.
>> Så hvis jeg ønsker å gjøre dette mer offisielt, Jeg kan faktisk gjøre en modell
for flere ord.
Så la oss si at jeg har noe som "baby, er jeg
i brann, "eller noe.
Så det har flere ord.
Og i dette tilfellet, kan du se at "baby" er i Gaga,
men det er ikke i Katy.
Og "ild" er i Katy, men det er ikke i Gaga, ikke sant?
Så det blir mer komplisert, ikke sant?
Fordi det virker som du nesten har en uavgjort mellom de to.
>> Så hva du har å gjøre er å anta uavhengighet mellom ordene.
Så egentlig hva det betyr er at Jeg bare beregne hva som er den
Sannsynligheten for å se "baby", hva er sannsynligheten av å se "I", og
"Er", og "på" og "brann" tatt hver for seg.
Så jeg multiplisere dem alle.
Og jeg ser hva som er sannsynligheten av å se hele setningen.
Fornuftig?
>> Så i utgangspunktet, hvis jeg har bare ett ord, hva jeg ønsker å finne er arg max,
noe som betyr at, hva som er den klassen som er gi meg den høyeste sannsynligheten?
Så hva er den klassen som gir meg den høyeste sannsynligheten for
sannsynligheten for klassen gitt ord.
Så i dette tilfellet, Gaga gitt "baby". Eller Katy gitt "baby". Fornuftig?
>> Og bare fra Bayes, at likning som jeg viste,
vi oppretter denne fraksjonen.
Det eneste er at du ser at sannsynligheten for ordet gitt
klasse endres avhengig på klassen, ikke sant?
Antallet "baby" s som jeg har i Gaga er forskjellig fra Katy.
Sannsynligheten for klassen også endringer fordi det er bare antall
av sanger hver av dem har.
>> Men sannsynligheten for selve ordet kommer til å være den samme for alle
kunstnere, ikke sant?
Derfor er sannsynligheten for ordet bare, hvilke er sannsynligheten for
ser at ordet i Engelske språket?
Så det er det samme for dem alle.
Så siden dette er konstant, kan vi bare slippe dette og ikke bryr seg om det.
Så dette blir faktisk den ligningen vi leter etter.
>> Og hvis jeg har flere ord, jeg er fortsatt kommer til å ha den før
sannsynlighet her.
Det eneste er at jeg multiplisere sannsynligheten for
alle de andre ordene.
Så jeg multiplisere dem alle.
Fornuftig?
Det ser rart, men i utgangspunktet betyr, beregne den forutgående av klassen, og
deretter multiplisere med sannsynligheten for hvert av ordene blir i den klassen.
>> Og du vet at sannsynligheten for en ordet gitt en klasse kommer til å være den
antall ganger du ser det ordet i den klassen, dividert med antallet
ord du har i det klassen generelt.
Fornuftig?
Det er bare hvordan "baby" var 2 over antall ord som
Jeg hadde i tekstene.
Så bare frekvensen.
>> Men det er én ting.
Husker hvordan jeg var som viser at Sannsynligheten for "baby" å være lyrics
fra Katy Perry var 0 bare fordi Katy Perry hadde ikke "baby" i det hele tatt?
Men det høres litt harde å bare rett og slett si at tekstene ikke kan være fra
en artist bare fordi de ikke har ordet i særdeleshet når som helst.
>> Så du kan bare si, vel, hvis du har ikke dette ordet, kommer jeg til å
gi deg en lavere sannsynlighet, men jeg er bare ikke til å
gi deg 0 med en gang.
Fordi kanskje det var noe sånt, "Brann, brann, brann, brann", som er
helt Katy Perry.
Og så "baby", og det bare fortsetter å 0 med en gang fordi det var en
"Baby".
>> Så i utgangspunktet det vi gjør er noe kalles Laplace utjevning.
Og dette betyr bare at jeg gir viss sannsynlighet selv til ordene
som ikke eksisterer.
Så det jeg gjør er at når jeg er beregning av dette, jeg alltid legge en til
telleren.
Så selv om ordet ikke finnes, i dette tilfellet, hvis dette er 0, er jeg fortsatt
beregne dette som en over totale antall ord.
Ellers får jeg hvor mange ord Jeg har og jeg legger en.
Så jeg teller for begge tilfellene.
Fornuftig?
>> Så nå la oss gjøre noen koding.
Jeg er nødt til å gjøre det ganske fort, men det er bare viktig at du
Gutta forstår begrepene.
Så det vi prøver å gjøre er nøyaktig implementere dette
ting som jeg nettopp sa -
Jeg vil du skal sette tekstene fra Lady Gaga og Katy Perry.
Og programmet kommer til å være i stand til å si om disse nye tekstene er fra Gaga
eller Katy Perry.
Fornuftig?
OK.
>> Så jeg har dette programmet jeg skal å ringe classify.py.
Så dette er Python.
Det er et nytt programmeringsspråk.
Det er svært lik i noen måter til C og PHP.
Det ligner fordi hvis du ønsker å lære Python etter å vite C, er det
egentlig ikke så mye av en utfordring bare fordi Python er mye enklere
enn C, først av alt.
Og mange ting er allerede implementert for deg.
Så hvor som PHP har funksjoner som sortere en liste, eller legge noe
til en matrise, eller blah, blah, blah.
Python har alle av dem også.
>> Så jeg skal bare forklare raskt hvordan vi kunne gjøre klassifiseringen
problem for her.
Så la oss si at i dette tilfellet, har jeg tekster fra Gaga og Katy Perry.
Måten jeg har disse tekstene er at det første ordet av tekstene er
navnet på artisten, og resten er tekstene.
Så la oss si at jeg har denne listen i som den første er tekster av Gaga.
Så her er jeg på rett spor.
Og den neste er Katy, og det har også tekstene.
>> Så dette er hvordan du erklære en variabel i Python.
Du trenger ikke å gi datatypen.
Du bare skrive "tekster" slags liker i PHP.
Fornuftig?
>> Så hva er de tingene som jeg har til beregne å være i stand til å beregne
sannsynligheter?
Jeg må beregne "priors" av hver av de forskjellige
klasser som jeg har.
Jeg må beregne "posteriors," eller ganske mye sannsynlighetene for
hver av de forskjellige ord som Jeg kan ha for hver artist.
Så i løpet av Gaga, for eksempel, kommer jeg til å ha en liste over hvor mange ganger jeg ser
hvert av ordene.
Fornuftig?
>> Og til slutt, jeg bare kommer til å ha en liste som heter "ord" som bare kommer
å ha hvor mange ord jeg har for hver artist.
Så for Gaga, for eksempel når jeg ser til tekstene, jeg hadde, tror jeg, 24
ord totalt.
Så denne listen er bare nødt til Gaga 24, og Katy annet nummer.
Fornuftig?
OK.
>> Så nå, faktisk, la oss går til koding.
Så i Python, kan du faktisk returnere en haug med forskjellig
ting fra en funksjon.
Så jeg kommer til å lage denne funksjonen kalt "betinget", som kommer
å returnere alle disse tingene, det "priors," de "sannsynligheter", og den
"ord." Så "betinget", og det er kommer til å kalle inn "tekster."
>> Så nå vil jeg at du faktisk skrive denne funksjonen.
Så den måten at jeg kan skrive dette Funksjonen er jeg bare definert dette
fungere med "def." Så jeg gjorde "def betinget ", og det tar
"Tekster." Og hva dette kommer til å gjøre er, først av alt, jeg har mine priors
at jeg ønsker å beregne.
>> Så den måten at jeg kan gjøre dette på er å opprette en ordbok i Python, som
er ganske mye det samme som en hash bordet, eller det er som en iterativ
array i PHP.
Dette er hvordan jeg erklære en ordbok.
Og innerst inne hva dette betyr er at priors av gal er 0,5, for eksempel dersom
50% av tekstene er fra Gaga, 50% er fra Katy.
Fornuftig?
Så jeg må finne ut hvordan å beregne priors.
>> De neste de som jeg har å gjøre, også, er sannsynlighetene og ordene.
Så sannsynligheten for Gaga er listen av alle sannsynligheter som jeg
har for hvert av ordene på gal.
Så hvis jeg går til sannsynlighetene for Gaga "Baby", for eksempel, det vil gi meg
noe sånt som 2 over 24 i dette tilfellet.
Fornuftig?
Så jeg går til "sannsynligheter," gå til "Gaga" bøtte som har en liste over alle
de Gaga ord, så går jeg til "baby" og jeg ser sannsynligheten.
>> Og endelig har jeg dette "Ord" ordbok.
Så her, "sannsynligheter." Og så "ord." Så hvis jeg gjør "ord", "Gaga",
hva kommer til å skje er at det er kommer til å gi meg 24, sier at jeg
har 24 ord i tekster fra Gaga.
Gir mening?
Så her, "ord" er lik dah-dah-dah.
OK
>> Så hva jeg skal gjøre er jeg kommer til å iterere over hver av tekstene, så
hver av de strengene som Jeg har på listen.
Og jeg kommer til å beregne disse tingene for hver av kandidater.
Gir mening?
Så jeg må gjøre en for-løkke.
>> Så i Python hva jeg kan gjøre er "for linjen i tekstene. "Det samme som en
"For hver" statement i PHP.
Husk hvordan hvis det var PHP jeg kunne si "for hver tekster som
linje. "Gir mening?
Så jeg tar hver av linjene, i dette tilfelle denne strengen og den neste
strengen så for hver av linjene hva jeg er kommer til å gjøre er først, jeg kommer til å
splitte denne linjen inn i en liste over søkeord adskilt med mellomrom.
>> Så kule ting om Python er at du kunne bare Google som "hvordan kan jeg
splitte en streng i ord? "Og det er kommer til å fortelle deg hvordan du gjør det.
Og måten å gjøre det, det er bare "linje = Line.split () "og det er i utgangspunktet
kommer til å gi deg en liste med hvert av ordene her.
Gir mening?
Så nå at jeg gjorde det jeg vil vite som er vokalist i den sangen.
Og for å gjøre det jeg må bare få første element i matrisen, ikke sant?
Så jeg kan bare si at jeg "singer = Linjen (0) "Gir mening?
>> Og hva jeg trenger å gjøre da er først av alt, kommer jeg til å oppdatere hvor mange
ord jeg har under "Gaga." så jeg er bare kommer til å regne ut hvor mange ord jeg
har i denne listen, ikke sant?
Fordi dette er hvor mange ord jeg har i tekstene, og jeg skal bare
legge den til "Gaga" array.
Betyr det fornuftig?
Ikke fokuser for mye på syntaksen.
Tenk mer om begrepene.
Det er den viktigste delen.
OK.
>> Så hva kan jeg gjøre det er hvis "Gaga" er allerede i den listen, så "hvis sangeren i
Ordene "som betyr at jeg allerede løs av Gaga.
Jeg vil bare legge til ekstra ord til det.
Så det jeg gjør er "ord (sanger) + = Len (linje) - 1 ".
Og så kan jeg bare gjøre det Lengden av linjen.
Så hvor mange elementer I har i matrisen.
Og jeg må gjøre minus en bare fordi det første element i matrisen er like
en sanger og de er ikke tekstene.
Gir mening?
OK.
>> "Else", det betyr at jeg vil faktisk sett Gaga i listen.
Så jeg bare gjøre "ord (sanger) = Len (linje) - 1, "beklager.
Så den eneste forskjellen mellom de to linjer er at denne ene, gjør det ikke
eksisterer ennå, så jeg er bare initialisere den.
Dette en jeg faktisk å legge.
OK.
Så dette var å legge til ord.
>> Nå ønsker jeg å legge til priors.
Så hvordan kan jeg beregne priors?
De priors kan beregnes etter hvor mange ganger.
Så hvor mange ganger du ser at sangeren blant alle de sangerne som dere
ha, ikke sant?
Så for Gaga og Katy Perry, i dette tilfellet, ser jeg Gaga
gang, Katy Perry gang.
>> Så i utgangspunktet priors for Gaga og for Katy Perry ville
bare være én, ikke sant?
Du bare hvor mange ganger Jeg ser kunstneren.
Så dette er veldig lett å beregne.
Jeg kan bare noe lignende som liker "hvis sangeren i priors, "Jeg skal bare
å legge en til deres priors boksen.
Så, "priors (synger)" + = 1 "og deretter" annet " Jeg kommer til å gjøre "priors (sanger)
= 1. "Gir mening?
>> Så hvis det ikke eksisterer jeg bare sette som en, ellers vil jeg bare legge til en.
OK, så nå er alt som jeg har igjen å gjøre er også legge til hver av de ordene til
sannsynligheter.
Så jeg må telle hvor mange ganger Jeg ser hvert av ordene.
Så jeg må bare gjøre en annen for loop i linjen.
>> Så første jeg skal gjøre er sjekke om sangeren allerede har en
sannsynlig array.
Så jeg sjekker om sangeren ikke har en sannsynlig array, jeg er bare
kommer til å initialisere en for dem.
Det er ikke engang en matrise, sorry, det er en ordbok.
Så sannsynligheten for sangeren kommer å være en åpen ordbok, så jeg er
bare å initialisere en ordbok for det.
OK?
>> Og nå kan jeg faktisk gjøre en for loop for å beregne hver av ordene '
sannsynligheter.
OK.
Så hva jeg kan gjøre, er en for-løkke.
Så jeg bare kommer til å reagere over matrisen.
Så den måten at jeg kan gjøre det i Python er "for i in range." Fra 1
fordi jeg ønsker å starte i andre element fordi den første er den
sangeren navn.
Så fra en opp til Lengden av linjen.
Og når jeg spenner det faktisk gå fra som her fra 1 til len av
linjen minus en.
Så det allerede gjør den tingen å gjøre n minus en for matriser som er meget
praktisk.
Gir mening?
>> Så for hver av disse, hva jeg kommer til å gjøre er, akkurat som i den andre,
Jeg kommer til å sjekke om ordet i denne stilling i linje allerede er i
sannsynligheter.
Og da som jeg sa her, sannsynligheter ord, som i jeg satt
"sannsynligheter (sanger)".
Så navnet på sangeren.
Så hvis det er allerede i "Probabilit (sanger)", betyr det at jeg
ønsker å legge en til det, så jeg kommer til å gjøre "sannsynligheter (sanger)", og den
Ordet kalles "-linjen (i)".
Jeg kommer til å legge en og "annet" Jeg er bare kommer til å initialisere den til en.
«Line (i)".
Gir mening?
>> Så, I beregnes alle matriser.
Så, nå er alt som jeg trenger å gjøre for dette er bare "tilbake priors,
sannsynligheter og ord. "La oss se om det er noen, OK.
Det synes alt virker så langt.
Så, gjør det fornuftig?
I noen måte?
OK.
Så nå har jeg alle sannsynligheter.
Så nå er det eneste jeg har igjen er bare for å ha den tingen som
beregner produktet av alle sannsynligheter når jeg får tekstene.
>> Så la oss si at jeg ønsker å nå kaller denne funksjonen "klassifisere ()" og
ting tar den funksjonen er bare et argument.
La oss si "Baby, jeg er on fire", og det er kommer til å finne ut hva som er den
Sannsynligheten for at dette er Gaga?
Hva er sannsynligheten at dette er Katie?
Høres bra ut?
Så jeg er bare nødt til å opprette en ny funksjon kalt "klassifisere ()" og
det kommer til å ta litt tekster også.
Og dessuten tekstene jeg også må sende priors, den
sannsynligheter og ordene.
Så jeg kommer til å sende tekster, priors, sannsynligheter, ord.
>> Så dette tar tekster, priors, sannsynligheter, ord.
Så, hva gjør den?
Det i utgangspunktet kommer til å gå gjennom alle mulige kandidater som du
har som sanger.
Og hvor er de kandidatene?
De er i priors, ikke sant?
Så jeg har alle de der.
Så jeg kommer til å ha en ordbok av alle mulige kandidater.
Og deretter for hver kandidat i priors, så det betyr at det kommer til å
være Gaga, Katie hvis jeg hadde mer det ville være mer.
Jeg kommer til å begynne å beregne denne sannsynligheten.
Sannsynligheten som vi så i PowerPoint er de tidligere ganger
Produktet fra hver av de andre sannsynligheter.
>> Så jeg kan gjøre det samme her.
Jeg kan bare gjøre sannsynligheten er utgangspunktet bare den før.
Så priors av kandidaten.
Høyre?
Og nå har jeg til å iterere over alle ord som jeg har i tekstene for å være
legge sannsynligheten for hver av dem, OK?
Så, "for ord i tekstene" hva jeg skal å gjøre er, hvis ordet er i
"sannsynligheter (kandidat)", som betyr at det er et ord som den
Kandidaten har i sine tekster -
for eksempel, "baby" for Gaga -
hva jeg skal gjøre er at sannsynlighet kommer til å bli multiplisert
med en pluss sannsynlighetene for kandidaten for det ordet.
Og det heter "ord".
Dette delt på antall ord at jeg har for at kandidaten.
Det totale antall ord som jeg har for sangeren som jeg ser på.
>> "Else". det betyr at det er et nytt ord så det ville være som for eksempel
"Ild" for Lady Gaga.
Så jeg vil bare gjøre en i løpet "Ord (kandidat)".
Så jeg ønsker ikke å sette dette begrepet her.
>> Så det kommer til å være utgangspunktet klippe og lime denne.
Men jeg kommer til å slette denne delen.
Så det er bare kommer til å være en over det.
Høres bra ut?
Og nå på slutten, jeg bare kommer til å Skriv navnet på kandidaten og
sannsynligheten for at du har av ha S på tekstene sine.
Gir mening?
Og jeg faktisk ikke engang trenger denne ordboken.
Gir mening?
>> Så, la oss se om dette faktisk fungerer.
Så hvis jeg kjører denne, fungerte det ikke.
Vent ett sekund.
"Words (kandidat)", "ord (kandidat)", det er
navnet på matrisen.
OK Så, det står at det er noen feil for kandidat i priors.
La meg bare slappe litt.
OK.
La oss prøve.
OK.
>> Så det gir Katy Perry har dette Sannsynligheten for dette ganger 10 til
minus 7, og Gaga har dette ganger 10 i minus seks.
Så du ser det viser at Gaga har en høyere sannsynlighet.
Så "Baby, jeg er på Fire" er trolig en Gaga sang.
Gir mening?
Så dette er hva vi gjorde.
>> Denne koden kommer til å bli lagt ut på nettet, så dere kan sjekke det ut.
Kanskje bruke noen av det for hvis du ønsker å gjøre et prosjekt eller noe lignende.
OK.
Dette var bare for å vise hva beregnings
lingvistikk koden ser slik ut.
Men la oss nå gå til mer høyt nivå ting.
OK.
>> Så de andre problemene jeg snakket om -
segmentering problem er den første av dem.
Så du har her japansk.
Og så ser du at det er ingen mellomrom.
Så dette er i utgangspunktet betyr at det er toppen av stolen, riktig?
Du snakker japansk?
Det er toppen av stolen, ikke sant?
>> STUDENT: Jeg vet ikke hva kanji der borte er.
>> LUCAS FREITAS: Det er [SNAKKE JAPANSK]
OK.
Så det betyr i utgangspunktet styreleder i toppen.
Så hvis du måtte sette inn et mellomrom det ville være her.
Og da har du [? Ueda-san. ?]
Som i utgangspunktet betyr Mr. Ueda.
Og du ser at "Ueda" og du har en plass og deretter "san." Så du ser at
her du "Ue" er som seg selv.
Og her har det en tegn ved siden av den.
>> Så det er ikke som i disse språkene tegn som betyr et ord det slik at du
bare sette en masse mellomrom.
Tegn i forhold til hverandre.
Og de kan være sammen som to, tre, en.
Så du faktisk nødt til å skape noen form av veien for å sette disse områder.
>> Og denne saken er at når du får data fra de asiatiske språk,
alt kommer unsegmented.
Fordi ingen som skriver japansk eller kinesisk skriver med mellomrom.
Når du skriver kinesisk, Japansk du bare skrive alt
uten mellomrom.
Det trenger ikke engang være fornuftig å sette mellomrom.
Så når du får data fra, noen Østasiatisk språk, hvis du ønsker å
faktisk gjøre noe med det du må segment først.
>> Tenke på å gjøre det eksempel på tekstene uten mellomrom.
Så de eneste tekster som du har vil være setninger, ikke sant?
Atskilt av punktum.
Men deretter å ha akkurat den setningen vil egentlig ikke hjelpe på å gi informasjon
av hvem disse tekstene er av.
Høyre?
Så du bør setter plasser først.
Så hvordan kan du gjøre det?
>> Så da kommer tanken på et språk modell som er noe virkelig
viktig for beregnings lingvistikk.
Så en språkmodell er i utgangspunktet en tabell av sannsynlighetene for at show
først av alt hva er sannsynligheten av å ha et ord i et språk?
Så viser hvor hyppig et ord er.
Og da også viser forholdet mellom ordene i en setning.
>> Så hovedideen er, hvis en fremmed kom til deg og sa en setning til
du, hva er sannsynligheten for at, for eksempel, "dette er min søster [? GTF"?]
var dommen at personen sa?
Så tydeligvis noen setninger er mer vanlig enn andre.
For eksempel, "god morgen", eller "god natt, "eller" hei der, "er mye mer
vanlig enn de fleste setninger at vi har en engelsk.
Så hvorfor er disse setningene hyppigere?
>> Først av alt, det er fordi du har ord som er mer hyppig.
Så, for eksempel hvis du sier, er hunden stor, og hunden er gigantisk, du
vanligvis sannsynligvis høre hunden er stor oftere fordi "store" er mer
hyppig i engelsk enn "gigantisk". Derfor, er en av de
ting er ordet frekvens.
>> Den andre tingen som er virkelig viktig er nettopp den
rekkefølgen av ordene.
Så, er det vanlig å si "katten er inne i boksen. ", men du vanligvis ikke
se i "The boksen inne er katten." så du se at det er en viss betydning
i rekkefølgen av ordene.
Du kan ikke bare si at de to setninger har samme sannsynlighet
bare fordi de har de samme ordene.
Du faktisk har til å bry seg om orden også.
Fornuftig?
>> Så hva gjør vi?
Så hva jeg kan prøve å få deg?
Jeg prøver å få deg hva vi ringe n-gram-modeller.
Så n-gram-modeller i utgangspunktet anta at for hvert ord som
du har i en setning.
Det er sannsynligheten for å ha det Ordet det avhenger ikke bare av den
hyppigheten av ordet i språket, men også på de ordene som
er rundt det.
>> Så for eksempel, som regel når du ser noe som på eller i det du er
sannsynligvis kommer til å se en substantiv etter det, ikke sant?
Fordi når du har en preposisjon vanligvis tar det et substantiv etter den.
Eller hvis du har et verb som er transitive du vanligvis går til
har et substantiv frase.
Så det kommer til å ha et substantiv et sted rundt det.
>> Så, i utgangspunktet, hva den gjør er at det anser sannsynligheten for å måtte
ord ved siden av hverandre, når du beregne
Sannsynligheten for en setning.
Og det er det et språk Modellen er i utgangspunktet.
Bare si hva som er sannsynligheten ved å ha en spesifikk
setning i et språk?
Så hvorfor er det nyttig, i utgangspunktet?
Og først av alt hva som er en n-gram-modell, da?
>> Så en n-gram betyr at hvert ord avhenger
neste N minus 1 ord.
Så, i utgangspunktet, betyr det at hvis jeg ser, for eksempel ved CS50 TF når
Jeg beregne sannsynligheten for setningen, vil du bli som "den
Sannsynligheten for at ordet "av" ganger sannsynligheten for å ha "
CS50 "ganger sannsynligheten for å ha "Den CS50 TF." Så, i utgangspunktet, jeg teller
alle mulige måter å strekke det.
>> Og da vanligvis når du gjør dette, som i et prosjekt, sette deg N å være
en lav verdi.
Så, har vanligvis bigrammer blir produsert eller trigrams.
Slik at du bare telle to ord, en gruppe på to ord eller tre ord
bare for ytelsesproblemer.
Og også fordi kanskje hvis du har noe sånt som "The CS50 TF." Når du
har "TF," det er svært viktig at "CS50" er ved siden av det, ikke sant?
Disse to tingene er som regel ved siden av hverandre.
>> Hvis du tenker på "TF", er det sannsynligvis kommer til å ha det
klasse er det TF'ing for.
Også "the" er veldig viktig for CS50 TF.
Men hvis du har noe sånt som "The CS50 TF gikk til klassen og ga sin
elevene noen godteri. "" Candy "og" den " har ingen sammenheng egentlig, ikke sant?
De er så fjernt fra hverandre som det spiller egentlig ingen rolle hva
ordene du har.
>> Så ved å gjøre en bigram eller en trigram, det betyr bare at du begrenser
deg noen ord som er rundt.
Fornuftig?
Så når du ønsker å gjøre segmentering, utgangspunktet, hva du ønsker å gjøre er å se
hva er alle mulige måter som du kan segmentere setningen.
>> Slik at du ser hva som er den sannsynligheten for at hver av disse setningene
eksisterende i språket?
Så hva du gjør er som, vel, la meg prøve å sette en plass her.
Så du sette en plass det og du ser hva som er den
Sannsynligheten for at setningen?
Da er du liksom: OK, kanskje det var ikke så bra.
Så jeg satte en plass der og en plass der, og du beregne
sannsynlighet nå, og du ser at det er en høyere sannsynlighet.
>> Så dette er en algoritme kalt TANGO segmenteringsalgoritme, noe som er
faktisk noe som ville være veldig kult for et prosjekt, som
utgangspunktet tar unsegmented tekst som kan være japansk eller kinesisk eller kanskje
Engelsk uten mellomrom og prøver å sette mellomrom mellom ord og det gjør
som ved hjelp av en språk modell og prøve for å se hva som er den høyeste
sannsynlighet du kan få.
OK.
Så dette er segmentering.
>> Nå syntaks.
Så blir syntaks som brukes for så mange ting akkurat nå.
Så for Graf søk, for Siri for stort sett alle slags naturlig
språkbehandling du har.
Så hva er det viktige ting om syntaks?
Så, setninger generelt har hva vi kaller bestanddeler.
Hvilke er typen som grupper av ord som har en funksjon i setningen.
Og de kan ikke egentlig være fra hverandre.
>> Så, hvis jeg sier, for eksempel, "Lauren elsker Milo. "Jeg vet at" Lauren "er en
konstituerende og deretter "elsker Milo "er også en annen.
Fordi du ikke kan si som "Lauren Milo favoritter "for å ha samme betydning.
Det kommer ikke til å ha samme betydning.
Eller jeg kan ikke si at "Milo Lauren elsker. "Ikke alt har samme
som betyr å gjøre det.
>> Så de to mer viktige ting om syntaks er de leksikalske typene som er
utgangspunktet den funksjonen du har for ord av seg selv.
Så du må vite at "Lauren" og "Milo" er substantiver.
"Love" er et verb.
Og den andre viktigste er at de er Phrasal typer.
Så du vet at "elsker Milo" er faktisk en verbal setning.
Så når jeg sier "Lauren," Jeg vet at Lauren gjør noe.
Hva gjør hun?
Hun er kjærlig Milo.
Så det er en hele greia.
Men komponentene er et substantiv og et verb.
Men sammen, de gjør et verb setning.
>> Så, hva kan vi egentlig gjøre med datalingvistikk?
Så, hvis jeg har noe for eksempel "venner av Allison." Jeg ser om jeg bare
gjorde et syntaktisk tre jeg ville vite at "Par" er et substantiv setning er det en
substantiv og deretter "av Allison" er en prepositional setning der "av" er
et forslag og "Allison" er et substantiv.
Hva jeg kunne gjøre er å lære min datamaskin at når jeg har et substantiv frase ett og
deretter en prepositional setning.
Så i dette tilfellet, "venner" og deretter "av Milo "Jeg vet at dette betyr at
NP2, den andre en, eier NP1.
>> Så jeg kan skape en slags relasjon, eller annen form for funksjonen for den.
Så når jeg ser denne strukturen, som samsvarer nøyaktig med "venner av
Allison, "Jeg vet at Allison eier venner.
Så venner er noe at Allison har.
Gir mening?
Så dette er egentlig hva Graf Søk gjør.
Det skaper bare regler for en rekke ting.
Så "venner av Allison", "mine venner som bor i Cambridge, "" vennene mine
som går til Harvard. "Det skaper regler for alle disse tingene.
>> Nå maskinoversettelse.
Så, er maskinoversettelse også noe statistisk.
Og faktisk hvis du blir involvert i datalingvistikk, mye
ting kommer til å bli statistikk.
Så som jeg gjorde eksempelet med mye av sannsynlighetene for at jeg var
beregning, og da får du til dette svært lite antall som er den endelige
sannsynlighet, og det er det gir deg svaret.
Maskinoversettelse bruker også en statistisk modell.
Og hvis du ønsker å tenke på maskin oversettelse på enklest mulig
Forresten, hva du kan tenke er bare sette ord for ord, ikke sant?
>> Når du lære et språk for første gang, det er vanligvis det
du gjør, ikke sant?
Hvis du vil kan oversette en setning i språket ditt til språket
du lærer, vanligvis først, du sette hvert av ordene
individuelt, og deretter prøver å sette ord på plass.
>> Så hvis jeg ønsket å oversette dette, [Snakker portugisisk]
som betyr "den hvite katten rømte." Hvis jeg ønsket å oversette det fra
Portugisisk til engelsk, hva jeg kan gjøre er, først, jeg bare
sette ord for ord.
Så "o" er "," "gato", "katt" "Branco", "hvit", og deretter "fugio" er
"Gikk unna."
>> Så da har jeg alle ordene her, men de er ikke i orden.
Det er som "katten hvit rømte" som er ungrammatical.
Så, da jeg kan ha et andre steg, som kommer til å være å finne den ideelle
stilling for hvert av ordene.
Så jeg vet at jeg faktisk ønsker å ha "Hvit katt" i stedet for "katt hvit." Så
hva jeg kan gjøre er, den mest naive metoden ville være å lage hele
mulige permutasjoner av ord, av posisjoner.
Og deretter se hvilken som har høyest sannsynlighet ifølge
til min språkmodell.
Og så når jeg finner den som har størst sannsynlighet den, som er
sannsynligvis "den hvite katten rømte," det er min oversettelse.
>> Og dette er en enkel måte å forklare hvor mange maskinoversettelse
algoritmer fungerer.
Betyr det fornuftig?
Dette er også noe virkelig spennende at dere kan kanskje lete etter en
endelige prosjektet, ja?
>> STUDENT: Vel, du sa det var naiv måte, så hva er
den ikke-naive måte?
>> LUCAS FREITAS: Den ikke-naiv måte?
OK.
Så det første som er dårlig om denne metoden er at jeg nettopp oversatt
ord, ord for ord.
Men noen ganger må du ord som kan ha flere oversettelser.
Jeg kommer til å prøve å tenke av noe.
For eksempel, "manga" på portugisisk boks enten være "mangle" eller "sleeve". Så
når du prøver å oversette ordet av ord, kan det være å gi deg
noe som gir ingen mening.
>> Så du faktisk ønsker å du ser i det hele tatt de mulige oversettelser av
ord og se, først av alt, hva som er den rekkefølge.
Vi snakket om permutating de tingene?
For å se alle de mulige bestillinger og velge den med høyest
sannsynlighet?
Du kan også velge alle mulige oversettelser for hvert
ord og deretter se -
kombinert med permutasjoner -
som man har den høyeste sannsynlighet.
>> Plus, kan du også se på ikke bare ord, men setninger.
slik at du kan analysere forholdet mellom ordene og deretter få en
bedre oversettelse.
Også noe annet, så dette semesteret Jeg er faktisk driver forskning innen
Kinesisk-engelsk maskinoversettelse, så oversette fra
Kinesisk til engelsk.
>> Og noe vi gjør er, foruten å bruke en statistisk modell, som er bare
se sannsynlighetene for å se noen posisjon i en setning, er jeg
faktisk også legge noen syntaks til min modell, sier, oh, hvis jeg ser denne typen
av konstruksjonen, er dette hva jeg vil å endre det til når jeg oversette.
Så du kan også legge til noen form for element i syntaks for å gjøre
Mer effektiv og mer presis.
OK.
>> Så hvordan kan du komme i gang, hvis du vil ha å gjøre noe i beregnings
lingvistikk?
>> Først velger du et prosjekt som involverer språk.
Så, det er så mange der ute.
Det er så mange ting du kan gjøre.
Og så kan tenke på en modell som du kan bruke.
Vanligvis betyr det at å tenke på forutsetninger, som liker, oh, da jeg var
som tenker på tekstene.
Jeg var som, vel, hvis jeg ønsker å finne ut en som skrev dette, jeg sannsynligvis vil
å se på ordene personen som brukes og se hvem som bruker det ordet veldig ofte.
Så prøv å gjøre antagelser og prøv å tenke på modeller.
Og da kan du også søke på nettet for hva slags problem du har,
og det kommer til å foreslå til dere modeller som kanskje
modellert at ting godt.
>> Og også du kan alltid email meg.
me@lfreitas.com.
Og jeg kan bare svare på dine spørsmål.
Vi kan til og med kan møte opp så jeg kan gi forslag på måter
gjennomføre prosjektet.
Og jeg mener hvis du blir involvert med datalingvistikk, det kommer
å være stor.
Du kommer til å se det er så mye potensiale.
Og industrien ønsker å ansette du så dårlig på grunn av det.
Så jeg håper dere likte dette.
Hvis dere har noen spørsmål, du kan spørre meg etter dette.
Men takk.