Skip to content

alter conversational turn count parameter #8

Description

@ebergelson

right now, get_conversations uses LENAs built in guidelines for what counts as a conversational turn (which can let 5s lapse between the relevant speaker categories segments, e.g. FAN at time 0s and CHN at time 3s would count as a turn). It would be great to be able to adjust this parameter to count conversations with lower lags. This is a little tricky and requires working over gather_segments and incorporated details in the LENA Adex Reference Guide.

(the first pass attempt below needs refinement so it's FAN/MAN -> CHN or
CXN -> FAN/MAN+CHN, and so cryvgfx is correctly accounted for)

Any interest in taking this on @tjmahr ?
Here's a minimal example (the dput was generated from get_segments over an its file, filtered to a specific relevant blkId)

you can see in the longer relevant_lag values in the output [there are probably errors in that code, i'm just trying to show the flavor in the issue]

demo_block_segs <- dput(demo_block_segs)
structure(list(itsId = c("20160511_125444_009456", "20160511_125444_009456", 
"20160511_125444_009456", "20160511_125444_009456", "20160511_125444_009456", 
"20160511_125444_009456", "20160511_125444_009456", "20160511_125444_009456", 
"20160511_125444_009456", "20160511_125444_009456", "20160511_125444_009456", 
"20160511_125444_009456", "20160511_125444_009456", "20160511_125444_009456", 
"20160511_125444_009456", "20160511_125444_009456", "20160511_125444_009456", 
"20160511_125444_009456", "20160511_125444_009456", "20160511_125444_009456"
), recId = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1), blkId = c(64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
64, 64, 64, 64, 64, 64, 64, 64, 64, 64), blkTypeId = c(32, 32, 
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
32, 32), segId = c(989, 990, 991, 992, 993, 994, 995, 996, 997, 
998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008
), blkType = c("Conversation", "Conversation", "Conversation", 
"Conversation", "Conversation", "Conversation", "Conversation", 
"Conversation", "Conversation", "Conversation", "Conversation", 
"Conversation", "Conversation", "Conversation", "Conversation", 
"Conversation", "Conversation", "Conversation", "Conversation", 
"Conversation"), spkr = c("CHN", "SIL", "FAN", "SIL", "SIL", 
"SIL", "FAN", "SIL", "SIL", "CHN", "SIL", "CHN", "SIL", "SIL", 
"SIL", "SIL", "CHN", "SIL", "FAN", "FAN"), startTime = c(1842.47, 
1843.5, 1845.32, 1846.92, 1847.72, 1850.76, 1851.65, 1853.67, 
1854.89, 1856.13, 1856.73, 1858.1, 1858.7, 1859.5, 1860.81, 1862.54, 
1863.54, 1864.19, 1865.47, 1866.71), endTime = c(1843.5, 1845.32, 
1846.92, 1847.72, 1850.76, 1851.65, 1853.67, 1854.89, 1856.13, 
1856.73, 1858.1, 1858.7, 1859.5, 1860.81, 1862.54, 1863.54, 1864.19, 
1865.47, 1866.71, 1867.37), startClockTime = structure(c(1462881502.47, 
1462881503.5, 1462881505.32, 1462881506.92, 1462881507.72, 1462881510.76, 
1462881511.65, 1462881513.67, 1462881514.89, 1462881516.13, 1462881516.73, 
1462881518.1, 1462881518.7, 1462881519.5, 1462881520.81, 1462881522.54, 
1462881523.54, 1462881524.19, 1462881525.47, 1462881526.71), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), endClockTime = structure(c(1462881503.5, 
1462881505.32, 1462881506.92, 1462881507.72, 1462881510.76, 1462881511.65, 
1462881513.67, 1462881514.89, 1462881516.13, 1462881516.73, 1462881518.1, 
1462881518.7, 1462881519.5, 1462881520.81, 1462881522.54, 1462881523.54, 
1462881524.19, 1462881525.47, 1462881526.71, 1462881527.37), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), startClockTimeLocal = structure(c(1462863502.47, 
1462863503.5, 1462863505.32, 1462863506.92, 1462863507.72, 1462863510.76, 
1462863511.65, 1462863513.67, 1462863514.89, 1462863516.13, 1462863516.73, 
1462863518.1, 1462863518.7, 1462863519.5, 1462863520.81, 1462863522.54, 
1462863523.54, 1462863524.19, 1462863525.47, 1462863526.71), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), endClockTimeLocal = structure(c(1462863503.5, 
1462863505.32, 1462863506.92, 1462863507.72, 1462863510.76, 1462863511.65, 
1462863513.67, 1462863514.89, 1462863516.13, 1462863516.73, 1462863518.1, 
1462863518.7, 1462863519.5, 1462863520.81, 1462863522.54, 1462863523.54, 
1462863524.19, 1462863525.47, 1462863526.71, 1462863527.37), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), average_dB = c(-25.96, -64.98, -40.94, 
-50.58, -75.97, -65.56, -31.76, -62.86, -70.25, -22.05, -53.64, 
-32.33, -47.33, -72.13, -61.01, -60.97, -31.2, -74.41, -37.73, 
-36.97), peak_dB = c(-20.45, -47.92, -30.99, -39.03, -61.14, 
-57.3, -13.71, -51.49, -56.03, -16.31, -39.93, -25.91, -38.41, 
-64.25, -48.82, -46.28, -25.73, -64.3, -31.68, -29.45), recordingInfo = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    conversationInfo = c("BC|32|2|0|CIC|TIFI|FI", NA, "RC|32|3|1|CIC|TIFR|FI", 
    NA, NA, NA, "RC|32|3|1|CIC|NT|FH", NA, NA, "RC|32|3|1|CIC|TIFE|FI", 
    NA, "RC|32|3|1|CIC|NT|FH", NA, NA, NA, NA, "RC|32|3|1|CIC|TIFI|FH", 
    NA, "RC|32|4|2|CIC|TIFR|FI", "EC|32|4|2|CIC|NT|FH"), convStatus = c("BC", 
    NA, "RC", NA, NA, NA, "RC", NA, NA, "RC", NA, "RC", NA, NA, 
    NA, NA, "RC", NA, "RC", "EC"), convCount = c(32L, NA, 32L, 
    NA, NA, NA, 32L, NA, NA, 32L, NA, 32L, NA, NA, NA, NA, 32L, 
    NA, 32L, 32L), convTurnCount = c(2L, NA, 3L, NA, NA, NA, 
    3L, NA, NA, 3L, NA, 3L, NA, NA, NA, NA, 3L, NA, 4L, 4L), 
    convResponseCount = c(0L, NA, 1L, NA, NA, NA, 1L, NA, NA, 
    1L, NA, 1L, NA, NA, NA, NA, 1L, NA, 2L, 2L), convType = c("CIC", 
    NA, "CIC", NA, NA, NA, "CIC", NA, NA, "CIC", NA, "CIC", NA, 
    NA, NA, NA, "CIC", NA, "CIC", "CIC"), convTurnType = c("TIFI", 
    NA, "TIFR", NA, NA, NA, "NT", NA, NA, "TIFE", NA, "NT", NA, 
    NA, NA, NA, "TIFI", NA, "TIFR", "NT"), convFloorType = c("FI", 
    NA, "FI", NA, NA, NA, "FH", NA, NA, "FI", NA, "FH", NA, NA, 
    NA, NA, "FH", NA, "FI", "FH"), femaleAdultWordCnt = c(NA, 
    NA, 7.57, NA, NA, NA, 6.61, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, 5.61, 3.25), femaleAdultNonSpeechLen = c(NA, 
    NA, 0, NA, NA, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, 0, 0), femaleAdultUttCnt = c(NA, NA, 0, NA, NA, NA, 
    0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, 0), femaleAdultUttLen = c(NA, 
    NA, 0, NA, NA, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, 0, 0), childUttCnt = c(1, NA, NA, NA, NA, NA, NA, 
    NA, NA, 1, NA, 1, NA, NA, NA, NA, 1, NA, NA, NA), childUttLen = c(0.78, 
    NA, NA, NA, NA, NA, NA, NA, NA, 0.47, NA, 0.6, NA, NA, NA, 
    NA, 0.51, NA, NA, NA), startCry1 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_), endCry1 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), childCryVfxLen = c(0, 
    NA, NA, NA, NA, NA, NA, NA, NA, 0, NA, 0, NA, NA, NA, NA, 
    0, NA, NA, NA), startUtt1 = c("PT1842.47S", NA, NA, NA, NA, 
    NA, NA, NA, NA, "PT1856.13S", NA, "PT1858.38S", NA, NA, NA, 
    NA, "PT1863.54S", NA, NA, NA), endUtt1 = c("PT1843.25S", 
    NA, NA, NA, NA, NA, NA, NA, NA, "PT1856.60S", NA, "PT1858.70S", 
    NA, NA, NA, NA, "PT1864.05S", NA, NA, NA), startVfx1 = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), endVfx1 = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_), maleAdultWordCnt = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), maleAdultNonSpeechLen = c(NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
    ), maleAdultUttCnt = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_), maleAdultUttLen = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_), startUtt2 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), endUtt2 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_), startUtt3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), endUtt3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), startCry2 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), endCry2 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), startCry3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), endCry3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_)), row.names = c(NA, 
-20L), class = c("tbl_df", "tbl", "data.frame"))

demo_block_segs%>% 
  gather(key = "start_end", value = "time", startTime, endTime) %>% 
  arrange(segId) %>% 
  filter(spkr %in% c("CHN","CXN","FAN","MAN") & blkType=="Conversation") %>% 
  dplyr::select(spkr, start_end, time, segId, convTurnCount, blkId) %>% 
  mutate(relevant_lag = ifelse((spkr=="FAN" & (lead(spkr,1) %in% c("CHN"))) |
                                 (spkr=="CHN" & lead(spkr,1) %in% c("FAN")) ,
                               lead(time,1)-time,NA)) %>%
   filter(!is.na(relevant_lag))

Output:

# A tibble: 3 x 7
  spkr  start_end  time segId convTurnCount blkId relevant_lag
  <chr> <chr>     <dbl> <dbl>         <int> <dbl>        <dbl>
1 CHN   endTime   1844.   989             2    64         1.82
2 FAN   endTime   1854.   995             3    64         2.46
3 CHN   endTime   1864.  1005             3    64         1.28

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions