Identifying sign languages from video: SLANG-3k

As I haven’t yet created a permanent place to hold the dataset I collected for my most recent class project, I’m hanging it here for now.  SLANG-3k is an uncurated corpus of 3000 clips of 15 seconds each of people signing in American Sign Language, British Sign Language, and German Sign Language, intended as a public benchmark dataset for sign language identification in the wild.  Using 5 frames, I was able to achieve accuracies bounded around 0.66/0.67.  More details can be found in the paper and poster created for CS 231N, Convolutional Neural Networks for Visual Recognition.

Many thanks to everyone who helped with this project — and most especially to the anonymous survey respondents who received only warm fuzzies as compensation for taking the time to help with this early-stage research.

Constraints in Grails

Some experimentation on constraints in Grails 2.4.4 (based on the constraint documentation) leads me to the following conclusions:

  • Use “nullable” instead of “blank”. The documentation says that “blank” is for strings, but Grails 2.4.4 doesn’t seem to pay any attention to that keyword.  Setting “nullable” always works.
  • If the field can be null, you can’t specify other constraints for when it is non-null.  The logic is “null or must conform to set of standards X” is not supported through combinations of nullable and other constraints.  You could get around this with custom validation or even regular expressions (using the constraints ‘validator’ or ‘matches’) if you wanted. (Perhaps there is another way to get around this – if so please share it!)
  • All missingness is the same. All three missingness versions (empty string, null, and a missing parameter) have the same behavior.  This is in contrast to some of the things I had been reading about empty strings in HTML forms being treated differently in Grails from actual null values, so I wonder if this is one of the pieces that has changed over time.
  • “Optionals” is no longer supported. Testing suggested this, and it is backed up by this JIRA report.

The chart below gives the specifics as well as the take-aways.

Input for all tests was a String variable.  When the string value “abc” was used, all tests pass.  I excluded all the attempts with “optionals”, because all of those failed and the keyword is no longer supported.

Constraints Test Result
Blank Nullable Size Unique
Not stated Not stated Not stated Not stated “” Invalid
Not stated Not stated Not stated Not stated null Invalid
Not stated Not stated Not stated Not stated missing Invalid
False Not stated Not stated Not stated “” Invalid
False Not stated Not stated Not stated null Invalid
False Not stated Not stated Not stated missing Invalid
True Not stated Not stated Not stated “” Invalid
True Not stated Not stated Not stated null Invalid
True Not stated Not stated Not stated missing Invalid
Not stated True Not stated Not stated “” OK
Not stated True Not stated Not stated null OK
Not stated True Not stated Not stated missing OK
Not stated False Not stated Not stated “” Invalid
Not stated False Not stated Not stated null Invalid
Not stated True 3..3 Not stated “” Invalid
Not stated True 3..3 Not stated null Invalid
Not stated True Not stated True “” Invalid
Not stated True Not stated True null Invalid

Data types in Grails and MongoDB

In working with Grails and MongoDB, I found myself building out some data type documentation I wasn’t able to find.  For your coding pleasure, please find…

Groovy Type Mongo Type
Integer Int32
Double Double
Long Int64
Float String
Short Int32

Grails is great, but the documentation is limited and the dates/versions of the references matter a lot (it seems Grails has been through many versions and many recommended approaches, not all of which are backwards-compatible).  The above mapping is for Grails 2.4.4 and the mongodb plugin 3.0.2, atop MongoDB 2.6.3.

Inductive-Deductive Loop

Last year I went looking for an “inductive-deductive loop” image (I was trying to convince stone-cold scientific method biologists that it really is okay to start science from observations), but I couldn’t find anything close to the simple diagram I was envisioning.  So, I drew my version on a Post-it note, and I’m sharing it now for posterity and for Google Images.

My talking point here is that scientific inquiry is both inductive and deductive.  Although many disciplines privilege a single type of reasoning, it’s better to integrate both approaches. With a circular view, we are free to enter problems where it’s most straightforward to start them — exploring the data, taking hypotheses or patterns to their conclusions, or considering how known theories might manifest — knowing that we’ll do a complete investigation in the end.  We trace as far as we can through the loop, verifying our interpretations through multiple methods.  Sometimes we cycle around the loop multiple times.

For instance, if you’re heavy on data and light on abstractions, you might start by trying to find patterns in the observations.  Once you identify some patterns, you formalize those patterns into a theory.  Given theory, you can generate some hypotheses based on the implications of that theory.  You then collect more data to disprove those hypotheses.  The new observations might suggest new patterns, starting another round of the loop.  You don’t limit yourself to collecting data only to disprove hypotheses, though — you also look at data that hasn’t been deliberately collected under the premises required by your hypotheses.  By looking at all the observations, you can start to investigate when the premises themselves hold.

The inductive-deductive loop is the structure of scientific inquiry.

Theory produces Hypothesis produces Observations produces Pattern produces Theory; the first three are deductive; the last three are inductive

Introduction to ASL Theoretical Linguistics

One of my favorite parts of studying linguistics was being presented with data and being asked to find the system within it. Language data, with linguistic theory’s insistence that everything must make sense, make the most excellent data and logic puzzles.

Screenshot of ASL Linguistics Problems

As part of preparing for a spatial grammar-heavy meeting of the Montgomery Blair High School Linguistics Club, I developed three American Sign Language morphology problems.  These problems illustrate interesting properties of American Sign Language that spoken languages do not have (non-manual markers, spatial agreement, and a rich temporal inflection system based in manual phonology).

Try your hand at doing the problems if you’re interested in any of the following:

  • What it means to do theoretical linguistics (or the sort of logic skills that linguists develop)
  • Unique properties of spatial languages
  • Basic American Sign Language linguistics
  • Similarities between American Sign Language and other world languages

Unlike most materials on ASL linguistics, the problems don’t assume that readers are fluent in American Sign Language or in linguistic theory — I developed these problems because I couldn’t find any resources aimed at an intelligent lay non-Deaf audience.  The problems deliberately walk users through the steps to answer a question, whereas most theoretical linguistics problem sets jump straight to the questions at hand and assume existing familiarity with linguistic features not observed in English.

Once the club and I meet, I’ll post the answer sheet as well.