Results:
Icelandic (http://islenskordabok.arnastofnun.is): blótsyrði 'swear word', gróft, 'coarse/vulgar', niðrandi 'derogatory'
Norwegian (https://www.naob.no): vulgært 'vulgar', nedsettende 'derogatory', kraftuttrykk 'expletive', skjellsord 'term of abuse', i eder 'in oaths'
Danish (https://ordnet.dk): nedsættende, skældsord, meget uformelt 'very informal', bandeord 'swear word' (also if used in definition)
Swedish (https://sv.wiktionary.org): Category tags skällsord, nedsättande, vulgärt, svordomar 'curses'
Finnish (https://www.kielitoimistonsanakirja.fi): kirosana 'swear word', kirosanana 'used as a swear word', halv. (halventavasti) 'derogatory', alat. (alatyylinen) 'vulgar'
Library Selenium for browser automation
Scraping strategy depends on the search interface
Strategy
from selenium import webdriver
from selenium.common import exceptions
opts = webdriver.ChromeOptions()
browser = webdriver.Chrome(options=opts, executable_path='/usr/bin/chromedriver')
for i in range(1,200,40): #cycle through the numbers 1, 41, 81, 121, 161
browser.get("https://ordnet.dk/ddo/ordbog?browse=up&last_id="+str(i+39)+"&first_id="+str(i)+"&query=det") #create URL for the list
words = browser.find_elements_by_xpath('//*[@class="searchResultBox"]') #locate the html elements
lexem = words[2].find_elements_by_tag_name('a') #locate the words
print([y.text for y in lexem])
['årsløn', 'årslønning', 'årsmappe', 'årsmøde', 'årsnorm', 'årsomsætning', 'årsopgørelse', 'årsplan', 'årsproduktion', 'årsprøve', 'årsrapport', 'årsregnskab', 'årsresultat', 'årsskifte', 'årsskrift', 'årstal', 'årstid', 'årstidsbestemt', 'årsunge', 'årsvikar', 'årsvikariat', 'årsvis eller årsvist', 'årsvist eller årsvis', 'årsværk', 'årti', 'årtusind eller årtusinde', 'årtusinde eller årtusind', 'årtusindegammel eller årtusindgammel', 'årtusindelang eller årtusindlang', 'årtusindeskifte eller årtusindskifte', 'årtusindgammel eller årtusindegammel', 'årtusindlang eller årtusindelang', 'årtusindskifte eller årtusindeskifte', 'årvågen', 'årvågenhed', 'ås1', 'ås2', 'åsted', 'åstedsforretning', 'åsyn'] ['0 eller nul2', '0. eller nulte', "00'er eller nuller eller nullere", '0-1-nederlag', '0. klasse børnehaveklasse', '1000 eller tusinde1 eller tusind', '1.000. eller tusinde2', '100 eller hundrede1 eller hundred', '100. eller hundrede2', '1½ eller halvanden', '10 eller ti', '10. eller tiende1', '1 eller en1 eller én', '1. eller første1', '100-årig eller hundredårig', '100-års eller hundredårs', '100-årshændelse eller hundredårshændelse', '10-dobbelt eller tidobbelt', "10'er eller tier", '1-0-føring', '1-0-sejr', '10-tal eller tital', '10-tiden eller titiden', '10-turskort eller titurskort', '10-årig eller tiårig', '10-års eller tiårs', '10-årsalderen eller tiårsalderen', '10-årsjubilæum eller tiårsjubilæum', '11 eller elleve', '11. eller ellevte', '117 eller hundrede og sytten', "11'er eller ellever", '11-meterplet', '11-meter-plet 11-meterplet', '11-tal eller ellevetal', '11-tiden eller ellevetiden', '11-årig eller elleveårig', '11-års eller elleveårs', '11-årsalderen eller elleveårsalderen', '12 eller tolv'] ['12. eller tolvte', "12'er eller tolver", '12-skala eller tolvskala', '12-tal eller tolvtal', '12-talspige eller tolvtalspige', '12-tiden eller tolvtiden', '12-tommers eller tolvtommers', '12-årig eller tolvårig', '12-års eller tolvårs', '12-årsalderen eller tolvårsalderen', '13 eller tretten', '13. eller trettende', "13'er eller trettener", '13-skala eller trettenskala', '13-tal eller trettental', '13-årig eller trettenårig', '13-års eller trettenårs', '13-årsalderen eller trettenårsalderen', '14 eller fjorten', '14. eller fjortende', "14'er eller fjortener", '14-årig eller fjortenårig', '14-års eller fjortenårs', '14-årsalderen eller fjortenårsalderen', '15 eller femten', '15. eller femtende', "15'er eller femtener", '15-tommers eller femtentommers', '15-årig eller femtenårig', '15-års eller femtenårs', '15-årsalderen eller femtenårsalderen', '16 eller seksten', '16. eller sekstende', "16'er eller sekstener", '16-ventilet eller sekstenventilet', '16-årig eller sekstenårig', '16-års eller sekstenårs', '16-årsalderen eller sekstenårsalderen', '17 eller sytten', '17. eller syttende'] ["17'er eller syttener", '17-tommers eller syttentommers', '17-årig eller syttenårig', '17-års eller syttenårs', '17-årsalderen eller syttenårsalderen', '18 eller atten', '18. eller attende', '1800-tal eller attenhundredtal eller attenhundredetal', "18'er eller attener", '18-årig eller attenårig', '18-års eller attenårs', '18-årsalderen eller attenårsalderen', '19 eller nitten', '19. eller nittende', '1900-tal eller nittenhundredtal eller nittenhundredetal', "19'er eller nittener", '19-tommers eller nittentommers', '19-årig eller nittenårig', '19-års eller nittenårs', '19-årsalderen eller nittenårsalderen', "1'er eller etter", "1. g'er", '1.-gradsforbrænding eller førstegradsforbrænding', '1-liters eller enliters', '1-personers enpersons eller 1-persons', '1-persons eller enpersons', '1.-sortering eller førstesortering', '1-tal eller ettal', '1-tiden eller ettiden', '1-årig eller etårig', '1-års eller etårs', '1-årsalderen eller etårsalderen', '20 eller toti', '20 eller tyve', '20. eller tyvende', '2. eller anden1', '2 eller to1', 'eller AMD eller amd', "20'er eller tyver", '20-årig eller tyveårig'] ['20-års eller tyveårs', '20-årsalderen eller tyveårsalderen', '21 eller enogtyve', '21. eller enogtyvende', '21-tommers eller enogtyvetommers', '22 eller toogtyve', '22. eller toogtyvende', '23 eller treogtyve', '23. eller treogtyvende', '24 eller fireogtyve', '24. eller fireogtyvende', '24-7 eller 24/7 eller fireogtyve syv', '24/7 eller 24-7 eller fireogtyve syv', '24-timers', '25 eller totifem', '25 eller femogtyve', '25. eller femogtyvende', '25-øre eller femogtyveøre', '25-årsjubilar eller femogtyveårsjubilar', '26 eller seksogtyve', '26. eller seksogtyvende', '26-tommers eller seksogtyvetommers', '27 eller syvogtyve', '27. eller syvogtyvende', '28 eller otteogtyve', '28. eller otteogtyvende', '29 eller niogtyve', '29. eller niogtyvende', '2-dørs eller todørs', "2'er eller toer", "2. g'er", '2.-grads-forbrænding eller andengradsforbrænding', '2-hovedet eller tohovedet', '2-liters eller toliters', '2-motorers eller tomotorers', '2-motoret eller tomotoret', '2-motors tomotorers eller 2-motorers', '2-personers eller topersoners', '2-propenamid akrylamid', '2-retters eller toretters']
import time
import requests
from bs4 import BeautifulSoup
dks_t = []
for i,x in enumerate(["fandeme", "kælling", "røv"]): #example with three words
r = requests.get("https://ordnet.dk/ddo/ordbog?query="+x)
soup = BeautifulSoup(r.text, 'lxml')
time.sleep(1)
if soup.find('span', text="Bøjning", attrs={'class' : 'stempel'}): #get inflection
bøjning = soup.find('span', text="Bøjning", attrs={'class' : 'stempel'}).find_next_sibling("span").text
else:
bøjning = None
if soup.find('div', attrs={'id' : 'betydning-1'}):
def1 = soup.find('div', attrs={'id' : 'betydning-1'})
if def1.find('span', attrs={'class' : 'definition'}):
def1_text = def1.find('span', attrs={'class' : 'definition'}).text #get definition
if def1.find('span', text="SPROGBRUG", attrs={'class' : 'stempel'}): #get usage notes
sd = def1.find('span', text="SPROGBRUG", attrs={'class' : 'stempel'}).find_next_sibling("span").text
else:
sd = None
else:
def1_text = None
sd = None
print([x,bøjning,sd,def1_text])
dks_t.append([x,bøjning,sd,def1_text])
['fandeme', None, None, 'bruges som forstærkende bandeord for at understrege en personlig holdning, forsikring m.m.'] ['kælling', '-en, -er, -erne', 'stærkt nedsættende', 'stridbar, rapkæftet eller hysterisk kvinde'] ['røv', '-en, -e, -ene', 'uformelt', 'menneskets bagdel; ende']
Can scrape inflections, if available, from the same source, or automatically create them from scripts, or get them from other sources (e.g. for Icelandic from Bjarnadóttir 2017)
Computational sociolinguistics
Lexicography
Technical
Theoretical
Thank you for your attention!
Bjarnadóttir, K. (Ed.). (2017). Beygingarlýsing íslensks nútímamáls ("Inflectional dictionary of modern Icelandic"). Árni Magnússon Institute. https://bin.arnastofnun.is/forsida
Coats, S. (2021). 'Bad language' in the Nordics: profanity and gender in a social media corpus. Acta Linguistica Hafniensia 53(1), 22–57. https://doi.org/10.1080/03740463.2021.1871218
Guttu, T. et al. (Eds.). (2019). Det Norske Akademis ordbok ("The dictionary of the Norwegian Academy"). Det Norske Akademi for Språk og Litteratur. https://naob.no
Jónsdóttir, H., & Úlfarsdóttir, Þ. (Eds.). (2013). Íslensk nútímamálsorðabók ("Dictionary of modern Icelandic"). Árni Magnússon Institute. http://islenskordabok.arnastofnun.is
Norri, J. (2000). Labelling of derogatory words in some British and American dictionaries. International Journal of Lexicography 13 2, 71–106. https://doi.org/10.1093/ijl/13.2.71