SOOJLE
수즐 커뮤니티
수즐 커뮤니티
  • SOOJLE Document
  • 프로젝트 요약
  • Untitled
  • 프로젝트 개요
    • 프로젝트 소개
    • 추진 배경 및 필요성
    • 프로젝트 내용
      • 기능적 요구사항
      • 비기능적 요구사항
    • 개발환경 및 팀 구성
    • 워크플로우
      • 계획 수립 & 설계
      • 데이터 수집 및 정규화
      • 인공지능 개발
      • 서비스 모듈 개발
      • 성능 평가 및 보고
    • 프로젝트 예산 내역
  • 사전조사 & 의사결정
    • 사전조사
      • 재학생 대상 사전조사
      • 수집 URL 대상 목록
        • 세종대학교 직할
        • 세종대학교 학과
        • 공식 공지사항
        • 세종대 평생교육원
        • 외부 웹사이트
      • 학습 모델 사전조사
        • LSA - 잠재 의미 분석
        • LDA - 잠재 디리클레 할당
        • Word2Vec - 워드투벡터
        • FastText - 패스트텍스트
    • 의사결정
      • 사용자 인증 방식 의사결정
      • 데이터베이스 의사결정
        • MySQL vs MongoDB 성능 분석
      • 토픽별 의사결정
      • 부가 기능 의사 결정
  • 프로젝트 설계
    • 시스템 구조 설계
    • 핵심 기능 설계
      • 데이터 크롤러 설계
      • 게시물 토픽 정의 및 분류
      • 사용자 관심분야 측정
      • 뉴스피드 설계
        • 사용자-문서 유사도(Recommendation Score)
        • FaS (관심 분야 및 유사도 측정 - 추가)
        • 토픽 뉴스피드 목록
      • 검색 알고리즘 설계
        • 검색 알고리즘 1차 설계
        • 검색 알고리즘 1차 개선안
        • 검색 알고리즘 2차 설계
    • 요구사항 목록
      • DB 요구사항
      • 기능 요구사항
      • 품질 요구사항
      • 관리 요구사항
  • DB
    • 구조 설계
    • 테이블 명세
  • 데이터 크롤러
    • 데이터 크롤러 개요
    • 크롤링 URL 선정
    • 크롤러 구현을 위한 사전조사
    • 크롤러 개발 과정
      • 크롤러 프로그램 설계
      • 크롤러 규격화
      • 크롤러 정규화
      • 데이터 정제 과정
      • 에러 핸들러 구현
      • 배포 환경 이식을 위한 Porting
    • Issue & Exception
    • 결과 보고
  • 인공지능 개발
    • 인공지능 개발 개요
    • NLP 스터디
      • Bag of Words(BoW)
      • Document Term Matrix(DTM)
      • TF-IDF(Term Frequency-Inverse Document Frequency)
      • 문서 유사도(Document Similarity)
    • 데이터 전처리 과정
    • 개발 과정
      • 토크나이저 구현
      • LDA 모델 학습 및 구현
    • LDA 학습 모델링
      • 1차 파라미터 튜닝 결과 (NUM_TOPICS)
      • 2차 파라미터 튜닝 결과 (NUM_TOPICS)
      • 3차 파라미터 튜닝 결과 (NUM_TOPICS)
      • NUM_TOPICS 파라미터 의사결정
      • 4차 파라미터 튜닝 결과 (PASESS, ITERATION)
      • 최종 학습 모델 명세
    • Word2Vec(FastText) 학습 모델링
    • Issue & Exception
    • 성능 분석 결과
  • BackEnd
    • 서버 구축 및 배포
      • SOOJLE 서버 구조
      • 상용 서버 (UWSGI + NGINX) 구축
      • HTTPS 서버 구현
    • API 문서 개요
    • API 목록
      • Analysis
      • Auth API
      • Newsfeed API
      • Post API
      • Search API
      • Admin API
    • 세종 Auth API
    • 통계 기능 설계
    • Issue & Exception
    • 성능 분석 결과
  • FRONTEND
    • 프론트엔드 설계 개요
    • 디자인 설계 의사결정
      • 디자인 컨셉 및 기능 정의
      • 컴포넌트 디자인
      • Logo Variation
    • 화면 흐름도
    • 페이지 UI 명세
      • Main Page
      • Header
      • Footer
      • Mobile Control Bar
      • Login Page
      • Timeline Page
      • Menu Page
      • Hyperlink Icons Page
      • Search Component & Mobile Search Modal
      • Search Page
      • Post Block
      • Snackbar
  • 프로그램 배포
    • 프로그램 개요
    • 시스템 아키텍쳐
    • 주요 기능 및 명세
    • 프로그램 테스트
    • 구현 결과물 배포
  • 마무리
    • References
  • SOOJLE AI
  • SEJONG AUTH
  • IML Tokenizer
  • SOOJLE Crawler
  • SOOJLE Frontend
  • SOOJLE Backend
Powered by GitBook
On this page
  • 이스케이프 문자
  • 너무 길이가 긴 문서
  • 형태소 분석기 모듈 객체 생성

Was this helpful?

  1. 인공지능 개발

Issue & Exception

이스케이프 문자

영문 쪽 토크나이저들이나 ETRI API의 경우, 기본적으로 이런 처리를 다 해주지만, 코엔엘파이의 몇몇 모듈들은 이스케이프 문자가 들어갈 경우, 그냥 에러를 리턴해버려서 어느 정도의 전처리 과정이 필요하다.

doc = "input_text"
doc = re.sub('\s'," ", doc)
# 모든 공백문자 제거

너무 길이가 긴 문서

코엔엘파이의 모듈들은 종종 너무나 긴 텍스트, 특히나 띄어쓰기가 전혀 안된 구문에서 뭔가 큰 문제가 존재하는 듯하다. 그래서 너무나 데이터가 긴 경우, 코엔엘파이가 수용할 수 있는 만큼 문자열을 잘라서 줄 필요가 있다.

doc = "input_text"
length = 3_000  #3000 문자당 자르기
split_list = [doc[i:i+length] for i in range(0, len(doc), length)]

물론, 이 경우 정말 중요한 토큰이 3000번째 인덱스라서 중간에 잘려버릴 위험도 있기 때문에 적당히 해당 인덱스에서 예외처리를 해주는 것이 좋을 것같다.

형태소 분석기 모듈 객체 생성

Konlpy는 파이썬 라이브러리지만, 내부에서 사용되는 형태소 분석기는 이미 자바에서 만들어진 모듈이며, 이것을 파이썬으로 가져와 작동시키는 구조이다.

그러나 프로그램을 종료하더라도 자바 측에서 실행된 형태소 모듈이 자바 메모리 내에서 내려오지 않는다는 것이다. 때문에 파이썬에서는 해당 분석기 객체에 접근할 수 없더라도 자바 쪽에서는 호출된 모듈들이 쌓여간다.

즉, 하나의 프로세스에서 반드시 하나의 konlpy 객체를 불러와야 한다.

from konlpy.tag import Komoran
komoran = Komoran(max_heap_size= 1024 * 6) # 반드시 전역 변수에서 한번만 실행하자
def konlpy_morp_analy(text):
	try:
		result = komoran.pos(text)
	except Exception as e:
		return None
	return result

PreviousWord2Vec(FastText) 학습 모델링Next성능 분석 결과

Last updated 5 years ago

Was this helpful?