Junction 2023 Asia

Natural Language Processing, App Development

  • Project GitHub Repository : See this page
  • Date : 2023.08.18 15:30 - 2023.08.20 18:00
  • Locate : Bexco, Busan, Korea
  • Team : Yuna Ji(Designer), DongGyu123(Developer), Yuseung Lee(Entrepreneur), 9tailwolf(Developer)
  • View in KOR

Junction 2023 Asia Overview

Junction 2023 Asia is a 3-day hackathon party where various people from around the world come together to break the boundaries between various creators. 300 developers, designers and entrepreneurs are invited to the hackathon. And each team must include at least one developer, one designer, and one entrepreneur with maximum five.


Project Overview

Currently, aging is progressing rapidly in Korea. This project is focus on the difficulties experienced by the elderly. And we determined one problem that difficulties experience in cultural activities due to information gap. To solve this, we designed a platform that could solve difficulties by linking them to public data. As a result, we create a platform that helps elder easily obtain information about cultural events and participate in them.


How Project Works

Older people simply type the keywords they want and our platform recommends related cultural activities and facilities based on input keywords. Or it may recommend keywords and cultural events based on the current season or trends. Festivals and cultural events are collected through public data API.

My Works

I participated in the hackathon as a developer, especially an AI engineer. I developed the Festival Recommend System and Keyword Recommend System. Belows are the process of my works. In addition to this, I also devoloped a database.

  • Festival Recommend System

SBERT(HuggingFace, Paper) is suitable for find related sentences. And Each festival has an introduction written in public data. By that data, Language model can compare each festival with typed input data by cosine similarity As a result, without tuning, I can apply festival recommand system by using SBERT.

from sentence_transformers import SentenceTransformer
import numpy as np

def cos_sim(A, B):
    return np.dot(A, B)/(np.linalg.norm(A)*np.linalg.norm(B))
    
with open('database.pkl', 'rb') as f:
    database = pickle.load(f) # database is a datas with festival informations.
    
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2') # SBERT

embedding = model.encode([database['rec'][i]['desc'] for i in range(len(database['rec']))]) # Embedding with datas
inp = model.encode([inp]) # Embedding with input datas
sens = [(i,cos_sim(inp[0],embedding[i])) for i in range(len(database['rec']))] # Calculate  similarity with cosine similarity
sens.sort(key=lambda x:-x[1]) # sort by similarity
  • Keywords Recommend System

Similar to the above, keywords can be extracted through SBERT. This can be implemented through KeyBERT. KeyBERT Language model can compare each keyword by cosine similarity

from sentence_transformers import SentenceTransformer
from keybert import KeyBERT
import numpy as np

def cos_sim(A, B):
    return np.dot(A, B)/(np.linalg.norm(A)*np.linalg.norm(B))
    
with open('database.pkl', 'rb') as f:
    database = pickle.load(f) # database is a datas with festival informations.
    
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2') # SBERT
kw_model = KeyBERT(model)

input_datas = database['inputs']
if len(input_datas) > 100: # setting input datas as 100 recent input datas
    input_datas.pop(0)
input_datas.append(inp)
    
keywordData = ""
for i in input_datas:
    keywordData += " " + i
keywords = kw_model.extract_keywords(keywordData, keyphrase_ngram_range=(1, 1), stop_words=None, top_n=6) # calculate 6 related keywords

Benefit

In an aging society, our platform can promote older people’s participation in cultural life. The promotion of cultural life is directly related to a healthy life. We expect that not only the elderly but also a variety of people will have the opportunity to participate in cultural life.


Feedback

  • AI lightweighting failed.
  • Difficulties in utilizing python models
  • Existence of similar services