Skip to contents

Uses spaCy to extract morphological features from text. Returns data with Number, Tense, VerbForm, Person, Case, Mood, Aspect, etc.

Usage

extract_morphology(
  tokens,
  features = c("Number", "Tense", "VerbForm", "Person", "Case", "Mood", "Aspect"),
  include_pos = TRUE,
  include_lemma = TRUE,
  model = "en_core_web_sm"
)

Arguments

tokens

A quanteda tokens object or character vector of texts.

features

Character vector of morphological features to extract. Default includes common Universal Dependencies features.

include_pos

Logical; include POS tags (default: TRUE).

include_lemma

Logical; include lemmatized forms (default: TRUE).

model

Character; spaCy model to use (default: "en_core_web_sm").

Value

A data frame with token-level morphological annotations including morph_* columns for each requested feature.

Details

Morphological features follow Universal Dependencies annotation. Common features include:

  • Number: Sing (singular), Plur (plural)

  • Tense: Past, Pres (present), Fut (future)

  • VerbForm: Fin (finite), Inf (infinitive), Part (participle), Ger (gerund)

  • Person: 1, 2, 3 (first, second, third person)

  • Case: Nom (nominative), Acc (accusative), Gen (genitive), Dat (dative)

  • Mood: Ind (indicative), Imp (imperative), Sub (subjunctive)

  • Aspect: Perf (perfective), Imp (imperfective), Prog (progressive)

Examples

