/beaverworks_hackerthon

비버웍스 자연어 처리를 활용한 메뉴 표준화 해커톤

Primary LanguageJupyter Notebook

비버웍스 키오스크 음식 메뉴 표준화 해커톤

1.27 ~ 1.29

팀원

이름 협업 깃허브
김택관 최초 사전 구축 알고리즘 구현, 단어간 유사도 및 우선 순위 알고리즘 구현 https://github.com/KimTaekGwan
이주환 전처리 알고리즘 구현, 불용어 데이터, 옵션 데이터, 고유명사 데이터 수집 https://github.com/LeeJuHwan

image

Process

image

Model Algorithm

image

Architecture

image

principle

image

Algorithm to function

algo = Algorithm()

def preprocessing(text) :
    res = {'메뉴':None, '맛/재료':None, 
        '단위':None, '세트/옵션':None}

    x = algo.bascket_remove(text)
    x = algo.stop_words_func(x)
    x = algo.bascket_remove(x)
    x = algo.option_func(x)
    if x[-1] :
        res["세트/옵션"] = "옵션"
        res["메뉴"] = x[0]
        return {"menu" : x,
                "std" : res}
        
    x = algo.special_char(x[0]) 
    if type(x) == list  : 
        res["세트/옵션"] = "세트"
        return {"menu" : " ".join(x),
                "std" : res}
    rs = jh.morph(x)
    try : 
        if rs[-1] :
            res["단위"] = "".join(rs[-1]) 
        x = algo.spacing_text(rs[0])
    except TypeError as e:
        pass

    x = algo.nnp_remove(x)
    x = algo.word_standard(x)
    output = algo.member_menu(x)
    res["맛/재료"] = ",".join(output[0]); res["메뉴"] = output[1]

    token_result = jh.kiwi.tokenize(x)
    ls = [i.form for i in token_result if i.tag[0] == "N"]
    return {"menu" : " ".join(ls),
            "std" : res}
  • return

image

Keyword

  • 사용자 사전 포맷

  • 형태소 분석을 통한 알고리즘 구현

  • 단어의 우선 순위

TIL

트라이(Trie) 구조

  • 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조

  • 자동완성 기능, 사전 검색 등 문자열을 탐색하는데 특화되어있는 자료구조

  • 래딕스 트리(radix tree) or 접두사 트리(prefix tree) or 탐색 트리(retrieval tree)라고도 한다. 트라이는 retrieval tree에서 나온 단어

image

해커톤 수료