Skip to content

NamSor API v2 R SDK - classify personal names accurately by gender, country of origin, or ethnicity.

Notifications You must be signed in to change notification settings

namsor/namsor-r-sdk2

Repository files navigation

R API client for namsor

NOTE : this SDK will still work but is no longer maintained. Please check one of the alternative SDKs : Java, Python or Golang.

NamSor API v2 : enpoints to process personal names (gender, cultural origin or ethnicity) in all alphabets or languages. Use GET methods for small tests, but prefer POST methods for higher throughput (batch processing of up to 100 names at a time). Need something you can't find here? We have many more features coming soon. Let us know, we'll do our best to add it!

Overview

This API client was generated by the OpenAPI Generator project. By using the OpenAPI spec from a remote server, you can easily generate an API client.

  • API version: 2.0.10
  • Package version: 2.1.0
  • Build package: org.openapitools.codegen.languages.RClientCodegen For more information, please visit http://www.namsor.com/

Installation

Prerequisites

Install the dependencies

install.packages("jsonlite")
install.packages("httr")
install.packages("base64enc")

Build the package

git clone https://github.com/namsor/namsor-r-sdk2
cd namsor-r-sdk2
R CMD build .
R CMD check namsor_2.1.0.tar.gz
R CMD INSTALL namsor_2.1.0.tar.gz

Install the package

install.packages("namsor")

To install directly from Github, use devtools:

install.packages("devtools")
library(devtools)
install_github("namsor/namsor-r-sdk2")

Usage

library(namsor)

var.first.name <- 'John' # character | 
var.last.name <- 'Smith' # character | 
var.country.iso2 <- 'US' # character | 

#Infer the likely gender of a name, given a local context (ISO2 country code).
api.instance <- PersonalApi$new()
# Configure API key authorization: api_key 
api.instance$apiClient$apiKeys['X-API-KEY'] <- '83ad28e3b3f92de1494181624864bec6';
result <- api.instance$GenderGeo(var.first.name, var.last.name, var.country.iso2)
dput(result)
print(result)

Usage to process a CSV file

#prepare workspace
if(!'devtools' %in% installed.packages()){
  install.packages(devtools)
}

if(!'readr' %in% installed.packages()){
  install.packages("readr")
}

if(!'namsor' %in% installed.packages()){
  install_github("namsor/namsor-r-sdk2")
}

#call packages
library(devtools)
library(namsor)
library(readr)

#call api
httr::set_config(httr::config(ssl_verifypeer = 0L))
api.instance <- PersonalApi$new()
api.instance$apiClient$apiKeys['X-API-KEY'] <- '83ad28e3b3f92de1494181624864bec6';

#call function
extractor <- function(names){
  
### Function calls api to assign gender by attributes ###
  
  #Input:
  
  #names - data.frame with 4 columns:
  # 1. id(char)
  # 2.first name(char)
  # 3. second name(char)
  # 4. country(char)
  
  
  #Output:
  #names - data.frame with 5 columns:
  # 1. id(char)
  # 2.first name(char)
  # 3. second name(char)
  # 4. country(char)
  # 5. gender(char)
  


## SPLIT TO LIST
names_list <- split(names, 
                    factor(rep(seq(ceiling(nrow(names)/100)), 
                               each = 100)[1:nrow(names)]))

## ADD ID
names_list <- lapply(names_list, function(x){
  data.frame('new_id' = seq(nrow(x)), 
             'id' = x[, 1],
             'first_name' = x[, 2], 
             'last_name' = x[, 3], 
             'country' = x[, 4])
})

#create r_gender
r_gender <- lapply(names_list, function(x){
  apply(x, 1, function(y){PersonalNameGeoIn$new(as.character(y[1]),y[3], y[4])})
})
#combine
r_gender <- lapply(r_gender, function(x){c(x)})
#create var gender
var_gender <- lapply(r_gender, function(x){
  BatchPersonalNameGeoIn$new(personalNames = x)})
#call api
api.instance <- PersonalApi$new()
api.instance$apiClient$apiKeys['X-API-KEY'] <- '83ad28e3b3f92de1494181624864bec6';
#get result
result_gender <- lapply(var_gender,
                        function(x){
                          api.instance$GenderFullGeoBatch(
                            batch.personal.name.geo.in=x)})
#extract gender
gender <- lapply(result_gender, function(x){lapply(x$personalNames, 
                                                   function(y){y$likelyGender})})
  
#add gender
names$gender <- unlist(gender)

#return
return(names)
}

