Giter Club home page Giter Club logo

acroname's Introduction

acroname

CRAN Status

Installation

devtools::install_github("vpnagraj/acroname")

Features

  • acronym(): Generate acronym from input string
  • initialism(): Generate initialism from input string
  • mince(): Prepare input string

Usage

Basic example

The minimal usage for creating an acronym:

library(acroname)
set.seed(123)
acronym("super special software package", acronym_length = 5)
#> [1] "SUSIE: SUper SpecIal softwarE package"

And an initialism for the same string:

initialism("super special software package")
#> [1] "SSSP: Super Special Software Package"

The functions can accept input character vectors that either contain the string in a single element or are prepared with one element per word:

acronym(c("super", "special", "software", "package"), acronym_length = 5)
#> [1] "SUSIE: SUper SpecIal softwarE package"

Convert result to tibble

Both acronym() and initialism() include an option to return the result as a tibble object:

acronym("dip him in the river who loves water", acronym_length = 4, to_tibble = TRUE)
#> # A tibble: 1 x 4
#>   formatted                  prefix suffix                 original             
#>   <chr>                      <chr>  <chr>                  <chr>                
#> 1 ROOT: dip him in River wh… ROOT   dip him in River whO … dip him in river who…

Exclude articles

Each function can also be customized to exclude articles in the input string:

initialism("dip him in the river who loves water", to_tibble = TRUE, ignore_articles = TRUE)
#> # A tibble: 1 x 4
#>   formatted                   prefix  suffix               original             
#>   <chr>                       <chr>   <chr>                <chr>                
#> 1 DHIRWLW: Dip Him In River … DHIRWLW Dip Him In River Wh… dip him in river who…

Trigger “bag of words” approach

Using the “bow” option will trigger processing using a “bag of words” method, by which words in the input string are randomly selected. The number of words selected from the input string depends on the value passed to the “bow_prop” argument:

acronym("dip him in the river who loves water the fountain contains the cistern overflows", ignore_articles = TRUE, acronym_length = 4, bow = TRUE, bow_prop = 0.75)
#> [1] "INRI: dip loves hIm who water fouNtain River In cistern"

It is possible to generate a series of randomized results by iterating over the function:

library(purrr)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

## write a function to wrap acronym() in order to map
mapwrap <- function(i, input) {
  res <- 
    acronym(input = input, ignore_articles = TRUE, acronym_length =  4, bow = TRUE, bow_prop = 0.75, to_tibble = TRUE) %>%
    mutate(iteration = i, .before = "formatted")
  return(res)
}

iterations <- paste0("iteration_",1:5)
map_df(iterations, mapwrap, "dip him in the river who loves water the fountain contains the cistern overflows")
#> # A tibble: 5 x 5
#>   iteration  formatted              prefix suffix            original           
#>   <chr>      <chr>                  <chr>  <chr>             <chr>              
#> 1 iteration… CORA: dip Cistern whO… CORA   dip Cistern whO … dip cistern who ri…
#> 2 iteration… HOWE: Him who cistern… HOWE   Him who cistern … him who cistern ov…
#> 3 iteration… CROW: loves dip who C… CROW   loves dip who Co… loves dip who cont…
#> 4 iteration… INST: IN him containS… INST   IN him containS … in him contains ci…
#> 5 iteration… DIOR: cistern who DIp… DIOR   cistern who DIp … cistern who dip ov…

Use a custom dictionary

By default the acronym() engine will search for acronyms that match words in the “en_US” dictionary provided by the hunspell package. However, the dictionary of words to match can be customized via the “dictionary” argument. The example below uses a dictionary based on names from the dplyr package, prepared with a little help from the mince() function:

