>> LUCAS FREITAS: Hej.
Velkommen alle.
Mit navn er Lucas Freitas.
Jeg er en junior på [uhørligt] studere datalogi med fokus på
datalingvistik.
Så mit sekundære er på sprog og sproglige teori.
Jeg er virkelig spændt på at lære jer lidt om området.
Det er et meget spændende område for at studere.
Også med en masse potentiale for fremtiden.
Så jeg er virkelig begejstret, at du fyre overvejer projekter i
datalingvistik.
Og jeg vil være mere end glade for at rådgive nogen af ​​jer, hvis du beslutter at
forfølge en af ​​dem.
>> Så først og fremmest hvad er beregningsmæssige lingvistik?
Så datalingvistik er skæringspunktet mellem lingvistik og
datalogi.
Så hvad er lingvistik?
Hvad er datalogi?
Godt fra lingvistik, hvad vi tager er de sprog.
Så lingvistik er faktisk studiet af naturligt sprog i almindelighed.
Så naturligt sprog - vi taler om sprog, at vi faktisk bruger til at
kommunikere med hinanden.
Så vi ikke ligefrem taler om C eller Java.
Vi taler mere om engelsk og Kinesisk og andre sprog, som vi
bruger til at kommunikere med hinanden.
>> Den udfordrende ting om det er, at lige nu har vi næsten 7.000
sprog i verden.
Så der er en ganske høj sort sprog, som vi kan studere.
Og så tror du, at det er nok meget svært at gøre, for eksempel,
oversættelse fra et sprog til anden, i betragtning af, at du har
næsten 7.000 af dem.
Så hvis du tænker på at gøre oversættelse fra et sprog til det andet, du
har næsten mere end en million forskellige kombinationer, som du kan
har fra sprog til sprog.
Så det er virkelig udfordrende at gøre nogle form for eksempel oversættelse for
hver enkelt sprog.
>> Så lingvistik behandler med syntaks, semantik, pragmatik.
Du fyre har ikke ligefrem brug at vide, hvad der er de er.
Men meget interessant ting er, at som en indfødt, når du lærer
sprog som barn, du faktisk lære alle disse ting - syntaks semantik
og pragmatik -
ved dig selv.
Og ingen har til at lære dig syntaks for dig til at forstå, hvordan sætninger er
struktureret.
Så det er virkelig interessant, fordi det er noget, der kommer meget
intuitivt.
>> Og hvad tager du fra datalogi?
Nå, det vigtigste, at vi har i datalogi er først
alt, kunstig intelligens og machine learning.
Så, hvad vi forsøger at gøre Datalingvistik er underviser
din computer, hvordan man gør noget med sproget.
>> Så for eksempel i maskinen translation.
Jeg forsøger at lære min computer, hvordan at vide, hvordan overgangen fra én
sprog til det andet.
Så dybest set gerne undervisning en computer to sprog.
Hvis jeg gør naturlig sprogbehandling, som det er tilfældet for eksempel
Facebooks Graph Søg, du underviser din computer hvordan man kan forstå
forespørgsler godt.
>> Så hvis du siger "de billeder af min venner. "Facebook ikke behandler det
som en hel streng, der har bare en masse ord.
Det faktisk forstår relationen mellem "fotos" og "mine venner" og
forstår, at "billeder" er egenskab af "mine venner."
>> Så det er en del af, for eksempel, naturlig sprogbehandling.
Det er at forsøge at forstå, hvad er forholdet mellem
ordene i en sætning.
Og det store spørgsmål er, kan du lære en computer hvordan man taler
et sprog i almindelighed?
Hvilket er et meget interessant spørgsmål til mener, som hvis måske i fremtiden,
du kommer til at være i stand til at tale med din mobiltelefon.
Lidt ligesom, hvad vi gør med Siri, men noget mere ligesom, kan du faktisk
sige, hvad du ønsker, og telefonen kommer til at forstå alt.
Og det kan have opfølgende spørgsmål og holde taler.
Det er noget virkelig spændende, efter min mening.
>> Så noget om naturlige sprog.
Noget virkelig interessant om naturlige sprog er, og det er
kredit til mit lingvistik professor, Maria Polinsky.
Hun giver et eksempel, og jeg tror det er virkelig interessant.
Fordi vi lærer sprog, når vi er født og derefter vores indfødte
sprog slags vokser på os.
>> Og dybest set du lære sprog fra minimal input, right?
Du er bare at få input fra din forældre, hvad dit sprog lyder
vil, og du bare lære det.
Så det er interessant, fordi hvis man ser på de sætninger, for eksempel.
Du ser, "Maria lægger på en frakke hver gang hun forlader huset. "
>> I dette tilfælde er det muligt at få ordet "hun" refererer til Mary, right?
Du kan sige "Mary lægger på en frakke hver gang Mary forlader
hus. ", så det er fint.
Men så hvis man ser på sætningen "Hun lægger på en frakke, hver gang Mary
forlader huset. "Du ved, det er umuligt at sige, at "hun" er
med henvisning til Mary.
>> Der er ingen måde at sige, at "Mary sætter på en frakke, hver gang Mary blade
i huset. "Så det er interessant, fordi dette er den slags intuition
at hver indfødt har.
Og ingen blev undervist, at dette er den måde, at syntaksen virker.
Og at du kun kan få denne "hun" med henvisning til Maria i denne første sag,
og faktisk i denne anden også, men ikke i denne ene.
Men alle slags får til det samme svar.
Alle er enige om det.
Så det er virkelig interessant, hvordan selv du ikke kender alle de regler
på dit sprog du slags forstår hvordan sproget fungerer.
>> Så det interessante ting om naturlige sprog er, at du ikke behøver at
kender nogen syntaks til at vide, hvis en sætning er grammatiske eller grammatisk ukorrekt for
de fleste tilfælde.
Hvilket gør du tror, ​​at måske, hvad sker er, at gennem dit liv, du
bare bliver mere og mere sætninger fortalt til dig.
Og så skal du holde lagrer alle de sætninger.
Og så når nogen fortæller dig noget, man hører denne sætning og
du ser på dit ordforråd sætninger og se, om
denne sætning er der.
Og hvis det er der du sige, det er grammatisk.
Hvis det ikke er, du siger, det er grammatisk ukorrekt.
>> Så i dette tilfælde, ville du sige, åh, så du har en enorm liste over alle
mulige sætninger.
Og så når du hører en sætning, du vide, hvis det er grammatisk eller
ikke baseret på denne.
Sagen er, at hvis man ser på en sætning, for eksempel "The
fem-ledet CS50 TFs kogt blinde blæksprutte med en DAPA krus. "Det er
bestemt ikke en sætning da du ved tidligere.
Men på samme tid, du ved, det er temmelig meget grammatisk, right?
Der findes ingen grammatiske fejl og du kan sige, at
Det er en mulig straf.
>> Så det gør os tænke, at faktisk måde, at vi lærer sproget er ikke kun
ved at have en enorm database af mulige ord eller sætninger, men flere af
forstå forholdet mellem ord i disse sætninger.
Giver det mening?
Ja, så spørgsmålet er, kan computere lære sprog?
Kan vi lære sproget til computere?
>> Så lad os tænke på forskellen mellem en indfødt af et sprog
og en computer.
Så hvad sker der taler?
Nå, den indfødt lærer en sprog fra eksponering for det.
Sendes sine tidlige barndom.
Så dybest set, du bare have en baby, og du holder taler til det, og det
bare lærer at tale sproget, right?
Så er du dybest set giver input til barnet.
Ja, så kan du argumentere for, at en computer kan gøre de samme ting, right?
Du kan bare give sprog som input til computeren.
>> Som for eksempel en masse filer der har bøger på engelsk.
Måske er det en måde at du kunne muligvis lære et
computer engelsk, ikke sandt?
Og i virkeligheden, hvis du tænker over det, det tager dig måske et par
dage til at læse en bog.
For en computer, det tager et sekund for at se på alle de ord i en bog.
Så du kan tro, at måske netop dette argument af input fra omkring dig,
det er ikke nok at sige, at det er noget, som kun mennesker kan gøre.
Du kan tænke computere også kan få input.
>> Den anden ting er, at modersmål også have en hjerne, der har
sprogindlæring kapacitet.
Men hvis du tænker over det, en hjerne er en solid ting.
Når du bliver født, er det allerede -
dette er din hjerne.
Og som du vokser op, kan du få mere input af sprog og måske næringsstoffer
og andre ting.
Men temmelig meget din hjerne er en solid ting.
>> Så du kan sige, ja, måske du kan bygge en computer, der har en flok
funktioner og metoder, der bare efterligner sprogindlæring kapacitet.
Så i den forstand kan man sige, ja, jeg kan have en computer, der har alt det
ting jeg har brug for at lære sprog.
Og den sidste ting er, at en indfødt højttaler lærer fra trial and error.
Så dybest set en anden vigtig ting i sprogindlæring er, at du slags
af lære ting ved at gøre generaliseringer af det, du hører.
>> Så som du vokser op du lærer at nogle ord er mere som substantiver,
nogle andre dem er adjektiver.
Og du behøver ikke at have nogen kendskab til lingvistik
at forstå, at.
Men du skal bare vide, at der er nogle ord er placeret i en del af
sætning og nogle andre i andre dele af sætningen.
>> Og at når du gør noget, der er som en sætning, der ikke er korrekt -
måske på grund af en over generalisering for eksempel.
Måske når du vokser op, du bemærker at flertalsformen er normalt
dannet ved at sætte en S på slutningen af ​​ordet.
Og så skal du prøve at gøre flertalsformen af "hjorte" som "hjorte" eller "tand" som
"tooths." Så dine forældre eller nogen korrigerer dig og siger, nej, det
flertalsformen af ​​"hjorte" er "hjorte", og den flertalsformen af ​​"tand" er "tænder". Og så
du lære disse ting.
Så du lærer fra trial and error.
>> Men du kan også gøre det med en computer.
Du kan få noget, der hedder forstærkning læring.
Som er dybest set som at give en computer en belønning, når det gør
noget korrekt.
Og giver det modsatte af en belønning og når det gør noget forkert.
Du kan faktisk se, at hvis du går til Google Translate og du forsøger at
oversætte en sætning, det beder om feedback.
Så hvis du siger, åh, der er en bedre oversættelse for denne sætning.
Du kan skrive det op og derefter, hvis en masse af folk holde siger, der er en bedre
oversættelse, det bare lærer, at det skal bruge den oversættelse i stedet for
den ene var det at give.
>> Så det er en meget filosofisk spørgsmål at se, om computere vil være
stand til at tale eller ej i fremtiden.
Men jeg har store forhåbninger om, at de kan blot baseret på disse argumenter.
Men det er bare mere af en filosofisk spørgsmål.
>> Så mens computere stadig ikke kan tale, hvad er de ting, vi kan gøre?
Nogle virkelig cool ting er dataklassificering.
Så for eksempel, du fyre kender at e-mail-tjenester gør det, for
eksempel spam filtrering.
Så når du modtager spam, det forsøger at foretage en anden kasse.
Så hvordan gør den det?
Det er ikke ligesom computeren bare kender hvad e-mailadresser sender spam.
Så det er mere baseret på indholdet af beskeden, eller måske titlen, eller
måske nogle mønster, du har.
>> Så dybest set, hvad du kan gøre, er at få et masse data af e-mails, der er spam,
e-mails, som ikke er spam, og lære, hvad slags mønstre, du har i
dem, der er spam.
Og dette er en del af beregningsmæssige lingvistik.
Det hedder dataklassificering.
Og vi faktisk kommer til at se en eksempel på, at der i de næste objektglas.
>> Den anden ting er naturligt sprog forarbejdning der er den ting, at
Graf Søg gør for at lade du skriver en sætning.
Og det stoler du forstår, hvad er meningen, og giver
du et bedre resultat.
Faktisk, hvis du går til Google eller Bing og du søger noget som Lady
Gagas højde, er du faktisk går at få 5 '1 "i stedet for oplysninger
fra hende, fordi det rent faktisk forstår hvad du taler om.
Så det er en del af naturlige sprogbehandling.
>> Eller også, når du bruger Siri, først du har en algoritme, der forsøger at
oversætte, hvad du siger i ord, i teksten.
Og så forsøger at oversætte der i betydning.
Så det er alt sammen en del af naturlige sprogbehandling.
>> Så har du maskinoversættelse -
der er faktisk en af mine favoritter -
som er lige oversætte fra et sprog til et andet.
Så du kan tro, at når du laver maskinoversættelse, har du
uendelige muligheder af sætninger.
Så der er ingen måde blot at lagre hver enkelt oversættelse.
Så du er nødt til at komme op med interessante algoritmer til at være i stand til
oversætte hver enkelt sætning i en eller anden måde.
>> Jer har nogen spørgsmål, så vidt?
Nej?
OK.
>> Så hvad skal vi se i dag?
Først og fremmest, jeg vil tale om klassificering problem.
Så det, jeg var siger om spam.
Hvad jeg har tænkt mig at gøre, er, givet lyrics til en sang, kan du prøve at finde ud af
med stor sandsynlighed der er sangeren?
Lad os sige, at jeg har sange fra Lady Gaga og Katy Perry, hvis jeg giver dig en
ny sang, kan du regne ud, hvis it's Katy Perry eller dame Gaga?
>> Den anden, jeg bare at snakke om segmentering problem.
Så jeg ved ikke, hvis du fyre kender, men Kinesisk, japansk, andre østasiatiske
sprog og andre sprog i almindelighed, ikke har
mellemrum mellem ordene.
Og så hvis du tænker over den måde, din computer slags forsøger at
forstå naturligt sprog forarbejdning, det ser på ordene og
forsøger at forstå relationerne mellem dem, ikke?
Men så hvis du har kinesisk, og du har nul mellemrum, er det virkelig svært at
finde ud af, hvad er forholdet mellem ord, fordi de ikke har nogen
ord i første.
Så du er nødt til at gøre noget, der hedder segmentering som netop betyder at sætte
mellemrum mellem, hvad vi ville kalde ord på disse sprog.
Mening?
>> Og så vil vi tale om syntaks.
Så bare en lille smule om naturlig sprogbehandling.
Det kommer til at være lige et overblik.
Så i dag, dybest set, hvad jeg ønsker at gøre er at give jer en lille smule af en
indersiden af ​​hvilke muligheder er at du kan gøre med beregningsmæssige
lingvistik.
Og så kan du se hvad du mener er cool blandt disse ting.
Og måske du kan tænke på et projekt og kommer tale med mig.
Og jeg kan give dig råd om, hvordan man gennemfører det.
>> Så syntaks kommer til at være en lille smule om Graph Søg og maskine
translation.
Jeg bare at give et eksempel på, hvordan du kan for eksempel oversætte
noget fra portugisisk til engelsk.
Lyder godt?
>> Så det første, klassificeringen problem.
Jeg vil sige, at denne del af seminaret kommer til at være den mest udfordrende
man bare fordi der kommer at være nogle kodning.
Men det kommer til at være Python.
Jeg kender jer ikke kender Python, så Jeg skal bare til at forklare den høje
niveau, hvad jeg laver.
Og du behøver ikke at virkelig pleje for meget om syntaksen, fordi det er
noget du fyre kan lære.
OK?
Lyder godt.
>> Så hvad er den klassifikation problemet?
Så du får nogle tekster til en sang, og du ønsker at gætte
hvem synger den.
Og det kan være til nogen form andre problemer.
Så det kan, for eksempel, har du en præsidentkampagne og du har en
tale, og du ønsker at finde ud, hvis det var, for eksempel,
Obama eller Mitt Romney.
Eller du kan have en masse e-mails og du ønsker at finde ud af, om de er
spam eller ej.
Så det er bare at klassificere nogle data baseret på de ord
at du har der.
>> Så for at gøre det, du er nødt til at foretage nogle antagelser.
Så en masse om datalingvistik gør antagelser,
normalt intelligente forudsætninger, således at du kan få gode resultater.
Forsøger at skabe en model for det.
Og så prøve det og se om det virker, hvis det giver dig god præcision.
Og hvis det gør, så du forsøge at forbedre den.
Hvis det ikke sker, er du ligesom, OK, måske jeg bør gøre en anden antagelse.
>> Så den antagelse, at vi kommer til at gøre er, at en kunstner som regel synger
om et emne flere gange, og måske bruger ord flere gange bare
fordi de er vant til det.
Du kan bare tænke på din ven.
Jeg er sikker på jer alle har venner der siger, at deres underskrift sætning,
bogstaveligt for hver enkelt sætning -
ligesom nogle bestemt ord eller en bestemt sætning, som de siger for
hver eneste sætning.
>> Og hvad du kan sige er, at hvis du ser en sætning, der har en signatur
sætning, kan du gætte på, at nok din ven er den
der siger det, ikke?
Så du gøre denne antagelse, og derefter det er hvordan du opretter en model.
>> Det eksempel, som jeg har tænkt mig at give, er på hvordan Lady Gaga, for eksempel folk
siger, at hun bruger "baby" for alle hendes nummer et sange.
Og faktisk er det en video, der viser hende at sige ordet "baby" for
forskellige sange.
>> [VIDEOAFSPILNING]
>> - (Sang) Baby.
Baby.
Babe.
Baby.
>> [END VIDEOAFSPILNING-
>> LUCAS FREITAS: Så der er, tror jeg, 40 sange her, hvor hun siger
Ordet "baby". Så du kan stort set gætte at hvis du ser en sang, der har
ordet "baby," der er nogle høje sandsynlighed for, at det er Lady Gaga.
Men lad os prøve at udvikle denne yderligere, mere formelt.
>> Så disse er tekster til sange af Lady Gaga og Katy Perry.
Så du ser på Lady Gaga, kan du se de har en masse begivenheder af "baby", en
masser af forekomster af "måde." Og så Katy Perry har en masse forekomster af
"Den," en masse forekomster af "ild".
>> Så dybest set, hvad vi ønsker at gøre, er, at du får en lyrisk.
Lad os sige, at du får en sangtekst for en sang, der er "baby" bare "baby". Hvis
du bare få ordet "baby", og det er alle de data, du har fra
Lady Gaga og Katy Perry, som ville du gætte er den person
der synger den sang?
Lady Gaga eller Katy Perry?
Lady Gaga, right?
Fordi hun er den eneste, der siger "Baby". Det lyder dumt, ikke?
OK, det er virkelig nemt.
Jeg er bare at kigge på de to sange og Selvfølgelig, hun er den eneste, der har
"Baby".
>> Men hvad nu hvis du har en masse ord?
Hvis du har et virkeligt lyrik, noget lignende, "baby, jeg bare
gik for at se en [? CFT?]
foredrag, "eller noget lignende, og så er du faktisk nødt til at regne ud -
på grundlag af alle disse ord -
hvem er kunstneren, der sandsynligvis sang denne sang?
Så lad os prøve at udvikle dette lidt længere.
>> OK, så bygger kun på de data, vi fik, ser det ud til, at Gaga er sandsynligvis
sangeren.
Men hvordan kan vi skrive dette mere formelt?
Og der kommer til at være lidt bit af statistikker.
Så hvis du fare vild, bare prøve at forstå konceptet.
Det betyder ikke noget, hvis du forstår ligningerne udmærket.
Dette er alle kommer til at være online.
>> Så dybest set, hvad jeg beregne den sandsynlighed for, at denne sang er ved
Lady Gaga eftersom -
så denne bar betyder da -
Jeg så ordet "baby". Giver det mening?
Så jeg forsøger at beregne at sandsynlighed.
>> Så der er denne sætning kaldes Bayes teorem, der siger, at den
sandsynligheden for et givet B, er det sandsynlighed for B givet A, gange
sandsynligheden for A over sandsynligheden B. Dette er en lang ligning.
Men hvad du nødt til at forstå fra det er, at dette er hvad jeg ønsker at
beregne, right?
Så sandsynligheden for, at den sang er ved Lady Gaga, da jeg så ordet
"Baby".
>> Og nu, hvad jeg får, er den sandsynligheden for, at ordet "baby" givet
at jeg har Lady Gaga.
Og hvad er det dybest set?
Hvad det betyder er, hvad er det sandsynligheden for at se ordet "baby"
i Gaga lyrics?
Hvis jeg ønsker at beregne, at der i en meget enkel måde, er det kun antallet af
gange ser jeg "baby" over det samlede antal af ord i Gaga sangtekster, right?
Hvad er den frekvens, som jeg ser at ord i Gagas arbejde?
Mening?
>> Det andet led er sandsynlighed for Gaga.
Hvad betyder det?
Det betyder dybest set, hvad der er den sandsynligheden for at klassificere
nogle sangtekster som Gaga?
Og det er lidt underligt, men lad os tænke på et eksempel.
Så lad os sige, at sandsynligheden for have "baby" i en sang er den samme
for Gaga og Britney Spears.
Men Britney Spears har to gange flere sange end Lady Gaga.
Så hvis nogen bare tilfældigt giver dig sangtekster af "baby", den første ting du
se på, er, hvad er sandsynligheden for have "baby" i en Gaga sang, "baby"
i en Britney sang?
Og det er det samme.
>> Så den anden ting, som du kan se, er, godt, hvad er sandsynligheden for
denne lyriske ved selv at være en Gaga lyrik, og hvad er sandsynligheden for
være en Britney lyrik?
Så da Britney har så mange flere lyrics end Gaga, ville du sikkert
sige, godt, det er nok en Britney lyrik.
Så det er derfor vi har denne betegne lige her.
Sandsynligheden for Gaga.
Giver mening?
Gør det?
OK.
>> Og den sidste er bare sandsynligheden af "baby", som ikke
virkelig betyder så meget.
Men det er sandsynligheden for se "baby" på engelsk.
Vi plejer ligeglade med, at meget om dette begreb.
Giver det mening?
Så sandsynligheden for Gaga er kaldet forudgående sandsynlighed
af klassen Gaga.
Fordi det bare betyder, at hvad der er den sandsynligheden for at få denne klasse -
som er Gaga -
bare i almindelighed, kun uden betingelser.
>> Og så når jeg har sandsynligheden for Gaga givet "baby", kalder vi det plus
teary en sandsynlighed, fordi det er sandsynligheden for at have
Gaga givet nogle beviser.
Så jeg giver dig beviserne at jeg så ordet baby og
sangen mening?
OK.
>> Så hvis jeg beregnet, at for hver af sangene til Lady Gaga,
hvad der ville være -
tilsyneladende kan jeg ikke flytte denne.
Sandsynligheden for Gaga vil være noget lignende, 2 over 24 gange 1/2,
over 2 over 53 år.
Det betyder ikke noget, hvis du ved, hvad disse tal kommer fra.
Men det er bare et tal, der vil at være mere end 0, right?
>> Og så når jeg gør Katy Perry, den sandsynligheden for "baby" givet Katy er
allerede 0, right?
Fordi der er ingen "baby" i Katy Perry.
Så det bliver 0, og Gaga vinder, hvilket betyder, at Gaga er
sandsynligvis sangeren.
Giver det mening?
OK.
>> Så hvis jeg ønsker at gøre dette mere officielle, Jeg kan faktisk gøre en model
efter flere ord.
Så lad os sige, at jeg har noget lignende, "baby, jeg er
i brand, "eller noget.
Så det har flere ord.
Og i dette tilfælde, 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, right?
Så det bliver vanskeligere, ikke?
Fordi det lader til, at du næsten har en uafgjort mellem de to.
>> Så hvad du skal gøre er at påtage sig uafhængighed blandt ordene.
Så dybest set, hvad det betyder, er, at Jeg er bare at beregne, hvad der er
sandsynlighed for at se "baby," hvad er sandsynligheden for at se "jeg", og
"AM", og "on" og "brand" alt særskilt.
Så jeg multiplicere dem alle.
Og jeg ser, hvad er sandsynligheden for at se hele sætningen.
Mening?
>> Så dybest set, hvis jeg har bare ét ord, hvad jeg ønsker at finde er arg max,
hvilket betyder, hvad der er den klasse, der er giver mig den højeste sandsynlighed?
Så hvad er den klasse, der giver mig den højeste sandsynlighed for
sandsynlighed for klassen givet ord.
Så i dette tilfælde Gaga givet "baby". Eller Katy givet "baby". Mening?
>> Og bare fra Bayes, at ligning, jeg viste,
vi skaber denne fraktion.
Det eneste er, at du kan se, at sandsynligheden for ordet givet
klasse skifter afhængigt af den klasse, right?
Antallet af "baby" s, som jeg har i Gaga er forskellig fra Katy.
Sandsynligheden for klassen også ændringer, fordi det er kun antallet
sange hver af dem har.
>> Men sandsynligheden for selve ordet vil være den samme for alle
kunstnere, right?
Så sandsynligheden for ordet bare, hvad er sandsynligheden for
se, at ord i Engelsk?
Så det er det samme for dem alle.
Så da dette er konstant, kan vi bare droppe dette og ikke bekymre sig om det.
Så dette vil være faktisk ligning, vi leder efter.
>> Og hvis jeg har flere ord, jeg er stadig vil have forudgående
sandsynlighed her.
Det eneste er, at jeg multiplicere sandsynligheden for
alle de andre ord.
Så jeg multiplicere dem alle.
Mening?
Det ser underligt, men dybest set betyder, beregne inden for klassen, og
multiplicerer med sandsynligheden for hver af de ord, at være i denne klasse.
>> Og du ved, at sandsynligheden for en ord givet en klasse kommer til at være den
antal gange, du ser dette ord i denne klasse, divideret med antallet af
ord, du har i det klasse i almindelighed.
Mening?
Det er bare hvordan "baby" var 2 over antallet af ord, der
Jeg havde i teksterne.
Så bare frekvensen.
>> Men der er én ting.
Husk, hvordan jeg var der viser, at sandsynlighed for "baby" bliver lyrics
fra Katy Perry var 0 bare fordi Katy Perry havde ikke "baby" på alle?
Men det lyder lidt barsk at bare blot sige, at teksten ikke kan være fra
en kunstner, blot fordi de ikke har dette ord navnlig på ethvert tidspunkt.
>> Så man kan bare sige, godt, hvis du ikke har dette ord, vil jeg
give dig en lavere sandsynlighed, men jeg er bare ikke kommer til at
give dig 0 højre væk.
Fordi måske var det noget lignende, "Ild, brand, brand, brand", som er
helt Katy Perry.
Og så "baby", og det går lige til 0 højre væk, fordi der var en
"Baby".
>> Så dybest set, hvad vi gør, er noget kaldet Laplace udjævning.
Og det betyder bare, at jeg giver vis sandsynlighed selv til ordene
der ikke eksisterer.
Så hvad jeg gør, er, at når jeg er beregning af denne, jeg altid tilføje 1 til
tælleren.
Så selv om ordet ikke findes, i dette tilfælde, hvis det er 0, jeg er stadig
beregning af denne som en over samlede antal ord.
Ellers får jeg hvor mange ord Jeg har og jeg tilføje 1.
Så jeg regner for begge sager.
Mening?
>> Så lad os nu gøre nogle kodning.
Jeg har tænkt mig at have at gøre det temmelig hurtigt, men det er bare vigtigt, at du
fyre forstå begreberne.
Så hvad vi forsøger at gøre er præcis gennemføre denne
ting, som jeg lige har sagt -
Jeg vil have dig til at sætte teksterne fra Lady Gaga og Katy Perry.
Og programmet vil være i stand til at sige, hvis disse nye tekster er fra Gaga
eller Katy Perry.
Mening?
OK.
>> Så jeg har dette program, jeg har tænkt mig at kalde classify.py.
Så dette er Python.
Det er et nyt programmeringssprog.
Det er meget ens i nogle måder at C og PHP.
Det er ens, fordi hvis du ønsker at lære Python efter at vide C, er det
virkelig ikke så meget af en udfordring bare fordi Python er meget lettere
end C, først og fremmest.
Og en masse ting er allerede implementeret for dig.
Så bare hvordan som PHP har funktioner, sortere en liste, eller tilføje noget
til et array, eller bla, bla, bla.
Python har alle dem så godt.
>> Så jeg vil bare forklare hurtigt hvordan vi kunne gøre klassificeringen
problem her.
Så lad os sige, at i denne sag, har jeg sangtekster fra Gaga og Katy Perry.
Den måde, at jeg har disse tekster er, at det første ord i teksterne er
navnet på kunstneren, og resten er teksterne.
Så lad os sige, at jeg har denne liste i som den første er lyrics by Gaga.
Så her er jeg på rette spor.
Og den næste er Katy, og det har også teksterne.
>> Så dette er, hvordan du erklærer en variabel i Python.
Du behøver ikke at give datatype.
Du skal bare skrive "lyrics" slags gerne i PHP.
Mening?
>> Så hvad er de ting, jeg er nødt til at beregn for at være i stand til at beregne
sandsynligheder?
Jeg er nødt til at beregne "Priors" i hver af de forskellige
klasser, jeg har.
Jeg er nødt til at beregne de "posteriors," eller temmelig meget sandsynlighederne for
hver af de forskellige ord, Jeg kan have for hver kunstner.
Så inden Gaga, for eksempel, jeg har tænkt mig at have en liste over, hvor mange gange jeg ser
hvert af ordene.
Mening?
>> Og endelig, jeg bare vil have en liste kaldet "ord", der er bare
at have, hvor mange ord, jeg har for hver kunstner.
Så for Gaga, for eksempel, når jeg ser til teksterne, jeg havde, tror jeg, 24
ord i alt.
Så denne liste er bare at have Gaga 24, og Katy et andet nummer.
Mening?
OK.
>> Så nu, faktisk, lad os gå til kodning.
Så i Python, kan du faktisk returnere en masse forskellige
ting fra en funktion.
Så jeg har tænkt mig at oprette denne funktion kaldet "betinget", som går
til at returnere alle disse ting, det "Priors," de "sandsynligheder", og
"ord". Så "betinget", og det er kommer til at kalde til "lyrics".
>> Så nu jeg vil have dig til rent faktisk at skrive denne funktion.
Så den måde, at jeg kan skrive dette funktion er jeg lige har defineret dette
fungere med "def." Så jeg gjorde "def betinget ", og det tager
"Lyrics". Og hvad det kommer til at gøre er først og fremmest, jeg har mine priors
at jeg ønsker at beregne.
>> Så den måde, at jeg kan gøre dette, er at skabe en ordbog i Python, hvilket
er stort set det samme som en hash bord, eller det er ligesom en iterativ
array i PHP.
Dette er, hvordan jeg erklære en ordbog.
Og dybest set, hvad dette betyder, at priors af Gaga er 0,5, for eksempel, hvis
50% af teksterne er fra Gaga, 50% er fra Katy.
Mening?
Så jeg er nødt til at regne ud, hvordan at beregne Priors.
>> De næste dem, jeg skal gøre, også, er sandsynligheder og ordene.
Så sandsynligheden for Gaga er listen alle de sandsynligheder, at jeg
har for hver af de ord for Gaga.
Så hvis jeg går til sandsynligheder for Gaga "Baby", for eksempel, det vil give mig
noget lignende 2 over 24 i dette tilfælde.
Mening?
Så jeg går til "sandsynligheder", gå til "Gaga" spand, der har en liste over alle
Gaga ord, så jeg går til "baby" og jeg ser sandsynlighed.
>> Og endelig har jeg det "Ordene" ordbog.
Så her, "sandsynligheder". Og så "ord". Så hvis jeg gør "ord", "Gaga",
hvad der kommer til at ske, er, at det er kommer til at give mig 24 og sagde, at jeg
har 24 ord i sangtekster fra Gaga.
Giver mening?
Så her, "ord" er lig dah-dah-dah.
OK
>> Så hvad jeg har tænkt mig at gøre, er at jeg har tænkt mig at gentage over hver af teksterne, så
hver af de strenge, der Jeg har på listen.
Og jeg har tænkt mig at beregne disse ting for hver af kandidaterne.
Giver mening?
Så jeg er nødt til at gøre en for-løkke.
>> Så i Python, hvad jeg kan gøre, er "for linje i tekster. "Det samme som en
"For hver" erklæring i PHP.
Husk, hvordan, hvis det var PHP kunne jeg sige "hver sangtekster som for
line ". Giver mening?
Så jeg tager hver af linjerne i denne tilfælde denne streng og den næste
snor så for hver af linjerne, hvad jeg vil gøre, er først, jeg har tænkt mig at
opdele denne linje i en liste over ord adskilt af mellemrum.
>> Så den kølige ting om Python, er, at du kan bare Google som "hvordan kan jeg
opdele en streng i ord? ", Og det er vil fortælle dig, hvordan du gør det.
Og måden at gøre det på, det er bare "linjen = Line.split () ", og det er dybest set
kommer til at give dig en liste med hvert af ordene her.
Giver mening?
Så nu, at jeg gjorde, at jeg ønsker at vide der er sanger i den sang.
Og for at gøre, at jeg bare nødt til at få første element i array, right?
Så jeg kan bare sige, at jeg "sanger = Linje (0) "Giver det mening?
>> Og så hvad jeg skal gøre, er først alt, jeg kommer til at opdatere, hvor mange
ord, jeg har under "Gaga". så jeg er bare kommer til at beregne, hvor mange ord, jeg
har på denne liste, ikke?
Fordi det er, hvor mange ord, jeg har i teksterne, og jeg vil bare
føje det til "Gaga" array.
Giver det mening?
Må ikke fokusere for meget på syntaks.
Tænk mere om begreberne.
Det er den vigtigste del.
OK.
>> Så hvad jeg kan gøre, det er, hvis "Gaga" er allerede på denne liste, så ", hvis sanger i
ord ", hvilket betyder, at jeg allerede har ord af Gaga.
Jeg ønsker blot at tilføje ekstra ord til det.
Så hvad jeg gør, er "ord (Singer) + = LEN (linje) - 1 ".
Og så kan jeg bare gøre det længden af ​​linien.
Så hvor mange elementer, som jeg har i array'et.
Og jeg er nødt til at gøre minus 1 bare fordi det første element i array er bare
en sanger og de er ikke lyrics.
Giver mening?
OK.
>> "Else", betyder det, at jeg vil faktisk Indsæt Gaga på listen.
Så jeg bare gør "ord (sanger) = LEN (linje) - 1, "undskyld.
Så den eneste forskel mellem de to linjer er, at denne ene, ikke det gør
eksisterer endnu, så jeg er bare initialisere den.
Denne ene jeg faktisk tilføjer.
OK.
Så dette var at tilføje til ord.
>> Nu vil jeg tilføje til de tidligere straffet.
Så hvordan kan jeg beregne Priors?
De tidligere straffet kan beregnes ved hvor mange gange.
Så hvor mange gange du kan se, at sangeren blandt alle de sangere, som du
har, ikke sandt?
Så for Gaga og Katy Perry, i dette tilfælde, ser jeg Gaga
gang, Katy Perry gang.
>> Så dybest set tidligere straffet for Gaga og for Katy Perry ville
bare være én, right?
Du skal bare hvor mange gange Jeg ser kunstneren.
Så det er meget let at beregne.
Jeg kan bare noget lignende som gerne ", hvis sanger i Priors, "jeg bare
at tilføje 1 til deres kasse Priors.
Så "priors (synge)" + = 1 "og derefter" andet " Jeg har tænkt mig at gøre "priors (Singer)
= 1 ". Giver mening?
>> Så hvis det ikke findes, jeg bare sætte som 1, ellers er jeg bare tilføje 1.
OK, så nu alt, hvad jeg har tilbage at gøre også tilføje hver af de ord til
sandsynligheder.
Så jeg er nødt til at tælle, hvor mange gange Jeg ser hvert af ordene.
Så jeg bare nødt til at gøre en anden for loop i linjen.
>> Så første ting, jeg har tænkt mig at gøre, er kontrollere, om sangeren har allerede en
sandsynligheder array.
Så jeg kontrollere, hvis sangeren ikke har en sandsynlighederne array, jeg er bare
kommer til at initialisere for dem.
Det er ikke engang et array, undskyld, Det er en ordbog.
Så sandsynligheden for sanger går at være en åben ordbog, så jeg
bare initialisering en ordbog til det.
OK?
>> Og nu kan jeg rent faktisk gør en for-løkke til at beregne hver af ordene '
sandsynligheder.
OK.
Så hvad jeg kan gøre, er en for-løkke.
Så jeg vil bare gentage over array.
Så den måde, at jeg kan gøre det i Python er "for jeg i området." Fra 1.
fordi jeg ønsker at starte i anden element, fordi den første er den
sanger navn.
Så fra en op til længden af ​​linien.
Og når jeg spænder det faktisk gå fra som her fra 1 til len af
line minus 1.
Så det allerede gør, at ting at gøre n minus 1 til arrays, som er meget
praktisk.
Giver mening?
>> Så for hver af disse, hvad jeg har tænkt mig at gøre er, ligesom i den anden,
Jeg har tænkt mig at kontrollere, om ord i denne position i linjen er allerede
sandsynligheder.
Og så som jeg sagde her, sandsynligheder ord, som i jeg sætte
"sandsynligheder (Singer)".
Så navnet på sangeren.
Så hvis det er allerede i "Probabilit (sanger)", betyder det, at jeg
ønsker at tilføje 1 til det, så jeg har tænkt mig at gøre "sandsynligheder (Singer)", og
ord kaldes "linje (i)".
Jeg har tænkt mig at tilføje 1 og "andet" Jeg er bare kommer til at initialisere den til 1..
"Line (i)".
Giver mening?
>> Så jeg beregnet alle arrays.
Så nu alt, hvad jeg er nødt til at gøre for denne ene er bare "tilbage Priors,
sandsynligheder og ord. "Lad os se om der er nogen, OK.
Det synes alt fungerer hidtil.
Så det giver mening?
På en eller anden måde?
OK.
Så nu har jeg alle sandsynligheder.
Så nu er det eneste, jeg har tilbage er bare for at få at ting at
beregner produktet af alle sandsynligheder når jeg får teksterne.
>> Så lad os sige, at jeg vil nu kalder denne funktion "klassificere ()", og
ting, som funktion tager er bare et argument.
Lad os sige "Baby, jeg er på brand", og det er kommer til at regne ud, hvad er det
sandsynlighed for, at dette er Gaga?
Hvad er sandsynligheden at dette er Katie?
Lyder godt?
Så jeg bare nødt til at skabe en ny funktion kaldet "klassificere ()" og
det kommer til at tage nogle sangtekster så godt.
Og udover teksterne jeg også nødt til at sende priors den
sandsynligheder og ordene.
Så jeg har tænkt mig at sende lyrics, Priors, sandsynligheder, ord.
>> Så dette er ved at tage sangtekster, Priors, sandsynligheder, ord.
Så hvad gør den?
Det dybest set kommer til at gå igennem alle de mulige kandidater, som du
har som sanger.
Og hvor er de kandidater?
De er I tidligere straffet, ikke?
Så jeg har alle dem der.
Så jeg har tænkt mig at have en ordbog af alle mulige kandidater.
Og så for hver kandidat i Priors, så det betyder, at det kommer til at
være Gaga, Katie, hvis jeg havde mere det ville være mere.
Jeg har tænkt mig at begynde at beregne denne sandsynlighed.
Sandsynligheden som vi så i PowerPoint er de kendte gange
produkt i hver af de andre sandsynligheder.
>> Så jeg kan gøre det samme her.
Jeg kan bare gøre sandsynligheden er i første omgang bare forudgående.
Så Priors af kandidaten.
Right?
Og nu er jeg nødt til at gentage over alle de ord, som jeg har i teksterne til at være
stand til at tilføje sandsynligheden for hver af dem, okay?
Så "for ord i teksterne" hvad jeg har tænkt mig at gøre, er, hvis ordet er i
"sandsynligheder (kandidat)", som betyder, at det er et ord, at
kandidat har i deres tekster -
for eksempel, "baby" for Gaga -
hvad jeg har tænkt mig at gøre, er, at den sandsynlighed vil blive multipliceret
med 1 plus sandsynlighederne for kandidat til det ord.
Og det hedder "ordet".
Dette divideret med antallet af ord , jeg har for denne kandidat.
Det samlede antal ord, som jeg har for sangeren, som jeg kigger på.
>> "Else". det betyder, at det er et nyt ord så det ville være som for eksempel
"Ild" for Lady Gaga.
Så jeg vil bare gøre 1 i løbet "Ord (kandidat)."
Så jeg ønsker ikke at sætte dette udtryk her.
>> Så det kommer til at være stort set kopiere og indsætte dette.
Men jeg har tænkt mig at slette denne del.
Så det er bare at være 1 over.
Lyder godt?
Og nu i slutningen, jeg bare at udskrive navnet på den kandidat og
sandsynligheden for, at du har på have S på deres tekster.
Giver mening?
Og jeg faktisk ikke engang brug for denne ordbog.
Giver mening?
>> Så lad os se, om det rent faktisk virker.
Så hvis jeg køre dette, gjorde det ikke.
Vent et sekund.
"Ord (kandidat)", "ord (kandidat)", der er
navnet af matrixen.
OK Så det siger, at der er nogle fejl til kandidat i Priors.
Lad mig bare slappe en lille smule.
OK.
Lad os prøve.
OK.
>> Så det giver Katy Perry har denne sandsynlighed for denne gange 10 til
minus 7, og Gaga har dette gange 10 til minus 6..
Så du kan se det viser, at Gaga har en højere sandsynlighed.
Så "Baby, jeg er på Fire" er sandsynligvis et Gaga sang.
Giver mening?
Så dette er hvad vi gjorde.
>> Denne kode vil blive lagt online, så du fyre kan tjekke det ud.
Måske bruge noget af det, hvis du ønsker at lave et projekt eller noget lignende.
OK.
Det var bare for at vise hvad beregningsmæssige
lingvistik kode ser ud.
Men lad os nu gå til mere højt stuff.
OK.
>> Så de andre problemer, jeg talte om -
segmentering problem er den første af dem.
Så du har her japansk.
Og så skal du se, at der ikke er mellemrum.
Så dette er dybest set betyder, at det er toppen af ​​stolen, right?
Du taler japansk?
Det er toppen af ​​stolen, right?
>> STUDENT: Jeg ved ikke, hvad kanji derovre er.
>> LUCAS FREITAS: Det er [SPEAKING JAPANSKE]
OK.
Så det dybest set betyder stol på toppen.
Så hvis du havde at sætte et mellemrum ville det være her.
Og så har du [? Ueda-san. ?]
Som dybest set betyder Mr. Ueda.
Og du kan se, at "Ueda", og du har en plads og derefter "san". Så du kan se, at
her "UE" er ligesom af sig selv.
Og her har en karakter ved siden af.
>> Så det er ikke ligesom på disse sprog tegn betyder et ord det, så du
bare sætte en masse rum.
Tegn relaterer til hinanden.
Og de kan være sammen som to, tre, et.
Så du faktisk nødt til at skabe en form af måde at sætte disse rum.
>> Og denne ting er, at når du får data fra de asiatiske sprog,
alt kommer unsegmented.
Fordi ingen, der skriver japansk eller kinesisk skriver med mellemrum.
Når du skriver kinesisk, Japanske du bare skrive alt
uden mellemrum.
Det er ikke engang mening at sætte mellemrum.
Så når du får data fra nogle Østasiatiske sprog, hvis du vil
faktisk gøre noget med det du er nødt til at segment først.
>> Tænk på at gøre eksemplet med teksterne uden mellemrum.
Så det eneste tekster, som du har vil være sætninger, right?
Adskilt af punktummer.
Men derefter har bare den sætning vil ikke rigtig hjælpe på at give oplysninger
af hvem disse tekster er forbi.
Right?
Så du bør sætter mellemrum først.
Så hvordan kan du gøre det?
>> Så kommer ideen om et sprog model, som er noget virkelig
vigtigt for beregningsmæssige lingvistik.
Så en sprogmodel er dybest set en tabel af sandsynligheder, der viser
først og fremmest hvad er sandsynligheden for at have ordet i et sprog?
Så viser hvor ofte et ord.
Og derefter også viser forholdet mellem ord i en sætning.
>> Så den vigtigste idé er, at hvis en fremmed kom til dig og sagde en sætning til
dig, hvad er sandsynligheden for, at for eksempel, "det er min søster [? GTF"?]
var den sætning, at personen sagde?
Så selvfølgelig nogle sætninger er mere udbredt end andre.
For eksempel, "god morgen" eller "god nat, "eller" hey der, "er meget mere
fælles end de fleste sætninger at vi har en engelsk.
Så hvorfor er de sætninger hyppigere?
>> Først og fremmest, er det fordi du har ord, der er mere hyppige.
Så for eksempel, hvis du siger, at hunden er store, og hunden er gigantisk, du
normalt sikkert høre hunden er stor oftere, fordi "store" er mere
hyppige i engelsk end "gigantisk". Så en af
ting er ordet frekvens.
>> Den anden ting, som er virkelig vigtigt er bare
Rækkefølgen af ​​ordene.
Så det er almindeligt at sige "katten er inde i boksen. ", men du normalt ikke
se i "Boksen inde er katten." så du se, at der er en vis betydning
i den rækkefølge af ord.
Du kan ikke bare sige, at de to sætninger har samme sandsynlighed
bare fordi de har de samme ord.
Du rent faktisk har til at pleje om orden samt.
Mening?
>> Så hvad gør vi?
Så hvad jeg kan prøve at få dig?
Jeg forsøger at få dig, hvad vi kalde n-gram-modeller.
Så n-gram modeller dybest set antage at der for hvert ord,
du har i en sætning.
Det er sandsynligheden for at få at ord er der ikke kun afhænger af den
frekvens af dette ord i sproget, men også på de ord,
er omkring det.
>> Så for eksempel, som regel, når du ser noget lignende på eller ved du
sandsynligvis kommer til at se en navneord efter det, ikke?
Fordi når du har en præposition normalt tager det et navneord efter den.
Eller hvis du har et verbum, der er transitive du normalt kommer til at
har et substantiv sætning.
Så det kommer til at have et substantiv sted omkring den.
>> Så dybest set, hvad det gør, er, at det mener, sandsynligheden for at have
ord ved siden af ​​hinanden, når du beregne den
sandsynlighed for en sætning.
Og det er hvad et sprog Modellen er dybest set.
Bare at sige, hvad der er sandsynligheden have en specifik
sætning på et sprog?
Så hvorfor er det nyttigt, dybest set?
Og først og fremmest, hvad er en n-gram-modellen, så?
>> Så en n-gram model betyder, at hvert ord afhænger
næste N minus 1 ord.
Så dybest set betyder det, at hvis jeg ser, for eksempel ved CS50 TF når
Jeg beregne sandsynligheden for sætningen, vil du være ligesom "den
sandsynligheden for at ordet "den" gange sandsynligheden for have "
CS50 "gange sandsynligheden for at have "The CS50 TF". Så dybest set, jeg tæller
alle muligheder for at strække det.
>> Og så som regel, når du gør dette, som i et projekt, sætte dig på N for at være
en lav værdi.
Så normalt har bigrams eller trigrammer.
Så du bare tælle to ord, et gruppe af to ord, eller tre ord,
bare for problemer med ydeevnen.
Og også fordi måske, hvis du har noget som "Den CS50 TF". Når du
har "TF," det er meget vigtigt, at "CS50" er ved siden af ​​det, ikke?
Disse to ting er som regel ved siden af ​​hinanden.
>> Hvis du tænker på "TF", er det sandsynligvis nødt til, hvad
klasse er det TF'ing efter.
Også "den" er virkelig vigtigt for CS50 TF.
Men hvis du har noget som "The CS50 TF gik til klassen og gav deres
eleverne nogle slik. "" Candy "og" de " har nogen relation rigtig, vel?
De er så langt fra hinanden, at Det er faktisk ligegyldigt, hvad
ord, du har.
>> Så ved at gøre en bigram eller en trigram, det betyder blot, at du begrænser
dig selv til nogle ord der er omkring.
Mening?
Så når du ønsker at gøre segmentering, dybest set, hvad du ønsker at gøre, er at se
hvad er alle de mulige måder, du kan segmentere sætningen.
>> Sådan, at du se, hvad der er den sandsynligheden for hver af disse sætninger
findes i sproget?
Så hvad du skal gøre er ligesom, ja, lad mig prøve at sætte en plads her.
Så du sætte en plads der og du kan se, hvad der er
sandsynlighed for denne sætning?
Så er du ligesom, OK, måske det var ikke så god.
Så jeg sætte en plads der og et rum der, og du beregne
sandsynlighed nu, og du kan se, at Det er en højere sandsynlighed.
>> Så dette er en algoritme kaldet TANGO segmentering algoritme, som er
faktisk noget, der ville være virkelig cool for et projekt, der
dybest set tager unsegmented tekst, som kan være japansk eller kinesisk eller måske
Engelsk uden mellemrum og forsøger at sætte mellemrum mellem ord og det gør
at ved hjælp af en sprogmodel og forsøger at se, hvad der er den højeste
sandsynlighed du kan få.
OK.
Så dette er segmentering.
>> Nu syntaks.
Så er syntaks, der anvendes til så mange ting lige nu.
Så for Graph Søg for Siri for stort set enhver form for naturlig
sprogbehandling du har.
Så hvad er det vigtige ting om syntaks?
Så sætninger i almindelighed har hvad vi kalder vælgere.
Hvilket er lidt ligesom grupper af ord der har en funktion i sætningen.
Og de kan ikke rigtig være fra hinanden.
>> Så hvis jeg siger, for eksempel, "Lauren elsker Milo. "Jeg ved, at" Lauren "er en
konstituerende og derefter "elsker Milo "er også en anden.
Fordi du ikke kan sige som "Lauren Milo vild "for at have samme mening.
Det kommer ikke til at have den samme betydning.
Eller jeg kan ikke sige som "Milo Lauren elsker. "Ikke alt har samme
hvilket betyder at gøre det.
>> Så de to mere vigtige ting om syntaks er leksikale typer, som er
dybest set den funktion, du have for ord af sig selv.
Så du er nødt til at vide, at "Lauren" og "Milo" er navneord.
"Love" er et verbum.
Og den anden vigtige ting er at de er phrasal typer.
Så du ved, at "elsker Milo" er faktisk en verbal sætning.
Så når jeg siger "Lauren," Jeg ved, at Lauren laver noget.
Hvad laver hun?
Hun kærlig Milo.
Så det er et hele.
Men dens komponenter er et navneord og et udsagnsord.
Men sammen, de gør et verbum sætning.
>> Så hvad kan vi egentlig gøre med datalingvistik?
Så hvis jeg har noget for eksempel "venner af Allison." Jeg se, hvis jeg bare
gjorde en syntaktisk træ jeg ville vide, at "Venner" er en substantiv sætning er det en
navneord og derefter "af Allison" er en prepositional sætning hvor "af" er
en proposition og "Allison" er et navneord.
Hvad jeg kunne gøre, er at lære min computer at når jeg har en substantiv sætning én og
derefter en prepositional sætning.
Så i dette tilfælde, "venner" og derefter "af Milo "Jeg ved, at det betyder, at
NP2, den anden ejer NP1.
>> Så jeg kan skabe en form for relation, en slags funktion for det.
Så hver gang jeg ser denne struktur, som matcher nøjagtigt med "venner af
Allison, "Jeg ved, at Allison ejer venner.
Så venner er noget at Allison har.
Giver mening?
Så det er dybest set, hvad Graf Søg gør.
Det skaber bare regler for en masse ting.
Så "venner af Allison", "mine venners der bor i Cambridge "," mine venner
der går til Harvard. "Det skaber regler for alle disse ting.
>> Nu maskinoversættelse.
Så maskinoversættelse er også noget statistisk.
Og faktisk, hvis du bliver involveret i datalingvistik, en masse af
dine ting bliver statistik.
Så som jeg lavede eksemplet med en masse sandsynligheder, at jeg var
beregning, og derefter får du dette meget lille antal, der er den endelige
sandsynlighed, og det er hvad giver dig svaret.
Maskinoversættelse bruger også en statistisk model.
Og hvis du ønsker at tænke på maskine oversættelse på den nemmest mulige
måde, hvad du kan tænke er bare oversætte ord for ord, right?
>> Når du lærer et sprog for første gang, det er normalt, hvad
du gør, ikke?
Hvis du vil kan du oversætte en sætning på dit sprog til sprog
du lærer, som regel først, du oversætte hvert af ordene
enkeltvis, og så skal du prøve at sætte ord på plads.
>> Så hvis jeg ønskede at oversætte dette, [TALE PORTUGISISKE]
som betyder "den hvide kat løb væk." Hvis jeg ønskede at oversætte det fra
Portugisisk til engelsk, hvad jeg kunne gøre, er det første, jeg bare
oversætte ord for ord.
Så "o" er "," "gato", "kat", "Branco", "hvid", og derefter "fugio" er
"Kørte derfra."
>> Så har jeg alle de ord her, men de er ikke i orden.
Det er ligesom "katten hvide løb væk" som er grammatisk ukorrekt.
Så så jeg kan få et andet trin, som kommer til at finde den ideelle
position for hvert af ordene.
Så jeg ved, at jeg rent faktisk ønsker at have "Hvid kat" i stedet for "kat hvid." Så
hvad jeg kan gøre, er, den mest naive metode ville være at skabe alle de
mulige permutationer af ord af positioner.
Og så se, hvor man har højeste sandsynlighed ifølge
til mit sprog model.
Og så når jeg finder den, der har den højeste sandsynlighed, hvilket er
sandsynligvis "den hvide kat løb væk," det er min oversættelse.
>> Og det er en enkel måde at forklare hvordan en masse af maskinoversættelse
algoritmer virker.
Giver det mening?
Dette er også noget virkelig spændende at du fyre måske kan udforske for en
afgangsprojekt, ja?
>> STUDENT: Jamen, du sagde, at det var den naive måde, så hvad er
den ikke-naive måde?
>> LUCAS FREITAS: Den ikke-naive måde?
OK.
Så den første ting, der er dårligt om denne metode er, at jeg bare oversat
ord, ord for ord.
Men nogle gange har du ord, kan have flere oversættelser.
Jeg har tænkt mig at prøve at tænke af noget.
For eksempel, "manga" på portugisisk dåse enten være "mangle" eller "hylster". Så
når du forsøger at oversætte ord af ord, kan det være at give dig
noget, der ikke giver nogen mening.
>> Så du rent faktisk ønsker at du ser på alle de mulige oversættelser af
ord og se, først og fremmest, hvad er rækkefølgen.
Vi talte om permutating de ting?
Hvis du vil se alle de mulige ordrer, og vælge den ene med den højeste
sandsynlighed?
Man kan også vælge alle mulige oversættelser for hvert
ord og derefter se -
kombineret med permutationer -
hvor man har den højeste sandsynlighed.
>> Plus, kan du også se på ikke kun ord, men sætninger.
så du kan analysere forholdet mellem ord og derefter få en
bedre oversættelse.
Også noget andet, så dette semester Jeg er faktisk gør forskning i
Kinesisk-engelsk maskinoversættelse, så oversætte fra
Kinesisk til engelsk.
>> Og noget, vi gør, er, udover at bruge en statistisk model, som er lige
se sandsynlighederne for at se nogle position i en sætning, jeg er
faktisk også tilføje nogle syntaks til min model, sagde, åh, hvis jeg ser den slags
af bygning, dette er hvad jeg ønsker at ændre det til, når jeg oversætte.
Så du kan også tilføje nogle slags element i syntaks for at gøre
oversættelse mere effektiv og mere præcis.
OK.
>> Så hvordan kan du komme i gang, hvis du vil til at gøre noget i datamatisk
lingvistik?
>> Først skal du vælge et projekt der involverer sprog.
Så der er så mange derude.
Der er så mange ting, du kan gøre.
Og så kan tænke på en model som du kan bruge.
Normalt det betyder at tænke på antagelser, som ligesom, åh, da jeg var
Ligesom at tænke på teksterne.
Jeg var ligesom, godt, hvis jeg ønsker at finde en der skrev dette, jeg sandsynligvis vil
til at se på de ord, den person, der anvendes og se, hvem der bruger det ord meget ofte.
Så prøv at gøre antagelser og prøv at tænke på modeller.
Og så kan du også søge online for den form for problem, du har,
og det kommer til at foreslå til jer modeller, der måske
modelleret at ting godt.
>> Og også du kan altid maile mig.
me@lfreitas.com.
Og jeg kan bare besvare dine spørgsmål.
Vi kan endda måske mødes, så jeg kan give forslag om, hvordan de
gennemføre dit projekt.
Og jeg mener, hvis du får involveret med datalingvistik, går det
at være stor.
Du kommer til at se, at der er så meget potentiale.
Og industrien ønsker at ansætte du så dårligt på grund af det.
Så jeg håber du fyre nød dette.
Hvis du fyre har nogen spørgsmål, du kan spørge mig efter dette.
Men tak.