Dela via


BrainScript LU-sekvensläsare

Obs! Om du är nybörjare bör du överväga att använda CNTK textformatläsare. I framtiden kommer LUSequenceReader att bli inaktuell och så småningom inte stödjas.

LUSequenceReader liknar LMSequenceReader. Den används dock för språktolkningsuppgifter som har indata- och utdatasträngar som skiljer sig åt. Ett exempel på hur du konfigurerar LUSequenceReader är följande

reader = [
    readerType = "LUSequenceReader"
    randomize = "none"
    wordContext = 0:1:2
    nbrUttsInEachRecurrentIter = 10
    unk = "<unk>"
    wordMap = "$DataDir$\inputmap.txt"
    file = "$DataDir$\atis.train.IOB"
    labelIn = [
        useWordMap = true
        beginSequence = "BOS"
        endSequence = "EOS"
        token = "$DataDir$\input.txt"
    ]
    labels = [
        beginSequence = "O"
        endSequence = "O"
        token = "$DataDir$\output.txt"
    ]
]

LUSequenceReader har följande parametrar:

  • wordContext: Detta anger ett kontextfönster. Till exempel wordContext=0:1:2 anger ett kontextfönster på 3. I det här kontextfönstret läser den indata vid en aktuell tidpunkt, nästa gång och tiden efter nästa gång. Ett annat exempel är wordContext=0:-1. I sådana fall läser LUSequencReader ett kontextfönster på 2 som består av de aktuella indata och de omedelbara sista indata.

  • randomize: det är antingen None eller Auto. Detta anger läget för om menings randomisering av hela corpus ska utföras.

  • nbrUttsInEachRecurrentIter: Detta anger gränsen för antalet meningar i en minibatch. Läsaren ordnar indatameningar med samma längd, upp till den angivna gränsen, i varje minibatch. För återkommande nätverk återställer tränaren endast dolda lageraktiviteter i början av meningar. Aktiviteter i dolda lager överförs till nästa minibatch om en meningsslut inte nås. Att använda flera meningar i en minibatch kan påskynda träningsprocesserna.

  • unk: Detta anger den symbol som ska representera osedda indatasymboler. Den här symbolen är vanligtvis "".

  • wordMap: Detta anger en fil som mappar indata till andra indata. Detta är användbart om användaren vill mappa vissa indata till okända symboler. Ett exempel på ordmappningsfilen är följande:

    buy buy

    trans <unk>

  • file: filen innehåller indata och dess etiketter. Den sista kolumnen är etiketten och de andra kolumnerna innehåller indata. Nedan visas ett exempel på en träningsfil.

    BOS O

    flight O

    from O

    charlotte B-fromloc.city_name

    to O

    las B-toloc.city_name

    vegas I-toloc.city_name

    EOS O

I exemplet ovan kan du också se två underblock med namnet labelIn och labels.

  • labelIn: avsnittet för indataetikett. Den innehåller följande konfigurationer

    • useWordMaptrue eller false, anger om du använder ordkarta för att mappa indataord till andra indataord.
    • beginSequence – meningsstartsymbolen
    • endSequence – meningsslutsymbolen
    • token – tokenfilen innehåller en lista med indataord. Deras order är inte viktiga.
  • labels: avsnittet för utdataetiketten.

    • token – tokenfilen innehåller en lista över utdataetiketter. Deras ordning är inte viktig så länge token är unika.