Counts syllables in character vectors. For English, this looks up syllables from the Carnegie Mellon University Pronouncing Dictionary, or guesses the syllables as the number of vowel sequences for words not found. User-supplied syllable word lists are also supported.
We hope to add lookup tables for additional languages in the future.
From CRAN:
install.packages("nsyllable")
From GitHub:
# remotes package required to install nsyllable from Github
::install_github("quanteda/nsyllable") remotes
nsyllable()
counts the syllables in each element of a
character vector, and returns the integer vector of the syllable counts.
If use.names = TRUE
, then the output vector is named. The
default (and currently, only) language implemented is English.
library("nsyllable")
<- c("testing", "Aachen", "supercalifragilisticexpialidocious")
charvec nsyllable(charvec)
## [1] 2 2 14
nsyllable(charvec, use.names = TRUE)
## testing Aachen
## 2 2
## supercalifragilisticexpialidocious
## 14
User-supplied dictionaries can also be used, and these will override
the language
argument. Below, “excellent” is still
(correctly) counted, but not because it looked up the results in the
English dictionary, but because it counted the vowel sequences. This
gets “noel” wrong, however.
nsyllable(c("excellent", "noel", "film"), use.names = TRUE)
## excellent noel film
## 3 2 1
# redefine the syllables as it's pronounced in parts of Ireland
<- c("film" = 2L)
mydict # looks up "excellent" and does the vowel count
nsyllable(c("excellent", "noel", "film"), syllable_dictionary = mydict, use.names = TRUE)
## excellent noel film
## 3 1 2
To not use the English dictionary and count only vowel sequences, set
syllable_dictionary
to NULL
. This will likely
to be a good approximation for many Western languages.
nsyllable(c("Dies", "ist", "eine", "Demonstration"), syllable_dictionary = NULL,
use.names = TRUE)
## Dies ist eine Demonstration
## 1 1 2 4