It-freak Skrevet 26. februar 2014 Del Skrevet 26. februar 2014 Hei jeg skal lage et program som finner flertydige ord med ulike verdier inni en en liste med tupler og lagre dem i en dictionary, ordene skal ikke lagre det samme verdien 2 eller flere ganger. Hvordan tester jeg om verdien finnes allerede, og hvis ikke tilfører verdien i dictionaryen, og ellers bare overse og lete videre? Til nå adder den alle verdiene den finner til ordet. f.eks når den ser ordet "The" og den står med verdien "NN" også finner den ordet "The" igjen med veridne "NN" enda en gang, da vil jeg ikke at den skal lagre andre gangen den finner "NN" koden min så langt: flertydig_dict = {} for word in brown_news: if word[0] in flertydig_dict: flertydig_dict[word[0]].append(word[1]) else: flertydig_dict[word[0]] =[word[1]] print flertydig_dict Lenke til kommentar
Lycantrophe Skrevet 26. februar 2014 Del Skrevet 26. februar 2014 (endret) Så lenge du har en dict kan du skrive uansett. Siden nøklene er unike vil det kun være en instans i dicten. Så du kan bare assigne og si deg ferdig. dict = { word[ 0 ]: word[ 1 ] for word in brown_news } Såfremt jeg forstår hva du vil. -- edit: dersom du skal lagre alle word[ 1 ] (men kun unike) kan du bruke defaultdict. import collections ambiguous = collections.defaultdict( set ) for word in brown_news: ambiguous[ word[ 0 ] ].add( word[ 1 ] ) Endret 26. februar 2014 av Lycantrophe Lenke til kommentar
It-freak Skrevet 26. februar 2014 Forfatter Del Skrevet 26. februar 2014 (endret) dette er oppgaven: Hvor mange ord er flertydige, dvs at de forekommer med minst to forskjellige ord- klassetagger? Her vil vi kun ha distinkte tagger, dvs listen ["NP","NN"] i stedet for ["NP","NN","NN","NN","NP nå får jeg : ["NP","NN","NN","NN","NP Endret 26. februar 2014 av It-freak Lenke til kommentar
Lycantrophe Skrevet 26. februar 2014 Del Skrevet 26. februar 2014 Du kan enten sortere og filtrere unike eller bruke koden fra editen min. Lenke til kommentar
It-freak Skrevet 26. februar 2014 Forfatter Del Skrevet 26. februar 2014 hmm nesten, vil den skal finne flere unike verdier som hører til nøkkelverdien, nå finner den også bare 1 unik verdi Lenke til kommentar
Lycantrophe Skrevet 26. februar 2014 Del Skrevet 26. februar 2014 Sikker? Hvordan ser brown_news ut? Hvordan ser output ut? Lenke til kommentar
It-freak Skrevet 26. februar 2014 Forfatter Del Skrevet 26. februar 2014 sånn ser brown_news ut, bare med de 10 første elementene: [('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'), ('an', 'AT'), ('investigation', 'NN'), ('of', 'IN')] vil at outputen skal se noe ut som dette: best ADJ ADV NP V better ADJ ADV V DET close ADV ADJ V N cut V N VN VD even ADV DET ADJ V grant NP N V -hit V VD VN Nlay ADJ V NP VD left VD ADJ N VN nå blir den sånn: , 'Pumpkin': 'NN-TL', 'Weaver': 'NP', 'priced': 'VBN', 'Baltimore': 'NP-TL', 'upwards': 'RB', 'alienated': 'VBN', 'Coach': 'NN-TL', 'ranks': 'NNS', 'Dorenzo': 'NP', 'volumes': 'NNS', 'ideological': 'JJ', 'Marsicano': 'NP', 'Frog-marched': 'VBN', 'Ceil': 'NP'} Lenke til kommentar
Lycantrophe Skrevet 26. februar 2014 Del Skrevet 26. februar 2014 Så vidt jeg kan se er dataene riktig. Om du vil pretty-printe er det et annet problem. for word, classes in ambiguous.iteritems(): print( word, " ".join( classes ) ) Lenke til kommentar
It-freak Skrevet 27. februar 2014 Forfatter Del Skrevet 27. februar 2014 Nå finner den bare verdien til hvert ord uavhengig om det samme ordet alt er lagret hver gang den finner et ord(nøkkel) så skal den sjekke hva verdien er, hvis verdien ikke allerede er funnet, så lagres den, hvis ikke så leter den videre. Ordet "the" forekommer flere ganger, da skal dejn sjekke verdien til "the", hvis den finner ulike verdier ved alle forekomstene, da skal den lagre alle 3 de 3 verdiene ved "the", hvis den finner "NN" "DP" og "NN" igjen, da skal den bare lagre "NN" og "DP. i tillegg så finner den nå ord med kun én verdi, den skal kun finne flertydige ord det jeg sliter med outputen skal ha: 1 nøkkel og minst 2 ulike verdier: left VD ADJ N VN Lenke til kommentar
Lycantrophe Skrevet 27. februar 2014 Del Skrevet 27. februar 2014 Gjør et pass over og hiv ut alle med size == 1. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå