여정의 기록
Python/n-gram, language model 본문
728x90
n-gram
문자열(문자)에서 n개의 연속된 문자(단어)를 추출하는 것
2-gram : 2개의 연속된 문자 혹은 단어 추출
3-gram : 3그램이라고 부른다
엔칸토를 보았다
- 공백 단위로 구분 : [엔칸토를, 보았다]
- 2-gram : ['엔칸', '칸토', '토를', '를보', '보았', '았다']
Hello
- 2-gram : ['He','el','ll','lo']
Zzz="hello"
for i in range(len(Zzz)-1) :
print(Zzz[i:i+2])
# Zzz는 문자열이므로 i:i+2 로해도 문자열 형태로 나왔지만
# z는 리스트 형태이므로 각 인덱스 값을 뽑아서 문자열 형태로 나오게 만들었다.
Zzz2="this is python program"
z = Zzz.split()
for i in range(len(z)) :
print(z[i],z[i+2])
n-gram lanuage model
단어의 순서에 확률을 적용한 모델
언어 모델을 만드는 유형 : 통계적 방법(n-gram ... ), 신경망 방법
밥을 먹고 운동을 했다 -> 밥을, 먹고, 운동을 뒤에 '했다'가 올 확률
문장을 두 글자씩 담기 위해 .split()하고 리스트에 담는다 -> 유사도를 구하기 위해 중복되는 단어개수를 구한다. 담은 2-gram 전체길이를 구해 유사도를 구한다.
- 단순 조건부 확률 기반의 언어모델
P(했다| 밥을, 먹고, 운동을) : 밥을, 먹고, 운동을, '했다'가 나올 확률은? - 전체 문장에서 해당 문장이 나오는 횟수(유사도)
count 기반의 확률 접근
유사도 = 중복되는 단어개수 / 해당 텍스트를 2글자씩 분리한 리스트의 전체 길이
count(밥을먹고운동을했다)/count(밥을먹고운동을)=P(했다| 밥을, 먹고, 운동을)
728x90
'공부 > Python' 카테고리의 다른 글
Python/unpacking, lambda 함수, map (0) | 2022.02.11 |
---|---|
Python/함수 (0) | 2022.02.11 |
Python/file read, write, Pickle (0) | 2022.02.10 |
Python/ continue , break (0) | 2022.02.10 |
Python/Random module (0) | 2022.02.10 |