Skip to content

Commit

Permalink
fix #48
Browse files Browse the repository at this point in the history
  • Loading branch information
Nils Reiter committed Oct 20, 2017
1 parent a449ac9 commit 4e7daff
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
2 changes: 2 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export(dramaTail)
export(figureStatistics)
export(figurematrix)
export(frequencytable)
export(hamming)
export(installCollectionData)
export(installData)
export(keyness)
Expand All @@ -33,6 +34,7 @@ export(qd.colors)
export(rankFiguresByAppearance)
export(rankFiguresByDramatisPersonae)
export(report)
export(scenicDifference)
export(setup)
export(tfidf)
export(utteranceStatistics)
Expand Down
49 changes: 49 additions & 0 deletions R/personnelExchange.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#' @name personnelExchange
#' @title Measuring Personnel Exchange over Boundaries
#' @aliases hamming
#' @aliases scenicDifference
#' @description There are multiple ways to quantify the number of characters that are
#' exchanged over a scene or act boundary.
#' @param mtext The segmented drama text
#' @param variant For hamming(), variants are "Trilcke" (default), "NormalizedHamming", and "Hamming"
#' @param norm For scenicDifference(), specifies the normalization constant
#' @rdname personnelExchange
#' @export
#' @examples
#' data(rksp.0)
#' dist_trilcke <- hamming(rksp.0$mtext)
#' dist_hamming <- hamming(rksp.0$mtext, variant = "Hamming")
#' dist_nhamming <- hamming(rksp.0$mtext, variant = "NormalizedHamming")
hamming <- function(mtext, variant=c("Trilcke","Hamming","NormalizedHamming")) {
mtext <- na.omit(mtext)
numberOfFigures <- length(unique(mtext$Speaker.figure_surface))
scenes <- length(unique(mtext$begin.Scene))
pm <- configuration(mtext, by="Scene", onlyPresence = TRUE)
vec <- vector(mode="integer",length=scenes-1)
variant <- match.arg(variant)
for (i in 1:(ncol(pm$matrix)-1)) {
allFigures <- switch(variant,
Trilcke=sum(pm$matrix[,i] | pm$matrix[,i+1]),
Hamming=1,
NormalizedHamming=numberOfFigures)
edits <- sum(xor(pm$matrix[,i],pm$matrix[,i+1]))
vec[i] <- edits/allFigures
}
vec
}

#' @rdname personnelExchange
#' @export
scenicDifference <- function(mtext, norm=length(unique(mtext$Speaker.figure_surface))) {
mtext <- na.omit(mtext)
numberOfFigures <- length(unique(mtext$Speaker.figure_surface))
scenes <- length(unique(mtext$begin.Scene))

pm <- configuration(mtext, by="Scene", onlyPresence = TRUE)
vec <- vector(mode="integer",length=scenes-1)
for (i in 1:(ncol(pm$matrix)-1)) {
same <- sum(pm$matrix[,i] & pm$matrix[,i+1])
vec[i] <- numberOfFigures - same
}
vec/norm
}
29 changes: 29 additions & 0 deletions man/personnelExchange.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 4e7daff

Please sign in to comment.