-
n-gram을 이용해서 철자를 교정해보자Archive/통계&코딩이것저것 2021. 9. 2. 15:17
NER을 이용해서 회사명을 추출한 데이터를 사용해서, 정답명과 살짝 틀린 단어(예:Epple)이 들어갔을 때 Apple로 나오게끔 철자를 교정해주는 간단한 코드이다.
df_answer_name['회사명'] : 정상적인 회사명 컬럼이 들어간다.
이 알고리즘의 장점은 간단하다는 것인데, 단점은 df_answer_name['회사명']에 없는 회사는 뱉어내지 못한다는 것.
import collections ngram_size=3 words=set([w.lower() for w in list(df_answer_name['회사명'])]) #소문자 변환 def ngrams(word):#ngram set을 생성한다. all_ngrams=set() for i in range(0,len(word)-ngram_size+1): all_ngrams.add(word[i:i+ngram_size]) return all_ngrams ngram_words=collections.defaultdict(set) for word in words: #ngram (ex. app) 별로 매칭되는 word(ex. apple, appo,..) 들을 저장한다. for ngram in ngrams(word): ngram_words[ngram].add(word) def suggested_words(target_word,results=3):#targetword를 넣으면 해당 워드를 ngram으로 분해한 뒤, 각각의 ngram마다 해당되는 word에 표를 준다. 가장 많은 표를 받은 word가 정확한 회사명..!! word_ranking=collections.defaultdict(int) possible_words=set() for ngram in ngrams(target_word): words=ngram_words[ngram] for word in words: word_ranking[word]+=1 ranked_word_pairs=sorted(word_ranking.keys(),reverse=True) return [word_pair for word_pair in ranked_word_pairs[0:results]]
'Archive > 통계&코딩이것저것' 카테고리의 다른 글
Ordinal Regression (0) 2021.10.13 Neural Collaborative Filtering 논문 리뷰 (0) 2021.09.14 기업명 표준화(클리닝) (0) 2021.09.06 잠재요인 협업필터링 추천시스템 구축 (0) 2021.08.23 cnn, rnn 차이 설명 (0) 2021.08.23