Analyse von Segmentlisten in EMU/R
Jonathan Harrington &
Tina John
Überblick
Sprachdatenbank Segmentliste 2. label() Labeldatei 1. emu.query()
Trackdatei 3. emu.track()
4. dcut()
Vektor, Matrix
ANALYSE
Segmentlisten in R erzeugen
1. queryGUI
4. Segmentliste als Text-Datei speichern (z.B d.txt)
2. Query Tool 3. Segmentliste
> seg = read.segs("d.txt") 5. In R einlesen:
> a = "Phoneme = b | d & Start ( Word,Phoneme ) = 1"
> seg = emu.query("seminar04", "agr*", a) Oder gleich nach 2:
Sprachdatenbank Äußerungswildcard Abfrage
> seg
segment list from database: seminar04
query was: Phoneme = b | d & Start ( Word,Phoneme ) = 1 labels start end utts
d 466.651 566.191 agr:agr002 d 434.403 536.321 agr:agr004 b 447.065 564.620 agr:agr005 b 486.797 637.999 agr:agr006 d 479.687 577.936 agr:agr007
Spalte 1: die Etikettierungen Spalte 2: die Startzeiten
Spalte 3: die Endzeiten
> ende = muend(seg)
Spalte 4: die Äußerungen
Grundfunktionen auf Segmentlisten
label(), mustart(), muend(), utt()
> label (seg)
> labs = label(seg)
> begin = mustart(seg)
> u = utt(seg)
summary()
> summary(seg)
segment list from database: seminar04
query was: Phoneme = b | d & Start ( Word,Phoneme ) = 1 with 48 segments
Segment distribution:
b d 24 24
Zusammenfassung der Bestandteile der Segmentliste
> vec = c("a", "b", "a", "b", "c", "a")
> table(vec) a b c
3 2 1
> labs = label(seg)
table()
> table(labs) labs
b d 24 24 Tabellierung von Vektoren
> summary(seg)
segment list from database: seminar04
query was: Phoneme = b | d & Start ( Word,Phoneme ) = 1 with 48 segments
Segment distribution:
b d 24 24
mudur()
> seg
segment list from database: seminar04
query was: Phoneme = b | d & Start ( Word,Phoneme ) = 1 labels start end utts
d 466.651 566.191 agr:agr002 d 434.403 536.321 agr:agr004 b 447.065 564.620 agr:agr005 b 486.797 637.999 agr:agr006 d 479.687 577.936 agr:agr007
Segmentdauern
> dauern = muend(seg) - mustart(seg)
> dauern = mudur(seg) oder
> dauern[3:5]
117.555 151.202 98.249
Segmentdauern
Struktur eine Segmentliste
Eine Segmentliste kann wie eine Matrix behandelt werden Reihen 10 bis 12:
> seg[10:12,]
Anzahl der Segmente (Reihen)
> nrow(seg)
Der letzte Segment
> n = nrow(seg)
> seg[n,]
Außer dem vierten:
> seg[-n,]
Außer dem vorletzten
> seg[-(n-1),]
> seg[-4,]
Außer dem letzten:
Außer den letzten drei:
> seg[-((n-2):n),]
> seg
> labs = label(seg)
> dauern = mudur(seg)
> labs
"d" "d" "b" "b" "d"
Ein logischer Vektor temp der T ist, für alle Elemente in labs, die "b" sind
> temp = labs == "b"
> temp
FALSE FALSE TRUE TRUE FALSE
Logische Vektoren
Eine Segmentliste der "b" Segmente?
> seg[temp,]
> seg
> labs = label(seg)
> dauern = mudur(seg)
> labs
"d" "d" "b" "b" "d"
Ein logischer Vektor temp der T ist, für alle Elemente in labs, die "b" sind
> temp = labs == "b"
> temp
FALSE FALSE TRUE TRUE FALSE Ein Vektor, bdur, der Dauern der "b" Segmente
> bdur = dauern[temp]
> mean(c(3, 4, 5))
> zahlen = c(3, 4, 5)
> mean(zahlen)
> bdur = dauern[temp]
> dauern = mudur(seg)
> temp = labs == "b"
> labs = label(seg) Durchschnitt:
Die durchschnittliche Dauer der "b" Segmente?
> mean(bdur) oder > mean(dauern[temp])
> max(c(3, 4, 5))
> zahlen = c(3, 4, 5)
> max(zahlen)
Die Höchstdauer der "d" Segmente?
> temp = labs=="d"
> max(dauern[temp])
> dauern = mudur(seg)
> labs = label(seg)
5
Die Etikettierungen der Segmente mit einer Dauer von mehr als 100 ms
> dauern = mudur(seg)
> labs = label(seg)
> temp = dauern > 100
> labs[temp]
[1] "d" "b" "b" "b" "d"
Eine Tabellierung der Etikettierungen die eine Dauer haben, die größer als die Durchschnittsdauer aller Segmente ist.
> dauern = mudur(seg)
> labs = label(seg)
> m = mean(dauern)
> lvec = dauern > m
> table(labs[lvec]) b d
16 6
Zusammenfassung der Funktionen
emu.query()
Etikettierungen davon Startzeit davon
Endzeit davon
Äußerungen davon Dauern davon
mustart() muend() utt()
mudur()
Durchschnitt
Höchstwert, Mindestwert
Tabellierung
Logische Vektoren anwenden Auf eine Segmentliste
seg[temp,]
Auf einen Vektor
labs[temp] dauern[temp]
Segmentliste erzeugen read.segs()
label()
mean() max() min()
Zusammenfassung davon summary()
table()
Anwendung auf numerische Vektoren
Anwendung auf Schriftzeichen Vektoren