if (interactive()) {
  tokens <- quanteda::tokens(TextAnalysisR::SpecialEduTech$abstract[1])
  morphology_data <- extract_morphology(tokens)
  print(morphology_data)
}
#> spaCy initialized with model: en_core_web_sm
#>    doc_id sentence_id token_id          token   pos  tag          lemma
#> 1   text1           1        1          Notes  VERB  VBZ           note
#> 2   text1           1        2           that SCONJ   IN           that
#> 3   text1           1        3            the   DET   DT            the
#> 4   text1           1        4            ALP PROPN  NNP            ALP
#> 5   text1           1        5 minicalculator  NOUN   NN minicalculator
#> 6   text1           1        6        program  NOUN   NN        program
#> 7   text1           1        7            for   ADP   IN            for
#> 8   text1           1        8     elementary   ADJ   JJ     elementary
#> 9   text1           1        9    mathematics  NOUN  NNS     mathematic
#> 10  text1           1       10            has   AUX  VBZ           have
#> 11  text1           1       11         worked  VERB  VBN           work
#> 12  text1           1       12           well   ADV   RB           well
#> 13  text1           1       13             in   ADP   IN             in
#> 14  text1           1       14              a   DET   DT              a
#> 15  text1           1       15       clinical   ADJ   JJ       clinical
#> 16  text1           1       16        setting  NOUN   NN        setting
#> 17  text1           1       17           with   ADP   IN           with
#> 18  text1           1       18       learning  NOUN   NN       learning
#> 19  text1           1       19              - PUNCT HYPH              -
#> 20  text1           1       20       disabled   ADJ   JJ       disabled
#> 21  text1           1       21     youngsters  NOUN  NNS      youngster
#> 22  text1           1       22           with   ADP   IN           with
#> 23  text1           1       23     perceptual   ADJ   JJ     perceptual
#> 24  text1           1       24            and CCONJ   CC            and
#> 25  text1           1       25              /   SYM  SYM              /
#> 26  text1           1       26             or CCONJ   CC             or
#> 27  text1           1       27         memory  NOUN   NN         memory
#> 28  text1           1       28       deficits  NOUN  NNS        deficit
#> 29  text1           1       29            who  PRON   WP            who
#> 30  text1           1       30            can   AUX   MD            can
#> 31  text1           1       31              , PUNCT    ,              ,
#> 32  text1           1       32    nonetheless   ADV   RB    nonetheless
#> 33  text1           1       33              , PUNCT    ,              ,
#> 34  text1           1       34    demonstrate  VERB   VB    demonstrate
#> 35  text1           1       35             an   DET   DT             an
#> 36  text1           1       36  understanding  NOUN   NN  understanding
#> 37  text1           1       37             of   ADP   IN             of
#> 38  text1           1       38          basic   ADJ   JJ          basic
#> 39  text1           1       39           math  NOUN   NN           math
#> 40  text1           1       40       concepts  NOUN  NNS        concept
#> 41  text1           1       41              . PUNCT    .              .
#> 42  text1           2        1       Although SCONJ   IN       although
#> 43  text1           2        2            the   DET   DT            the
#> 44  text1           2        3       approach  NOUN   NN       approach
#> 45  text1           2        4        appears  VERB  VBZ         appear
#> 46  text1           2        5             to  PART   TO             to
#> 47  text1           2        6           have   AUX   VB           have
#> 48  text1           2        7     tremendous   ADJ   JJ     tremendous
#> 49  text1           2        8      potential  NOUN   NN      potential
#> 50  text1           2        9            for   ADP   IN            for
#> 51  text1           2       10       learning  NOUN   NN       learning
#> 52  text1           2       11              - PUNCT HYPH              -
#> 53  text1           2       12       disabled   ADJ   JJ       disabled
#> 54  text1           2       13           math  NOUN   NN           math
#> 55  text1           2       14       students  NOUN  NNS        student
#> 56  text1           2       15     throughout   ADP   IN     throughout
#> 57  text1           2       16            all   DET   DT            all
#> 58  text1           2       17         realms  NOUN  NNS          realm
#> 59  text1           2       18             of   ADP   IN             of
#> 60  text1           2       19      education  NOUN   NN      education
#> 61  text1           2       20              , PUNCT    ,              ,
#> 62  text1           2       21        caution  NOUN   NN        caution
#> 63  text1           2       22             is   AUX  VBZ             be
#> 64  text1           2       23        advised  VERB  VBN         advise
#> 65  text1           2       24           when SCONJ  WRB           when
#> 66  text1           2       25       choosing  VERB  VBG         choose
#>                                                    morph morph_Number
#> 1           Number=Sing|Person=3|Tense=Pres|VerbForm=Fin         Sing
#> 2                                                                <NA>
#> 3                              Definite=Def|PronType=Art         <NA>
#> 4                                            Number=Sing         Sing
#> 5                                            Number=Sing         Sing
#> 6                                            Number=Sing         Sing
#> 7                                                                <NA>
#> 8                                             Degree=Pos         <NA>
#> 9                                            Number=Plur         Plur
#> 10 Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin         Sing
#> 11                  Aspect=Perf|Tense=Past|VerbForm=Part         <NA>
#> 12                                            Degree=Pos         <NA>
#> 13                                                               <NA>
#> 14                             Definite=Ind|PronType=Art         <NA>
#> 15                                            Degree=Pos         <NA>
#> 16                                           Number=Sing         Sing
#> 17                                                               <NA>
#> 18                                           Number=Sing         Sing
#> 19                                        PunctType=Dash         <NA>
#> 20                                            Degree=Pos         <NA>
#> 21                                           Number=Plur         Plur
#> 22                                                               <NA>
#> 23                                            Degree=Pos         <NA>
#> 24                                          ConjType=Cmp         <NA>
#> 25                                                               <NA>
#> 26                                          ConjType=Cmp         <NA>
#> 27                                           Number=Sing         Sing
#> 28                                           Number=Plur         Plur
#> 29                                                               <NA>
#> 30                                          VerbForm=Fin         <NA>
#> 31                                        PunctType=Comm         <NA>
#> 32                                                               <NA>
#> 33                                        PunctType=Comm         <NA>
#> 34                                          VerbForm=Inf         <NA>
#> 35                             Definite=Ind|PronType=Art         <NA>
#> 36                                           Number=Sing         Sing
#> 37                                                               <NA>
#> 38                                            Degree=Pos         <NA>
#> 39                                           Number=Sing         Sing
#> 40                                           Number=Plur         Plur
#> 41                                        PunctType=Peri         <NA>
#> 42                                                               <NA>
#> 43                             Definite=Def|PronType=Art         <NA>
#> 44                                           Number=Sing         Sing
#> 45          Number=Sing|Person=3|Tense=Pres|VerbForm=Fin         Sing
#> 46                                                               <NA>
#> 47                                          VerbForm=Inf         <NA>
#> 48                                            Degree=Pos         <NA>
#> 49                                           Number=Sing         Sing
#> 50                                                               <NA>
#> 51                                           Number=Sing         Sing
#> 52                                        PunctType=Dash         <NA>
#> 53                                            Degree=Pos         <NA>
#> 54                                           Number=Sing         Sing
#> 55                                           Number=Plur         Plur
#> 56                                                               <NA>
#> 57                                                               <NA>
#> 58                                           Number=Plur         Plur
#> 59                                                               <NA>
#> 60                                           Number=Sing         Sing
#> 61                                        PunctType=Comm         <NA>
#> 62                                           Number=Sing         Sing
#> 63 Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin         Sing
#> 64                  Aspect=Perf|Tense=Past|VerbForm=Part         <NA>
#> 65                                                               <NA>
#> 66                  Aspect=Prog|Tense=Pres|VerbForm=Part         <NA>
#>    morph_Tense morph_VerbForm morph_Person morph_Case morph_Mood morph_Aspect
#> 1         Pres            Fin            3       <NA>       <NA>         <NA>
#> 2         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 3         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 4         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 5         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 6         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 7         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 8         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 9         <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 10        Pres            Fin            3       <NA>        Ind         <NA>
#> 11        Past           Part         <NA>       <NA>       <NA>         Perf
#> 12        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 13        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 14        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 15        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 16        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 17        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 18        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 19        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 20        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 21        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 22        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 23        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 24        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 25        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 26        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 27        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 28        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 29        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 30        <NA>            Fin         <NA>       <NA>       <NA>         <NA>
#> 31        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 32        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 33        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 34        <NA>            Inf         <NA>       <NA>       <NA>         <NA>
#> 35        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 36        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 37        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 38        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 39        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 40        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 41        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 42        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 43        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 44        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 45        Pres            Fin            3       <NA>       <NA>         <NA>
#> 46        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 47        <NA>            Inf         <NA>       <NA>       <NA>         <NA>
#> 48        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 49        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 50        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 51        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 52        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 53        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 54        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 55        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 56        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 57        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 58        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 59        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 60        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 61        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 62        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 63        Pres            Fin            3       <NA>        Ind         <NA>
#> 64        Past           Part         <NA>       <NA>       <NA>         Perf
#> 65        <NA>           <NA>         <NA>       <NA>       <NA>         <NA>
#> 66        Pres           Part         <NA>       <NA>       <NA>         Prog
#>  [ reached 'max' / getOption("max.print") -- omitted 28 rows ]