## get names (first or last) from the dplyr::starwars data
## see mince() in action
mince(starwars$name)
#> $words
#>   [1] "Luke"        "Skywalker"   "C3PO"        "R2D2"        "Darth"      
#>   [6] "Vader"       "Leia"        "Organa"      "Owen"        "Lars"       
#>  [11] "Beru"        "Whitesun"    "lars"        "R5D4"        "Biggs"      
#>  [16] "Darklighter" "ObiWan"      "Kenobi"      "Anakin"      "Skywalker"  
#>  [21] "Wilhuff"     "Tarkin"      "Chewbacca"   "Han"         "Solo"       
#>  [26] "Greedo"      "Jabba"       "Desilijic"   "Tiure"       "Wedge"      
#>  [31] "Antilles"    "Jek"         "Tono"        "Porkins"     "Yoda"       
#>  [36] "Palpatine"   "Boba"        "Fett"        "IG88"        "Bossk"      
#>  [41] "Lando"       "Calrissian"  "Lobot"       "Ackbar"      "Mon"        
#>  [46] "Mothma"      "Arvel"       "Crynyd"      "Wicket"      "Systri"     
#>  [51] "Warrick"     "Nien"        "Nunb"        "QuiGon"      "Jinn"       
#>  [56] "Nute"        "Gunray"      "Finis"       "Valorum"     "Jar"        
#>  [61] "Jar"         "Binks"       "Roos"        "Tarpals"     "Rugor"      
#>  [66] "Nass"        "Ric"         "Olié"        "Watto"       "Sebulba"    
#>  [71] "Quarsh"      "Panaka"      "Shmi"        "Skywalker"   "Darth"      
#>  [76] "Maul"        "Bib"         "Fortuna"     "Ayla"        "Secura"     
#>  [81] "Dud"         "Bolt"        "Gasgano"     "Ben"         "Quadinaros" 
#>  [86] "Mace"        "Windu"       "KiAdiMundi"  "Kit"         "Fisto"      
#>  [91] "Eeth"        "Koth"        "Adi"         "Gallia"      "Saesee"     
#>  [96] "Tiin"        "Yarael"      "Poof"        "Plo"         "Koon"       
#> [101] "Mas"         "Amedda"      "Gregar"      "Typho"       "Cordé"      
#> [106] "Cliegg"      "Lars"        "Poggle"      "Lesser"      "Luminara"   
#> [111] "Unduli"      "Barriss"     "Offee"       "Dormé"       "Dooku"      
#> [116] "Bail"        "Prestor"     "Organa"      "Jango"       "Fett"       
#> [121] "Zam"         "Wesell"      "Dexter"      "Jettster"    "Lama"       
#> [126] "Su"          "Taun"        "We"          "Jocasta"     "Nu"         
#> [131] "Ratts"       "Tyerell"     "R4P17"       "Wat"         "Tambor"     
#> [136] "San"         "Hill"        "Shaak"       "Ti"          "Grievous"   
#> [141] "Tarfful"     "Raymus"      "Antilles"    "Sly"         "Moore"      
#> [146] "Tion"        "Medon"       "Finn"        "Rey"         "Poe"        
#> [151] "Dameron"     "BB8"         "Captain"     "Phasma"      "Padmé"      
#> [156] "Amidala"    
#> 
#> $collapsed
#> [1] "LukeSkywalkerC3POR2D2DarthVaderLeiaOrganaOwenLarsBeruWhitesunlarsR5D4BiggsDarklighterObiWanKenobiAnakinSkywalkerWilhuffTarkinChewbaccaHanSoloGreedoJabbaDesilijicTiureWedgeAntillesJekTonoPorkinsYodaPalpatineBobaFettIG88BosskLandoCalrissianLobotAckbarMonMothmaArvelCrynydWicketSystriWarrickNienNunbQuiGonJinnNuteGunrayFinisValorumJarJarBinksRoosTarpalsRugorNassRicOliéWattoSebulbaQuarshPanakaShmiSkywalkerDarthMaulBibFortunaAylaSecuraDudBoltGasganoBenQuadinarosMaceWinduKiAdiMundiKitFistoEethKothAdiGalliaSaeseeTiinYaraelPoofPloKoonMasAmeddaGregarTyphoCordéClieggLarsPoggleLesserLuminaraUnduliBarrissOffeeDorméDookuBailPrestorOrganaJangoFettZamWesellDexterJettsterLamaSuTaunWeJocastaNuRattsTyerellR4P17WatTamborSanHillShaakTiGrievousTarffulRaymusAntillesSlyMooreTionMedonFinnReyPoeDameronBB8CaptainPhasmaPadméAmidala"
#> 
#> $words_len
#>   [1]  4  9  4  4  5  5  4  6  4  4  4  8  4  4  5 11  6  6  6  9  7  6  9  3  4
#>  [26]  6  5  9  5  5  8  3  4  7  4  9  4  4  4  5  5 10  5  6  3  6  5  6  6  6
#>  [51]  7  4  4  6  4  4  6  5  7  3  3  5  4  7  5  4  3  4  5  7  6  6  4  9  5
#>  [76]  4  3  7  4  6  3  4  7  3 10  4  5 10  3  5  4  4  3  6  6  4  6  4  3  4
#> [101]  3  6  6  5  5  6  4  6  6  8  6  7  5  5  5  4  7  6  5  4  3  6  6  8  4
#> [126]  2  4  2  7  2  5  7  5  3  6  3  4  5  2  8  7  6  8  3  5  4  5  4  3  3
#> [151]  7  3  7  6  5  7
#> 
#> $first_chars
#>   [1] "L" "S" "C" "R" "D" "V" "L" "O" "O" "L" "B" "W" "l" "R" "B" "D" "O" "K"
#>  [19] "A" "S" "W" "T" "C" "H" "S" "G" "J" "D" "T" "W" "A" "J" "T" "P" "Y" "P"
#>  [37] "B" "F" "I" "B" "L" "C" "L" "A" "M" "M" "A" "C" "W" "S" "W" "N" "N" "Q"
#>  [55] "J" "N" "G" "F" "V" "J" "J" "B" "R" "T" "R" "N" "R" "O" "W" "S" "Q" "P"
#>  [73] "S" "S" "D" "M" "B" "F" "A" "S" "D" "B" "G" "B" "Q" "M" "W" "K" "K" "F"
#>  [91] "E" "K" "A" "G" "S" "T" "Y" "P" "P" "K" "M" "A" "G" "T" "C" "C" "L" "P"
#> [109] "L" "L" "U" "B" "O" "D" "D" "B" "P" "O" "J" "F" "Z" "W" "D" "J" "L" "S"
#> [127] "T" "W" "J" "N" "R" "T" "R" "W" "T" "S" "H" "S" "T" "G" "T" "R" "A" "S"
#> [145] "M" "T" "M" "F" "R" "P" "D" "B" "C" "P" "P" "A"

sw_names <- mince(starwars$name)$words

acronym("latest and greatest data analysis package", dictionary = sw_names, acronym_length = 4)
#> [1] "LARS: Latest And gReatest data analySis package"

Configure timeout option

Depending on the characters in the input string, the size of dictionary, and the acronym length it may not be possible to generate an acronym that matches a word in the dictionary. The acronym() function will try for 60 seconds by default, but this duration can be customized via the “timeout” argument:

## the longer the desired acronym, the longer it will likely to take to find a match
## setting the timeout to 2 seconds here
acronym("latest and greatest data analysis package", dictionary = sw_names, acronym_length = 10, timeout = 2)
#> Unable to find viable acronym in 'timeout' specified (2 seconds) ...

Related

Contributing

Please use GitHub issues to report bugs or request features. Contributions will be reviewed via pull requests.

acroname's People

Contributors

vpnagraj avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.