Description
Linguistic Matching and Accommodation.
Description
Measure similarity between texts. Offers a variety of processing tools and similarity metrics to facilitate flexible representation of texts and matching. Implements forms of Language Style Matching (Ireland & Pennebaker, 2010) <doi:10.1037/a0020386> and Latent Semantic Analysis (Landauer & Dumais, 1997) <doi:10.1037/0033-295X.104.2.211>.
README.md
lingmatch
An all-in-one R package for the assessment of linguistic matching and/or accommodation.
features
- Input raw text, a document-term matrix (DTM), or LIWC output.
- Apply various weighting functions to a DTM.
- Measure similarity and/or accommodation with various metrics.
- Calculate standard forms of Language Style Matching (LSM) and Latent Semantic Similarity (LSS).
resources
- Documentation and guides: miserman.github.io/lingmatch
- Dictionary repository: osf.io/y6g5b
- Latent semantic space repository: osf.io/489he
- Dictionary builder: miserman.github.io/dictionary_builder
installation
Download R from r-project.org, then install the package from an R console:
Release (version 1.0.7)
install.packages("lingmatch")
Development (version 1.0.8)
# install.packages("remotes")
remotes::install_github("miserman/lingmatch")
And load the package:
library(lingmatch)
examples
Can make a quick comparison between two bits of text; by default this will give the cosine similarity between raw word-count vectors:
lingmatch("First text to look at.", "Text to compare that text with.")
Or, given a vector of texts:
text = c(
"Why, hello there! How are you this evening?",
"I am well, thank you for your inquiry!",
"You are a most good at social interactions person!",
"Why, thank you! You're not all bad yourself!"
)
Process the texts in one step:
# with a dictionary
inquirer_cats = lma_process(text, dict = "inquirer", dir = "~/Dictionaries")
# with a latent semantic space
glove_vectors = lma_process(text, space = "glove", dir = "~/Latent Semantic Spaces")
Or process the texts step by step, then measure similarity between each:
dtm = lma_dtm(text)
dtm_weighted = lma_weight(dtm)
dtm_categorized = lma_termcat(dtm_weighted, lma_dict(1:9))
similarity = lma_simets(dtm_categorized, metric = "canberra")
Or do that within a single function call:
similarity = lingmatch(
text, weight = "frequency", dict = lma_dict(1:9), metric = "canberra"
)$sim
Or, if you want a standard form (as in this example), specify a default:
similarity = lingmatch(text, type = "lsm")$sim