#load small data
df1 <- read.csv('example2_csv.csv', stringsAsFactors = FALSE)

#convert to char
df1[, 1] <- sapply(df1[, 1], as.character)

#call function
df1_with_names <- extractor(df1)

#load big data
df2 <- data.frame(read_delim("example1_pipe_input.txt", 
                             "|", escape_double = FALSE, trim_ws = TRUE, 
                             col_names = FALSE))
#all char
str(df2)

#call function
df2_with_names <- extractor(df2)

Documentation for API Endpoints

All URIs are relative to https://v2.namsor.com/NamSorAPIv2

Class Method HTTP request Description
AdminApi AddCredits GET /api2/json/addCredits/{apiKey}/{usageCredits}/{userMessage} Add usage credits to an API Key.
AdminApi Anonymize GET /api2/json/anonymize/{source}/{anonymized} Activate/deactivate anonymization for a source.
AdminApi ApiStatus GET /api2/json/apiStatus Prints the current status of the classifiers.
AdminApi ApiUsage GET /api2/json/apiUsage Print current API usage.
AdminApi ApiUsageHistory GET /api2/json/apiUsageHistory Print historical API usage.
AdminApi ApiUsageHistoryAggregate GET /api2/json/apiUsageHistoryAggregate Print historical API usage (in an aggregated view, by service, by day/hour/min).
AdminApi AvailablePlans GET /api2/json/availablePlans List all available plans in the default currency (usd).
AdminApi AvailablePlans1 GET /api2/json/availablePlans/{token} List all available plans in the user's preferred currency.
AdminApi AvailableServices GET /api2/json/apiServices List of API services and usage cost in Units (default is 1=ONE Unit).
AdminApi BillingCurrencies GET /api2/json/billingCurrencies List possible currency options for billing (USD, EUR, GBP, ...)
AdminApi BillingHistory GET /api2/json/billingHistory/{token} Read the history billing information (invoices paid via Stripe or manually).
AdminApi BillingInfo GET /api2/json/billingInfo/{token} Read the billing information (company name, address, phone, vat ID)
AdminApi Charge POST /api2/json/charge Create a Stripe Customer, based on a payment card token (from secure StripeJS) and email.
AdminApi CorporateKey GET /api2/json/corporateKey/{apiKey}/{corporate} Setting an API Key to a corporate status.
AdminApi DebugLevel GET /api2/json/debugLevel/{logger}/{level} Update debug level for a classifier
AdminApi Flush GET /api2/json/flush Flush counters.
AdminApi InvalidateCache GET /api2/json/invalidateCache Invalidate system caches.
AdminApi Learnable GET /api2/json/learnable/{source}/{learnable} Activate/deactivate learning from a source.
AdminApi NamsorCounter GET /api2/json/namsorCounter Get the overall API counter
AdminApi PaymentInfo GET /api2/json/paymentInfo/{token} Get the Stripe payment information associated with the current google auth session token.
AdminApi ProcureKey GET /api2/json/procureKey/{token} Procure an API Key (sent via Email), based on an auth token. Keep your API Key secret.
AdminApi RedeployUI GET /api2/json/redeployUI Redeploy UI from current dev branch.
AdminApi RedeployUI1 GET /api2/json/redeployUI/{live} Redeploy UI from current dev branch.
AdminApi RemoveUserAccount GET /api2/json/removeUserAccount/{token} Remove the user account.
AdminApi RemoveUserAccountOnBehalf GET /api2/json/removeUserAccountOnBehalf/{apiKey} Remove (on behalf) a user account.
AdminApi Shutdown GET /api2/json/shutdown Stop learning and shutdown system.
AdminApi SoftwareVersion GET /api2/json/softwareVersion Get the current software version
AdminApi SourceStats GET /api2/json/sourceStats/{source} Print basic source statistics.
AdminApi Stats GET /api2/json/stats Print basic system statistics.
AdminApi StripeConnect GET /api2/json/stripeConnect Connects a Stripe Account.
AdminApi SubscribePlan GET /api2/json/subscribePlan/{planName}/{token} Subscribe to a give API plan, using the user's preferred or default currency.
AdminApi SubscribePlanOnBehalf GET /api2/json/subscribePlanOnBehalf/{planName}/{apiKey} Subscribe to a give API plan, using the user's preferred or default currency (admin only).
AdminApi TaxonomyClasses GET /api2/json/taxonomyClasses/{classifierName} Print the taxonomy classes valid for the given classifier.
AdminApi UpdateBillingInfo POST /api2/json/updateBillingInfo/{token} Sets or update the billing information (company name, address, phone, vat ID)
AdminApi UpdateLimit GET /api2/json/updateLimit/{usageLimit}/{hardOrSoft}/{token} Modifies the hard/soft limit on the API plan's overages (default is 0$ soft limit).
AdminApi UpdatePaymentDefault GET /api2/json/updatePaymentDefault/{defautSourceId}/{token} Update the default Stripe card associated with the current google auth session token.
AdminApi UserInfo GET /api2/json/userInfo/{token} Get the user profile associated with the current google auth session token.
AdminApi VerifyEmail GET /api2/json/verifyEmail/{emailToken} Verifies an email, based on token sent to that email
AdminApi VerifyRemoveEmail GET /api2/json/verifyRemoveEmail/{emailToken} Verifies an email, based on token sent to that email
AdminApi Vet GET /api2/json/vetting/{source}/{vetted} Vetting of a source.
ChineseApi ChineseNameCandidates GET /api2/json/chineseNameCandidates/{chineseSurnameLatin}/{chineseGivenNameLatin} Identify Chinese name candidates, based on the romanized name ex. Wang Xiaoming
ChineseApi ChineseNameCandidatesBatch POST /api2/json/chineseNameCandidatesBatch Identify Chinese name candidates, based on the romanized name (firstName = chineseGivenName; lastName=chineseSurname), ex. Wang Xiaoming
ChineseApi ChineseNameCandidatesGenderBatch POST /api2/json/chineseNameCandidatesGenderBatch Identify Chinese name candidates, based on the romanized name (firstName = chineseGivenName; lastName=chineseSurname) ex. Wang Xiaoming.
ChineseApi ChineseNameGenderCandidates GET /api2/json/chineseNameGenderCandidates/{chineseSurnameLatin}/{chineseGivenNameLatin}/{knownGender} Identify Chinese name candidates, based on the romanized name ex. Wang Xiaoming - having a known gender ('male' or 'female')
ChineseApi ChineseNameMatch GET /api2/json/chineseNameMatch/{chineseSurnameLatin}/{chineseGivenNameLatin}/{chineseName} Return a score for matching Chinese name ex. 王晓明 with a romanized name ex. Wang Xiaoming
ChineseApi ChineseNameMatchBatch POST /api2/json/chineseNameMatchBatch Identify Chinese name candidates, based on the romanized name (firstName = chineseGivenName; lastName=chineseSurname), ex. Wang Xiaoming
ChineseApi GenderChineseName GET /api2/json/genderChineseName/{chineseName} Infer the likely gender of a Chinese full name ex. 王晓明
ChineseApi GenderChineseNameBatch POST /api2/json/genderChineseNameBatch Infer the likely gender of up to 100 full names ex. 王晓明
ChineseApi GenderChineseNamePinyin GET /api2/json/genderChineseNamePinyin/{chineseSurnameLatin}/{chineseGivenNameLatin} Infer the likely gender of a Chinese name in LATIN (Pinyin).
ChineseApi GenderChineseNamePinyinBatch POST /api2/json/genderChineseNamePinyinBatch Infer the likely gender of up to 100 Chinese names in LATIN (Pinyin).
ChineseApi ParseChineseName GET /api2/json/parseChineseName/{chineseName} Infer the likely first/last name structure of a name, ex. 王晓明 -> 王(surname) 晓明(given name)
ChineseApi ParseChineseNameBatch POST /api2/json/parseChineseNameBatch Infer the likely first/last name structure of a name, ex. 王晓明 -> 王(surname) 晓明(given name).
ChineseApi PinyinChineseName GET /api2/json/pinyinChineseName/{chineseName} Romanize the Chinese name to Pinyin, ex. 王晓明 -> Wang (surname) Xiaoming (given name)
ChineseApi PinyinChineseNameBatch POST /api2/json/pinyinChineseNameBatch Romanize a list of Chinese name to Pinyin, ex. 王晓明 -> Wang (surname) Xiaoming (given name).
JapaneseApi GenderJapaneseNameFull GET /api2/json/genderJapaneseNameFull/{japaneseName} Infer the likely gender of a Japanese full name ex. 王晓明
JapaneseApi GenderJapaneseNameFullBatch POST /api2/json/genderJapaneseNameFullBatch Infer the likely gender of up to 100 full names
JapaneseApi GenderJapaneseNamePinyin GET /api2/json/genderJapaneseName/{japaneseSurname}/{japaneseGivenName} Infer the likely gender of a Japanese name in LATIN (Pinyin).
JapaneseApi GenderJapaneseNamePinyinBatch POST /api2/json/genderJapaneseNameBatch Infer the likely gender of up to 100 Japanese names in LATIN (Pinyin).
JapaneseApi JapaneseNameKanjiCandidates GET /api2/json/japaneseNameKanjiCandidates/{japaneseSurnameLatin}/{japaneseGivenNameLatin} Identify japanese name candidates in KANJI, based on the romanized name ex. Yamamoto Sanae
JapaneseApi JapaneseNameKanjiCandidatesBatch POST /api2/json/japaneseNameKanjiCandidatesBatch Identify japanese name candidates in KANJI, based on the romanized name (firstName = japaneseGivenName; lastName=japaneseSurname), ex. Yamamoto Sanae
JapaneseApi JapaneseNameLatinCandidates GET /api2/json/japaneseNameLatinCandidates/{japaneseSurnameKanji}/{japaneseGivenNameKanji} Romanize japanese name, based on the name in Kanji.
JapaneseApi JapaneseNameLatinCandidatesBatch POST /api2/json/japaneseNameLatinCandidatesBatch Romanize japanese names, based on the name in KANJI
JapaneseApi JapaneseNameMatch GET /api2/json/japaneseNameMatch/{japaneseSurnameLatin}/{japaneseGivenNameLatin}/{japaneseName} Return a score for matching Japanese name in KANJI ex. 山本 早苗 with a romanized name ex. Yamamoto Sanae
JapaneseApi JapaneseNameMatchBatch POST /api2/json/japaneseNameMatchBatch Return a score for matching a list of Japanese names in KANJI ex. 山本 早苗 with romanized names ex. Yamamoto Sanae
JapaneseApi JapaneseNameMatchFeedbackLoop GET /api2/json/japaneseNameMatchFeedbackLoop/{japaneseSurnameLatin}/{japaneseGivenNameLatin}/{japaneseName} [CREDITS 1 UNIT] Feedback loop to better perform matching Japanese name in KANJI ex. 山本 早苗 with a romanized name ex. Yamamoto Sanae
JapaneseApi ParseJapaneseName GET /api2/json/parseJapaneseName/{japaneseName} Infer the likely first/last name structure of a name, ex. 山本 早苗 or Yamamoto Sanae
JapaneseApi ParseJapaneseNameBatch POST /api2/json/parseJapaneseNameBatch Infer the likely first/last name structure of a name, ex. 山本 早苗 or Yamamoto Sanae
PersonalApi Country GET /api2/json/country/{personalNameFull} [USES 10 UNITS PER NAME] Infer the likely country of residence of a personal full name, or one surname. Assumes names as they are in the country of residence OR the country of origin.
PersonalApi CountryBatch POST /api2/json/countryBatch [USES 10 UNITS PER NAME] Infer the likely country of residence of up to 100 personal full names, or surnames. Assumes names as they are in the country of residence OR the country of origin.
PersonalApi Diaspora GET /api2/json/diaspora/{countryIso2}/{firstName}/{lastName} [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora of a personal name, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.)
PersonalApi DiasporaBatch POST /api2/json/diasporaBatch [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora of up to 100 personal names, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.)
PersonalApi Gender GET /api2/json/gender/{firstName}/{lastName} Infer the likely gender of a name.
PersonalApi GenderBatch POST /api2/json/genderBatch Infer the likely gender of up to 100 names, detecting automatically the cultural context.
PersonalApi GenderFull GET /api2/json/genderFull/{fullName} Infer the likely gender of a full name, ex. John H. Smith
PersonalApi GenderFullBatch POST /api2/json/genderFullBatch Infer the likely gender of up to 100 full names, detecting automatically the cultural context.
PersonalApi GenderFullGeo GET /api2/json/genderFullGeo/{fullName}/{countryIso2} Infer the likely gender of a full name, given a local context (ISO2 country code).
PersonalApi GenderFullGeoBatch POST /api2/json/genderFullGeoBatch Infer the likely gender of up to 100 full names, with a given cultural context (country ISO2 code).
PersonalApi GenderGeo GET /api2/json/genderGeo/{firstName}/{lastName}/{countryIso2} Infer the likely gender of a name, given a local context (ISO2 country code).
PersonalApi GenderGeoBatch POST /api2/json/genderGeoBatch Infer the likely gender of up to 100 names, each given a local context (ISO2 country code).
PersonalApi Origin GET /api2/json/origin/{firstName}/{lastName} [USES 10 UNITS PER NAME] Infer the likely country of origin of a personal name. Assumes names as they are in the country of origin. For US, CA, AU, NZ and other melting-pots : use 'diaspora' instead.
PersonalApi OriginBatch POST /api2/json/originBatch [USES 10 UNITS PER NAME] Infer the likely country of origin of up to 100 names, detecting automatically the cultural context.
PersonalApi ParseName GET /api2/json/parseName/{nameFull} Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John.
PersonalApi ParseNameBatch POST /api2/json/parseNameBatch Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John.
PersonalApi ParseNameGeo GET /api2/json/parseName/{nameFull}/{countryIso2} Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John. For better accuracy, provide a geographic context.
PersonalApi ParseNameGeoBatch POST /api2/json/parseNameGeoBatch Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John. Giving a local context improves precision.
PersonalApi ParsedGenderBatch POST /api2/json/parsedGenderBatch Infer the likely gender of up to 100 fully parsed names, detecting automatically the cultural context.
PersonalApi ParsedGenderGeoBatch POST /api2/json/parsedGenderGeoBatch Infer the likely gender of up to 100 fully parsed names, detecting automatically the cultural context.
PersonalApi UsRaceEthnicity GET /api2/json/usRaceEthnicity/{firstName}/{lastName} [USES 10 UNITS PER NAME] Infer a US resident's likely race/ethnicity according to US Census taxonomy W_NL (white, non latino), HL (hispano latino), A (asian, non latino), B_NL (black, non latino).
PersonalApi UsRaceEthnicityBatch POST /api2/json/usRaceEthnicityBatch [USES 10 UNITS PER NAME] Infer up-to 100 US resident's likely race/ethnicity according to US Census taxonomy.
PersonalApi UsRaceEthnicityZIP5 GET /api2/json/usRaceEthnicityZIP5/{firstName}/{lastName}/{zip5Code} [USES 10 UNITS PER NAME] Infer a US resident's likely race/ethnicity according to US Census taxonomy, using (optional) ZIP5 code info. Output is W_NL (white, non latino), HL (hispano latino), A (asian, non latino), B_NL (black, non latino).
PersonalApi UsZipRaceEthnicityBatch POST /api2/json/usZipRaceEthnicityBatch [USES 10 UNITS PER NAME] Infer up-to 100 US resident's likely race/ethnicity according to US Census taxonomy, with (optional) ZIP code.
SocialApi PhoneCode GET /api2/json/phoneCode/{firstName}/{lastName}/{phoneNumber} [USES 11 UNITS PER NAME] Infer the likely country and phone prefix, given a personal name and formatted / unformatted phone number.
SocialApi PhoneCodeBatch POST /api2/json/phoneCodeBatch [USES 11 UNITS PER NAME] Infer the likely country and phone prefix, of up to 100 personal names, detecting automatically the local context given a name and formatted / unformatted phone number.
SocialApi PhoneCodeGeo GET /api2/json/phoneCodeGeo/{firstName}/{lastName}/{phoneNumber}/{countryIso2} [USES 11 UNITS PER NAME] Infer the likely phone prefix, given a personal name and formatted / unformatted phone number, with a local context (ISO2 country of residence).
SocialApi PhoneCodeGeoBatch POST /api2/json/phoneCodeGeoBatch [USES 11 UNITS PER NAME] Infer the likely country and phone prefix, of up to 100 personal names, with a local context (ISO2 country of residence).
SocialApi PhoneCodeGeoFeedbackLoop GET /api2/json/phoneCodeGeoFeedbackLoop/{firstName}/{lastName}/{phoneNumber}/{phoneNumberE164}/{countryIso2} [CREDITS 1 UNIT] Feedback loop to better infer the likely phone prefix, given a personal name and formatted / unformatted phone number, with a local context (ISO2 country of residence).

Documentation for Models

Documentation for Authorization

api_key

  • Type: API key
  • API key parameter name: X-API-KEY
  • Location: HTTP header

Author

contact@namsor.com