Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백준
- 웹 모의해킹
- AWS
- XSS 취약점
- AI
- 클라우드
- 데이터 분석
- 데이터3법
- 컴퓨터 구조
- docker
- 함수
- 알고리즘
- 파이썬
- 코딩테스트
- 프로그래머스
- vagrant
- 회귀분석
- 도커
- 웹모의해킹
- 마이데이터
- 정보보안
- 머신러닝
- 코테
- 데이터분석
- 자료형
- 시저암호
- 개인정보보호
- 파이썬 문법
- 코딩테스트 연습
- 개인정보보호법
Archives
- Today
- Total
찬란하게
언어 판별기 제작하기! ㄴstep1. 본문
언어 판별 서비스 소개
알파벳으로 구성된 문장을 입력하면 그 문장이 영어인지, 프랑스어인지, 인도네시아어인지, 타갈로그어인지를 판별해준다.
STEP1. 언어 판별하는 모형 학습시키기
모형 만드는 과정
파일로 저장
# # 1. 라이브러리 준비
# In[1]:
from sklearn import svm, metrics
# glob - 문자열을 파일 경로로 인식 -> 디렉터리 형태로
import glob, os.path, re, json
# # 2. 함수 준비
#
# check_freq() : 알파벳 출현 빈도 조사
# In[ ]:
# 텍스트를 읽어 들이고 출현 빈도 조사하기 --- (※1)
def check_freq(fname):
name = os.path.basename(fname)
lang = re.match(r'^[a-z]{2,}', name).group()
# 파일 읽기
with open(fname, "r", encoding="utf-8") as f:
text = f.read()
text = text.lower() # 소문자 변환
# 숫자 세기 변수(cnt) 초기화하기
cnt = [0 for n in range(0, 26)]
code_a = ord("a")
code_z = ord("z")
# 알파벳 출현 횟수 구하기 --- (※2)
for ch in text:
n = ord(ch)
if code_a <= n <= code_z: # a~z 사이에 있을 때
cnt[n - code_a] += 1
# 정규화하기 --- (※3)
total = sum(cnt)
freq = list(map(lambda n: n / total, cnt))
return (freq, lang)
# In[ ]:
# 각 파일 읽고 처리하기고 처리하기
def load_files(path):
freqs = []
labels = []
# 실제경로 문자열 변환
file_list = glob.glob(path)
for fname in file_list:
r = check_freq(fname)
# 문자 count 함수 r = (freq = [0.111, 0.3234, 01214], lang)
freqs.append(r[0])
labels.append(r[1])
return print({"freqs":freqs, "labels":labels})
# # 3. main 부분
# In[ ]:
## --------- main ---------- ##
data = load_files("./lang/train/*.txt")
test = load_files("./lang/test/*.txt")
# 이후를 대비해서 JSON으로 결과 저장하기
with open("./lang/freq2.json", "w", encoding="utf-8") as fp:
json.dump([data, test], fp)
# In[3]:
# 학습하기 --- (※4)
clf = svm.SVC()
clf.fit(data["freqs"], data["labels"])
# 예측하기 --- (※5)
predict = clf.predict(test["freqs"])
# In[4]:
# 결과 테스트하기 --- (※6)
ac_score = metrics.accuracy_score(test["labels"], predict)
cl_report = metrics.classification_report(test["labels"], predict)
print("정답률 =", ac_score)
print("리포트 =")
print(cl_report)
# In[ ]:
'AI (인공지능) > 미니프로젝트' 카테고리의 다른 글
언어판별3 (0) | 2021.03.26 |
---|---|
언어판별서비스2 (0) | 2021.03.26 |
[데이터분석][AI] SVM모델 적용시키기 (0) | 2021.03.25 |
[데이터분석][AI] 보스톤 주택가격 - 회귀분석모델(Regression) 정확도 검사 (0) | 2021.03.24 |
[데이터 분석][AI]ML - 회귀분석 (0) | 2021.03.24 |