ngram으로 문장 비교하기
2018. 5. 20. 15:32ㆍPython-이론/python-인공지능
n-gram으로 문장 비교하기
앞서 했던 레벤슈타인의 최단거리는 각 글자들을 비교했는데 n-gram은 문장을 n개 만큼 토막내서 비교하는 것을 의미한다. 예를 들어서
만약 n이 2라면
"오늘 강남에서 맛있는 스파게티를 먹었다. "를
"오늘", "늘 ", " 강", "강남", "남에", "에서", "서 ", " 맛", "맛있", "있는", "는 ", " 스", "스파", "파게", "게티", "티를", "를 ", " 먹", "먹었", "었다"
2글자씩 나누어서 두문장을 비교해준다.
def ngram(text,i): result = [] for a in range(len(text) -i +1): result.append(text[a:a+i]) return result def getAccuracy(aText, bText, num): aResult = ngram(aText,num) bResult = ngram(bText,num) cnt = 0 r = [] for i in aResult: for j in bResult: if i == j: cnt += 1 r.append(i) return cnt / len(aResult), r aText = "오늘 강남에서 맛있는 스파게티를 먹었다." bText = "강남에서 먹었던 오늘의 스파게티가 맛있었다." accuracy,result = getAccuracy(aText,bText,2) print(result) print(accuracy)
'Python-이론 > python-인공지능' 카테고리의 다른 글
마르코프체인을 통해 뒤에 나올 단어 예측해보기 (0) | 2018.05.20 |
---|---|
레벤슈타인 거리를 이용해서 두 문장 비교하기 (0) | 2018.05.20 |
다중 퍼셉트론을 이용해서 텍스트 분류하기 (0) | 2018.05.20 |
베이즈의 정리를 통해 텍스트 구분하기 (0) | 2018.05.19 |
word2vec 사용해서 한 단어와 연관된 단어들 찾아보기 (0) | 2018.05.17 |